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
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:
import yaml
except ImportError:
print("Error: PyYAML required (pip install pyyaml)", file=sys.stderr)
sys.exit(1)
yaml = require_yaml()
DEFAULT_DB = "database.json"
DEFAULT_PLATFORMS_DIR = "platforms"

View File

@@ -21,6 +21,17 @@ except ImportError:
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]:
"""Compute SHA1, MD5, SHA256, CRC32, Adler32 for a file."""
sha1 = hashlib.sha1()

View File

@@ -18,14 +18,10 @@ import os
import sys
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__))
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_PLATFORMS_DIR = "platforms"

View File

@@ -16,14 +16,10 @@ import os
import sys
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
try:
import yaml
except ImportError:
print("Error: PyYAML required (pip install pyyaml)", file=sys.stderr)
sys.exit(1)
yaml = require_yaml()
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,
filter_systems_by_target, list_system_ids, load_database,
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 (
_build_validation_index, check_file_validation, filter_files_by_mode,
)
from deterministic_zip import rebuild_zip_deterministic
try:
import yaml
except ImportError:
print("Error: PyYAML required (pip install pyyaml)", file=sys.stderr)
sys.exit(1)
yaml = require_yaml()
DEFAULT_PLATFORMS_DIR = "platforms"
DEFAULT_DB_FILE = "database.json"

View File

@@ -19,14 +19,10 @@ import sys
from datetime import datetime, timezone
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__))
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 verify import verify_platform

View File

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

View File

@@ -28,20 +28,16 @@ import sys
import zipfile
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__))
from common import (
build_zip_contents_index, check_inside_zip, compute_hashes,
filter_systems_by_target, group_identical_platforms, list_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,
)
yaml = require_yaml()
from validation import (
_build_validation_index, _parse_validation, build_ground_truth,
check_file_validation, filter_files_by_mode,