numpy>=2.0.0,<3.0.0
# Shared test-data downloads use verified cache hits, explicit roots and bounded
# HTTP retries via datacache's public API, without fetching during normal tests.
# The 1.11.1 floor is what inspect_files/Cache.inspect need: download_test_data
# reports a per-file status (available/missing/corrupt/inaccessible) instead of
# only raising, and 1.11.1 is the release that shortens over-long cache names.
datacache>=1.14.0,<2.0.0
# Public data acquisition and original-read extraction for the osteosarc corpus.
# 0.15.6 coordinates runtime and distribution versions for evidence provenance.
osteosarc>=0.15.6,<0.16
pandas>=3.0.0,<4.0.0
# Hitlist's library is standard; its evidence datasets are installed separately.
# 2.1.9 supplies the public read-only generation snapshot used by local queries.
hitlist>=2.1.9,<3
# Vaxrank directly reads captured Hitlist evidence with pandas.read_parquet.
pyarrow
# Metadata-only Transcript/Gene restore defers annotation DB access (#563).
# 2.29.0 exposes resolved assembly identity apart from the cache/display label.
pyensembl>=2.29.0,<3.0.0
# 11.1 supplies shared candidate traversal and local consequence priority.
# Ordinary annotations can retain realized splice/phase alternatives; the
# selected comparison and its patient baseline remain distinct from the set.
varcode>=11.1.0,<12.0.0
# 1.62.2 adds occurrence-scoped RNA support for exported SV ORF placements.
# 1.61 adds reference-frame ncORF reconstruction. The Isovar input adapters
# validate each supported result schema; producer evidence is retained losslessly.
# 1.76 exposes shared read policies for live viral and antigen-isoform sources.
# 1.78 retains Varcode 11 comparisons and filters by aggregate coding potential.
isovar>=1.78.0,<2.0.0
# 3.33.5 makes bundled YAML loading independent of the host locale.
mhcgnomes>=3.64.4,<4.0.0
# 4.8.1 accepts separate --mhc-alleles arguments through the shared parser.
mhctools>=4.8.1,<5.0.0
# 5.82.0 is the first release compatible with Osteosarc 0.14. It includes
# context-correct cached scans, presentation metrics and conflict checks in
# the DSL used for scoring. Keep these floors aligned when Osteosarc moves.
# Generalized input persistence uses Topiary's typed table codec and public
# source combination/ranking APIs, verified together against 5.86.2.
# Named selection policies require occurrence evaluation, named criteria and
# retained audit decisions, released together in 5.90.0.
# Published comparison policies need report-wide DSL normalization and ranking.
# Native Exacto/mixed report replay requires typed scalar/structured annotations
# and nullable integer/boolean cells. Public occurrence/reconciliation and
# additive rescoring APIs are consumed together; 5.93.2 fixes that replay.
# 5.93.3 accepts Osteosarc 0.15 alongside 0.14, enabling Isovar 1.45.
# 5.93.6 preserves saved DSL grouping, negative transform bounds and scalar
# literal compatibility (openvax/topiary#473, #475, #481; vaxrank#582).
# 5.94.3 infers delimiters from header-only and single-feature expression
# tables, required by expression-first CTA admission (topiary#486).
# 5.94.4 preserves categorical predicates and escaped strings in saved policies.
# 5.95.0 adds the optional foreignness DSL and preserves measurement context
# through every cache path. Keep the consumer coordinated with that API.
# 5.95.1 restores typed native TSV/CSV replay under pandas 3.1 (topiary#507).
# 5.104.0 supplies the public model inventory and correct unknown-length
# handling used by effective prediction-policy reports (vaxrank#718).
# 5.106.0 derives current inference flanks from exact source windows while
# preserving historical invocation metadata (openvax/topiary#545; vaxrank#721).
# 5.106.1 applies an explicitly selected genotype to contextual protein scans,
# required when antigen/CTA caches contain other patients (topiary#547; vaxrank#725).
# 5.108.4 accepts Isovar's unlimited hypothesis cap and exact repeated pairs
# for patient-background comparisons (topiary#561/#562; vaxrank#716).
# 5.111.0 supplies the shared exact/expressed patient-allele boundary used by
# MS attribution and all prediction input validation (topiary#578, vaxrank#789).
topiary>=5.111.0,<6.0.0
roman
jinja2>=3.1
weasyprint>=62.0
# Vector figures remain the source of truth; CairoSVG provides explicit,
# resolution-controlled PNG export for publication and slide workflows.
cairosvg>=2.7,<3.0
pdfkit  # legacy: needs wkhtmltopdf, use --pdf-backend=pdfkit to enable
openpyxl
xvfbwrapper>=0.2.34  # legacy: only needed with --pdf-backend=pdfkit on headless Linux
astropy>=6.1
platformdirs
msgspec>=0.18.6,<1.0.0
dnachisel>=3.2.0,<4.0.0
serializable>=1.1.0,<2.0.0
# OncoRef 1.23.1 supplies sequence-backed common CTA snapshots alongside the
# historical annotation-bound APIs. The tested range runs through 1.27.0
# (1.24.0 adds product-scoped clinical evidence; 1.25.0 widens the CTA candidate
# universe and drops the Neither / Tumor-restricted categories). PirlyGenes, which
# Topiary requires, still caps OncoRef at 1.24.0 (pirl-unc/pirlygenes#665), so
# installs resolve to 1.24.0 until it lifts that cap. Saved policy/data identities
# remain unchanged; package compatibility does not silently adopt a new
# target-selection policy (#687).
oncoref>=1.23.1,<2.0.0
# 0.42.6 accepts canonical PyEnsembl metadata for the pinned Ensembl builder.
orfdata>=0.42.6,<1.0.0
# vaxrank.peptide_context imports packaging.version for PEP 440 ordering
# of predictor_version strings. Always pulled in transitively via setuptools
# / pip, but pinned explicitly so minimal / --no-deps installs don't break
# at import time.
packaging>=21.0
