Headless XLSX/XLSM reading, deterministic calculation, editing, and writing
Project description
CellRune
CellRune is a Rust library for bounded XLSX/XLSM reading and deterministic formula calculation. It keeps the workbook read from disk immutable, returns recalculated values in a separate snapshot, and can retain an exact package backing for explicit round-trip writing.
Rust installation
The CellRune Rust crate 0.1.0 requires Rust 1.88 or newer.
cargo add cellrune@0.1.0
Or add the dependency directly:
[dependencies]
cellrune = "0.1.0"
Features
- reads
.xlsxfiles from paths, byte slices, orRead + Seekstreams; - opens package-backed
.xlsxand.xlsmdocuments with exact SHA-256 identity and bounded round-trip preservation; - preserves sheet order, sparse cells, formulas, saved results, defined names, and relevant number-format metadata;
- expands shared formulas while preserving absolute and relative references;
- reports unsupported formula capabilities before calculation;
- reports normalized per-workbook function demand and exposes the implemented function catalog;
- applies configurable limits to ZIP, XML, workbook, formula, dependency, text, and array work;
- never executes macros, never follows external links, and never reads the host clock for
TODAY()orNOW(); - returns stable error and issue codes for programmatic handling;
- materializes recalculated typed results into existing
.xlsx/.xlsmpackages with strict or explicit cache-invalidation policies; - creates canonical
.xlsxworkbooks and applies typed cell, formula, sheet, name, number-format, date-system, and calculation-property edits throughWorkbookDraft; - reads, queries, preserves, and explicitly authors SpreadsheetML phonetic annotations and default frozen panes without mixing presentation state into formula calculation;
- exposes the same versioned read/edit/calculate/write contract through typed Python and Node.js/TypeScript native packages;
- supports atomic typed edit batches, persistent parsed/dependency state, safe incremental recalculation, bounded result deltas, cooperative cancellation, and stale-result rejection;
- provides a local stdio MCP server with high-level open, inspect, edit, recalculate, range-read, delta, and verified Save As tools over the same interop session; and
- raw-copies unchanged package entries without exposing ZIP or XML implementation types.
Usage
use cellrune::{
CalculationOptions, ReadOptions, calculate_workbook, read_xlsx_path, scan_formula_capabilities,
};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let workbook = read_xlsx_path("input.xlsx", ReadOptions::default())?;
let capabilities = scan_formula_capabilities(&workbook);
if capabilities.is_supported() {
let calculation = calculate_workbook(&workbook, CalculationOptions::default());
println!("calculated {} formulas", calculation.len());
}
Ok(())
}
Reading and calculation are separate operations. calculate_workbook does not modify the source
WorkbookSnapshot or its saved XLSX results. Volatile functions require deterministic inputs
through CalculationOptions: with_today_serial for TODAY() and with_now_serial for NOW().
Use supported_function_catalog for the build's exact function surface and
scan_function_usage to rank the supported and unsupported functions actually used by a workbook.
INDEX follows Excel's zero-index reference behavior: a zero row or column selects the complete
corresponding column or row, and zero for both selects the complete input range. Scalar formulas
apply legacy implicit intersection, while array formulas can materialize the selected rectangle.
For repeated programmatic edits, use WorkbookCalculationSession instead of rebuilding stateless
calculation state after every cell:
use cellrune::{
CalculationOptions, CancellationToken, CellAddress, CellValue, EditBatch, FiniteNumber,
RecalculationMode, SheetId, WorkbookCalculationSession, WorkbookChange,
};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut session = WorkbookCalculationSession::create();
let sheet = SheetId::new(1)?;
let receipt = session.apply_changes(
0,
EditBatch::new([WorkbookChange::set_cell_value(
sheet,
CellAddress::from_a1("A1")?,
CellValue::Number(FiniteNumber::new(42.0)?),
)]),
)?;
let delta = session.recalculate(
RecalculationMode::Auto,
CalculationOptions::default(),
CancellationToken::new(),
)?;
assert_eq!(delta.result_revision(), receipt.result_revision());
Ok(())
}
Auto evaluates a proven dirty subset and falls back to the same full-workbook calculation
semantics when formula, name, sheet, option, dynamic-reference, or spill topology is uncertain.
Forced incremental mode fails closed instead of guessing. Sessions use optimistic semantic
revisions for atomic edits, retain bounded result-delta history, and reject stale calculations.
A batch whose accepted operations make no semantic change keeps the current revision, topology,
and installed calculation instead of forcing a redundant recalculation.
Long-running work can be prepared outside the session lock with prepare_recalculation, cancelled
through a request-owned CancellationToken, and installed only if its source revision is still
current.
open_xlsx_document_* retains the exact input package for writing.
write_recalculated_xlsx_bytes, write_recalculated_xlsx, and
write_recalculated_xlsx_path bind a calculation to that exact input, update typed formula
caches, remove stale calculation chains, preserve unrelated package content, and reopen the output
before reporting success. Strict mode rejects incomplete calculations without producing an
artifact; cache invalidation is an explicit opt-in policy. write_preserved_xlsx_bytes remains
available for an unchanged preservation copy.
WorkbookDraft::new creates a canonical workbook, while
WorkbookDraft::from_document retains the source package for preservation-aware edits. Calculate
the draft's current workbook() and pass both objects to write_xlsx_draft_bytes,
write_xlsx_draft, or write_xlsx_draft_path. A mutation that changes workbook semantics advances
the semantic revision, so a calculation made before the latest effective edit is rejected. An
accepted no-op keeps the revision unchanged. Path writes are Save As operations and never replace
an existing destination unless replacement is explicitly enabled. Canonical drafts can author
dynamic-array formulas with WorkbookDraft::set_cell_dynamic_formula; calculation resolves their
spill region, detects occupied targets, and materializes followers for writing. Existing
document-backed dynamic formulas can be recalculated without changing their metadata, while adding
or replacing one is rejected until source metadata-index merging is implemented.
Package-backed documents expose phonetic annotations and frozen panes through
XlsxDocument::presentation(). WorkbookDraft provides atomic set_annotated_text,
set_phonetics, clear_phonetics, set_frozen_pane, and clear_frozen_pane mutations.
Phonetic base ranges are zero-based half-open UTF-16 code-unit ranges. Presentation-only changes
have a separate revision and reuse an otherwise current calculation. Source rich-text phonetic
editing, RTL pane authoring, and PHONETIC() calculation remain explicit unsupported boundaries.
Runnable examples are shipped in the crate package under examples/ and live at
crates/cellrune/examples/ in this repository. From the repository root, run one with
cargo run -p cellrune --example <name> -- [arguments]; from an extracted crate package, omit
-p cellrune. See the public
llms.txt reference for the complete
example inventory and a condensed public API reference.
Language bindings
Python uses the mainstream PyO3 + maturin native-extension path. Node.js and TypeScript use napi-rs over stable Node-API with Promise-backed native work and exact-version platform packages. Neither binding requires a consumer Rust toolchain when installed from a wheel or prebuilt npm artifact.
The 0.1.0 release line targets Python 3.10 through 3.14 and Node.js 22 or newer. After the matching registry artifacts are published, install them with:
python -m pip install "cellrune==0.1.0"
npm install "@cellrune/node@0.1.0"
The bindings expose the same versioned read, edit, calculate, and write contract. Native package availability remains platform-specific; package managers must select a wheel or exact-version npm platform package compatible with the current runtime.
Python workbooks are context managers:
from cellrune import Workbook
with Workbook.create() as workbook:
workbook.set_number("Sheet1", "A1", 41.0)
workbook.set_formula("Sheet1", "B1", "=A1+1")
workbook.calculate()
workbook.save("output.xlsx")
In a Node.js ES module, close the workbook in finally:
import { Workbook } from "@cellrune/node";
const workbook = Workbook.create();
try {
workbook.setNumber("Sheet1", "A1", 41);
workbook.setFormula("Sheet1", "B1", "=A1+1");
await workbook.calculate();
await workbook.save("output.xlsx");
} finally {
workbook.close();
}
Python and Node.js close() calls are idempotent. Once close() returns, the binding-owned native
session has been released. An active calculation is cooperatively cancelled, and subsequent
operations fail with the stable interop.session.closed code.
Local MCP
cellrune-mcp is a local stdio-only MCP 2025-11-25 server for AI hosts. It exposes a finite set
of high-level workbook workflow tools; spreadsheet functions remain formulas inside the workbook
and are not registered one by one as MCP tools. Start it with one or more explicit filesystem
roots:
cargo run --locked -p cellrune-mcp -- \
--root /absolute/path/to/approved/workbooks
Its 11 tools are workbook_create, workbook_open, workbook_close, workbook_summary,
workbook_read_range, workbook_function_usage, workbook_scan_capabilities,
workbook_apply_changes, workbook_recalculate, workbook_changes_since, and
workbook_save_as.
The server also publishes read-only JSON resources at cellrune://support/functions and the
cellrune://sessions/{session_id}/summary resource template. Operators can set
--max-sessions, --session-ttl-seconds, --max-response-bytes, --max-workbook-bytes, and
--log-level; run cellrune-mcp --help for their defaults. Values outside the server's compiled
policy limits are rejected at startup.
cellrune-mcp is not published to a package registry. Prebuilt bundles for Linux, macOS, and
Windows are attached to each GitHub release,
alongside their license materials and build provenance.
An MCP client can launch a release binary with configuration equivalent to:
{
"mcpServers": {
"cellrune": {
"command": "/absolute/path/to/cellrune-mcp",
"args": ["--root", "/absolute/path/to/approved/workbooks"]
}
}
}
The server canonicalizes configured roots at startup. Every workbook path supplied to a tool must
be absolute and resolve inside one of those roots. The server bounds workbook/session/response
resources, writes protocol traffic only to stdout, writes diagnostics only to stderr, and never
provides a remote transport. Inputs are opened through an approved-root capability and read from
the same file handle under the configured archive-byte ceiling. Existing destinations are
protected unless the server starts with --allow-overwrite and a request also sets
replace_existing. Save As retains an open destination-directory capability from validation
through atomic installation, so renaming or replacing the ambient parent path cannot redirect a
write outside the approved root. Resource lists use byte-bounded cursor pagination. At session
capacity, create/open may evict the least-recently-used idle session; active sessions are never
evicted. Give the server the narrowest practical root; another process with write access inside
that root can still change workbook inputs and contents.
Tool results carry untrusted content. Cell text, sheet names, and defined names come from the workbook and are returned verbatim, so a crafted workbook can place text that reads as an instruction into a tool result. That is the same trust boundary as any other document a model reads: the server does not rewrite workbook content, and the consuming application is responsible for treating tool output as data rather than as instructions.
To inspect the local server before client integration:
npx --yes @modelcontextprotocol/inspector@1.0.0 \
cargo run --locked -p cellrune-mcp -- \
--root /absolute/path/to/approved/workbooks
Scope
CellRune supports ordinary Transitional SpreadsheetML workbooks and a scoped set of Excel formula
syntax and functions. Use scan_formula_capabilities to check a workbook before relying on
calculated values.
The following are outside the current scope:
.xls,.xlsb,.ods, and CSV;- macro, add-in, external-workbook, query, or data-connection execution;
- table structured references and 3-D references;
- spill postfix references such as
A1#, generalLAMBDA, and data-table calculation; and - iterative calculation and automatic host-time inputs.
CellRune does not claim complete Excel compatibility.
Public CI uses generated, redistributable workbook fixtures. Private development corpora and native-producer evidence are not distributed or represented as 0.1.0 release gates; validate workbooks from your own producers against the supported-capability report before relying on them.
License
CellRune is available under the MIT License. Dependency license information is provided in
THIRD_PARTY_LICENSES.md.
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 cellrune-0.1.0.tar.gz.
File metadata
- Download URL: cellrune-0.1.0.tar.gz
- Upload date:
- Size: 367.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f97db0622a719eb63c7f504eddeac71274535a257d61968da1bf151f4a767bb7
|
|
| MD5 |
aece102eb72ad71cf26ff8ebb4e13941
|
|
| BLAKE2b-256 |
2c9f323e21eafcdc7b2d62422a3440eff506c82d9846c8d6e1c0375ddf01aa12
|
Provenance
The following attestation bundles were made for cellrune-0.1.0.tar.gz:
Publisher:
release.yml on emulette/cellrune
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cellrune-0.1.0.tar.gz -
Subject digest:
f97db0622a719eb63c7f504eddeac71274535a257d61968da1bf151f4a767bb7 - Sigstore transparency entry: 2246340565
- Sigstore integration time:
-
Permalink:
emulette/cellrune@4778f827db6722663aba4751824efa33b056a0be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emulette
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4778f827db6722663aba4751824efa33b056a0be -
Trigger Event:
push
-
Statement type:
File details
Details for the file cellrune-0.1.0-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: cellrune-0.1.0-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf7123df753f59d26fb8ae2ae59fd91a44bf6034605153f8f154869dfd6cda90
|
|
| MD5 |
e43abc848a16d2de5b59f9e4a9e9075f
|
|
| BLAKE2b-256 |
0477670d86a97e2d112b8c50a148841dd100830028c43eb38a0c8e5afa57ccaa
|
Provenance
The following attestation bundles were made for cellrune-0.1.0-cp314-cp314-win_amd64.whl:
Publisher:
release.yml on emulette/cellrune
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cellrune-0.1.0-cp314-cp314-win_amd64.whl -
Subject digest:
bf7123df753f59d26fb8ae2ae59fd91a44bf6034605153f8f154869dfd6cda90 - Sigstore transparency entry: 2246347344
- Sigstore integration time:
-
Permalink:
emulette/cellrune@4778f827db6722663aba4751824efa33b056a0be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emulette
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4778f827db6722663aba4751824efa33b056a0be -
Trigger Event:
push
-
Statement type:
File details
Details for the file cellrune-0.1.0-cp314-cp314-manylinux_2_35_x86_64.whl.
File metadata
- Download URL: cellrune-0.1.0-cp314-cp314-manylinux_2_35_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.14, manylinux: glibc 2.35+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ffc105d276c1c8c5f99e26eed2d672809177d2aa3fcdd8a73a2838c3d9e54c39
|
|
| MD5 |
74d5c3c5baf8f436d1187bd37c3a8703
|
|
| BLAKE2b-256 |
68131351b076f387f8c80ac2b76f430eaad4ac9f5a38b4c655a5b2f3f0f80ca6
|
Provenance
The following attestation bundles were made for cellrune-0.1.0-cp314-cp314-manylinux_2_35_x86_64.whl:
Publisher:
release.yml on emulette/cellrune
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cellrune-0.1.0-cp314-cp314-manylinux_2_35_x86_64.whl -
Subject digest:
ffc105d276c1c8c5f99e26eed2d672809177d2aa3fcdd8a73a2838c3d9e54c39 - Sigstore transparency entry: 2246348980
- Sigstore integration time:
-
Permalink:
emulette/cellrune@4778f827db6722663aba4751824efa33b056a0be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emulette
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4778f827db6722663aba4751824efa33b056a0be -
Trigger Event:
push
-
Statement type:
File details
Details for the file cellrune-0.1.0-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: cellrune-0.1.0-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
548bba8d3554f6a5c1fa142d136f5f2a33e6f9ef4df03dc87a008cc7047689a2
|
|
| MD5 |
80e74c743fd8fe380297e8807c888274
|
|
| BLAKE2b-256 |
887ad363ed9a883e45a9a26697a3f33b2904b8b13ba39cfc79156e245197187e
|
Provenance
The following attestation bundles were made for cellrune-0.1.0-cp314-cp314-macosx_11_0_arm64.whl:
Publisher:
release.yml on emulette/cellrune
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cellrune-0.1.0-cp314-cp314-macosx_11_0_arm64.whl -
Subject digest:
548bba8d3554f6a5c1fa142d136f5f2a33e6f9ef4df03dc87a008cc7047689a2 - Sigstore transparency entry: 2246341902
- Sigstore integration time:
-
Permalink:
emulette/cellrune@4778f827db6722663aba4751824efa33b056a0be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emulette
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4778f827db6722663aba4751824efa33b056a0be -
Trigger Event:
push
-
Statement type:
File details
Details for the file cellrune-0.1.0-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: cellrune-0.1.0-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f6a6045366c7b25fbd8b05fbe44d1abfbdcd722f5b65c0402d30fe1e18572d0
|
|
| MD5 |
867ab15dad36a4c21caa7b35f0d2aca8
|
|
| BLAKE2b-256 |
926a6cd9cbb551f730ffd341ad74f3692f572815ad100717efc320a963ca8a74
|
Provenance
The following attestation bundles were made for cellrune-0.1.0-cp313-cp313-win_amd64.whl:
Publisher:
release.yml on emulette/cellrune
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cellrune-0.1.0-cp313-cp313-win_amd64.whl -
Subject digest:
9f6a6045366c7b25fbd8b05fbe44d1abfbdcd722f5b65c0402d30fe1e18572d0 - Sigstore transparency entry: 2246344313
- Sigstore integration time:
-
Permalink:
emulette/cellrune@4778f827db6722663aba4751824efa33b056a0be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emulette
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4778f827db6722663aba4751824efa33b056a0be -
Trigger Event:
push
-
Statement type:
File details
Details for the file cellrune-0.1.0-cp313-cp313-manylinux_2_35_x86_64.whl.
File metadata
- Download URL: cellrune-0.1.0-cp313-cp313-manylinux_2_35_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.13, manylinux: glibc 2.35+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a9f269f2517daaf5493412c6a52894f970822740a452ab38279b16d39cd8649
|
|
| MD5 |
ad90947e1f92f38b84f658065e8fa055
|
|
| BLAKE2b-256 |
88855d0c96d502310465ae9cbcdc99289b01e2c88641c1a64600af15881fe4b6
|
Provenance
The following attestation bundles were made for cellrune-0.1.0-cp313-cp313-manylinux_2_35_x86_64.whl:
Publisher:
release.yml on emulette/cellrune
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cellrune-0.1.0-cp313-cp313-manylinux_2_35_x86_64.whl -
Subject digest:
6a9f269f2517daaf5493412c6a52894f970822740a452ab38279b16d39cd8649 - Sigstore transparency entry: 2246341545
- Sigstore integration time:
-
Permalink:
emulette/cellrune@4778f827db6722663aba4751824efa33b056a0be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emulette
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4778f827db6722663aba4751824efa33b056a0be -
Trigger Event:
push
-
Statement type:
File details
Details for the file cellrune-0.1.0-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: cellrune-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d90c52e89e0bc28ee23f8bc5a7d6f5d3738ffe9c424ca81938066e344ef4031
|
|
| MD5 |
45ddbbe68c8126b6f83dd04d499a3206
|
|
| BLAKE2b-256 |
634f99d4a68137bb3b6b9ddd62c5709a7b393e7c37457df03e9319694b6d2de5
|
Provenance
The following attestation bundles were made for cellrune-0.1.0-cp313-cp313-macosx_11_0_arm64.whl:
Publisher:
release.yml on emulette/cellrune
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cellrune-0.1.0-cp313-cp313-macosx_11_0_arm64.whl -
Subject digest:
0d90c52e89e0bc28ee23f8bc5a7d6f5d3738ffe9c424ca81938066e344ef4031 - Sigstore transparency entry: 2246340979
- Sigstore integration time:
-
Permalink:
emulette/cellrune@4778f827db6722663aba4751824efa33b056a0be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emulette
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4778f827db6722663aba4751824efa33b056a0be -
Trigger Event:
push
-
Statement type:
File details
Details for the file cellrune-0.1.0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: cellrune-0.1.0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba6c5f20ca471a880b3961d398cd1440cd366ba48f847134c8392a6ec7c5fea9
|
|
| MD5 |
3bafaea0eace5e4cd6e7e652b4640db1
|
|
| BLAKE2b-256 |
92b95c6edcdba46710cea50174e4c15fd963c75853288997755d890c33ffe7df
|
Provenance
The following attestation bundles were made for cellrune-0.1.0-cp312-cp312-win_amd64.whl:
Publisher:
release.yml on emulette/cellrune
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cellrune-0.1.0-cp312-cp312-win_amd64.whl -
Subject digest:
ba6c5f20ca471a880b3961d398cd1440cd366ba48f847134c8392a6ec7c5fea9 - Sigstore transparency entry: 2246343866
- Sigstore integration time:
-
Permalink:
emulette/cellrune@4778f827db6722663aba4751824efa33b056a0be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emulette
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4778f827db6722663aba4751824efa33b056a0be -
Trigger Event:
push
-
Statement type:
File details
Details for the file cellrune-0.1.0-cp312-cp312-manylinux_2_35_x86_64.whl.
File metadata
- Download URL: cellrune-0.1.0-cp312-cp312-manylinux_2_35_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.12, manylinux: glibc 2.35+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a521157db63194d6615901a2329b61c1f1f1137d344e3928c6923abd1340bbb5
|
|
| MD5 |
e1ec55db1dae0c686222018a7a6d1795
|
|
| BLAKE2b-256 |
887eff9460f0a0459f16ae448a7a9e2d5098cbfdee1e04539bf7c5da0388eec2
|
Provenance
The following attestation bundles were made for cellrune-0.1.0-cp312-cp312-manylinux_2_35_x86_64.whl:
Publisher:
release.yml on emulette/cellrune
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cellrune-0.1.0-cp312-cp312-manylinux_2_35_x86_64.whl -
Subject digest:
a521157db63194d6615901a2329b61c1f1f1137d344e3928c6923abd1340bbb5 - Sigstore transparency entry: 2246347987
- Sigstore integration time:
-
Permalink:
emulette/cellrune@4778f827db6722663aba4751824efa33b056a0be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emulette
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4778f827db6722663aba4751824efa33b056a0be -
Trigger Event:
push
-
Statement type:
File details
Details for the file cellrune-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: cellrune-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4af153ab861e0c556fb29233e2fd753c101c28bff6c9ebbece1c530b1046eab
|
|
| MD5 |
25e9f7963dff413d9dc23685ff0560ea
|
|
| BLAKE2b-256 |
650b1b5a158df7b5c1dca8d11e4361a5685c2191dfefe086783531aa20709da9
|
Provenance
The following attestation bundles were made for cellrune-0.1.0-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
release.yml on emulette/cellrune
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cellrune-0.1.0-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
f4af153ab861e0c556fb29233e2fd753c101c28bff6c9ebbece1c530b1046eab - Sigstore transparency entry: 2246349644
- Sigstore integration time:
-
Permalink:
emulette/cellrune@4778f827db6722663aba4751824efa33b056a0be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emulette
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4778f827db6722663aba4751824efa33b056a0be -
Trigger Event:
push
-
Statement type:
File details
Details for the file cellrune-0.1.0-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: cellrune-0.1.0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49667bf4a0e5e46039520b40bc6617a7d32e9d653842aa3e6516c3578de34cca
|
|
| MD5 |
22b7883bc633a858008a4bfbd8016b1c
|
|
| BLAKE2b-256 |
09630b911c12775851f62e5d766dfac67141eec6c8e8f7eefae8d42c65773069
|
Provenance
The following attestation bundles were made for cellrune-0.1.0-cp311-cp311-win_amd64.whl:
Publisher:
release.yml on emulette/cellrune
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cellrune-0.1.0-cp311-cp311-win_amd64.whl -
Subject digest:
49667bf4a0e5e46039520b40bc6617a7d32e9d653842aa3e6516c3578de34cca - Sigstore transparency entry: 2246342334
- Sigstore integration time:
-
Permalink:
emulette/cellrune@4778f827db6722663aba4751824efa33b056a0be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emulette
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4778f827db6722663aba4751824efa33b056a0be -
Trigger Event:
push
-
Statement type:
File details
Details for the file cellrune-0.1.0-cp311-cp311-manylinux_2_35_x86_64.whl.
File metadata
- Download URL: cellrune-0.1.0-cp311-cp311-manylinux_2_35_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.11, manylinux: glibc 2.35+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1bc4d8aef35c89a7992a5585048826a98da838a8dc2ad5127ef8fcb0ba88edbb
|
|
| MD5 |
468510801a865798c068c4772dd7d1f6
|
|
| BLAKE2b-256 |
c037d8ec0b4e2a8e0a876f4af80b36c7b6287a54ecf7684ac3aefd8941f13f40
|
Provenance
The following attestation bundles were made for cellrune-0.1.0-cp311-cp311-manylinux_2_35_x86_64.whl:
Publisher:
release.yml on emulette/cellrune
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cellrune-0.1.0-cp311-cp311-manylinux_2_35_x86_64.whl -
Subject digest:
1bc4d8aef35c89a7992a5585048826a98da838a8dc2ad5127ef8fcb0ba88edbb - Sigstore transparency entry: 2246344937
- Sigstore integration time:
-
Permalink:
emulette/cellrune@4778f827db6722663aba4751824efa33b056a0be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emulette
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4778f827db6722663aba4751824efa33b056a0be -
Trigger Event:
push
-
Statement type:
File details
Details for the file cellrune-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: cellrune-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7cb03037b0211c1d6b741aefcba5b1fb15e927694f8fefef7260d9d4d034af91
|
|
| MD5 |
f45fa52af064de1033b67efe722bd79d
|
|
| BLAKE2b-256 |
6f39a306929811b818694164efb9b1f29d6a9d7de033d34cbe22f1c8f7fecc61
|
Provenance
The following attestation bundles were made for cellrune-0.1.0-cp311-cp311-macosx_11_0_arm64.whl:
Publisher:
release.yml on emulette/cellrune
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cellrune-0.1.0-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
7cb03037b0211c1d6b741aefcba5b1fb15e927694f8fefef7260d9d4d034af91 - Sigstore transparency entry: 2246345288
- Sigstore integration time:
-
Permalink:
emulette/cellrune@4778f827db6722663aba4751824efa33b056a0be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emulette
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4778f827db6722663aba4751824efa33b056a0be -
Trigger Event:
push
-
Statement type:
File details
Details for the file cellrune-0.1.0-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: cellrune-0.1.0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
197b3c210ab6e206bcb7141e4601c3eb747ff63afb87abdb4f29847e82775c62
|
|
| MD5 |
48121c781ef38738dc5939c123234e59
|
|
| BLAKE2b-256 |
4904ad335b8aa3199cbfa306ba8f8eb1b4227f7cfec809f17a3007188ce154f6
|
Provenance
The following attestation bundles were made for cellrune-0.1.0-cp310-cp310-win_amd64.whl:
Publisher:
release.yml on emulette/cellrune
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cellrune-0.1.0-cp310-cp310-win_amd64.whl -
Subject digest:
197b3c210ab6e206bcb7141e4601c3eb747ff63afb87abdb4f29847e82775c62 - Sigstore transparency entry: 2246345858
- Sigstore integration time:
-
Permalink:
emulette/cellrune@4778f827db6722663aba4751824efa33b056a0be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emulette
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4778f827db6722663aba4751824efa33b056a0be -
Trigger Event:
push
-
Statement type:
File details
Details for the file cellrune-0.1.0-cp310-cp310-manylinux_2_35_x86_64.whl.
File metadata
- Download URL: cellrune-0.1.0-cp310-cp310-manylinux_2_35_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.10, manylinux: glibc 2.35+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
abfbcdd7957bd14bc648b74332c32aa647fb855ce544db1bc15de53627b6724d
|
|
| MD5 |
19e09a13d657421bbe8fd03cd03b3ae6
|
|
| BLAKE2b-256 |
12160751eb9df65e03278a0e0642cc033f726e3dab15169acb04d9ae7c8499f6
|
Provenance
The following attestation bundles were made for cellrune-0.1.0-cp310-cp310-manylinux_2_35_x86_64.whl:
Publisher:
release.yml on emulette/cellrune
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cellrune-0.1.0-cp310-cp310-manylinux_2_35_x86_64.whl -
Subject digest:
abfbcdd7957bd14bc648b74332c32aa647fb855ce544db1bc15de53627b6724d - Sigstore transparency entry: 2246342976
- Sigstore integration time:
-
Permalink:
emulette/cellrune@4778f827db6722663aba4751824efa33b056a0be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emulette
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4778f827db6722663aba4751824efa33b056a0be -
Trigger Event:
push
-
Statement type:
File details
Details for the file cellrune-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: cellrune-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26837d47915e3b5aae302bdcbc500faeb1be6bf87e89f63d72a8f060c3c7ceea
|
|
| MD5 |
be66f69dc8a4e18965c3ae3d735c38b3
|
|
| BLAKE2b-256 |
c019460bf5b5771371272849d7715260ab6e4f7594562e39b55e3749049223b9
|
Provenance
The following attestation bundles were made for cellrune-0.1.0-cp310-cp310-macosx_11_0_arm64.whl:
Publisher:
release.yml on emulette/cellrune
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cellrune-0.1.0-cp310-cp310-macosx_11_0_arm64.whl -
Subject digest:
26837d47915e3b5aae302bdcbc500faeb1be6bf87e89f63d72a8f060c3c7ceea - Sigstore transparency entry: 2246346243
- Sigstore integration time:
-
Permalink:
emulette/cellrune@4778f827db6722663aba4751824efa33b056a0be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/emulette
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4778f827db6722663aba4751824efa33b056a0be -
Trigger Event:
push
-
Statement type: