Skip to main content

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.8 requires Rust 1.88 or newer.

cargo add cellrune@0.1.8

Or add the dependency directly:

[dependencies]
cellrune = "0.1.8"

Features

  • reads .xlsx files from paths, byte slices, or Read + Seek streams;
  • opens package-backed .xlsx and .xlsm documents 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;
  • exposes merged ranges and validated worksheet-owned Excel tables, including stable table IDs, programmatic names, formula/UI display names, ranges, and column metadata;
  • expands shared formulas while preserving absolute and relative references;
  • returns typed formula values and stable per-cell calculation issues in one result snapshot;
  • reports normalized per-workbook function demand and exposes the implemented function catalog;
  • evaluates first-class and defined-name LAMBDA callables, including immediate invocation, ISOMITTED, MAP, BYROW, BYCOL, REDUCE, SCAN, and MAKEARRAY, under explicit recursion and iteration limits;
  • evaluates audited 3-D aggregate references across workbook tab order, including hidden sheets and reverse-written endpoints, without expanding the sheet span into dependency edges;
  • 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() or NOW();
  • returns stable error and issue codes for programmatic handling;
  • materializes recalculated typed results into existing .xlsx/.xlsm packages with strict or explicit cache-invalidation policies;
  • creates canonical .xlsx workbooks and applies typed cell, formula, sheet, name, number-format, date-system, and calculation-property edits through WorkbookDraft;
  • 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::{
    CalculationCellResult, CalculationOptions, ReadOptions, calculate_workbook, read_xlsx_path,
};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let workbook = read_xlsx_path("input.xlsx", ReadOptions::default())?;
    let calculation = calculate_workbook(&workbook, CalculationOptions::default());

    for (cell, result) in calculation.cells() {
        match result {
            CalculationCellResult::Value(value) => println!("{cell:?}: {value:?}"),
            CalculationCellResult::Unavailable(issue) => {
                eprintln!("{cell:?}: {}", issue.code().as_str());
            }
        }
    }

    Ok(())
}

Reading and calculation are separate operations. calculate_workbook does not modify the source WorkbookSnapshot or its saved XLSX results. It attempts every formula in the workbook: successfully calculated cells contain a typed Value, while a cell that cannot be calculated contains a structured Unavailable(CalculationIssue). One unavailable formula does not suppress independent results; dependent formulas report BlockedByUpstream when applicable. Volatile functions require deterministic inputs through CalculationOptions: with_today_serial for TODAY() and with_now_serial for NOW(). Use with_arithmetic_semantics and with_financial_solver_semantics to opt into the raw IEEE-754 and extended-search behavior shipped through 0.1.2; the defaults select Excel-compatible cancellation and Microsoft's function-specific solver budgets. Use supported_function_catalog for the build's exact function surface and scan_function_usage to summarize the functions used by a workbook. scan_formula_capabilities remains available as an optional static inventory for migration planning and user-interface reporting; calculation does not require it. 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. Unary and binary array operators that combine whole-column references use one common extent: the greatest populated row among the columns those operands reference, with a one-row minimum for an otherwise empty sheet. Cells in other columns of the same sheet do not widen it, so the value depends only on the cells the expression's own dependency rectangles cover and a full and an incremental recalculation agree. Missing cells within that extent are blanks, and directly resolved source arrays plus operator outputs are charged to its cumulative array-cell budget. Function calls keep function-defined argument boundaries: each array argument is evaluated under its own bounded context, and a function's return does not establish a whole-column operator extent by itself. When another direct whole-column operand has established such an enclosing context, the returned array is charged to that context before the operator consumes it.

Direct 3-D references are accepted by SUM, AVERAGE, AVERAGEA, COUNT, COUNTA, MAX, MAXA, MIN, MINA, PRODUCT, STDEV.P, STDEV.S, VAR.P, and VAR.S (including the catalogued legacy aliases). The span follows workbook tab order, so hidden sheets participate and reversed endpoint spelling produces the same set. Excel-defined direct 3-D error contexts remain values: INDEX and VLOOKUP return #VALUE!, while OFFSET returns #REF!. Other direct 3-D consumers remain an explicit UnsupportedSheetRange capability issue. A bare 3-D reference or one composed through an array operator returns #VALUE!; it does not silently inherit an enclosing aggregate's collection policy. The static capability scan and evaluator share this policy.

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.8 release line targets Python 3.10 through 3.14 and Node.js 22 or newer. Install the bindings with:

