# --- Core scientific stack (Python 3.12 compatible) ---
numpy>=1.26.4,<3.0
scipy>=1.11,<1.14
pandas>=2.1,<2.3
matplotlib>=3.8,<3.9
scikit-learn>=1.3,<1.6
statsmodels>=0.14,<0.15
opencv-python>=4.9,<5

# --- Plotting / visualization ---
seaborn>=0.13,<0.14
plotly>=5.1,<6

# plotnine stack (updated to work with pandas 2.x)
plotnine>=0.12,<0.13
mizani>=0.11,<0.12
descartes==1.1.0   # still fine

# --- Packaging/metadata/utilities ---
packaging>=21.3
requests>=2.31,<3
urllib3>=2.1,<3
charset-normalizer>=3.3,<4
idna>=3.6,<4
tqdm>=4.66,<5
tenacity>=8.2,<9
Pillow>=10.0,<11
pyparsing>=3.1,<4
python-dateutil>=2.8.2,<3
pytz>=2024.1
cycler>=0.12,<0.13
kiwisolver>=1.4,<2
MarkupSafe>=2.1,<3
Mako>=1.3,<2
Markdown>=3.5,<4
Pygments>=2.16,<3
pkginfo>=1.10,<2
readme-renderer>=40.0,<45
requests-toolbelt>=1.0,<2
rfc3986>=1.5,<2
webencodings>=0.5.1
colorama>=0.4.6   # harmless on macOS too
zipp>=3.17,<4     # (optional; can drop on 3.12)
rrr

# --- Keep if you truly need them (but they’re old) ---
# bleach>=6,<7               # (4.0.0 is very old; upgrade if you still need bleach)
# importlib-metadata         # not needed on Python 3.12
# pywin32-ctypes             # Windows-only; remove on macOS
# kern-smooth                # (verify this package actually exists/needed in Python)
# palettable==3.3.0          # fine to keep; optional
# pdoc3==0.10.0              # consider modern 'pdoc' if you need docs