# aeolus1d — runtime requirements for the simulator + desktop GUI
#
# The canonical source of truth is pyproject.toml. This file mirrors
# the ``dependencies`` block plus the ``[gui]`` extra, which is the
# combination most users want when they install aeolus1d to run cases
# and explore them in the visual editor. Keep the two in sync if you
# add or change a runtime dep.
#
# Recommended install:
#
#   python -m venv .venv
#   source .venv/bin/activate            # Windows: .venv\Scripts\activate
#   pip install -r requirements.txt
#   pip install -e .                     # editable install of aeolus1d itself
#
# After this, ``aeolus1d`` and ``aeolus1d-gui`` are available on the PATH.
#
# For test / lint / docs tooling, see requirements-dev.txt instead
# (it includes everything in this file via ``-r requirements.txt``).
#
# Optional extras NOT listed here (install via pip extras when needed):
#
#   pip install -e ".[real-gas]"        # CoolProp for cubic / multi-param EOS
#   pip install -e ".[chemistry-yaml]"  # pyyaml — Cantera mechanism import
#   pip install -e ".[interop]"         # CGNS / FMU / GT-Power round-trips
#   pip install -e ".[build]"           # PyInstaller for end-user wheels

# ----- Core (matches pyproject.toml ``dependencies``) -----
# Abstract ranges only — the hash-pinned exact versions live in
# requirements*.lock (pip-compile --generate-hashes). Upper bounds cap
# the ABI-fragile scientific stack at the next major/minor.
numpy>=1.24,<3
scipy>=1.10,<2
numba>=0.58,<0.66
h5py>=3.8,<4
# tomli is only needed on Python 3.10 (3.11+ has tomllib in stdlib).
tomli>=2.0,<3; python_version<'3.11'

# ----- Desktop GUI (matches pyproject.toml ``[gui]`` extra) -----
PySide6>=6.5
pyvista>=0.42
pyvistaqt>=0.11
# Enables Parquet round-trip for the schedule + tabulated-area-profile
# importers. Pin loosely — any pyarrow that ships pyarrow.parquet works.
pyarrow>=10.0
# Used by the in-app documentation viewer (Help → Documentation, Ctrl+H).
markdown>=3.4
# Pre-renders LaTeX math in the doc viewer (mathtext → embedded PNG).
# QTextBrowser can't run JavaScript, so the MathJax path doesn't help.
matplotlib>=3.4
