[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "sbb-opendata-mcp" version = "0.3.4" description = "MCP Server for Swiss Federal Railways (SBB) open data via data.sbb.ch" readme = "README.md" license = "MIT" license-files = ["LICENSE"] requires-python = ">=3.11" keywords = [ "mcp", "sbb", "swiss-railways", "open-data", "switzerland", "transport", "opendata", "passenger-frequency", "rail-disruptions", "train-data", ] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Software Development :: Libraries", ] dependencies = [ "mcp[cli]>=2.0.0,<3", "httpx>=0.27.0,<1", "pydantic>=2.0.0,<3", ] [project.optional-dependencies] dev = [ "pytest>=8.0.0", "pytest-asyncio>=0.23.0", # Exakt gepinnt, und seit diesem Commit die EINZIGE Stelle im Repo, die # eine ruff-Version nennt. `ci.yml` installiert nur dieses Extra, # `[tool.hatch.envs.default]` zieht es ueber `features`, und die # pre-commit-Hooks rufen das ruff aus dem PATH statt ein eigenes `rev:` # mitzubringen. Anheben also genau hier — sonst nirgends. # `tests/test_werkzeug_versionen.py` haelt das fest, statt es zu behaupten. "ruff==0.16.4", ] [project.scripts] sbb-opendata-mcp = "sbb_opendata_mcp.server:mcp.run" [project.urls] Homepage = "https://github.com/malkreide/sbb-opendata-mcp" Repository = "https://github.com/malkreide/sbb-opendata-mcp" Issues = "https://github.com/malkreide/sbb-opendata-mcp/issues" [tool.hatch.build.targets.wheel] packages = ["src/sbb_opendata_mcp"] # Zieht das `dev`-Extra, statt seine Eintraege ein zweites Mal aufzuzaehlen. # Vorher standen dieselben drei Pakete hier noch einmal — sie stimmten # ueberein, aber nichts erzwang das: Wer den ruff-Pin oben anhebt und diese # Liste vergisst, faehrt `hatch run lint` gegen eine andere Version als die # CI, ohne dass ein Gate rot wird. [tool.hatch.envs.default] features = ["dev"] # Pfade wie in ci.yml — `scripts/` gehoert dazu, sonst ist ein gruenes # `hatch run lint` mit einer roten CI vereinbar. [tool.hatch.envs.default.scripts] test = "PYTHONPATH=src pytest tests/ -v" lint = "ruff check src/ tests/ scripts/" fmt = "ruff format src/ tests/ scripts/" [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] markers = [ "live: integration tests that hit the live data.sbb.ch API (require network)", ] [tool.ruff] line-length = 110 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "I", "N", "W", "UP"] ignore = ["E501"]