# Web Framework fastapi==0.115.0 uvicorn[standard]==0.30.6 python-multipart==0.0.9 # Database sqlalchemy==2.0.36 alembic==1.13.3 psycopg[binary,pool]==3.2.3 geoalchemy2==0.15.2 shapely==2.0.6 # Pydantic & Settings pydantic[email]==2.9.2 pydantic-settings==2.5.2 python-dotenv==1.0.1 email-validator==2.2.0 # Authentication PyJWT==2.9.0 bcrypt==5.0.0 # Redis & ARQ (async background jobs - replaces Celery/RabbitMQ) redis[hiredis]==5.1.1 arq==0.26.1 # Rate Limiting slowapi==0.1.9 # HTTP Client httpx==0.27.2 # AWS S3 boto3==1.35.30 # File type sniffing (magic-byte MIME validation for scheduling doc uploads, INDL-34). # Requires the libmagic1 system library (apt-get install libmagic1 / brew install libmagic). python-magic==0.4.27 # AI Integrations anthropic==0.34.2 openai==1.47.0 # QR Code Generation qrcode[pil]==7.4.2 Pillow==10.4.0 # PDF Generation reportlab==4.2.5 fpdf2>=2.7.9 # Spreadsheet parsing — CSV bulk plot import (INDL-42). openpyxl only for .xlsx # (never xlrd, which has known CVEs); read_only + size cap enforced in code. openpyxl==3.1.5 # Email transport is SMTP only (src/core/email.py::_dispatch via smtplib). # INDL-54 consolidated all sends onto SMTP; the SendGrid dependency and the # raw boto3 SES receipt call were removed. boto3 is still used for S3 only. # Stripe Payments stripe==10.12.0 # Utilities python-slugify==8.0.4 python-dateutil==2.9.0.post0 pytz==2024.2 # Logging structlog==24.4.0 # Testing pytest==8.3.3 pytest-asyncio==0.24.0 pytest-cov==5.0.0 factory-boy==3.3.1 # Code Quality ruff==0.6.9