CPU-first C++ inference engine for ESM-2 protein language models
Project description
esm.cpp
A CPU-first C++ inference engine for ESM-2 protein language models, with Python bindings. Production throughput on commodity hardware, no GPU required.
Why
ESM-2 is the backbone of modern protein ML, but the reference stack is PyTorch + CUDA. That's the wrong shape for several real workloads:
- Deep mutational scanning (10⁴–10⁷ variants per protein) — embarrassingly parallel scoring across millions of mutants. CPU throughput matters more than per-call latency.
- Antibody developability screening (10⁵–10⁶ candidates) — rank by PLM likelihood for aggregation, solubility, immunogenicity prefiltering. Nightly batch jobs on lab CPUs.
- Embedding extraction at corpus scale — per-residue or per-sequence vectors for downstream classifiers, alignment, or retrieval.
- On-prem / regulated environments — clinical, compliance-restricted, or air-gapped pipelines that cannot reach a cloud GPU.
The defensible niche is the intersection no existing project occupies: production-grade CPU inference + ahead-of-time W8A8 quantization + variable-length packed-batch scheduling for encoder-only PLMs. esm.cpp targets it. v0.2 ships ESM-2 at 8M, 35M, 150M, 650M, and 3B, with W8A8 INT8 (SmoothQuant) for 150M and above and FP32 for the smaller two.
Performance
ESM-2-650M, esm.cpp vs HuggingFace eager FP32, p50 over 5 runs:
| Host | Varlen 256-seq (OAS) | Uniform 8 × 256 | Mechanism |
|---|---|---|---|
| Intel Xeon 8481C Sapphire Rapids (22 vCPU) | 9.31× HF (12.4 s) | 4.09× HF (0.92 s) | AMX-INT8, default |
| Apple M3 Pro (after one fetch step) | 3.97× HF (37.8 s) | 10.05× HF (459 ms) | Whole-graph CoreML → ANE + GPU |
| GCP C4A / Neoverse V2 (8 vCPU, Graviton-class) | 5.04× HF (29.3 s) | 2.30× HF (2.02 s) | NEON SDOT, default |
| Apple M3 Pro (default, no fetch) | 3.97× HF (37.8 s) | 1.79× HF (2.17 s) | NEON SDOT, default |
Two structural wins drive these numbers.
Variable-length packed-batch scheduling (the x86 + Linux ARM headline).
HuggingFace pads every sequence in a batch to max(len). esm.cpp packs
sequences back-to-back along the token axis and isolates per-sequence
attention via cu_seqlens. On antibody-shaped data (mean ~120 residues,
max ~250) that saves roughly 3× of HF's attention compute and 2× of its
FFN compute on top of the INT8 baseline.
Whole-graph CoreML compilation (the Apple uniform-shape headline).
The entire ESM-2 forward — 33 encoder layers + LM head — is compiled into
ONE .mlmodelc at convert time and dispatched through an Objective-C++
MLModel bridge. Keeps one op-fused fp16 graph hot on the Apple Neural
Engine + GPU instead of the per-Linear pattern that thrashes the ANE
compiled-state cache. Logit correlation vs HF FP32 is 0.999998 at 650M
with strict pseudo-perplexity drift below 0.001 across the holdout
subset.
How it works
- Kernels. Hand-written, runtime-dispatched per ISA. x86: AVX-512 +
VNNI + AMX-INT8. ARM: NEON FMLA + SDOT + opt-in SMMLA/i8mm. Every
vectorized kernel has a scalar-reference twin behind
#ifdef ESM_KERNEL_REFERENCE; the same tests cross-check both with strict tolerances (FP32rtol/atol=1e-6, INT8rtol=1e-3 atol=1). - Quantization. Ahead-of-time W8A8 INT8 with SmoothQuant, calibrated on UniRef50. Pseudo-perplexity drift < 0.1 and ProteinGym Spearman drift < 0.01 are non-negotiable gates.
- Scheduler. Variable-length sequences pack back-to-back along the
token axis; attention isolates per-sequence via
cu_seqlens; FFNs see one fused[ΣL, d]matmul instead ofBpadded[L_max, d]ones. - Loaders. Both safetensors (HF native, zero-copy mmap) and GGUF (esm.cpp native, block-decoded INT8). Weight tensors are never copied into RAM at load.
- Apple path. On Apple Silicon, if pre-built artifacts are on disk,
Model.load_*auto-engages them: a whole-graph CoreML model for registered uniform shapes, and a per-Linear AMX-fp16 BNNSGraph stack for everything else. With no artifacts installed, the engine falls back to the same NEON SDOT kernels Linux ARM uses. No Apple framework appears in the canonical kernel stack itself.
Install
pip install esm-cpp
That's the whole install on Linux x86, Linux ARM, and as a working baseline on Apple Silicon. On Apple Silicon, one extra step pulls the pre-built whole-graph + AMX artifacts that unlock the 10× headline:
esm-cpp-fetch-artifacts --model esm2_t33_650M
The artifacts land in ~/.cache/esm_cpp/<model>/ (~5 GB for 650M) and
Model.load_* auto-discovers them on every load. The fetch CLI is pure
stdlib — no coremltools, torch, or transformers needed at user time.
| OS / arch | What pip install esm-cpp gets you |
Extra step for headline |
|---|---|---|
| Linux x86_64 (Sapphire Rapids+) | AMX-INT8 → 9.31× HF varlen, 4.09× HF uniform | none |
| Linux x86_64 (Cascade Lake / Ice Lake) | AVX-512 + VNNI INT8 baseline | none |
| Linux ARM64 (Graviton 3/4, Axion, Ampere) | NEON SDOT → 5.04× HF varlen, 2.30× HF uniform | none |
| Apple Silicon (M1 / M2 / M3) | NEON SDOT → 3.97× HF varlen, 1.79× HF uniform | esm-cpp-fetch-artifacts → 10.05× HF uniform |
Quick start
import esm_cpp
# Load FP32 weights from a HF safetensors file. On Apple Silicon, if you
# ran esm-cpp-fetch-artifacts, this auto-engages the whole-graph CoreML
# path — no env vars, no register calls.
model = esm_cpp.Model.load_from_safetensors(
"/path/to/esm2_t33_650M_UR50D/model.safetensors")
tokenizer = esm_cpp.Tokenizer()
# Single sequence.
ids = tokenizer.encode("MKTGVAQRLELDSPMVLQKRSGE")
logits = model.forward(ids) # [seq_len, vocab_size=33]
# Packed batch — variable-length sequences in one forward.
seqs = ["MKTGVA", "MAGAASPCANGCGPSAPS", "MSEEKRGGQATKLP"]
batch_ids = [tokenizer.encode(s) for s in seqs]
batch_logits = model.forward_scheduled(batch_ids)
# returns list of [L_i, vocab_size] arrays in input order
The same Model.load_from_safetensors (or Model.load_from_gguf for the
quantized artifact) is the entry point on every supported OS; the
correct kernel path is selected at load time from cpu_features plus
whatever Apple artifacts are present.
Convert + quantize
# 1. HF safetensors -> esm-cpp GGUF (FP32).
esm-cpp-convert --hf facebook/esm2_t30_150M_UR50D --out weights/esm2_150m.gguf
# 2. Calibrate on UniRef50.
esm-cpp-quantize --calibrate \
--model esm2_t30_150M \
--calib data/uniref50_calib_v1.fasta \
--out weights/esm2_150m_calib.json
# 3. Apply SmoothQuant + quantize to INT8.
esm-cpp-quantize --apply-smoothquant \
--model esm2_t30_150M \
--stats weights/esm2_150m_calib.json \
--alpha 0.5 \
--output weights/esm2_150m_q8.gguf
Then load the quantized artifact directly:
m = esm_cpp.Model.load_from_gguf("weights/esm2_150m_q8.gguf")
assert m.config.weights_quantized
Benchmark vs HuggingFace
esm-cpp-bench \
--model facebook/esm2_t6_8M_UR50D \
--dataset data/oas_sample_v1.fasta \
--modes esm-cpp-fp32,hf-eager-fp32 \
--output benchmarks/results/my_run.json
--modes accepts any subset of esm-cpp-fp32, esm-cpp-int8,
hf-eager-fp32, hf-sdpa-fp32. The harness reports p50 / p90 /
throughput on uniform and varlen workloads and writes a JSON record per
run for tracking.
Scope
Inference only. No training, no LoRA, no backward pass — those belong upstream. Hardware targets are x86_64 (AVX-512 / VNNI / AMX) and AArch64 (NEON / SDOT / SMMLA, plus opt-in Apple ANE/AMX via CoreML artifacts on Apple Silicon). GPU, ARM SVE2, and RISC-V are out of scope for v0.x. ESM-2-15B is bandwidth-bound on CPU at FP32/INT8 and needs W4 quant before it makes sense; that's v2 work.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file esm_cpp-0.2.1.tar.gz.
File metadata
- Download URL: esm_cpp-0.2.1.tar.gz
- Upload date:
- Size: 292.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed3f18e0399af8406a1f85714af76665c1563ae26a569241f7cf8c57d75e8be1
|
|
| MD5 |
e6a39ef4986d4b97b053a2316c29b7b5
|
|
| BLAKE2b-256 |
108f8a767359c7bf9eb18f6410dd2b5ab4cd27e3b118bb0c83b1ab74da6749da
|
Provenance
The following attestation bundles were made for esm_cpp-0.2.1.tar.gz:
Publisher:
wheels.yml on ayan-goel/esm-cpp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
esm_cpp-0.2.1.tar.gz -
Subject digest:
ed3f18e0399af8406a1f85714af76665c1563ae26a569241f7cf8c57d75e8be1 - Sigstore transparency entry: 1631826419
- Sigstore integration time:
-
Permalink:
ayan-goel/esm-cpp@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ayan-goel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Trigger Event:
push
-
Statement type:
File details
Details for the file esm_cpp-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: esm_cpp-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 463.1 kB
- Tags: CPython 3.13, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4bfbcaddec2c14cf809cf384e6f81e5df30e6fb311aaedfe7d2104258552d9af
|
|
| MD5 |
f940eb9b92c4f499f73dddf7587a303e
|
|
| BLAKE2b-256 |
b2e00cdfb1240f2b3ae9669f47e603a17c021dbbf4d824d1f6ae223ad6c350c8
|
Provenance
The following attestation bundles were made for esm_cpp-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
wheels.yml on ayan-goel/esm-cpp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
esm_cpp-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
4bfbcaddec2c14cf809cf384e6f81e5df30e6fb311aaedfe7d2104258552d9af - Sigstore transparency entry: 1631826778
- Sigstore integration time:
-
Permalink:
ayan-goel/esm-cpp@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ayan-goel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Trigger Event:
push
-
Statement type:
File details
Details for the file esm_cpp-0.2.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: esm_cpp-0.2.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 412.6 kB
- Tags: CPython 3.13, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73fe615add857b1ac3d599a7778fb40bf75d0017fe1dd215a8a61709fe79234f
|
|
| MD5 |
1d51108ee67f99ca186ef769f2dddd5f
|
|
| BLAKE2b-256 |
9b06c192efa8fbc74fd078657b001dcb1cce6d2024345344a129ccf897654737
|
Provenance
The following attestation bundles were made for esm_cpp-0.2.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
wheels.yml on ayan-goel/esm-cpp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
esm_cpp-0.2.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
73fe615add857b1ac3d599a7778fb40bf75d0017fe1dd215a8a61709fe79234f - Sigstore transparency entry: 1631826844
- Sigstore integration time:
-
Permalink:
ayan-goel/esm-cpp@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ayan-goel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Trigger Event:
push
-
Statement type:
File details
Details for the file esm_cpp-0.2.1-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: esm_cpp-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 323.8 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c19ecd534a5e92ab2f05561284bfbfee809c9fa8b6ffc9f659e07e404962a6d0
|
|
| MD5 |
c40a6d557caffa7cee5f6bc051c0085d
|
|
| BLAKE2b-256 |
7191dac1c5fdc232bb8f5deb1f4204a537a99ffa46f088812fa9990386cffdf0
|
Provenance
The following attestation bundles were made for esm_cpp-0.2.1-cp313-cp313-macosx_11_0_arm64.whl:
Publisher:
wheels.yml on ayan-goel/esm-cpp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
esm_cpp-0.2.1-cp313-cp313-macosx_11_0_arm64.whl -
Subject digest:
c19ecd534a5e92ab2f05561284bfbfee809c9fa8b6ffc9f659e07e404962a6d0 - Sigstore transparency entry: 1631826879
- Sigstore integration time:
-
Permalink:
ayan-goel/esm-cpp@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ayan-goel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Trigger Event:
push
-
Statement type:
File details
Details for the file esm_cpp-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: esm_cpp-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 463.1 kB
- Tags: CPython 3.12, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65cc60f0460904e157188e172acd13398c496d29949272a467d5ec9789e817e6
|
|
| MD5 |
1ca32972e19c99a6ef32754ddcc8bd2a
|
|
| BLAKE2b-256 |
affea77235a82fc9666f5bab374edd76e6e03324ec4367e8739e820f8a59a1ea
|
Provenance
The following attestation bundles were made for esm_cpp-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
wheels.yml on ayan-goel/esm-cpp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
esm_cpp-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
65cc60f0460904e157188e172acd13398c496d29949272a467d5ec9789e817e6 - Sigstore transparency entry: 1631826493
- Sigstore integration time:
-
Permalink:
ayan-goel/esm-cpp@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ayan-goel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Trigger Event:
push
-
Statement type:
File details
Details for the file esm_cpp-0.2.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: esm_cpp-0.2.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 412.6 kB
- Tags: CPython 3.12, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71e35611a0a14a703d099892dbc1542c1e92be6781ff8b457dc20cb10f236550
|
|
| MD5 |
5fe5461ac7343497358b6f9c3f217dd1
|
|
| BLAKE2b-256 |
d6697b12d7893ea9a0ea3b2a0c3139832da02a9cf2cad3149ac977c9fbf8eea8
|
Provenance
The following attestation bundles were made for esm_cpp-0.2.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
wheels.yml on ayan-goel/esm-cpp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
esm_cpp-0.2.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
71e35611a0a14a703d099892dbc1542c1e92be6781ff8b457dc20cb10f236550 - Sigstore transparency entry: 1631826707
- Sigstore integration time:
-
Permalink:
ayan-goel/esm-cpp@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ayan-goel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Trigger Event:
push
-
Statement type:
File details
Details for the file esm_cpp-0.2.1-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: esm_cpp-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 323.7 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b8f14a7598cb8ebf69b5dc7b73af3bfb9e25bb80c21d760db5efd39baa3ddc4
|
|
| MD5 |
8fa970e7665751af1f7c46d5f7de4f52
|
|
| BLAKE2b-256 |
b8a75701e0cf80dd68e95a3d431e44e1c1e05b696d504c67b0a5c5bdcfc15097
|
Provenance
The following attestation bundles were made for esm_cpp-0.2.1-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
wheels.yml on ayan-goel/esm-cpp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
esm_cpp-0.2.1-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
8b8f14a7598cb8ebf69b5dc7b73af3bfb9e25bb80c21d760db5efd39baa3ddc4 - Sigstore transparency entry: 1631826676
- Sigstore integration time:
-
Permalink:
ayan-goel/esm-cpp@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ayan-goel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Trigger Event:
push
-
Statement type:
File details
Details for the file esm_cpp-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: esm_cpp-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 461.7 kB
- Tags: CPython 3.11, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81cd3e428148d8052981f1172eec6852a1bb38d92d4e6a26839169d42ebdab5e
|
|
| MD5 |
803dd6033f0d7580816225509c1a8daa
|
|
| BLAKE2b-256 |
a65ea44c903d876514a756987a7b14ae3db9721b7a975625937df88ea9b29a28
|
Provenance
The following attestation bundles were made for esm_cpp-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
wheels.yml on ayan-goel/esm-cpp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
esm_cpp-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
81cd3e428148d8052981f1172eec6852a1bb38d92d4e6a26839169d42ebdab5e - Sigstore transparency entry: 1631826728
- Sigstore integration time:
-
Permalink:
ayan-goel/esm-cpp@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ayan-goel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Trigger Event:
push
-
Statement type:
File details
Details for the file esm_cpp-0.2.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: esm_cpp-0.2.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 411.2 kB
- Tags: CPython 3.11, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba2d846f8fed3c8a5563a86347ec8cab268325c9d7c2701b5e183da54b9798ec
|
|
| MD5 |
ef9f9b5361b46e37fc723b33f3a6c323
|
|
| BLAKE2b-256 |
77f3e1dc49cbc343d5e2740c9764660332d8b38901bb71952d1fce9a623c057a
|
Provenance
The following attestation bundles were made for esm_cpp-0.2.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
wheels.yml on ayan-goel/esm-cpp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
esm_cpp-0.2.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
ba2d846f8fed3c8a5563a86347ec8cab268325c9d7c2701b5e183da54b9798ec - Sigstore transparency entry: 1631826455
- Sigstore integration time:
-
Permalink:
ayan-goel/esm-cpp@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ayan-goel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Trigger Event:
push
-
Statement type:
File details
Details for the file esm_cpp-0.2.1-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: esm_cpp-0.2.1-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 321.8 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72f73bb44f1d70aa142a7769c53486b01b5f9cf6d5f022277267b06b9e2cf936
|
|
| MD5 |
23e69042e83c0b5d27091850b74c2749
|
|
| BLAKE2b-256 |
f1d0e49280645453509a95bb208df9231e2dadea031e509e837d56755286efed
|
Provenance
The following attestation bundles were made for esm_cpp-0.2.1-cp311-cp311-macosx_11_0_arm64.whl:
Publisher:
wheels.yml on ayan-goel/esm-cpp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
esm_cpp-0.2.1-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
72f73bb44f1d70aa142a7769c53486b01b5f9cf6d5f022277267b06b9e2cf936 - Sigstore transparency entry: 1631826931
- Sigstore integration time:
-
Permalink:
ayan-goel/esm-cpp@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ayan-goel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Trigger Event:
push
-
Statement type:
File details
Details for the file esm_cpp-0.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: esm_cpp-0.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 459.9 kB
- Tags: CPython 3.10, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ee000409715e20c1f0c1b377ce08c0fa7e390a2cf2395436763aba5cd6cc24f
|
|
| MD5 |
224202d5acdacce2fe07898ab16b6bd8
|
|
| BLAKE2b-256 |
4f0da511d4bcb884fbd132a4247aa774184046b99a10c80d9017bf70571ffc00
|
Provenance
The following attestation bundles were made for esm_cpp-0.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
wheels.yml on ayan-goel/esm-cpp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
esm_cpp-0.2.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
8ee000409715e20c1f0c1b377ce08c0fa7e390a2cf2395436763aba5cd6cc24f - Sigstore transparency entry: 1631826583
- Sigstore integration time:
-
Permalink:
ayan-goel/esm-cpp@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ayan-goel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Trigger Event:
push
-
Statement type:
File details
Details for the file esm_cpp-0.2.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: esm_cpp-0.2.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 410.6 kB
- Tags: CPython 3.10, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70467bddcc0d92d4b9de6d9d58241b61207f204dc8b99bed0ecda13f9ff183d5
|
|
| MD5 |
f2dfc1d5d49372fc0b9955be1963fb48
|
|
| BLAKE2b-256 |
51a6dab7bc479009d956109306dfe9908eebe293f91d209cfa8fdbdae0ff193a
|
Provenance
The following attestation bundles were made for esm_cpp-0.2.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
wheels.yml on ayan-goel/esm-cpp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
esm_cpp-0.2.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
70467bddcc0d92d4b9de6d9d58241b61207f204dc8b99bed0ecda13f9ff183d5 - Sigstore transparency entry: 1631826815
- Sigstore integration time:
-
Permalink:
ayan-goel/esm-cpp@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ayan-goel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Trigger Event:
push
-
Statement type:
File details
Details for the file esm_cpp-0.2.1-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: esm_cpp-0.2.1-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 320.5 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a8da8d94f7584cd9e7f13037ff563c2d6afcbb2f62788cbddb01e7e9a329681
|
|
| MD5 |
789c8fb8b96455f66ff48460c7febaee
|
|
| BLAKE2b-256 |
36a1fbd32f389d40cf6a4ab777f4e14a30196210f01fbf757e3de1fd03826266
|
Provenance
The following attestation bundles were made for esm_cpp-0.2.1-cp310-cp310-macosx_11_0_arm64.whl:
Publisher:
wheels.yml on ayan-goel/esm-cpp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
esm_cpp-0.2.1-cp310-cp310-macosx_11_0_arm64.whl -
Subject digest:
5a8da8d94f7584cd9e7f13037ff563c2d6afcbb2f62788cbddb01e7e9a329681 - Sigstore transparency entry: 1631826535
- Sigstore integration time:
-
Permalink:
ayan-goel/esm-cpp@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ayan-goel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Trigger Event:
push
-
Statement type:
File details
Details for the file esm_cpp-0.2.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: esm_cpp-0.2.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 460.4 kB
- Tags: CPython 3.9, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74463df0c57d56c7b9525f95f83917cf7b8efc1b435cdea113ff11e8d76db40a
|
|
| MD5 |
4c10bb7eac31b7b384114120ecec58e6
|
|
| BLAKE2b-256 |
1ef52c173ed2b8efe298cbd0f7209171677bc22deea899e29743102af9dd5f15
|
Provenance
The following attestation bundles were made for esm_cpp-0.2.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
wheels.yml on ayan-goel/esm-cpp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
esm_cpp-0.2.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
74463df0c57d56c7b9525f95f83917cf7b8efc1b435cdea113ff11e8d76db40a - Sigstore transparency entry: 1631826628
- Sigstore integration time:
-
Permalink:
ayan-goel/esm-cpp@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ayan-goel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Trigger Event:
push
-
Statement type:
File details
Details for the file esm_cpp-0.2.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: esm_cpp-0.2.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 410.9 kB
- Tags: CPython 3.9, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6343583efee674d2b1b527da96b286b7d35fc6298b69f556aee75c898ed1811
|
|
| MD5 |
90810b15993b9e4fa93c785cad53975a
|
|
| BLAKE2b-256 |
ffbd98e541f101c8eebf591f683bc25a71c5c5e57b8c942a0b351e3160a17fec
|
Provenance
The following attestation bundles were made for esm_cpp-0.2.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:
Publisher:
wheels.yml on ayan-goel/esm-cpp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
esm_cpp-0.2.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl -
Subject digest:
f6343583efee674d2b1b527da96b286b7d35fc6298b69f556aee75c898ed1811 - Sigstore transparency entry: 1631826652
- Sigstore integration time:
-
Permalink:
ayan-goel/esm-cpp@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ayan-goel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Trigger Event:
push
-
Statement type:
File details
Details for the file esm_cpp-0.2.1-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: esm_cpp-0.2.1-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 320.7 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
540ae3875444e8cdbebd3892e79c09a4a766eb4f6ce467747a7269c651b619cb
|
|
| MD5 |
69e92560173ef6f1f4da6e3534309d3d
|
|
| BLAKE2b-256 |
3492a489a9dd111b1940c030524004d7e8e9a80e1832e2994e2aa8c8a1a3940d
|
Provenance
The following attestation bundles were made for esm_cpp-0.2.1-cp39-cp39-macosx_11_0_arm64.whl:
Publisher:
wheels.yml on ayan-goel/esm-cpp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
esm_cpp-0.2.1-cp39-cp39-macosx_11_0_arm64.whl -
Subject digest:
540ae3875444e8cdbebd3892e79c09a4a766eb4f6ce467747a7269c651b619cb - Sigstore transparency entry: 1631826512
- Sigstore integration time:
-
Permalink:
ayan-goel/esm-cpp@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/ayan-goel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@2b8a7536128f059c3179ed76f9dd29693f8f0357 -
Trigger Event:
push
-
Statement type: