[build-system] requires = ["setuptools>=65", "wheel"] build-backend = "setuptools.build_meta" [project] name = "rheinpegel-app" version = "0.1.0" description = "FastAPI app showing current Rhine water levels with caching and modern UI" readme = "README.md" authors = [{ name = "Rheinpegel Team" }] license = { text = "MIT" } requires-python = ">=3.11" dependencies = [ "fastapi>=0.111", "uvicorn[standard]>=0.29", "httpx>=0.27", "python-dotenv>=1.0", "jinja2>=3.1", "pydantic>=2.7", "pydantic-settings>=2.4", "prometheus-client>=0.20", "python-dateutil>=2.9", "defusedxml>=0.7" ] [project.optional-dependencies] dev = [ "pytest>=8.2", "pytest-asyncio>=0.23", "httpx>=0.27", "ruff>=0.5.6", "black>=24.4" ] [tool.setuptools] package-dir = {"" = "."} include-package-data = true [tool.setuptools.packages.find] where = ["."] include = ["app*"] [tool.setuptools.package-data] "app" = ["templates/*.j2", "static/*"] [tool.black] line-length = 88 target-version = ["py311"] [tool.ruff] line-length = 88 target-version = "py311" select = ["E", "F", "B", "I", "UP", "ASYNC", "S", "N"] ignore = ["S101"] type-checking-mode = "basic" [tool.ruff.lint.isort] known-first-party = ["app"] [tool.pytest.ini_options] asyncio_mode = "auto" addopts = "-q"