python -m pip install "cellrune==0.1.8"
npm install "@cellrune/node@0.1.8"

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()
    # 0.1.2-compatible calculation remains available when required:
    workbook.calculate(
        arithmetic_semantics="ieee_754",
        financial_solver_semantics="extended_search",
    )
    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.calculate({
    arithmeticSemantics: "ieee_754",
    financialSolverSemantics: "extended_search",
  });
  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. Unsupported formulas are returned as explicit per-cell calculation issues; other formulas continue to calculate.

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 outside the audited direct-consumer policy above;
  • spill postfix references such as A1# and data-table calculation; and
  • iterative calculation and automatic host-time inputs.

docs/NUMERICS.md records where calculated values differ from Excel and why, and documents the two calculation options added in 0.1.3: ArithmeticSemantics and FinancialSolverSemantics, which default to Excel's behavior and can be set to Ieee754 and ExtendedSearch for what 0.1.2 did.

Verification

The conformance/ tree carries the binary workbooks Excel actually calculated, together with their host metadata and reviewed expectations. The standard cargo test suite audits them. To run only that audit:

cargo run \
  --package cellrune-integration-tests \
  --bin check_excel_oracle \
  --locked

This is a normal regression test, not a separate CI step or release-only gate. It covers 1,295 formula cells from Apache POI's FormulaEvalTestData, 266 materialized array results from its matrix fixture, and 1,496 selected results from the CellRune-authored oracle. Excel Online and Mac Excel 2021 are recorded independently; a missing host value is simply host_unsupported. The older POI formula cache currently has 1,290 matches and 5 documented divergences.

Two additional corpus tests are compiled but marked #[ignore] because their third-party inputs are not distributed in this repository. A developer who has supplied those inputs can run them explicitly:

WORKBOOK_FORMULA_CORPUS=/path/to/formulas.xlsx \
  cargo test -p cellrune-integration-tests --test external_formula_corpus -- --ignored

CELLRUNE_WORKBOOK_CORPUS=/path/to/workbook-or-directory \
  cargo test -p cellrune-integration-tests --test external_workbook_corpus -- --ignored

#[ignore] keeps a test registered and compilable while excluding it from ordinary cargo test; cloning the repository does not provide either external corpus.

License

CellRune is dual-licensed under either the MIT License or the Apache License, Version 2.0, at your option. You need to comply with only one of them, not both. Apache-2.0 includes an explicit patent grant; MIT does not. Both license texts are included in the source distribution.

