pyproject.toml•3.05 kB
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "wassden"
version = "0.1.0"
description = "MCP-based Spec-Driven Development toolkit with automated Claude Code integration testing."
readme = "README.md"
requires-python = ">=3.12"
license = "MIT"
authors = [
{ name = "tokusumi", email = "email@example.com" }
]
keywords = ["mcp", "spec-driven-development", "requirements", "design", "claude"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.12",
]
dependencies = [
"fastmcp>=2.11.3",
"typer>=0.12.5",
"colorama>=0.4.6",
"prompt-toolkit>=3.0.51",
"typing-extensions>=4.14.1",
"pydantic>=2.11.7",
"pycld2>=0.42",
"markdown>=3.5.0",
]
[project.optional-dependencies]
dev = [
"language-tool-python>=2.8",
"pandas>=2.1.0",
"rich>=13.0.0",
"numpy>=2.3.2",
"scipy>=1.16.1",
]
[project.urls]
"Homepage" = "https://github.com/tokusumi/wassden-mcp"
"Bug Tracker" = "https://github.com/tokusumi/wassden-mcp/issues"
[project.scripts]
wassden = "wassden.cli:app"
[tool.uv]
dev-dependencies = [
"pytest>=8.4.1",
"pytest-cov>=6.2.1",
"types-Markdown>=3.5.0",
"pytest-asyncio>=1.1.0",
"ruff>=0.12.9",
"mypy>=1.17.1",
"types-colorama>=0.4.15.20250801",
"pre-commit>=4.3.0",
"psutil>=6.1.1",
"types-psutil>=6.1.0",
"types-pyyaml>=6.0.12.20250809",
"scipy-stubs>=1.11.0",
]
[tool.ruff]
line-length = 120
target-version = "py312"
[tool.ruff.lint]
select = ["E", "F", "W", "C", "N", "I", "UP", "B", "A", "C4", "ICN", "PIE", "PT", "Q", "RSE", "RET", "SIM", "TID", "TCH", "ARG", "PTH", "PL", "TRY", "PERF", "LOG", "RUF"]
ignore = ["D100", "D101", "D102", "D103", "D104", "D105", "D106", "D107", "D203", "D213", "S101", "RUF001", "TRY300", "TRY301", "TRY003", "PLR0913", "SIM108"]
[tool.ruff.lint.per-file-ignores]
"tests/**" = ["PLR2004"] # Ignore magic value comparisons in test files
[tool.mypy]
python_version = "3.12"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
check_untyped_defs = true
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
[tool.pytest.ini_options]
minversion = "6.0"
addopts = "-ra -q --strict-markers -n auto --dist worksteal"
testpaths = ["tests"]
python_files = ["test_*.py", "*_test.py"]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
markers = [
"dev: marks tests requiring dev dependencies (deselect with '-m \"not dev\"')",
]
[tool.coverage.run]
source = ["wassden"]
omit = ["*/tests/*", "*/__pycache__/*", "*/site-packages/*"]
parallel = true
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"def __repr__",
"if self.debug:",
"if __name__ == .__main__.:",
"raise NotImplementedError",
"pass",
"except ImportError:",
]
[dependency-groups]
dev = [
"pytest-xdist>=3.8.0",
]