geopandas<2.0,>=0.14
shapely<3.0,>=2.0
duckdb<2.0,>=1.0
pyogrio<1.0,>=0.7
pyproj<4.0,>=3.6
typer<1.0,>=0.9
structlog<26.0,>=24.0
pydantic<3.0,>=2.0
pydantic-settings<3.0,>=2.0
PyYAML<7.0,>=6.0
httpx<1.0,>=0.24

[all]
gispulse[api,billing,classification,dev,mcp,network,parquet,pointcloud,postgis,raster,redis,s3,scheduling,sso]

[api]
fastapi<1.0,>=0.100
uvicorn[standard]<1.0,>=0.23
watchfiles<2.0,>=0.21
python-multipart<1.0,>=0.0.6
requests<3.0,>=2.28
slowapi<1.0,>=0.1.9
httpx<1.0,>=0.24

[billing]
stripe<9.0,>=7.0

[classification]
mapclassify<3.0,>=2.5

[dev]
pytest<10.0,>=9.0.3
pytest-cov<6.0,>=4.0
pytest-asyncio<2.0,>=1.0
ruff<1.0,>=0.1
httpx<1.0,>=0.24
pip-audit<3.0,>=2.7

[mcp]
fastmcp<4.0,>=2.14.2
fiona<2.0,>=1.9

[network]
networkx<4.0,>=3.0

[parquet]
pyarrow<22,>=14

[pointcloud]
laspy<3.0,>=2.5

[postgis]
sqlalchemy<3.0,>=2.0
geoalchemy2<1.0,>=0.14
psycopg2-binary<3.0,>=2.9
asyncpg<1.0,>=0.29

[raster]
rasterio<2.0,>=1.3
rasterstats<1.0,>=0.19

[redis]
redis<6.0,>=5.0

[s3]
boto3<2.0,>=1.28

[scheduling]
croniter<3.0,>=1.3

[sso]
PyJWT[crypto]<3.0,>=2.8
httpx<1.0,>=0.24
