from __future__ import annotations from importlib.metadata import PackageNotFoundError from typing import Any, cast import pyro_mcp as package_module def test_resolve_version_prefers_pyproject_version(monkeypatch: Any) -> None: monkeypatch.setattr(package_module, "version", lambda _name: "9.9.9") assert package_module._resolve_version() == package_module.__version__ # noqa: SLF001 def test_resolve_version_falls_back_to_unknown_without_metadata(monkeypatch: Any) -> None: class _FakePyprojectPath: def exists(self) -> bool: return False class _FakeResolvedPath: @property def parents(self) -> dict[int, Any]: return {2: self} def __truediv__(self, _other: str) -> _FakePyprojectPath: return _FakePyprojectPath() class _FakePathFactory: def __init__(self, _value: str) -> None: return None def resolve(self) -> _FakeResolvedPath: return _FakeResolvedPath() monkeypatch.setattr( package_module, "version", lambda _name: (_ for _ in ()).throw(PackageNotFoundError()), ) monkeypatch.setattr(package_module, "Path", cast(Any, _FakePathFactory)) assert package_module._resolve_version() == "0+unknown" # noqa: SLF001 def test_resolve_version_falls_back_to_installed_version(monkeypatch: Any) -> None: class _FakePyprojectPath: def exists(self) -> bool: return False class _FakeResolvedPath: @property def parents(self) -> dict[int, Any]: return {2: self} def __truediv__(self, _other: str) -> _FakePyprojectPath: return _FakePyprojectPath() class _FakePathFactory: def __init__(self, _value: str) -> None: return None def resolve(self) -> _FakeResolvedPath: return _FakeResolvedPath() monkeypatch.setattr(package_module, "version", lambda _name: "9.9.9") monkeypatch.setattr(package_module, "Path", cast(Any, _FakePathFactory)) assert package_module._resolve_version() == "9.9.9" # noqa: SLF001