Skip to content

Commit 2f021fd

Browse files
committed
refactor(version): support both local and installed package modes
- Update __version__.py to handle both local development and installed package scenarios using importlib.metadata fallback - Add fallback imports in mcp_server/__init__.py and slash_commands/generators.py to use importlib.metadata when __version__ is not available - Include __version__.py in wheel package via force-include Enables the package to work correctly when installed via uvx --from git+ URL or from PyPI, while maintaining backward compatibility with local development.
1 parent db564dd commit 2f021fd

File tree

4 files changed

+25
-5
lines changed

4 files changed

+25
-5
lines changed

__version__.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,21 @@
66
from __future__ import annotations
77

88
import tomllib
9+
from importlib.metadata import version as get_package_version
910
from pathlib import Path
1011

1112

1213
def _get_version() -> str:
1314
"""Get the version from pyproject.toml."""
1415
pyproject_path = Path(__file__).parent / "pyproject.toml"
15-
with pyproject_path.open("rb") as f:
16-
data = tomllib.load(f)
17-
return data["project"]["version"]
16+
if pyproject_path.exists():
17+
# Local development mode
18+
with pyproject_path.open("rb") as f:
19+
data = tomllib.load(f)
20+
return data["project"]["version"]
21+
else:
22+
# Installed package mode
23+
return get_package_version("spec-driven-development-mcp")
1824

1925

2026
__version__ = _get_version()

mcp_server/__init__.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@
88
from starlette.requests import Request
99
from starlette.responses import PlainTextResponse
1010

11-
from __version__ import __version__ # noqa: F401
11+
try:
12+
from __version__ import __version__
13+
except ImportError:
14+
# Fallback for when installed as a package
15+
from importlib.metadata import version
16+
17+
__version__ = version("spec-driven-development-mcp")
1218

1319
from .config import config
1420
from .prompts_loader import register_prompts

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ packages = ["mcp_server", "prompts", "slash_commands"]
4040

4141
[tool.hatch.build.targets.wheel.force-include]
4242
"server.py" = "server.py"
43+
"__version__.py" = "__version__.py"
4344

4445

4546
# --- Ruff (linter + formatter) ---

slash_commands/generators.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,14 @@
88
import tomli_w
99
import yaml
1010

11-
from __version__ import __version__
11+
try:
12+
from __version__ import __version__
13+
except ImportError:
14+
# Fallback for when installed as a package
15+
from importlib.metadata import version
16+
17+
__version__ = version("spec-driven-development-mcp")
18+
1219
from mcp_server.prompt_utils import MarkdownPrompt, PromptArgumentSpec
1320
from slash_commands.config import AgentConfig, CommandFormat
1421

0 commit comments

Comments
 (0)