# The scientific stack pre-baked into every shipped desktop bundle.
#
# Single source of truth, read by BOTH sides on BOTH platforms so they cannot
# drift:
#   - scripts/build_macos_dmg.sh    installs the pip names into the embedded runtime
#   - scripts/build_linux_bundle.sh installs the same names into the Linux runtime
#   - scripts/verify_macos_bundle.py / verify_linux_bundle.py assert each import
#     name resolves from inside the shipped bundle
#
# The Windows package carries the Linux bundle as its WSL2 payload, so it
# inherits this same set rather than declaring one of its own.
#
# One package per line:  <pip-name> <import-name> [skip_arch=<arch>...]
# (# starts a comment). A `skip_arch=` column excludes the package from
# bundles built for that architecture — and from that bundle's verifier —
# because no wheel exists there; the in-tree consumer degrades gracefully.
#
# This is the pip-installable superset of the DEFAULT python.yml kernel env plus
# the stdlib-networking helpers, so a downloaded app runs the common
# cheminformatics / single-cell / dataframe workflows offline with no
# `pip install` and no `openai4s setup`. Every entry here has been verified to
# wheel on macOS arm64 and Linux x86_64 CPython 3.13 and to import without
# pulling numpy below 2.x.
#
# Deliberately NOT here: torch + fair-esm (torch is ~200MB and belongs to the
# GPU/struct env), and the R kernel + bioconda CLIs (mafft/iqtree/fasttree) which
# are conda-only binaries pip cannot install. Those stay behind `openai4s setup`.

# --- numeric / dataframe / plotting baseline ---
numpy            numpy
pandas           pandas
scipy            scipy
matplotlib       matplotlib
seaborn          seaborn
plotly           plotly
pillow           PIL
sympy            sympy
statsmodels      statsmodels
networkx         networkx

# --- machine learning ---
scikit-learn     sklearn
umap-learn       umap
numba            numba

# --- cheminformatics ---
rdkit            rdkit

# --- single-cell ---
scanpy[harmony]==1.11.5 scanpy
# seurat_v3 HVG needs scikit-misc; it has no linux-aarch64 wheel and the
# single-cell Skill falls back to the seurat flavor without it.
scikit-misc==0.5.2 skmisc skip_arch=aarch64
anndata          anndata
leidenalg        leidenalg
igraph           igraph
pydeseq2==0.5.4 pydeseq2

# --- bio / IO / storage ---
biopython        Bio
h5py             h5py
zarr             zarr
pyarrow          pyarrow
openpyxl         openpyxl
pypdf            pypdf
pypdfium2        pypdfium2

# --- web / parsing / networking ---
requests         requests
httpx            httpx
socksio          socksio
PySocks          socks
beautifulsoup4   bs4
lxml             lxml

# --- utilities ---
tabulate         tabulate
tqdm             tqdm
pyyaml           yaml
python-dateutil  dateutil
regex            regex
