Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
444 commits
Select commit Hold shift + click to select a range
c179e9f
Drop the two feature loaders nothing called.
nictru Aug 7, 2026
85340a8
Let each featurizer name the views it reads.
nictru Aug 7, 2026
a0d122c
Move view/entity-id resolution into config methods.
nictru Aug 7, 2026
b28145b
Move validate_hyperparameter_space import to module level.
nictru Aug 7, 2026
3f7075c
Fix misleading docstrings on get_state/set_state.
nictru Aug 7, 2026
08a43ac
Lift response-None guard into Predictor.fit() template method.
nictru Aug 7, 2026
5436f38
Validate batch consistency in ModelInputBatch.__post_init__.
nictru Aug 7, 2026
2a15746
Normalize response to float64 in ModelInputBatch.__post_init__.
nictru Aug 7, 2026
a89f38b
Make BlockPredictor abstract.
nictru Aug 7, 2026
c5c11ff
Remove redundant float64 cast in SklearnTabularPredictor._fit_matrix.
nictru Aug 7, 2026
6b828cb
Replace np.isclose with exact equality in single-drug routing.
nictru Aug 7, 2026
57bb138
Add clarifying comments to single-drug routing key decoding.
nictru Aug 7, 2026
451b28c
Add docstring to SingleDrugSklearnPredictor._cell_line_matrix.
nictru Aug 7, 2026
ceef2ff
Remove legacy single-blob checkpoint support from SingleDrugBlockPred…
nictru Aug 7, 2026
ddc9a90
Migrate all literature predictors to consume ModelInputBatch directly.
nictru Aug 7, 2026
b11c6e4
Consolidate DataLoader patterns into shared make_tensor_loader utility
nictru Aug 8, 2026
70c1d16
Move abstract predictor base classes into predictors/abstract/ subpac…
nictru Aug 8, 2026
bfe94e9
Move guarded imports to top level for core dependencies
nictru Aug 8, 2026
6940e1c
Replace eager pair-level expansion with lazy indexed DataLoader
nictru Aug 8, 2026
b32ef04
Replace manual class cache with functools.cache
nictru Aug 8, 2026
91c7021
Make resolved config required in _ComponentStack
nictru Aug 8, 2026
265302e
Move non-circular deferred imports to top level in DRPModel
nictru Aug 8, 2026
35de930
Move WandbLogger import to top level in _drp_logging
nictru Aug 8, 2026
ac75356
Regenerate poetry.lock to match pyproject.toml
nictru Aug 8, 2026
27c0449
Skip semantic validation when predictor dep is unavailable
nictru Aug 8, 2026
c422dd9
fix: resolve all 134 mypy type errors
nictru Aug 8, 2026
47f268c
fix: resolve 6 CI test failures on modularity branch
nictru Aug 8, 2026
e2e186c
fix: defer featurizers._matrix import in model_input_batch to break c…
nictru Aug 8, 2026
01d50bf
fix: resolve typeguard runtime type check failures
nictru Aug 8, 2026
6682717
fix: use correct mypy ignore code for sparsego type conversions
nictru Aug 8, 2026
9bcf383
fix: add attr-defined to type ignore for sparsego fallback
nictru Aug 8, 2026
cfa192c
migrate tooling to Astral stack (uv, ruff, ty, prek)
nictru Aug 8, 2026
6402316
fix: resolve CI failures in lint, typecheck, and tests
nictru Aug 8, 2026
2a024e7
fix: suppress ty false positives to unblock CI type check
nictru Aug 8, 2026
fb3d054
feat: replace path_data with persistent system cache directory (#455)
nictru Aug 8, 2026
99c9566
refactor: replace legacy CSV data structures with MuData-native pipeline
nictru Aug 8, 2026
0ed8b1e
refactor: eliminate FeatureDataset in favor of FeatureSource protocol
nictru Aug 9, 2026
8f21451
refactor: reduce complexity of DrugResponseDataset.load_splits
nictru Aug 9, 2026
61a33eb
refactor: remove legacy DrugResponseDataset, FeatureDataset, and spli…
nictru Aug 9, 2026
80059b3
docs: update API references to mu_experiment, export MuDataLike protocol
nictru Aug 9, 2026
0be09c5
refactor: move build-time scripts out of package, simplify dataset re…
nictru Aug 9, 2026
48f7841
feat: add external dataset registration with fsspec downloads
nictru Aug 9, 2026
2414901
refactor: extract config into Pydantic-based datasets/config/ subpackage
nictru Aug 9, 2026
c063960
refactor: make DrevalConfig strict (forbid unknown keys)
nictru Aug 9, 2026
bc7cd29
refactor: registry as singleton class with dedicated datasets.json co…
nictru Aug 9, 2026
88b28d0
feat: polish Registry class with rich output and module-level access
nictru Aug 9, 2026
d34424a
refactor: replace pathlib.Path with universal-pathlib UPath throughout
nictru Aug 9, 2026
a434eb5
feat: add global Rich-based logging, fix download streaming + corrupt…
nictru Aug 9, 2026
e195158
refactor: use __repr__ only for Registry string output
nictru Aug 9, 2026
e1a73f5
refactor: rename drevalpy.datasets to drevalpy.data
nictru Aug 9, 2026
94cc62b
refactor: move gene_lists.py to components/featurizers/cell_line/
nictru Aug 9, 2026
c0d075e
refactor: move data structures into drevalpy.data.structures subpackage
nictru Aug 9, 2026
2265bbf
refactor: Protocol-based splitter registry with decorator registration
nictru Aug 9, 2026
966e977
fix: update all imports after datasets->datasets, splitting->splitter…
nictru Aug 9, 2026
192f9b4
feat: add splitter validation layer with automatic leakage detection
nictru Aug 9, 2026
1024675
feat: add MuDataset.split() convenience method
nictru Aug 9, 2026
3cdb7c8
refactor: move loader into datasets/, add top-level load/split API
nictru Aug 9, 2026
89872e6
refactor: split types.py into one file per class
nictru Aug 9, 2026
8ba6ff2
feat: add SplitMasks.save() / .load() with numpy .npz format
nictru Aug 9, 2026
f0ac30a
feat: add per-fold metadata to SplitMasks, persisted in .npz
nictru Aug 9, 2026
4c7a34c
refactor: unified 2D pair arrays for SplitMasks + simplified stack
nictru Aug 9, 2026
6d3df8b
test: add comprehensive tests for drevalpy.data splitting + registry
nictru Aug 9, 2026
f739635
fix: migrate all callers to new 2D SplitMasks/EntityScope API
nictru Aug 9, 2026
3361a11
refactor: make MuDataset explicitly inherit from MuDataLike protocol
nictru Aug 9, 2026
fa6a621
refactor: restructure components/ into core/ hierarchy
nictru Aug 9, 2026
5032152
refactor: move data_loading/ into components/core/
nictru Aug 9, 2026
6b1b101
refactor: move tuning/ into components/core/
nictru Aug 9, 2026
a5dcb42
feat: eager component registration + consistent list_table() API
nictru Aug 9, 2026
0b80dde
refactor: use pandas DataFrames for all registry repr + HTML display
nictru Aug 9, 2026
dab55e9
fix: import pandas at top level in registries, remove redundant lazy …
nictru Aug 9, 2026
83191dc
fix: stale components.tuning import path in experiment/__init__
nictru Aug 9, 2026
d52ea44
fix: splitters are callables, not objects with .split() method
nictru Aug 9, 2026
a57f63f
fix: add NaN feature filtering in _ComponentStack + integration test
nictru Aug 9, 2026
69ddcb2
refactor: replace warnings.warn with logger in MuDataset
nictru Aug 9, 2026
46d56f8
refactor: replace all print() with structured logging in experiment m…
nictru Aug 9, 2026
4b4c879
fix: align predictions to scope.pairs (NaN for missing-feature pairs)
nictru Aug 9, 2026
c9fbf41
feat: Run/Experiment classes, MuDataset.name, improved reprs + metric…
nictru Aug 9, 2026
4bfac6e
fix: correct select_fold_hyperparameters call signature in Run.execute()
nictru Aug 9, 2026
364bc19
fix: hpo_cfg -> hpo_config kwarg name
nictru Aug 9, 2026
2507848
refactor: replace Ray Tune with pure serial Optuna HPO
nictru Aug 9, 2026
80edc40
fix: MuDataset name propagation + handle Optuna all-trials-failed
nictru Aug 9, 2026
2a62554
refactor: remove fold_index from Run (read from SplitMasks metadata)
nictru Aug 9, 2026
74ec8cf
fix: filter NaN predictions before computing HPO trial metrics
nictru Aug 9, 2026
a36d155
feat: upfront entity filtering at Run construction time
nictru Aug 9, 2026
e0433fc
refactor: rename MuDataset to Dataset, remove mu_ prefix from functions
nictru Aug 9, 2026
4966c9c
feat: add __repr__ to Experiment class
nictru Aug 9, 2026
f6d1343
refactor: split single_run.py into separate files per class
nictru Aug 9, 2026
e62f42a
refactor: replace Run class with a run() function
nictru Aug 9, 2026
569ffe0
refactor: use 2D boolean masks for splits instead of pair arrays
nictru Aug 9, 2026
6bb888b
chore: remove obsolete experiment_old tests and fix hpam_tune imports
nictru Aug 9, 2026
cbf389b
refactor: remove experiment/fold.py, add early_stopping_mask to Split…
nictru Aug 9, 2026
97430db
feat: add locate_view() and rewrite randomization with no hardcoded s…
nictru Aug 9, 2026
3646c8d
feat: add robustness testing via pair-order shuffling
nictru Aug 9, 2026
257ace1
feat: add randomization() function that returns altered datasets
nictru Aug 9, 2026
ac8ec51
refactor: move data/structures/ into types/, inline train_and_predict
nictru Aug 9, 2026
1c3fde6
refactor: move run_result.py and trial_result.py to drevalpy/types/
nictru Aug 9, 2026
daeed8b
fix: pipeline.py bugs and SplitMasks hash error
nictru Aug 9, 2026
01fdb88
refactor: expose key functions at top-level drevalpy namespace
nictru Aug 9, 2026
28f61ea
refactor: inline _build_randomization_test_views into randomization()
nictru Aug 9, 2026
de9e2c4
refactor: encode randomization test name into dataset name
nictru Aug 9, 2026
ff72446
refactor: store randomization info as a Dataset field instead of in name
nictru Aug 9, 2026
946ec16
refactor: make randomization field a hashable (mode, view) tuple
nictru Aug 9, 2026
c9326a9
feat: store dataset_name and randomization in RunResult
nictru Aug 9, 2026
ad802d4
docs: clarify purpose of MuDataLike protocol in module docstring
nictru Aug 9, 2026
bc14dc3
refactor: move zoo imports to module level in _construct_model_api
nictru Aug 10, 2026
bfa6d05
ci: add pytest to pre-commit hooks
nictru Aug 10, 2026
67b2032
fix: add missing attach_sparsego_ontology_metadata function
nictru Aug 10, 2026
0fd500f
fix: resolve all 42 pre-existing test failures
nictru Aug 10, 2026
9aec1ab
refactor: replace legacy CLI with minimal drevalpy data load command
nictru Aug 10, 2026
a4b300a
feat: add drevalpy data split command and fix split() passing mdata
nictru Aug 10, 2026
101d31b
refactor: rename shuffled_splits to robustness, add run.py pipeline d…
nictru Aug 10, 2026
7637736
feat: add drevalpy experiments robustness CLI command
nictru Aug 10, 2026
7c850a9
feat: add drevalpy experiments randomization command, use Rich progre…
nictru Aug 10, 2026
b5f3350
fix: use Dataset.from_file for randomization input, use colon in outp…
nictru Aug 10, 2026
39543d8
feat: add drevalpy experiments run command
nictru Aug 10, 2026
9391a91
feat: add graceful KeyboardInterrupt handling to CLI
nictru Aug 10, 2026
7c19e66
refactor: simplify _resolve_base_config by collapsing spec=None into …
nictru Aug 10, 2026
2b8f4f1
feat: add drevalpy run command for full pipeline execution
nictru Aug 10, 2026
fe58289
refactor: move experiments run to top-level drevalpy single command
nictru Aug 10, 2026
dab0611
refactor: restructure CLI into hierarchical subdirectories
nictru Aug 10, 2026
acd36ed
refactor: rename pipeline.py to run.py, experiment/run.py to single.py
nictru Aug 10, 2026
0e9d8b4
refactor: move _deprecations.py into utils/
nictru Aug 10, 2026
fe528b8
chore: remove old CLI files superseded by new CLI
nictru Aug 10, 2026
de1d4f2
chore: remove legacy utils/pipeline.py (superseded by drevalpy.run)
nictru Aug 10, 2026
e693520
chore: remove consolidate_single_drug (handled internally now)
nictru Aug 10, 2026
783384f
refactor: remove utils/checkpoints.py, use tempfile.TemporaryDirector…
nictru Aug 10, 2026
ae146da
refactor: restructure drevalpy/types/ into data/, results/, enums/ su…
nictru Aug 10, 2026
6a97bbc
chore: remove _pipeline_function decorator and all usages
nictru Aug 10, 2026
bd7c11d
chore: remove unused pickle_io module and its tests
nictru Aug 10, 2026
0dab8f8
refactor: move seed.py from experiment/ to utils/
nictru Aug 10, 2026
e1304b8
refactor: rename run_result.py -> run.py, trial_result.py -> trial.py…
nictru Aug 10, 2026
a0a46aa
feat: add ModelResult and ExperimentResult with hierarchical save/load
nictru Aug 10, 2026
e3b5892
refactor: build ModelResult per model-fold pair inline in pipeline loop
nictru Aug 10, 2026
9322dc4
chore: remove _deprecations module, inline deprecation warning in mod…
nictru Aug 10, 2026
49d8fe0
refactor: move core/plugins/ to registry/, use relative imports in __…
nictru Aug 10, 2026
d7b5eed
refactor: rename pipeline() to run() in drevalpy.run module
nictru Aug 10, 2026
79f5683
refactor: clean up components/core/ — remove dead code, consolidate H…
nictru Aug 10, 2026
9d0296d
refactor: remove FeaturizerFitContext, pass pair-expanded IDs directly
nictru Aug 10, 2026
e810950
feat: add featurizer data ownership interface (fetch/store/storage_key)
nictru Aug 10, 2026
579380a
feat: migrate all featurizers to fetch/store pattern
nictru Aug 10, 2026
b1edf04
feat: complete featurizer data ownership — alignment script, remove f…
nictru Aug 10, 2026
688d138
refactor: simplify to_mudata.py to raw omics only, remove align CLI
nictru Aug 10, 2026
6315be6
feat: add Dataset.save/load with name and randomization in uns
nictru Aug 10, 2026
53615d8
feat: add Dataset.precompute() for pre-computing featurizer represent…
nictru Aug 10, 2026
46a1e37
refactor: split dataset.py into dataset_utils/ subdirectory
nictru Aug 10, 2026
3879d48
refactor: convert dataset_utils to proper mixin classes
nictru Aug 10, 2026
bf5e5de
fix: use explicit view param in Dataset.precompute() instead of **kwargs
nictru Aug 10, 2026
1637ce6
feat: make featurizers and predictors NaN-tolerant at base class level
nictru Aug 10, 2026
9596dfe
refactor: remove NaN filtering from _component_stack (handled by base…
nictru Aug 10, 2026
c0e9aad
fix: move NaN tolerance for transform to call sites, not base class
nictru Aug 10, 2026
d03a3bb
fix: store cell-line features in obsm, drug features in varm
nictru Aug 10, 2026
59e010e
refactor: remove redundant index field from featurizer_variants registry
nictru Aug 10, 2026
47b0980
refactor: simplify variant registry to {storage_key: {mudata_key: par…
nictru Aug 10, 2026
06983e4
fix: separate uns keys for cell-line vs drug featurizer variants
nictru Aug 10, 2026
c2de3ac
feat: make all drug featurizers self-sufficient (compute from SMILES)
nictru Aug 10, 2026
59bd012
fix: handle NaN rows in PCA transform (skip invalid, output NaN)
nictru Aug 10, 2026
5acb7f8
fix: use rdkit MorganGenerator API (removes deprecation warnings)
nictru Aug 10, 2026
7629f63
deps: add rdkit as a direct dependency for on-the-fly fingerprint com…
nictru Aug 10, 2026
fcb3ea9
refactor: global NaN tolerance in Featurizer base class
nictru Aug 10, 2026
57c4b12
feat: add pre-computed HPO mode (learned attribute + precompute_all +…
nictru Aug 10, 2026
aede18d
fix: use registry.list_names() instead of nonexistent registry.list()
nictru Aug 10, 2026
57ba04f
feat: make bionic + pathways featurizers self-sufficient
nictru Aug 10, 2026
7976856
refactor: replace learned attr with precompute=False default, True fo…
nictru Aug 10, 2026
1298005
fix: add logging to precompute_all to show which featurizers are skip…
nictru Aug 10, 2026
b4036ce
fix: remove broken _has_required_views check from precompute_all
nictru Aug 10, 2026
f91d072
test: add precompute smoke tests for all precomputable featurizers
nictru Aug 10, 2026
601ce1a
refactor: redesign precomputable featurizer architecture
nictru Aug 10, 2026
b46a909
refactor: move state_helpers to components/predictors
nictru Aug 11, 2026
6893c58
refactor: move feature_source to components/featurizers
nictru Aug 11, 2026
890f1f1
refactor: move contracts from core/ to components/contracts
nictru Aug 11, 2026
72b4941
refactor: move tuning from components/core/ to models/tuning
nictru Aug 11, 2026
02a33da
refactor: move fitting helpers to components/featurizers
nictru Aug 11, 2026
d61c72f
refactor: move batch to types/data/ and remove components/core
nictru Aug 11, 2026
d487977
refactor: move response_batch into types/data/batch/
nictru Aug 11, 2026
833afc5
refactor: extract DRPHyperparametersMixin from DRPModel
nictru Aug 11, 2026
05d59e0
refactor: move DRPModel mixins into models/mixins/
nictru Aug 11, 2026
53f7027
test: remove legacy predict API tests
nictru Aug 11, 2026
724e46f
chore: remove legacy CLI entry points
nictru Aug 11, 2026
5dab419
purge all legacy backward-compat code and references
nictru Aug 11, 2026
799b70b
refactor: extract persistence mixin and rename internal modules
nictru Aug 11, 2026
64d853f
remove dead code: validation module and torch_io aliases
nictru Aug 11, 2026
bc426e1
remove _torch_state re-export shim, import torch_io directly
nictru Aug 11, 2026
423d7b1
remove dead data shims and relocate tensor_data
nictru Aug 11, 2026
ec7dc32
move feature_source into drevalpy/types/data/
nictru Aug 11, 2026
79b8b7a
remove dead code: factory dicts, unused modules, and stale exports
nictru Aug 11, 2026
b943748
remove scripts/featurizer, inline MolGNet network into package
nictru Aug 11, 2026
6a65c2a
remove scripts/ directory and associated tests
nictru Aug 11, 2026
7fcff6e
refactor: consolidate FeatureSource into a single ABC and clean up ty…
nictru Aug 11, 2026
3d03d42
refactor: convert lazy imports to eager and restructure to break circ…
nictru Aug 11, 2026
b55b9ec
feat: parallel single-run aggregation and typed visualization pipeline
nictru Aug 11, 2026
02308ff
refactor: MultiQC visualization registry with hierarchical module str…
nictru Aug 11, 2026
7d632af
refactor: remove visualization shims, consolidate all plots in _legacy/
nictru Aug 11, 2026
a4f92d4
refactor: dual-output visualization ABC with self-contained plot impl…
nictru Aug 11, 2026
452af8c
feat: reference model normalization with fold_id matching
nictru Aug 11, 2026
fee46cd
feat: accept optional dataset in visualization compute() for metadata…
nictru Aug 11, 2026
a6e65d4
chore: remove visualization/_legacy/ and associated legacy CLI/tests
nictru Aug 11, 2026
c76a78b
refactor: consolidate all registries into drevalpy/registry/ module
nictru Aug 11, 2026
c6d1fe6
chore: update .readthedocs.yml to use native uv support
nictru Aug 11, 2026
b329917
chore: add uv.lock for reproducible builds
nictru Aug 11, 2026
5302789
docs: restore split-mode images to docs/_static/img/
nictru Aug 11, 2026
1dcc591
docs: remove migration notes and deprecated references
nictru Aug 11, 2026
ee58a53
docs: explain MuData on-disk dataset format in concepts/datasets
nictru Aug 11, 2026
129420e
docs: add Registries concepts page and improve component catalog
nictru Aug 11, 2026
ad1c5b8
remove legacy cli_old/, curvecurator module, and associated test
nictru Aug 11, 2026
b67e16b
feat: add invariant randomization mode
nictru Aug 11, 2026
6ef494f
docs: unify Python and CLI guide structure with current API
nictru Aug 11, 2026
6e433e4
Merge pull request #459 from daisybio/mudata
nictru Aug 11, 2026
05640b0
Fix dockerfile
nictru Aug 11, 2026
dc04bc5
Fix permmission issue
nictru Aug 12, 2026
5cb55e2
Add dependency cooldown of 3 weeks via exclude-newer
nictru Aug 12, 2026
5fe3a94
Downgrade rdkit and transformers minimum versions for exclude-newer c…
nictru Aug 12, 2026
41d8184
Fix serializaiton issue
nictru Aug 12, 2026
fc2f612
Improve Dockerfile structure
nictru Aug 12, 2026
16d8b05
Disable Trial normalization
nictru Aug 12, 2026
ae2dbf0
feat: add CPU/CUDA torch backend selection via extras
nictru Aug 12, 2026
0b9b815
Fix MultiQC content validation error for plot-only sections
nictru Aug 12, 2026
b2747c9
Use link copy mode in dockerfile
nictru Aug 12, 2026
60320f1
feat: add curation submodule for dose-response curve fitting
nictru Aug 12, 2026
cfd836b
fix(registry): stop silently swallowing built-in component import errors
nictru Aug 12, 2026
5a23435
fix(deps): pin nvidia-nccl-cu12 to an NCCL build compatible with torc…
nictru Aug 12, 2026
a42cb38
Narrow Random Forest hyperparameter search space
nictru Aug 12, 2026
f1304aa
Ship gene lists as package data and read them from there
nictru Aug 12, 2026
043b47d
Fetch ChemBERTa weights from the artifacts bucket instead of the HF Hub
nictru Aug 12, 2026
d4c3f6e
Build test fixtures in memory instead of downloading TOY datasets
nictru Aug 12, 2026
d46d530
Point the docs at the API and datasets that exist
nictru Aug 12, 2026
030c87e
Stop tracking .DS_Store
nictru Aug 12, 2026
f765241
Mirror every module with a test and gate coverage in pre-commit
nictru Aug 12, 2026
4a43cb7
Fix the latent bugs the new tests exposed
nictru Aug 12, 2026
d0411d9
Narrow the search spaces that only cost tuning time
nictru Aug 12, 2026
17f5ee3
Apply the response transformation to the training target
nictru Aug 12, 2026
d194403
Bound report memory and fix the metric contract it was hiding
nictru Aug 13, 2026
be82daa
Make plugin failures loud and give authors one import surface
nictru Aug 13, 2026
39f5c2e
Tier the test suite and stop paying 3.6s to import drevalpy
nictru Aug 13, 2026
db83c0b
Give LightGBM the OpenMP runtime it was borrowing from torch
nictru Aug 14, 2026
8528aa3
Register the gen2 datasets and stop hardcoding the built-in list
nictru Aug 14, 2026
c60a6ba
Stop splitting on curves the fit itself calls meaningless
nictru Aug 14, 2026
eebca06
Keep the per-curve errors and stop normalization depending on core count
nictru Aug 14, 2026
a2a7736
Say pEC50 where the code means pEC50
nictru Aug 14, 2026
45b1c1a
Stop shipping 61 packages the code never imports
nictru Aug 14, 2026
2c758c6
Ignore local editor and tooling config
nictru Aug 14, 2026
19ca8a7
Ignore only the agent config Cursor actually generates
nictru Aug 14, 2026
adcc791
Cut AGENTS.md down to the rules an agent can act on
nictru Aug 14, 2026
43f4d53
Write each side-agnostic featurizer once instead of twice
nictru Aug 15, 2026
0bd8f4a
feat(curation): accept external executor for parallel curve fitting
nictru Aug 15, 2026
c001f58
refactor(curation): replace cores-based chunking with max_chunk_size
nictru Aug 15, 2026
77e9f5e
Share the plumbing each predictor was carrying its own copy of
nictru Aug 16, 2026
a05af00
Merge branch 'v2-executors' into v2
nictru Aug 16, 2026
5f56ffd
Point dataset registry at gen3 S3 prefix
nictru Aug 16, 2026
f9c3584
Fix curation tests for the cores -> max_chunk_size/max_workers rename
nictru Aug 16, 2026
cf5eeb6
chore(deps): pin curve-curator to e98d052 (perf fixes)
nictru Aug 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
- [ ] This comment contains a description of changes (with reason)
- [ ] Referenced issue is linked
- [ ] If you've fixed a bug or added code that should be tested, add tests!
- [ ] Documentation in `docs` is updated. If you've created a new file, add it to the API documentation pages.
- [ ] Documentation in `docs` is updated. Public modules under documented packages are picked up automatically by the recursive API autosummary.

<!-- Only applies to PRs for a new version release, delete the lines that don't apply -->

Expand Down
32 changes: 16 additions & 16 deletions .github/workflows/build_package.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
name: Build DrEvalPy Package

on: [push, pull_request]
on:
# Same-repo PR branches were building twice (push + pull_request = 18 jobs).
# Keep the pull_request build and limit push builds to the branches that are
# not covered by a PR: the default branches and release branches, which
# feed python-publish.yml.
push:
branches:
- main
- master
- "release/*"
pull_request:

jobs:
build:
Expand All @@ -12,25 +22,15 @@ jobs:
python: ["3.11", "3.12", "3.13"]

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
name: Check out source-code repository

- name: Setup Python
uses: actions/setup-python@v6
- uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
with:
python-version: ${{ matrix.python }}

- name: Install Poetry
run: |
pipx install poetry
pipx inject poetry poetry-plugin-export
poetry --version

- name: Build package
run: poetry build --ansi

- name: Install required twine packaging dependencies
run: pip install setuptools wheel twine
run: uv build

- name: Check twine package
run: twine check dist/*
- name: Check package with twine
run: uvx twine check dist/*
4 changes: 2 additions & 2 deletions .github/workflows/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@v6
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

- name: Run Labeler
uses: crazy-max/ghaction-github-labeler@v6.0.0
uses: crazy-max/ghaction-github-labeler@548a7c3603594ec17c819e1239f281a3b801ab4d # v6.0.0
with:
skip-delete: true
24 changes: 6 additions & 18 deletions .github/workflows/publish-docker.yml
Original file line number Diff line number Diff line change
@@ -1,61 +1,49 @@
name: Create and publish a Docker image

# Configures this workflow to run every time a release is published
on:
release:
types: [published]

# Defines two custom environment variables for the workflow.
# These are used for the Container registry domain, and a name for the Docker image that this workflow builds.
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.
jobs:
build-and-push-image:
runs-on: ubuntu-latest

# Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
permissions:
contents: read
packages: write
attestations: write
id-token: write

steps:
# Necessary for buildx
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

- name: Setup QEMU
uses: docker/setup-qemu-action@v4
uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4

# Set up BuildKit Docker container builder to be able to build
# multi-platform images and export cache
# https://github.com/docker/setup-buildx-action
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4

- name: Log in to the Container registry
uses: docker/login-action@v4
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v6
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 # v6
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}

# This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages.
# It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository.
# It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step.
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v7
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7
with:
context: .
push: true
Expand Down
32 changes: 14 additions & 18 deletions .github/workflows/publish_docs.yml
Original file line number Diff line number Diff line change
@@ -1,36 +1,32 @@
name: Build Documentation

on: [push]
# PR-side docs builds are covered by the `docs` job in run_tests.yml.
# This workflow exists to deploy, so it only runs on the branches that deploy.
on:
push:
branches:
- main
- master

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
name: Check out source-code repository

- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: "3.13"

- name: Install pip
run: |
python -m pip install --upgrade pip
- uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0

- name: Install doc dependencies
run: |
pip install -r docs/requirements.txt
- name: Install dependencies
run: uv sync --group docs

- name: Build docs
run: |
cd docs
make html
run: uv run sphinx-build -W -b html docs docs/_build/html

- name: Deploy
if: ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main'}}
uses: peaceiris/actions-gh-pages@v4
if: ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' }}
uses: peaceiris/actions-gh-pages@84c30a85c19949d7eee79c4ff27748b70285e453 # v4.1.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs/_build/html
26 changes: 7 additions & 19 deletions .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,3 @@
# This workflow will upload a Python Package using Twine when a release is created
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: Upload Python Package

on:
Expand All @@ -20,19 +12,15 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v6
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.x"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

- uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0

- name: Build package
run: python -m build
run: uv build

- name: Publish package
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
4 changes: 3 additions & 1 deletion .github/workflows/release_drafter.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
name: Release Drafter

on:
push:
branches:
- development

jobs:
update_release_draft:
runs-on: ubuntu-latest
steps:
- uses: release-drafter/release-drafter@v7
- uses: release-drafter/release-drafter@34d80673e067bdc0c24568d3af899c216adcfaa9 # v7.7.0
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
59 changes: 59 additions & 0 deletions .github/workflows/run_network_tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Network Tests

# The `network`-marked tests download pretrained weights and remote annotations
# from the drevalpy artifacts bucket, so they are deselected everywhere else:
# the pre-commit hook runs the fast tier and run_tests.yml runs
# `-m "not network"`. Without this workflow they would never run at all.
on:
schedule:
# Mondays 05:00 UTC. Weekly is enough: these tests guard artifact
# availability and loader wiring, neither of which changes per commit.
- cron: "0 5 * * 1"
workflow_dispatch:

permissions:
contents: read

concurrency:
group: network-tests
cancel-in-progress: false

jobs:
network-tests:
name: Network tests
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3

- uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0

# The bucket refuses anonymous reads (403), so without credentials every
# one of these tests fails for a reason that has nothing to do with the
# code. Detect that up front and skip instead, so a fork or a repo with no
# secrets configured does not carry a permanently red weekly badge.
- name: Check for artifact credentials
id: creds
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
run: |
if [ -n "$AWS_ACCESS_KEY_ID" ]; then
echo "available=true" >> "$GITHUB_OUTPUT"
else
echo "available=false" >> "$GITHUB_OUTPUT"
echo "::notice title=Network tests skipped::AWS_ACCESS_KEY_ID is not configured, so the artifacts bucket is unreachable. Add the AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY secrets to enable the network tests."
fi

- name: Run network tests
if: steps.creds.outputs.available == 'true'
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: ${{ vars.AWS_DEFAULT_REGION }}
# Optional mirror. Empty is fine: get_artifacts_uri() strips blanks and
# falls back to the bundled default bucket.
DREVALPY_ARTIFACTS_URI: ${{ vars.DREVALPY_ARTIFACTS_URI }}
# The explicit `-m network` replaces the `addopts` marker expression
# rather than adding to it, so this selects exactly the 8 network tests.
# No coverage: run_tests.yml owns the coverage gate.
run: uv run pytest -m network
Loading