[build-system] requires = ["setuptools>=68"] build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] include = ["api*"] [project] name = "windy-git" version = "0.1.0" description = "Windy Git — the version, permission and provenance plane over Windy Cloud." requires-python = ">=3.12" dependencies = [ "fastapi>=0.115", "uvicorn[standard]>=0.32", "pydantic>=2.9", "pydantic-settings>=2.6", "sqlalchemy[asyncio]>=2.0", "asyncpg>=0.30", # Alembic runs synchronously (env.py strips +asyncpg), so the image needs a # sync driver too. Without it migrations fail INSIDE the container while # passing on a developer machine that happens to have it — the kind of gap # that only shows up on a fresh deploy. "psycopg2-binary>=2.9", "alembic>=1.14", "httpx>=0.27", "boto3>=1.35", ] [project.optional-dependencies] dev = ["pytest>=8.3", "pytest-asyncio>=0.24", "ruff>=0.7", "mypy>=1.13"] [tool.ruff] line-length = 100 target-version = "py312" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "SIM"] ignore = ["E501"] [tool.mypy] python_version = "3.12" ignore_missing_imports = true [tool.pytest.ini_options] testpaths = ["api/tests"] asyncio_mode = "auto"