[build-system] requires = ["hatchling>=1.21"] build-backend = "hatchling.build" [project] name = "pidtune" version = "0.1.0.dev0" description = "Open-source PID tuning library: process models, classical and modern tuning rules, relay autotuning, and closed-loop simulation." readme = "README.md" requires-python = ">=3.9" license = { text = "MIT" } authors = [ { name = "FablePool pidtune contributors" }, ] keywords = [ "pid", "control", "tuning", "ziegler-nichols", "cohen-coon", "amigo", "imc", "relay-autotuning", "process-control", ] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Science/Research", "Intended Audience :: Manufacturing", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Topic :: Scientific/Engineering", ] dependencies = [ "numpy>=1.22", ] [project.optional-dependencies] # Optimization-based tuning and some transfer-function utilities use SciPy. # Modules import it lazily and raise pidtune.MissingDependencyError with # install instructions if it is absent. optim = [ "scipy>=1.10", ] dev = [ "pytest>=7", "pytest-cov>=4", "ruff>=0.4", "mypy>=1.8", "scipy>=1.10", ] docs = [ "mkdocs>=1.5", "mkdocs-material>=9", "mkdocstrings[python]>=0.24", ] [project.urls] Homepage = "https://github.com/fablepool/pidtune" Documentation = "https://github.com/fablepool/pidtune/tree/main/docs" Issues = "https://github.com/fablepool/pidtune/issues" [tool.hatch.build.targets.wheel] packages = ["src/pidtune"] [tool.hatch.build.targets.sdist] include = [ "src/pidtune", "docs", "README.md", "pyproject.toml", ] [tool.ruff] line-length = 88 target-version = "py39" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "D"] ignore = ["D203", "D213"] [tool.ruff.lint.pydocstyle] convention = "numpy" [tool.mypy] python_version = "3.9" strict = true mypy_path = "src" [tool.pytest.ini_options] testpaths = ["tests"] addopts = "-ra"