[project] name = "provenance-backend" version = "0.0.0" description = "Provenance backend — FastAPI service for family + land provenance." requires-python = ">=3.13" dependencies = [ "fastapi>=0.115", "uvicorn[standard]>=0.34", "pydantic>=2.9", "pydantic-settings>=2.5", "sqlalchemy[asyncio]>=2.0", "asyncpg>=0.30", "alembic>=1.14", "argon2-cffi>=23.1", "boto3>=1.35", "python-multipart>=0.0.12", "anthropic>=0.108.0", ] [dependency-groups] dev = [ "ruff>=0.8", "pytest>=8.3", "pytest-asyncio>=0.24", "httpx>=0.27", ] # This is an application, not a library: install dependencies but do not build/ # install the project itself. Code runs from source via `uv run`. [tool.uv] package = false [tool.ruff] line-length = 100 target-version = "py313" # Alembic writes the migration files; don't hold generated code to our style. extend-exclude = ["migrations/versions"] [tool.ruff.lint] select = ["E", "F", "I", "UP", "B"] [tool.ruff.lint.flake8-bugbear] # FastAPI uses these as call-expressions in argument defaults by design. extend-immutable-calls = ["fastapi.File", "fastapi.Form", "fastapi.Depends", "fastapi.Query", "fastapi.Header"] [tool.pytest.ini_options] asyncio_mode = "auto" pythonpath = ["."]