Files
rpmroute/pyproject.toml
rsp2k a6aa1991a1 Rename to rpmroute
The router began as a port of FreeRouting and has grown its own engine
(negotiated congestion, tree nets, exact checks, axis escapes), and
'freeroute' was one letter from the project it no longer follows. The
package, module and command are now rpmroute; the freeroute command stays
as an alias, and the RPMROUTE / RPMROUTE_ORACLE_JAVA variables fall back
to the old FREEROUTE names. Version 2026.10.07. Routing is unchanged: a
PCBench board routes to a byte-identical session either way.
2026-10-07 14:10:36 -06:00

112 lines
2.9 KiB
TOML

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "rpmroute"
version = "2026.10.07"
description = "Native Python PCB autorouter with negotiated congestion and tree routing (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/rpmroute"
"Repository" = "https://git.supported.systems/warehack.ing/rpmroute"
"Issues" = "https://git.supported.systems/warehack.ing/rpmroute/issues"
# Where it started: a port of the Java FreeRouting engine. It has since grown
# its own router (negotiation, tree nets, exact checks) and ships no upstream code.
"Origin" = "https://github.com/freerouting/freerouting"
[project.scripts]
rpmroute = "rpmroute.cli:main"
# the name it had until 2026-10-07, kept so existing scripts keep working
freeroute = "rpmroute.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/rpmroute"]
[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 = ["rpmroute"]
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'",
]