[build-system] requires = ["hatchling>=1.25"] build-backend = "hatchling.build" [project] name = "karldns" version = "0.1.0" description = "A small self-hosted DynDNS service for FRITZ!Box and compatible routers." readme = "README.md" requires-python = ">=3.11" keywords = [ "ddns", "dyndns", "dynamic-dns", "self-hosted", "fritzbox", "cloudflare-ddns", "rfc2136", "homelab", "fastapi", ] dependencies = [ "dnspython>=2.6", "fastapi>=0.111", "pydantic>=2.7", "uvicorn[standard]>=0.30", ] [project.urls] Homepage = "https://karldns.de" Repository = "https://github.com/StasonJatham/karldns.de" Issues = "https://github.com/StasonJatham/karldns.de/issues" [project.optional-dependencies] dev = [ "black>=26.5.1", "httpx>=0.28", "mypy>=2.1.0", "pytest>=8.2", "ruff>=0.8", ] [project.scripts] karldns = "karldns.cli:main" [tool.hatch.build.targets.wheel] packages = ["karldns"] artifacts = ["karldns/assets/**/*"] [tool.pytest.ini_options] testpaths = ["tests"] [tool.ruff] line-length = 120 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "ANN"] ignore = ["ANN401"] [tool.ruff.lint.per-file-ignores] "scripts/build-bootstrap-subset.py" = ["E501"] "tests/**/*.py" = ["ANN"] [tool.black] line-length = 120 target-version = ["py311"] [tool.mypy] python_version = "3.11" files = ["karldns"] check_untyped_defs = true warn_unused_ignores = true warn_redundant_casts = true show_error_codes = true