pandas>=2.2,<4
numpy>=1.26,<3
scikit-learn>=1.5,<2
lightgbm>=4.3,<5
joblib>=1.4
fastapi>=0.115
uvicorn[standard]>=0.30
pydantic>=2.7,<3
rasterio>=1.3
pillow>=10
mgrs>=1.4
reportlab>=4
PyMySQL>=1.1  # MySQL driver; the app keeps all its data in MySQL (HPP_DATABASE_URL)
cryptography>=42  # Lets PyMySQL sign in to MySQL 8 accounts (caching_sha2_password)
APScheduler>=3.10,<4  # Runs the nightly listings scrape inside the app (server/pipeline.py)
pyarrow>=15  # pandas stores text columns with pyarrow; the saved model (model.joblib) needs it to load
