pyproject.tomlโข4.82 kB
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "castplan-automation"
version = "2.0.7"
description = "Python bridge for CastPlan Automation MCP Server - Universal auto-configuration"
readme = "README.md"
license = { text = "MIT" }
authors = [
{ name = "Ghostseller", email = "banessayuu@gmail.com" }
]
maintainers = [
{ name = "Ghostseller", email = "banessayuu@gmail.com" }
]
keywords = [
"mcp",
"castplan",
"automation",
"documentation",
"bmad",
"hooks",
"ai-analysis",
"claude",
"typescript",
"bridge",
"launcher"
]
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Console",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: JavaScript",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Documentation",
"Topic :: System :: Systems Administration",
"Topic :: Utilities"
]
requires-python = ">=3.8"
dependencies = [
"requests>=2.28.0",
"packaging>=21.0",
"click>=8.0.0",
"rich>=13.0.0",
"pydantic>=2.0.0",
"psutil>=5.9.0"
]
[project.optional-dependencies]
dev = [
"pytest>=7.0.0",
"pytest-cov>=4.0.0",
"pytest-asyncio>=0.21.0",
"black>=23.0.0",
"isort>=5.12.0",
"flake8>=6.0.0",
"mypy>=1.0.0",
"pre-commit>=3.0.0"
]
test = [
"pytest>=7.0.0",
"pytest-cov>=4.0.0",
"pytest-asyncio>=0.21.0",
"pytest-mock>=3.10.0"
]
docs = [
"sphinx>=6.0.0",
"sphinx-rtd-theme>=1.2.0",
"myst-parser>=1.0.0"
]
[project.urls]
Homepage = "https://github.com/Ghostseller/CastPlan_mcp"
Repository = "https://github.com/Ghostseller/CastPlan_mcp.git"
Issues = "https://github.com/Ghostseller/CastPlan_mcp/issues"
Documentation = "https://github.com/Ghostseller/CastPlan_mcp/blob/main/README.md"
Changelog = "https://github.com/Ghostseller/CastPlan_mcp/blob/main/CHANGELOG.md"
[project.scripts]
castplan-mcp = "castplan_automation.cli:main"
castplan-init = "castplan_automation.cli:init_command"
castplan-config = "castplan_automation.cli:config_command"
castplan-verify = "castplan_automation.cli:verify_command"
castplan-doctor = "castplan_automation.cli:doctor_command"
# Hatch configuration
[tool.hatch.build.targets.wheel]
packages = ["src/castplan_automation"]
[tool.hatch.build.targets.sdist]
include = [
"src/",
"README.md",
"LICENSE",
"CHANGELOG.md"
]
[tool.hatch.envs.default]
dependencies = [
"pytest>=7.0.0",
"pytest-cov>=4.0.0"
]
[tool.hatch.envs.default.scripts]
test = "pytest {args:tests}"
cov = "pytest --cov=castplan_automation {args:tests}"
cov-report = "pytest --cov=castplan_automation --cov-report=html {args:tests}"
[tool.hatch.envs.lint]
detached = true
dependencies = [
"black>=23.0.0",
"isort>=5.12.0",
"flake8>=6.0.0",
"mypy>=1.0.0"
]
[tool.hatch.envs.lint.scripts]
check = [
"black --check --diff src tests",
"isort --check-only --diff src tests",
"flake8 src tests",
"mypy src"
]
fmt = [
"black src tests",
"isort src tests"
]
# Tool configurations
[tool.black]
target-version = ["py38"]
line-length = 88
skip-string-normalization = true
[tool.isort]
profile = "black"
multi_line_output = 3
line_length = 88
[tool.flake8]
max-line-length = 88
extend-ignore = ["E203", "W503"]
exclude = [".git", "__pycache__", "dist", "build", ".eggs"]
[tool.mypy]
python_version = "3.8"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
disallow_incomplete_defs = true
check_untyped_defs = true
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
show_error_codes = true
[tool.pytest.ini_options]
minversion = "7.0"
addopts = "-ra -q --strict-markers --strict-config"
testpaths = ["tests"]
[tool.coverage.run]
source = ["castplan_automation"]
branch = true
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"def __repr__",
"if self.debug:",
"if settings.DEBUG",
"raise AssertionError",
"raise NotImplementedError",
"if 0:",
"if __name__ == .__main__.:"
]
# CastPlan specific configuration
[tool.castplan]
bridge-type = "python-nodejs"
nodejs-package = "@castplan/automation-mcp"
min-node-version = "18.0.0"
installation-priority = ["npm", "yarn", "pnpm", "direct"]
supported-platforms = ["windows", "macos", "linux"]
supported-python = ["3.8", "3.9", "3.10", "3.11", "3.12"]
auto-install-nodejs = true
auto-configure = true