[build-system] requires = ["hatchling>=1.27,<2"] build-backend = "hatchling.build" [project] name = "proxmox-api-simulator" version = "0.0.1" description = "Stateful asynchronous Proxmox VE API simulator" readme = "README.md" requires-python = ">=3.13,<3.14" license = { text = "Apache-2.0" } authors = [{ name = "proxmox-api-simulator contributors" }] dependencies = [ "asyncpg>=0.30,<0.31", "fastapi>=0.116,<0.117", "pydantic>=2.11,<3", "pydantic-settings>=2.10,<3", "uvicorn[standard]>=0.35,<0.36", ] [project.optional-dependencies] dev = [ "httpx>=0.28,<0.29", "mypy>=1.17,<1.18", "pytest>=8.4,<9", "pytest-asyncio>=1.1,<2", "pytest-cov>=6.2,<7", "ruff>=0.12,<0.13", ] [tool.hatch.build.targets.wheel] packages = ["app"] [tool.ruff] target-version = "py313" line-length = 100 [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "ASYNC", "S", "RUF"] [tool.ruff.lint.per-file-ignores] "tests/**/*.py" = ["S101"] [tool.mypy] python_version = "3.13" strict = true plugins = ["pydantic.mypy"] files = ["app", "tests"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] markers = [ "integration: requires PostgreSQL or another external service", "contract: validates imported API contracts", ] [tool.coverage.run] branch = true source = ["app"] [tool.coverage.report] fail_under = 80 show_missing = true