CREST — Chunked Rust Engine for Single-cell Transcriptomics
CREST runs the standard single-cell RNA-seq workflow (QC → normalisation → highly variable genes → scaling + PCA → neighbours → Leiden → UMAP → differential expression) with native Rust kernels behind a scanpy-style Python API. It reproduces scanpy's results, was faster at every step in our 0.2.0 benchmark, and never materialises a normalised, scaled or dense copy of the count matrix: the raw counts are streamed through the kernels one chunk of cells at a time (hence the name), from memory or from disk (Parquet), with memory bounded by one chunk.
Documentation: crest-sc.readthedocs.io: installation,
quickstart, how it works, API reference, benchmarks (sources in docs/).
import crest
bf = crest.read_10x_h5("filtered_feature_bc_matrix.h5") # or backed="dir/" for out-of-core
bf = crest.pp.filter_cells(bf, min_genes=200)
bf = crest.pp.filter_genes(bf, min_cells=3)
crest.pp.normalize_total(bf, target_sum=1e4) # lazy
crest.pp.log1p(bf) # lazy
crest.pp.highly_variable_genes(bf, n_top_genes=2000, flavor="seurat")
crest.pp.scale(bf, max_value=10) # applied exactly inside PCA
crest.tl.pca(bf, n_comps=50)
crest.pp.neighbors(bf, n_neighbors=15)
crest.tl.leiden(bf, resolution=1.0)
crest.tl.umap(bf)
markers = crest.tl.rank_genes_groups(bf, "leiden", method="wilcoxon") # Polars DataFrame
de = crest.tl.pseudobulk_de(bf, ["donor", "condition"], "~ donor + condition", # DESeq2 per cell type
contrast=("condition", "stim", "ctrl"), groupby="cell_type")
adata = bf.to_anndata() # hand over to scanpy / scverse
Downstream tools (docs/downstream.md): Harmony batch
integration (crest.tl.harmony), Scrublet doublet detection
(crest.pp.scrublet), seurat_v3 HVGs, a parallel Leiden resolution sweep
with stability scores (crest.tl.leiden_sweep), reference mapping / label
transfer (crest.tl.ingest) and the DESeq2 likelihood-ratio test
(DESeq2(test="LRT", reduced=...)).
Installation
pip install crest-sc # import name: crest (the PyPI name `crest` is taken)
pip install "crest-sc[anndata]" # AnnData / scipy interop
Needs Python ≥ 3.10; runtime dependencies are only numpy, polars and h5py.
Building from source needs a Rust toolchain and maturin:
maturin develop --release (see docs/installation.md).
What is validated against scanpy
Every step is checked against its reference implementation in the test suite
(tests/test_crest.py, run by CI on every change) and on real data in the module
benchmarks (bench/<module>/). On PBMC3k with the scanpy tutorial parameters:
| step | agreement with scanpy |
|---|---|
filter_cells, filter_genes, QC metrics |
identical |
highly_variable_genes (seurat) |
identical gene set; dispersions_norm within 2e-6 |
scale + pca |
identical subspace (0.000° principal angles), variance ratio within 5e-9 |
neighbors connectivities |
identical given the same kNN (within 1e-5) |
leiden |
same number of clusters, equal or higher modularity |
umap |
equal kNN preservation / silhouette (stochastic layout) |
rank_genes_groups t-test, Wilcoxon |
scores within 1e-4 (1e-7 on identical input), same p-values and log fold-changes |
score_genes |
identical, including scanpy's control-gene sampling (within 3e-7) |
DESeq2 (pseudobulk) |
R DESeq2 1.42: size factors, dispersions, log2FC, p-values within ~1e-9 on simulated designs; identical calls on 5 of 8 Kang 2018 cell types, >99% on the rest (docs/deseq2.md); LRT statistics within 1e-6 |
highly_variable_genes(flavor="seurat_v3") |
identical gene sets and ranks, variances_norm within 1e-14 (loess port matches skmisc to 1e-14) |
harmony |
same integration quality as harmonypy 2.0 (iLISI 1.81 vs 1.81, cLISI 1.01, ARI 0.82) at 3.5× the speed; neighbourhoods as close to harmonypy's as two harmonypy seeds are to each other |
scrublet |
AUROC 0.863 vs 0.863 on Kang 2018 demuxlet doublets, 49× faster |
ingest |
90.7% vs 89.8% label accuracy mapping stimulated onto control PBMCs, 17.6× faster |
Performance
Standard scanpy tutorial pipeline, each tool in its own process on the same
4-core / 16.9 GB machine (scanpy 1.11 with igraph Leiden, numba JIT warmed up
beforehand; CREST in-memory and streamed from Parquet). Full tables:
bench/whitepaper/results/report.md.
| dataset | scanpy | CREST in-memory | CREST out-of-core |
|---|---|---|---|
| 68k PBMC (real, 10x) | 134 s · 5.2 GB | 19 s · 1.2 GB (7.1× faster) | 24 s · 1.0 GB |
| 100k PBMC v3 | 346 s · 10.3 GB | 57 s · 2.5 GB (6.1× faster) | 109 s · 1.1 GB |
| 200k PBMC v3 | out of memory | 120 s · 4.1 GB | 283 s · 1.0 GB |
Per step at 100k cells (speed-up of CREST in-memory over scanpy): QC 17×, HVG 7.6×, scale + PCA 15×, neighbours 3.4×, Leiden 3.5×, UMAP 4.9×, t-test 9.3×, Wilcoxon 7.8×, reading the 10x .h5 1.9× (gzip-bound). Out-of-core memory stays ~1 GB regardless of dataset size. Leiden clusterings agree with scanpy (ARI 0.87–0.89, same number of clusters).
The 100k/200k datasets are generated from the real 10k PBMC v3 matrix by
make_dataset.py (each cell mixes a real cell with a nearest neighbour after
binomial thinning), so sparsity, library size and cluster structure are realistic.
The figures above come from the 0.2.0 run on a 4-core cloud VM
(bench/whitepaper/results/). On a 64-thread workstation (0.4.0, 5 repeats, CPU governor
performance), best-vs-best core-workflow speed-up ranges from 1.20× (PBMC 3k, 2,700
cells) to 16.70× (synthetic 200k cells), including 10.28× on PBMC 68k (9.13 s with
CREST vs 210 s with scanpy at 64 threads, 93.8 s at scanpy's own best of 8 threads), with
1.6×–4.7× less memory. Comparing at matched 64 threads overstates CREST's advantage on
larger datasets, since scanpy slows down at high thread counts (it's 2.2× slower at 64
threads than at its own best of 8, on PBMC 68k). CREST is not faster for seurat_v3 HVG
selection (about 2× slower above 10k cells) or for PCA and UMAP on very small datasets
(PBMC 3k). Full tables, including every step
where CREST loses: docs/benchmarks.md. The
paper benchmark (six real datasets plus a synthetic scaling series, 5 repeats,
thread scaling, per-core CPU/clock/memory timelines, accuracy against scanpy,
bootstrap confidence intervals) runs on your own machine with one command:
cd /path/with/space # everything goes under ./crest-bench, nothing in $HOME
curl -LO https://raw.githubusercontent.com/harshameghadri/CREST/dev/scripts/crest_paper_bench.sh
bash crest_paper_bench.sh --tier standard # quick | standard | full
It clones and builds CREST in a throwaway uv environment, runs the test suites,
records the machine, downloads and checksums the data, runs every
configuration in its own process, and writes report.md, CSV/LaTeX tables,
PDF/PNG figures and a .tar.gz. The pieces live in bench/paper/
(datasets.py, run_one.py, monitor.py, run_all.py, accuracy.py,
summarize.py); module benchmarks in bench/deseq2/, bench/harmony/,
bench/doublets/ and bench/ingest/.
How it works
- Lazy, fused, streamed. Raw counts stay in one compact store — CSR in
memory, a Polars triplet frame, or a directory of Parquet parts read one at a
time. Cell/gene filters and
normalize_total/log1pare recorded and applied per cell inside each kernel, so every step is a single pass with no intermediate copies. - Exact PCA without densifying. One pass accumulates the gene × gene Gram
matrix from sparse rows (threads own disjoint row blocks), an eigen-solver
gives the loadings, a second pass projects cells.
sc.pp.scale(max_value)is applied exactly: zero entries map to a per-gene constant, so the scaled matrix is a sparse matrix plus a rank-one term that centring removes. - kNN. Exact search with tiled GEMM (the FAISS "flat" trick) for small data; above 20k cells an inverted-file index — cells bucketed by k-means, each bucket searched against its 20 nearest buckets, like cell lists in molecular dynamics — polished by NN-descent (99.7% recall on 108k PBMC cells).
- UMAP. umap-learn's objective and defaults, optimised in parallel by domain decomposition: each thread owns a range of cells, writes only those, and reads the rest from a snapshot refreshed 16× per epoch.
- Leiden. Traag et al. (2019): fast local moving, refinement, aggregation.
- DESeq2 in Rust. A step-by-step port of DESeq2's
DESeq()/results(), one parallel pass over genes per stage, with the NB likelihood evaluated without the cancellation R suffers at tiny dispersions. Pseudobulk DE for 8 cell types of Kang 2018 takes 7 s (R: 131 s, pydeseq2: 202 s). - Sparse Wilcoxon. All implicit zeros of a gene form one tie block with a closed-form rank, so only non-zero values are sorted.
- Harmony in Rust. The harmony2 algorithm with cells sorted by batch, so the per-batch sums and the ridge correction are GEMMs; per-cell updates in parallel.
Details: docs/concepts.md and docs/memory_model.md.
Data formats
read_10x_h5 (Cell Ranger v2/v3; backed= streams to Parquet), read_10x_mtx,
read_h5ad (no anndata needed), BioFrame.from_scipy / from_triplets / from_anndata, write_parquet / read_parquet, to_anndata, to_scipy.
Scope and limitations
- HVG flavours:
seurat,cell_ranger,seurat_v3/seurat_v3_paper(notpearson_residuals). - Batch integration: Harmony only (no scVI/BBKNN).
- DESeq2: Wald and LRT (no
lfcShrink,lfcThreshold), additive formulas (passdesign_matrix=for interactions); see docs/deseq2.md. ingestplaces query cells in the reference UMAP by umap-learn's transform initialisation (no further optimisation).- UMAP layouts are deterministic for a fixed thread count, not across thread counts.
Why "Chunked"?
CREST started as Polars expression plugins ("columnar"). That design could not
compute per-cell quantities correctly and was replaced by the engine described above:
raw counts stored once, filters and transforms recorded, and every step a fused
Rust pass over chunks of cells. Polars remains the table layer (obs, var,
results) and the Parquet reader. The acronym stays; the "C" now says what the
engine does.
License
MIT
Metadata
Release files for crest-sc 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| crest_sc-0.4.0.tar.gz | 703.4 kB | Details |
Built distributions (wheels)
Total release size: 19.7 MB
Release files / crest_sc-0.4.0.tar.gz
| Download URL | crest_sc-0.4.0.tar.gz |
|---|---|
| Size | 703.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a9ea7efaa2d904370b7bba71d76f23c02cf82152caafb9757233e5f62f6d66b4
|
|
BLAKE2b-256 checksum How to use checksums |
82e0b39e5f9b4e960b2cb2d273ba596b6302e242ca5e11c11210dd987dcd49bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / crest_sc-0.4.0-cp310-abi3-win_arm64.whl
| Download URL | crest_sc-0.4.0-cp310-abi3-win_arm64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
be0edf53b8dcbfd60fe29e2f057b3c584e5467c2d56c73f01ede16f63d9b40ea
|
|
BLAKE2b-256 checksum How to use checksums |
3f9bc73d3317b0f7d187c78cd697dcaffbd4a9987a4324916f665eda4c7d96b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / crest_sc-0.4.0-cp310-abi3-win_amd64.whl
| Download URL | crest_sc-0.4.0-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
7edd1cbc1c192eef8ca1c8fc90ca4abd7327abc4e9c4088c337a1ea7cce17b6f
|
|
BLAKE2b-256 checksum How to use checksums |
ee71c85598671a8046af366bbf7d4bcdcf7558d35100dbc351ef2f1e3ded85e1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / crest_sc-0.4.0-cp310-abi3-win32.whl
| Download URL | crest_sc-0.4.0-cp310-abi3-win32.whl |
|---|---|
| Size | 1.0 MB |
| Tags | CPython 3.10 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
e030f853653b5fd290829c4fdeae329cb8a797ed53460eaea0f6b2c84f051ef6
|
|
BLAKE2b-256 checksum How to use checksums |
a42d5fb1e3a586f1dd136ddaa281500c499ea952d9e3258e459890de3ef8030a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / crest_sc-0.4.0-cp310-abi3-musllinux_1_2_x86_64.whl
| Download URL | crest_sc-0.4.0-cp310-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
47999f7bd86f073ded17d1eef5ddde5ac15d9698e689258e51944c0519287e08
|
|
BLAKE2b-256 checksum How to use checksums |
442f1fb1a75f44c84fa08c801736665c0ae8885ed50940ed6a6ef4d4be82d794
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / crest_sc-0.4.0-cp310-abi3-musllinux_1_2_i686.whl
| Download URL | crest_sc-0.4.0-cp310-abi3-musllinux_1_2_i686.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
ccab095afd582950dbc87c5bc81dc353da88f04f982bf32f08093e28c7be7607
|
|
BLAKE2b-256 checksum How to use checksums |
3e853b8a207aaabd84a0e536f2809781ed96ea73a5b31ecb3c0e8d0066d138c4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / crest_sc-0.4.0-cp310-abi3-musllinux_1_2_armv7l.whl
| Download URL | crest_sc-0.4.0-cp310-abi3-musllinux_1_2_armv7l.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.10 Linux musl 1.2+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
2955f24a9d3637916edb2c478f91cb376a468c11ea55981d82301df70ec9ade2
|
|
BLAKE2b-256 checksum How to use checksums |
eac1e381bfcc12d67aaf03506942a433f920422459bfa8b506e5bc2aa0be9414
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / crest_sc-0.4.0-cp310-abi3-musllinux_1_2_aarch64.whl
| Download URL | crest_sc-0.4.0-cp310-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
ec9b7caef4e88a62700af1c01cb6bdef1293a0090ff2a246691d163a4c9472cb
|
|
BLAKE2b-256 checksum How to use checksums |
d23e16817aa2533a42977f9d7363fc0c3439c095b41916ded6e5ca0d07e12584
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / crest_sc-0.4.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | crest_sc-0.4.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
5c6ee616cab4f938917d37fad23a38ff4dd08d027d2c8352e4e11bcc6362ec59
|
|
BLAKE2b-256 checksum How to use checksums |
17cf35d577ee048178c269556e1c67619e76276e7b77c39e88e176feb620957e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / crest_sc-0.4.0-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | crest_sc-0.4.0-cp310-abi3-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
6588d6e4db65ac952b51d4bf9229a2f2da33167d8b8b3f4b379b529204cd99d6
|
|
BLAKE2b-256 checksum How to use checksums |
9bc97e5709d4b84c3e14d972a22668bce115444607986737d9140d1e937dde52
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / crest_sc-0.4.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
| Download URL | crest_sc-0.4.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
2167c67c11c1844c675fcb801e796c6f6b6f567dd568d227ab4b1a6b64570cfb
|
|
BLAKE2b-256 checksum How to use checksums |
f8aeec04bcb339d5bb38443b253feb89d5ce0239020d8359994760da87a83214
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / crest_sc-0.4.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | crest_sc-0.4.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
2e1b4a224d821ec5c2975ee59f56f39ab56b0c927b83ba257dcc38398d4d484a
|
|
BLAKE2b-256 checksum How to use checksums |
a3c5415cbd0d8394f074892693b270f82317c51aeccfa761075de42ee7b074bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / crest_sc-0.4.0-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | crest_sc-0.4.0-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
2cc3650f191ff511441ac490ac13239e97cb75371a74b72037b10fbf4bb3ef3e
|
|
BLAKE2b-256 checksum How to use checksums |
0838c92570729b911c93ddea6ec9e4b4672dbcc9408486da7132320292c34d35
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / crest_sc-0.4.0-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | crest_sc-0.4.0-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
f04ca70ffa24c05da81999dadadddc27ad192295a0f518f6f2caee399cb0eebc
|
|
BLAKE2b-256 checksum How to use checksums |
472850fafbe33866f26eec844cfa54bbec91bc3791948910d5849f93ce26ebc0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|