kicad-mcp/pyproject.toml
Ryan Malloy a215a36122
Some checks are pending
CI / Lint and Format (push) Waiting to run
CI / Test Python 3.11 on macos-latest (push) Waiting to run
CI / Test Python 3.12 on macos-latest (push) Waiting to run
CI / Test Python 3.13 on macos-latest (push) Waiting to run
CI / Test Python 3.10 on ubuntu-latest (push) Waiting to run
CI / Test Python 3.11 on ubuntu-latest (push) Waiting to run
CI / Test Python 3.12 on ubuntu-latest (push) Waiting to run
CI / Test Python 3.13 on ubuntu-latest (push) Waiting to run
CI / Security Scan (push) Waiting to run
CI / Build Package (push) Blocked by required conditions
Release 2026.07.13: native SES applier + freeroute backend
2026-07-13 01:50:22 -06:00

136 lines
3.1 KiB
TOML

[build-system]
requires = ["hatchling>=1.28.0"]
build-backend = "hatchling.build"
[project]
name = "mckicad"
version = "2026.07.13"
description = "MCP server for KiCad electronic design automation"
readme = "README.md"
license = { text = "MIT" }
authors = [{ name = "Ryan Malloy", email = "ryan@supported.systems" }]
keywords = ["kicad", "eda", "electronics", "pcb", "mcp", "model-context-protocol"]
classifiers = [
"Development Status :: 4 - Beta",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)",
"Typing :: Typed",
]
requires-python = ">=3.12"
dependencies = [
"fastmcp>=3.1.0",
"pyyaml>=6.0.3",
"defusedxml>=0.7.1",
"kicad-python>=0.5.0",
"requests>=2.32.5",
]
[project.urls]
Homepage = "https://git.supported.systems/warehack.ing/mckicad"
[project.scripts]
mckicad = "mckicad.server:main"
[tool.hatch.build.targets.wheel]
packages = ["src/mckicad"]
[tool.hatch.build.targets.sdist]
# Ship only what a consumer needs. Keep operator-private context, the docs
# site, test fixtures (which can carry real system output), and local dev
# files out of the published archive.
exclude = [
"CLAUDE.md",
".env",
".env.example",
".mcp.json",
"docs/",
"docs-site/",
"tests/",
".github/",
".pytest_cache/",
".ruff_cache/",
"dist/",
"build/",
]
[dependency-groups]
dev = [
"pytest>=8.4.2",
"pytest-asyncio>=1.3.0",
"pytest-mock>=3.15.1",
"pytest-cov>=7.0.0",
"ruff>=0.15.1",
"mypy>=1.19.1",
]
[tool.ruff]
target-version = "py312"
line-length = 100
src = ["src", "tests"]
[tool.ruff.lint]
select = ["E", "W", "F", "I", "B", "C4", "UP", "SIM"]
ignore = ["E501", "B008", "C901", "B905"]
unfixable = ["B"]
[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = ["S101", "D103", "SLF001"]
[tool.ruff.lint.isort]
known-first-party = ["mckicad"]
force-sort-within-sections = true
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
[tool.mypy]
python_version = "3.12"
warn_return_any = true
warn_unused_configs = true
check_untyped_defs = true
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
show_error_codes = true
[[tool.mypy.overrides]]
module = ["kipy.*", "requests.*"]
ignore_missing_imports = true
[tool.pytest.ini_options]
minversion = "7.0"
addopts = [
"--strict-markers",
"--strict-config",
"-ra",
"--tb=short",
]
testpaths = ["tests"]
pythonpath = ["."]
python_files = ["test_*.py"]
python_functions = ["test_*"]
markers = [
"unit: Unit tests",
"integration: Integration tests",
"slow: Tests that take more than a few seconds",
"requires_kicad: Tests that require KiCad CLI to be installed",
]
asyncio_mode = "auto"
filterwarnings = [
"ignore::DeprecationWarning",
"ignore::PendingDeprecationWarning",
]
[tool.coverage.run]
source = ["mckicad"]
branch = true
omit = ["tests/*"]
[tool.coverage.report]
precision = 2
show_missing = true