[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "kicad-mcp-pro"
version = "2.1.0"
description = "A professional Model Context Protocol server for KiCad EDA."
readme = "README.md"
license = { file = "LICENSE" }
authors = [{ name = "Osman Aslan" }]
keywords = ["kicad", "mcp", "pcb", "eda", "ai", "llm", "schematic"]
classifiers = [
  "Development Status :: 5 - Production/Stable",
  "Intended Audience :: Developers",
  "Intended Audience :: Science/Research",
  "License :: OSI Approved :: MIT License",
  "Programming Language :: Python :: 3.12",
  "Programming Language :: Python :: 3.13",
  "Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)",
  "Topic :: Software Development :: Libraries :: Python Modules",
]
requires-python = ">=3.12"
dependencies = [
  "anyio>=4.4.0",
  "kicad-sch-api>=0.5.0,<0.6",
  "kicad-python>=0.6,<0.7",
  "mcp[cli]>=1.23.0",
  "pydantic>=2.7.0",
  "pydantic-settings>=2.3.0",
  "rich>=13.7.0",
  "structlog>=24.2.0",
  "typer>=0.12.0",
]

[project.optional-dependencies]
components = ["gql>=3.5.0", "httpx>=0.27.0"]
dev = [
  "bandit>=1.7.9",
  "mkdocs-material>=9.5.32",
  "mkdocstrings[python]>=0.25.0",
  "mypy>=1.10.0",
  "pip-audit>=2.8.0",
  "pytest>=8.2.0",
  "pytest-cov>=5.0.0",
  "pytest-mock>=3.14.0",
  "ruff>=0.4.0",
  "safety>=3.2.0",
]
freerouting = ["docker>=7.0.0"]
http = ["httpx>=0.27.0", "uvicorn[standard]>=0.30.0"]
simulation = ["inspice>=1.6.0", "numpy>=1.26.0"]
vcs = ["gitpython>=3.1.0"]

[project.scripts]
kicad-mcp-pro = "kicad_mcp.server:main"

[project.urls]
Homepage = "https://github.com/oaslananka/kicad-mcp-pro"
Documentation = "https://oaslananka.github.io/kicad-mcp-pro"
Repository = "https://github.com/oaslananka/kicad-mcp-pro"
"Bug Tracker" = "https://github.com/oaslananka/kicad-mcp-pro/issues"
Changelog = "https://github.com/oaslananka/kicad-mcp-pro/blob/main/CHANGELOG.md"

[tool.hatch.build.targets.wheel]
packages = ["src/kicad_mcp"]

[tool.hatch.build.targets.sdist]
include = [
  "src/kicad_mcp",
  "README.md",
  "LICENSE",
  "pyproject.toml",
]

[tool.ruff]
target-version = "py312"
line-length = 100

[tool.ruff.lint]
select = ["E", "F", "I", "N", "UP", "B", "S", "ANN"]
ignore = ["S603"]

[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = ["ANN001", "ANN202", "S101"]

[tool.mypy]
python_version = "3.12"
strict = true
plugins = ["pydantic.mypy"]

[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-q"

[tool.coverage.run]
source = ["src/kicad_mcp"]
omit = ["tests/*"]
