# Tested with: Python 3.13, Flask 3.1.3, Werkzeug 3.1.8, openpyxl 3.1.5, reportlab 5.0.1, # pandas 3.0.5, matplotlib 3.11.2, seaborn 0.13.2, numpy 2.5.3 Flask>=3.0,<4.0 Werkzeug>=3.0,<4.0 openpyxl>=3.1,<4.0 reportlab>=4.0,<6.0 # Charts (app/charts.py): pandas aggregates, matplotlib + seaborn draw (server-side SVG / PNG). # matplotlib >= 3.10 is required (FT2Font LoadFlags). Charts are drawn in-process under a lock (FreeType is not thread-safe). pandas>=2.2,<4.0 matplotlib>=3.10,<4.0 seaborn>=0.13,<0.14 numpy>=1.26,<3.0 # NOTE: "report-engine-kit" was requested, but no package with that name could be found on PyPI. # Reporting lives in app/reports.py behind a small adapter (openpyxl -> Excel, reportlab -> PDF, charts.py -> charts).