Versions 0.1.0 through 0.1.2 were published under the MIT License alone and remain available under those terms. The dual license applies from version 0.1.3 onward. Dependency license information is provided in THIRD_PARTY_LICENSES.md.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cellrune-0.1.8.tar.gz (461.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

cellrune-0.1.8-cp314-cp314-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.14Windows x86-64

cellrune-0.1.8-cp314-cp314-manylinux_2_28_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

cellrune-0.1.8-cp314-cp314-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cellrune-0.1.8-cp313-cp313-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.13Windows x86-64

cellrune-0.1.8-cp313-cp313-manylinux_2_28_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

cellrune-0.1.8-cp313-cp313-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cellrune-0.1.8-cp312-cp312-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.12Windows x86-64

cellrune-0.1.8-cp312-cp312-manylinux_2_28_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cellrune-0.1.8-cp312-cp312-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cellrune-0.1.8-cp311-cp311-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.11Windows x86-64

cellrune-0.1.8-cp311-cp311-manylinux_2_28_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cellrune-0.1.8-cp311-cp311-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cellrune-0.1.8-cp310-cp310-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.10Windows x86-64

cellrune-0.1.8-cp310-cp310-manylinux_2_28_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

cellrune-0.1.8-cp310-cp310-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file cellrune-0.1.8.tar.gz.

File metadata

  • Download URL: cellrune-0.1.8.tar.gz
  • Upload date:
  • Size: 461.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for cellrune-0.1.8.tar.gz
Algorithm Hash digest
SHA256 c0a5cbbfe68c9ea4589adffa18c9029a7c8ff51a3de1b96371e6161133e1c5f2
MD5 d37e9d103e50712e42288c72c0f262f0
BLAKE2b-256 8bcab3da2e5c143a7e40b926df777b022ba2e9d03473b096d7e2efdd31edd791

See more details on using hashes here.

Provenance

The following attestation bundles were made for cellrune-0.1.8.tar.gz:

Publisher: release.yml on emulette/cellrune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cellrune-0.1.8-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: cellrune-0.1.8-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.8 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

Hashes for cellrune-0.1.8-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ad66f73ffee0a3c5fd346c4a808e502483b8415e2b15a1de7fa93f1f1f34ef69
MD5 cb814d751a67f9185690685db893e9a2
BLAKE2b-256 06f77eeeec2280762c0d2af9f572f313030af300e5ef8434153aef7955d361da

See more details on using hashes here.

Provenance

The following attestation bundles were made for cellrune-0.1.8-cp314-cp314-win_amd64.whl:

Publisher: release.yml on emulette/cellrune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cellrune-0.1.8-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cellrune-0.1.8-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7b1eb4f7263037ca2409f0fe87868317701f62c46a410677a2ce720fd31a39a5
MD5 2c280dd73fbd14721b7f77a150980940
BLAKE2b-256 192d002aba228c4485c83ecc1cb328e6221f3bf54cd15285264b5a8efcd86916

See more details on using hashes here.

Provenance

The following attestation bundles were made for cellrune-0.1.8-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: release.yml on emulette/cellrune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cellrune-0.1.8-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cellrune-0.1.8-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0bbd524aec367313550208011b9da505b4957f46fb7babdb3a9776ec97e0bacc
MD5 51e2100de9ed1bc393048d30025e4364
BLAKE2b-256 d1b34658fcef4c6b1dad803b133a1b4904b2fea00ca78935e31ae6e4b632d745

See more details on using hashes here.

Provenance

The following attestation bundles were made for cellrune-0.1.8-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on emulette/cellrune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cellrune-0.1.8-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cellrune-0.1.8-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.8 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

Hashes for cellrune-0.1.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 fa6d4f3fca8ebe458e74508905d99a5a6e21d84456c4b212ce11d7abab15e7b8
MD5 cc663db70aff4e8f6d9863ccf26a928e
BLAKE2b-256 60a28b009c3e23bdb916c180819fe7563062349035ea115acf3eb8b0a939d42c

See more details on using hashes here.

Provenance

The following attestation bundles were made for cellrune-0.1.8-cp313-cp313-win_amd64.whl:

Publisher: release.yml on emulette/cellrune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cellrune-0.1.8-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cellrune-0.1.8-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a3d9910af04a4260f4ee312292fb55067c0beb33eeb49ec63b86b10b2eb02ac2
MD5 4739a66196cee7ef6bc311dfc94a63a9
BLAKE2b-256 ccb93d805d4364464583892e3b4761ca538eff557465f1c06b653cab4b5fd7a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for cellrune-0.1.8-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: release.yml on emulette/cellrune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cellrune-0.1.8-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cellrune-0.1.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6682e6427a863da008f59ca386e04d1acd6d21fc11286c4c1d38c58f48a43e07
MD5 5c1869c821de0ede26fdd4042d4798e2
BLAKE2b-256 3d817f0957da8cfe0da4f7fac595d524d4116d5ed429a4eeb02812789d4b1672

See more details on using hashes here.

Provenance

The following attestation bundles were made for cellrune-0.1.8-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on emulette/cellrune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cellrune-0.1.8-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cellrune-0.1.8-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.8 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

Hashes for cellrune-0.1.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 523e9e34e250507118985ed2b92e69ece096e139275bb39c4f78a8c0a26452b3
MD5 45b2632d3ae6762222db799252a3e0aa
BLAKE2b-256 15ee135618147ec6663f0fa1f75f6f3aee0d46e9700a77b88869bb595276cba1

See more details on using hashes here.

Provenance

The following attestation bundles were made for cellrune-0.1.8-cp312-cp312-win_amd64.whl:

Publisher: release.yml on emulette/cellrune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cellrune-0.1.8-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cellrune-0.1.8-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4469ee8e587975c60f8a3c5fe38c78d8ead70ccbeb5efb7c7e89767e2e2147b7
MD5 76813a39ce192b07121cf0072aec23a9
BLAKE2b-256 57eb7eeaec10fe646103dc6baf9aa8bcbe5211ba0cc2a50ba623cf68e6d7c7cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for cellrune-0.1.8-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: release.yml on emulette/cellrune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cellrune-0.1.8-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cellrune-0.1.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 123b45fd8f9921ab8cedc08b34e09452cd00b7f9d0fd8c3e626c01a4037e173b
MD5 0031c6b502a6dae9adbdcd8d3b210aba
BLAKE2b-256 e9f8df77633a6de3d771969c5b7fe663df75d1dba28dab7ec1293dfbf2c2529b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cellrune-0.1.8-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on emulette/cellrune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cellrune-0.1.8-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cellrune-0.1.8-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.8 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

Hashes for cellrune-0.1.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ed4000d3b2c88b7ede3ece57d73a0874c11f01fe4f006b87363e664323c00ac8
MD5 ac364c507774410eb82765787207f2ef
BLAKE2b-256 eb6697864d5cbc918039b77481257937ba8c49c680723e3a01682dda46bc41d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for cellrune-0.1.8-cp311-cp311-win_amd64.whl:

Publisher: release.yml on emulette/cellrune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cellrune-0.1.8-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cellrune-0.1.8-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 79ba7a31d947056c83c0fde8ddecfc7c2e6bf5cbcdd2e9d2ada28b2e85437bfd
MD5 3c46145a8afeb49b951d697d59a07803
BLAKE2b-256 77c03394978307c0a8ffdb5c7044885dbd09693fbe6faceaf7284c37768d22d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for cellrune-0.1.8-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: release.yml on emulette/cellrune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cellrune-0.1.8-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cellrune-0.1.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aacaf78857fc1400712a68a4cd5e74beb2237a9d5b154c4ee3c9be1fba956a2b
MD5 50f0c74a1c99847c87a70f474f97ae19
BLAKE2b-256 fabbd1a9c0a57a73367e73269c985b0754d3cde66dc096266f7421fc479d3d6e

See more details on using hashes here.

Provenance

The following attestation bundles were made for cellrune-0.1.8-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on emulette/cellrune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cellrune-0.1.8-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cellrune-0.1.8-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.8 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

Hashes for cellrune-0.1.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 37f5feb6f2a4ddb2ebb25833686c8e37293f161a8820dccc77b9f6d40e5fa1eb
MD5 39aa7eef6a821bf94dcbf3921bdaad7e
BLAKE2b-256 7d9618ff96ee31b25fccdd0a3c5f9d45ce5dac546c2bd86aabda0972a68edb9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for cellrune-0.1.8-cp310-cp310-win_amd64.whl:

Publisher: release.yml on emulette/cellrune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cellrune-0.1.8-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cellrune-0.1.8-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 480d5aff5337aa90c384f0f40271d9fb3e776703fb257fb0194d63de73e739ef
MD5 3f7143ee021386128c8b52a071effd3f
BLAKE2b-256 7615cebfc0379e3214b490db1f9e4c8b1b5c2bfa551d06a3a0ca67ae45f66f9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cellrune-0.1.8-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: release.yml on emulette/cellrune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cellrune-0.1.8-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cellrune-0.1.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 52d7c23751529df3d775985549aba1b26cd375c3bb30b34611c54e60cc5b5d10
MD5 9b182e766a08328c404d720e68fc6740
BLAKE2b-256 eefa5d82ed4eea123446ae692797106b18b19ea113b8a467d23feeba687ba3c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for cellrune-0.1.8-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on emulette/cellrune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.20

16 files

0.1.19

16 files

0.1.18

16 files

0.1.17

16 files

0.1.16

16 files

0.1.15

16 files

0.1.14

16 files

0.1.13

16 files

0.1.12

16 files

0.1.11

16 files

0.1.10

16 files

0.1.9

16 files

This release

0.1.8 This release

16 files

0.1.7

16 files

0.1.6

16 files

0.1.5

16 files

0.1.4

16 files

0.1.3

16 files

0.1.2

16 files

0.1.1

16 files

0.1.0

16 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page