### requirements.txt
# MCGT — requirements.txt (pile pip minimale)
# Python recommandé : 3.12.x (cf. environment.yml pour une pile conda complète)
# Remarque : privilégier conda-forge pour CAMB et LALSuite. Ce fichier vise une
# installation pip « pure » pour la plupart des scripts (données/figures/QA).

# --- Noyau scientifique
# NumPy fixé <2.1 pour éviter conflits numba
numpy<2.1
pandas==2.3.1
scipy==1.14.1

# --- Visualisation
matplotlib==3.9.0

# --- IO / validation / utilitaires
h5py==3.11.0
PyYAML==6.0.2

# Active les validateurs de formats (ISO-8601, RFC 3986, etc.) utiles à nos *.meta.json
# NOTE : syntaxe extras correcte pour pip ; évitez d'échapper les crochets.
jsonschema[format-nongpl]==4.23.0
tqdm==4.66.5
click==8.1.7
rich==13.7.1
requests==2.32.3
python-dateutil==2.9.0.post0
packaging>=23.2,<25

# --- Symbolique / notebooks
sympy==1.13.2

# --- Cosmologie (CMB)
# Préférer conda-forge ; cette ligne est fournie pour un usage pip pur.
# CAMB est optionnel pour la CI/tests; installer via conda ou Python<3.12 si besoin (chap.06)
camb==1.6.4 ; python_version < "3.12"

# --- Ondes gravitationnelles (GW)
# LALSuite n’est PAS recommandé via pip. Installez via conda-forge (voir environment.yml).
# Exemple : conda install -c conda-forge lalsuite

# --- Accélération (optionnel / désactivé en Py>=3.12 pour éviter conflits NumPy)
numba==0.60.0    ; python_version < "3.12"
llvmlite==0.43.0 ; python_version < "3.12"

# --- Notes ---
# 1) jsonschema[format-nongpl] garantit la validation stricte des champs date-heure,
#    URI, etc., utilisée par nos schémas zz-schemas/*.schema.json.
# 2) requests est requis par les scripts de récupération (p.ex. GWOSC, jeux externes).
# 3) Pour des CSV volumineux, vous pouvez ajouter pyarrow (optionnel) :
#    pyarrow==17.0.0
# 4) Pour CAMB et LALSuite, favorisez conda ; sous pip, les binaires/compilations
#    peuvent varier selon la plateforme.
