refactor: deduplicate yaml import pattern via require_yaml()

This commit is contained in:
Abdessamad Derraz
2026-03-29 17:07:27 +02:00
parent 3c7fc26354
commit b4c5d77e4b
8 changed files with 28 additions and 44 deletions

View File

@@ -26,13 +26,9 @@ import urllib.error
from pathlib import Path from pathlib import Path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from common import list_registered_platforms, load_database, load_platform_config from common import list_registered_platforms, load_database, load_platform_config, require_yaml
try: yaml = require_yaml()
import yaml
except ImportError:
print("Error: PyYAML required (pip install pyyaml)", file=sys.stderr)
sys.exit(1)
DEFAULT_DB = "database.json" DEFAULT_DB = "database.json"
DEFAULT_PLATFORMS_DIR = "platforms" DEFAULT_PLATFORMS_DIR = "platforms"

View File

@@ -21,6 +21,17 @@ except ImportError:
yaml = None yaml = None
def require_yaml():
"""Import and return yaml, exiting if PyYAML is not installed."""
try:
import yaml as _yaml
return _yaml
except ImportError:
import sys
print("Error: PyYAML required (pip install pyyaml)", file=sys.stderr)
sys.exit(1)
def compute_hashes(filepath: str | Path) -> dict[str, str]: def compute_hashes(filepath: str | Path) -> dict[str, str]:
"""Compute SHA1, MD5, SHA256, CRC32, Adler32 for a file.""" """Compute SHA1, MD5, SHA256, CRC32, Adler32 for a file."""
sha1 = hashlib.sha1() sha1 = hashlib.sha1()

View File

@@ -18,14 +18,10 @@ import os
import sys import sys
from pathlib import Path from pathlib import Path
try:
import yaml
except ImportError:
print("Error: PyYAML required (pip install pyyaml)", file=sys.stderr)
sys.exit(1)
sys.path.insert(0, os.path.dirname(__file__)) sys.path.insert(0, os.path.dirname(__file__))
from common import list_registered_platforms, load_database, load_emulator_profiles, load_platform_config from common import list_registered_platforms, load_database, load_emulator_profiles, load_platform_config, require_yaml
yaml = require_yaml()
DEFAULT_EMULATORS_DIR = "emulators" DEFAULT_EMULATORS_DIR = "emulators"
DEFAULT_PLATFORMS_DIR = "platforms" DEFAULT_PLATFORMS_DIR = "platforms"

View File

@@ -16,14 +16,10 @@ import os
import sys import sys
sys.path.insert(0, os.path.dirname(__file__)) sys.path.insert(0, os.path.dirname(__file__))
from common import list_registered_platforms, load_platform_config from common import list_registered_platforms, load_platform_config, require_yaml
from truth import diff_platform_truth from truth import diff_platform_truth
try: yaml = require_yaml()
import yaml
except ImportError:
print("Error: PyYAML required (pip install pyyaml)", file=sys.stderr)
sys.exit(1)
def _load_truth(truth_dir: str, platform: str) -> dict | None: def _load_truth(truth_dir: str, platform: str) -> dict | None:

View File

@@ -32,18 +32,14 @@ from common import (
list_platform_system_ids, list_registered_platforms, list_platform_system_ids, list_registered_platforms,
filter_systems_by_target, list_system_ids, load_database, filter_systems_by_target, list_system_ids, load_database,
load_data_dir_registry, load_emulator_profiles, load_platform_config, load_data_dir_registry, load_emulator_profiles, load_platform_config,
md5_composite, resolve_local_file, md5_composite, require_yaml, resolve_local_file,
) )
from validation import ( from validation import (
_build_validation_index, check_file_validation, filter_files_by_mode, _build_validation_index, check_file_validation, filter_files_by_mode,
) )
from deterministic_zip import rebuild_zip_deterministic from deterministic_zip import rebuild_zip_deterministic
try: yaml = require_yaml()
import yaml
except ImportError:
print("Error: PyYAML required (pip install pyyaml)", file=sys.stderr)
sys.exit(1)
DEFAULT_PLATFORMS_DIR = "platforms" DEFAULT_PLATFORMS_DIR = "platforms"
DEFAULT_DB_FILE = "database.json" DEFAULT_DB_FILE = "database.json"

View File

@@ -19,14 +19,10 @@ import sys
from datetime import datetime, timezone from datetime import datetime, timezone
from pathlib import Path from pathlib import Path
try:
import yaml
except ImportError:
print("Error: PyYAML required (pip install pyyaml)", file=sys.stderr)
sys.exit(1)
sys.path.insert(0, os.path.dirname(__file__)) sys.path.insert(0, os.path.dirname(__file__))
from common import list_registered_platforms, load_database, load_emulator_profiles, load_platform_config from common import list_registered_platforms, load_database, load_emulator_profiles, load_platform_config, require_yaml
yaml = require_yaml()
from generate_readme import compute_coverage from generate_readme import compute_coverage
from verify import verify_platform from verify import verify_platform

View File

@@ -19,14 +19,11 @@ from common import (
load_emulator_profiles, load_emulator_profiles,
load_platform_config, load_platform_config,
load_target_config, load_target_config,
require_yaml,
) )
from truth import generate_platform_truth from truth import generate_platform_truth
try: yaml = require_yaml()
import yaml
except ImportError:
print("Error: PyYAML required (pip install pyyaml)", file=sys.stderr)
sys.exit(1)
DEFAULT_OUTPUT_DIR = "dist/truth" DEFAULT_OUTPUT_DIR = "dist/truth"
DEFAULT_PLATFORMS_DIR = "platforms" DEFAULT_PLATFORMS_DIR = "platforms"

View File

@@ -28,20 +28,16 @@ import sys
import zipfile import zipfile
from pathlib import Path from pathlib import Path
try:
import yaml
except ImportError:
print("Error: PyYAML required (pip install pyyaml)", file=sys.stderr)
sys.exit(1)
sys.path.insert(0, os.path.dirname(__file__)) sys.path.insert(0, os.path.dirname(__file__))
from common import ( from common import (
build_zip_contents_index, check_inside_zip, compute_hashes, build_zip_contents_index, check_inside_zip, compute_hashes,
filter_systems_by_target, group_identical_platforms, list_emulator_profiles, filter_systems_by_target, group_identical_platforms, list_emulator_profiles,
list_system_ids, load_data_dir_registry, load_emulator_profiles, list_system_ids, load_data_dir_registry, load_emulator_profiles,
load_platform_config, md5sum, md5_composite, resolve_local_file, load_platform_config, md5sum, md5_composite, require_yaml, resolve_local_file,
resolve_platform_cores, resolve_platform_cores,
) )
yaml = require_yaml()
from validation import ( from validation import (
_build_validation_index, _parse_validation, build_ground_truth, _build_validation_index, _parse_validation, build_ground_truth,
check_file_validation, filter_files_by_mode, check_file_validation, filter_files_by_mode,