freeroute/pyproject.toml
Ryan Malloy f653c33e01 Version 2026.07.14 for the first public release
CalVer per project convention: the date communicates when the router was last
validated against the reference FreeRouting engine and real KiCad output. The
Alpha classifier and README carry the maturity signal.
2026-07-14 07:26:41 -06:00

109 lines
2.8 KiB
TOML

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "freeroute"
version = "2026.07.14"
description = "Native Python PCB autorouter — a Java-free port of the FreeRouting engine (Specctra DSN in, SES out)"
readme = "README.md"
license = "GPL-3.0-or-later"
license-files = ["LICENSE"]
authors = [{ name = "Ryan Malloy", email = "ryan@supported.systems" }]
keywords = [
"pcb",
"autorouter",
"routing",
"specctra",
"dsn",
"ses",
"kicad",
"eda",
"freerouting",
]
classifiers = [
"Development Status :: 3 - Alpha",
"Environment :: Console",
"Intended Audience :: Developers",
"Intended Audience :: Manufacturing",
"Operating System :: OS Independent",
"Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)",
"Typing :: Typed",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
requires-python = ">=3.10"
dependencies = []
[project.urls]
"Homepage" = "https://git.supported.systems/warehack.ing/freeroute"
"Repository" = "https://git.supported.systems/warehack.ing/freeroute"
"Issues" = "https://git.supported.systems/warehack.ing/freeroute/issues"
# The Java engine this is a port of; freeroute ships no upstream code.
"Upstream" = "https://github.com/freerouting/freerouting"
[project.scripts]
freeroute = "freeroute.cli:main"
[dependency-groups]
dev = [
"pytest>=7.0.0",
"pytest-cov>=4.0.0",
"ruff>=0.1.0",
]
[tool.hatch.build.targets.wheel]
packages = ["src/freeroute"]
[tool.hatch.build.targets.sdist]
# Ship the package, the licence, and the docs — nothing else. `reference/` is a
# clone of the GPL FreeRouting Java tree used only as a porting reference; it is
# never committed and must never be redistributed inside this package.
include = [
"/src",
"/docs",
"/README.md",
"/LICENSE",
"/pyproject.toml",
]
exclude = [
"/reference",
"/tests",
"/.github",
"/dist",
"/build",
"/CLAUDE.md",
"**/.env",
"**/__pycache__",
"**/*.py[cod]",
"**/.pytest_cache",
"**/.ruff_cache",
"**/.coverage",
]
[tool.ruff]
target-version = "py310"
line-length = 100
src = ["src", "tests"]
[tool.ruff.lint]
select = ["E", "W", "F", "I", "B", "C4", "UP", "SIM"]
ignore = ["E501"]
[tool.ruff.lint.isort]
known-first-party = ["freeroute"]
force-sort-within-sections = true
[tool.pytest.ini_options]
minversion = "7.0"
testpaths = ["tests"]
pythonpath = ["tests"]
addopts = ["-ra", "--strict-markers"]
markers = [
"oracle: runs the FreeRouting JAR (slow, needs Java); deselect with -m 'not oracle'",
]