from pathlib import Path import pytest REPO_ROOT = Path(__file__).resolve().parents[1] @pytest.fixture def packaging_utils(): import sys build_dir = REPO_ROOT / "build" if str(build_dir) not in sys.path: sys.path.insert(0, str(build_dir)) from pyproject_utils import extras_require, install_requires, project_metadata return install_requires, extras_require, project_metadata def test_pyproject_dependencies(packaging_utils): install_requires, extras_require, project_metadata = packaging_utils metadata = project_metadata(REPO_ROOT) assert metadata["name"] == "orisys" assert "numpy>=" in install_requires(REPO_ROOT)[0] assert "cuda12" in extras_require(REPO_ROOT) assert extras_require(REPO_ROOT)["cuda"] == extras_require(REPO_ROOT)["cuda12"] def test_pyproject_dynamic_version(packaging_utils): import sys build_dir = REPO_ROOT / "build" if str(build_dir) not in sys.path: sys.path.insert(0, str(build_dir)) from pyproject_utils import get_version assert get_version(REPO_ROOT) == "0.4.2" def test_pyproject_bundle_manifest(packaging_utils): import sys build_dir = REPO_ROOT / "build" if str(build_dir) not in sys.path: sys.path.insert(0, str(build_dir)) from pyproject_utils import bundle_data_files, bundle_items items = bundle_items(REPO_ROOT) names = {item["name"] for item in items} assert names == {"configs", "examples", "docs", "assets"} data_files = dict(bundle_data_files(REPO_ROOT)) assert "orisys/configs" in data_files config_files = data_files["orisys/configs"] assert config_files assert all("/" in path and "*" not in path for path in config_files) assert any(path.endswith(".json") for path in config_files) asset_dirs = [dest for dest in data_files if dest.startswith("orisys/assets/")] assert asset_dirs assert all("*" not in path for files in data_files.values() for path in files) assert "examples" not in data_files def test_bundle_explicit_files(): import sys build_dir = REPO_ROOT / "build" if str(build_dir) not in sys.path: sys.path.insert(0, str(build_dir)) from wheel_layout import data_file_entries_for_item, resolve_bundle_source_files item = { "name": "configs", "source": "config", "target": "configs", "files": ["dd02-ov.json"], } paths = resolve_bundle_source_files(REPO_ROOT, item) assert [p.name for p in paths] == ["dd02-ov.json"] assert data_file_entries_for_item(item) == ["config/dd02-ov.json"]