[project] name = "gisaf-backend" description = "Gisaf backend" dynamic = ["version"] authors = [{ name = "phil", email = "phil.dev@philome.mooo.com" }] dependencies = [ "aiopath>=0.7.1", "aiosqlite>=0.19.0", "apscheduler>=3.10.4", "asyncpg>=0.28.0", "fastapi>=0.111", "geoalchemy2>=0.14.2", "geopandas>=1.0.1", "itsdangerous>=2.1.2", "matplotlib>=3.8.3", "orjson>=3.9.10", "pandas>=2.1.1", "passlib[bcrypt]>=1.7.4", "plotly>=5.20.0", "psutil>=5.9.8", "psycopg2-binary>=2.9.9", "psycopg>=3.1.18", "pydantic-settings[yaml]>=2.7", "pyshp>=2.3.1", "python-jose[cryptography]>=3.3.0", "python-multipart>=0.0.9", "pyyaml>=6.0.1", "redis>=5.0.1", "sqlalchemy[asyncio]>=2.0.23", "sqlmodel>=0.0.18", "uvicorn>=0.23.2", "websockets>=12.0", "pyxdg>=0.28", "typer-slim>=0.15.1", "httpx>=0.28.1", ] requires-python = ">=3.12" readme = "README.md" [project.scripts] gisaf = "gisaf.cli:cli" [dependency-groups] dev = [ "dunamai>=1.23.0", "ipdb>=0.13.13", "pandas-stubs>=2.1.4.231218", "pretty-errors>=1.2.25", "types-psycopg2>=2.9.21.20", "types-PyYAML>=6.0.12.12", "asyncpg-stubs>=0.29.1", "types-python-jose>=3.3.4.20240106", "types-passlib>=1.7.7.20240311", "pytest>=8.3.4", ] [project.optional-dependencies] contextily = ["contextily>=1.4.0"] mqtt = ["aiomqtt>=1.2.1"] all = ["gisaf-backend[contextily]", "gisaf-backend[mqtt]"] [build-system] requires = ["hatchling", "uv-dynamic-versioning"] build-backend = "hatchling.build" [tool.hatch.version] source = "uv-dynamic-versioning" [tool.hatch.build.targets.wheel] packages = ["src/gisaf"] [tool.uv-dynamic-versioning] style = "semver" [tool.uv] package = true [tool.black] line-length = 98