[project] name = "pdfengine-gateway" version = "0.0.0" description = "FastAPI gateway over the PDF engine (auth, metadata, storage, jobs)." requires-python = ">=3.11" license = { text = "Proprietary" } readme = "README.md" # Pinned exact versions — see docs/phase0.md "Dependency pinning". # Bumps are deliberate, not opportunistic. dependencies = [ "fastapi==0.115.6", "uvicorn[standard]==0.34.0", "pydantic==2.10.4", "pydantic-settings==2.7.1", "python-multipart==0.0.19", "pillow==10.4.0", "httpx==0.28.1", ] [project.optional-dependencies] dev = [ "pytest==8.3.4", "httpx==0.28.1", "ruff==0.8.6", ] [build-system] requires = ["hatchling>=1.27"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["app"] # --- Ruff ------------------------------------------------------------------- # Single tool for lint + format. CI runs `ruff check` and `ruff format --check`. [tool.ruff] line-length = 100 target-version = "py311" extend-exclude = [".venv", "build", "dist"] [tool.ruff.lint] select = [ "E", "F", "W", # pycodestyle + pyflakes "I", # isort "B", # bugbear "UP", # pyupgrade "SIM", # simplify "RUF", # ruff-specific ] ignore = [ "E501", # line length handled by formatter "B904", # within an except clause, raise exceptions with raise ... from err "B008", # do not perform function calls in argument defaults (standard in FastAPI) ] [tool.ruff.format] quote-style = "double" # --- Pytest ------------------------------------------------------------------ [tool.pytest.ini_options] minversion = "8.0" testpaths = ["tests"] addopts = "-ra --strict-markers --strict-config"