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.
109 lines
2.8 KiB
TOML
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'",
|
|
]
|