[project]
name = "inire"
description = "Wave-router: Auto-routing for photonic and RF integrated circuits"
readme = "README.md"
requires-python = ">=3.11"
license = { file = "LICENSE.md" }
authors = [
    { name="Jan Petykiewicz", email="jan@mpxd.net" },
    ]
homepage = "https://mpxd.net/code/jan/inire"
repository = "https://mpxd.net/code/jan/inire"
classifiers = [
    "Programming Language :: Python :: 3",
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "Intended Audience :: Information Technology",
    "Intended Audience :: Manufacturing",
    "Intended Audience :: Science/Research",
    "License :: OSI Approved :: GNU Affero General Public License v3",
    "Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)",
    ]
dynamic = ["version"]
dependencies = [
    "numpy",
    "scipy",
    "shapely",
    "rtree",
    "matplotlib",
]

[dependency-groups]
dev = [
    "hypothesis>=6.151.9",
    "matplotlib>=3.10.8",
    "pytest>=9.0.2",
    "ruff>=0.15.5",
]

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


[tool.hatch.version]
path = "inire/__init__.py"
[tool.ruff]
exclude = [
    ".git",
    "dist",
    ]
line-length = 145
indent-width = 4
lint.dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
lint.select = [
    "NPY", "E", "F", "W", "B", "ANN", "UP", "SLOT", "SIM", "LOG",
    "C4", "ISC", "PIE", "PT", "RET", "TCH", "PTH", "INT",
    "ARG", "PL", "R", "TRY",
    "G010", "G101", "G201", "G202",
    "Q002", "Q003", "Q004",
    ]
lint.ignore = [
    #"ANN001",   # No annotation
    "ANN002",   # *args
    "ANN003",   # **kwargs
    "ANN401",   # Any
    "SIM108",   # single-line if / else assignment
    "RET504",   # x=y+z; return x
    "PIE790",   # unnecessary pass
    "ISC003",   # non-implicit string concatenation
    "C408",     # dict(x=y) instead of {'x': y}
    "PLR09",    # Too many xxx
    "PLR2004",  # magic number
    #"PLC0414",  # import x as x
    "TRY003",   # Long exception message
    ]

[tool.pytest.ini_options]
addopts = "-rsXx"
testpaths = ["inire"]

