Spaces:
Sleeping
Sleeping
| """INST-01 no-regression guard. | |
| PR #62 pinned ``setuptools>=75.0`` in ``[project.dependencies]`` so that | |
| WhisperX / faster-whisper can still `import pkg_resources` on Python 3.12+. | |
| This test fails fast at PR time if anyone removes or weakens the pin. | |
| The user-observable counterpart ("`uv sync` on Python 3.12 imports WhisperX | |
| without ModuleNotFoundError: No module named 'pkg_resources'") is covered by | |
| Phase 0 GATE-02's Python-runtime smoke in `ci.yml`. This unit test is the | |
| cheap PR-time canary. | |
| """ | |
| import re | |
| import sys | |
| from pathlib import Path | |
| import pytest | |
| # tomllib is stdlib on Python 3.11+; we require >=3.11 in pyproject so this | |
| # import is safe everywhere we run. | |
| import tomllib | |
| PROJECT_ROOT = Path(__file__).resolve().parents[2] | |
| def test_setuptools_pinned(): | |
| data = tomllib.loads((PROJECT_ROOT / "pyproject.toml").read_text()) | |
| deps = data["project"]["dependencies"] | |
| matches = [d for d in deps if d.startswith("setuptools")] | |
| assert matches, ( | |
| "INST-01 regression: setuptools must be listed in " | |
| "[project.dependencies] (PR #62)." | |
| ) | |
| # Extract numeric lower bound from any `setuptools>=X.Y[.Z]` spec. | |
| pinned = False | |
| for spec in matches: | |
| m = re.search(r"setuptools\s*>=\s*(\d+)(?:\.(\d+))?", spec) | |
| if m: | |
| major = int(m.group(1)) | |
| if major >= 75: | |
| pinned = True | |
| break | |
| assert pinned, ( | |
| f"INST-01 regression: setuptools must be pinned >=75.0 " | |
| f"(found: {matches!r})." | |
| ) | |