Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Climate Risk Commons Framework

CRC Framework provides a shared Rust computation core with official Python and JavaScript/WebAssembly bindings for climate-risk calculations. It turns hazard distributions into comparable impact microscores, scenario branches, and portfolio-level VaR/CVaR risk metrics.

Interface Package Scope
Python crc-framework on PyPI; import crc_framework Distributions, fitting, impacts, microscores, risk aggregation, and geography
JavaScript / WASM @riskthinking.ai/crc-framework on npm Canonical CRC curve consumption: quantile evaluation, batches, prepared handles, and TypeScript declarations
Rust crates/core Shared algorithms and reference data used by both bindings

The initial WASM rollout in 0.4.0 focuses on consuming canonical datasets, including PMTiles/MVT properties. Broader Python parity and write/canonicalization APIs are planned for later releases. Application-specific Python functionality belongs in packages built on top of this framework.

Installation

Python

python -m pip install crc-framework
# Include prereleases during the 0.4.0 alpha cycle:
python -m pip install --upgrade --pre crc-framework

Python 3.9 or later is required. Compatible prebuilt wheels need no Rust toolchain. Building from source requires Rust 1.85 or later and a C compiler suitable for Python extensions.

JavaScript / WebAssembly

npm install @riskthinking.ai/crc-framework@alpha

Use @alpha for the current prerelease channel; stable releases use npm's latest channel. The package is ESM, requires WebAssembly, and includes TypeScript declarations. See the JavaScript guide for browser, bundler, Node, and SSR setup, canonical input rules, and prepared collection APIs.

Quick start

Python: evaluate a return-period curve

from crc_framework import TabulatedDistribution

exposure = TabulatedDistribution.from_return_periods(
    periods=[10, 20, 50, 100, 200, 500],
    values=[0.1, 0.2, 0.5, 0.9, 1.4, 2.0],
    tail="upper",
)
print(exposure.ppf(0.99))  # 100-year return level: 0.9

JavaScript: consume a canonical curve

import init, { evaluateCurve } from '@riskthinking.ai/crc-framework';

await init(); // initialize once at client startup
const properties = {
  curve_kind: 'fitted',
  curve_type: 'gumbel_r',
  curve_location: 1,
  curve_scale: 2,
};
const value = evaluateCurve(properties, 0.99);

Evaluation is synchronous after initialization. Imports are SSR-safe; initialize in the client, or load WASM bytes explicitly for Node evaluation. For repeated viewport or percentile queries, use prepareCurves to validate and transfer a collection once, then call evaluate(q) and free the handle when finished.

Python guide

Distributions

All calculations are expressed through a distribution interface with pdf, cdf, ppf, quantiles, and sample operations. Scalar and NumPy array inputs are supported for the evaluation methods.

Choose a distribution according to the form of the available data:

  • EmpiricalDistribution for raw observations.
  • TabulatedDistribution for explicit probability/value pairs.
  • FittedDistribution for a known parametric family and its parameters.
  • HurdleDistribution for a point mass followed by a truncated parametric tail.
  • PointMassDistribution for a value that is constant at every probability.

TabulatedDistribution does not extrapolate by default. Querying outside its declared probability range raises an error unless extrapolate=True is set.

Probability convention

All metric APIs use non-exceedance probability q in [0, 1]. Return periods are accepted only when constructing a tabulated distribution. For upper-tail hazards, a return period T is converted to q = 1 - 1/T; therefore, the upper-tail 100-year return level is queried at q=0.99.

Fitting

Fitting is always explicit. Metrics sample the distribution supplied by the caller and never silently substitute a fitted curve. This makes the modelling choice auditable.

fit_distribution accepts raw observations or an EmpiricalDistribution and selects among the supported families using the Kolmogorov–Smirnov p-value. The supported families are genextreme, weibull_min, weibull_max, skewnorm, gumbel_r, gumbel_l, and genpareto. The returned FitResult includes KS, RMSE, and R-squared diagnostics. Passing a tabulated or fitted distribution is an error: those values are not independent observations.

Fit observations

import numpy as np

from crc_framework import EmpiricalDistribution, FitConstraints, fit_distribution

observations = np.array([0.1, 0.2, 0.4, 0.7, 1.1, 1.8])
empirical = EmpiricalDistribution(observations)
fit = fit_distribution(
    empirical,
    family="auto",
    constraints=FitConstraints(probability=0.99, maximum_value=3.0),
)
median = fit.distribution.ppf(0.5)
print(fit.distribution.family, fit.diagnostics.ks_pvalue, median)

Pass family="auto" (the default) to select a family, a family name to fit a specific family, or use fit_all to inspect every candidate. Use quality_metrics to calculate diagnostics for a selected fitted distribution.

L-moment estimation

For a standalone L-moment estimate of GEV or Gumbel observations, select the estimator explicitly:

from crc_framework import fit_distribution

annual_extremes = [0.1, 0.2, 0.4, 0.7, 1.1, 1.8]
result = fit_distribution(annual_extremes, family="genextreme", method="lmoments")

This uses unbiased sample L-moments (Hosking, 1990), with an exact numerical solution of the GEV L-skewness equation. It supports genextreme, gumbel_r and gumbel_l, requires at least four finite, nonconstant observations, and performs no likelihood optimization or automatic family selection. GEV shape uses the SciPy convention (c = -xi); the finite-mean domain is c > -1. Degenerate L-skewness is rejected rather than clipped. Fit constraints can accept or reject the estimated distribution without refitting it.

The native implementation sorts once, uses compensated sums in scaled and centered coordinates, and reuses that sort for diagnostics. Work is O(n log n) with O(n) storage. The Python binding releases the GIL during native fitting. The returned KS p-value is a descriptive diagnostic, not a calibrated hypothesis test after parameter estimation. See NIST's L-moments reference for background and the Hosking references.

Fit quantile curves

Use fit_quantiles for probability/value knots. It minimizes weighted value-space differences between the supplied values and the selected family's PPF, requires an explicit family, and reports residual diagnostics rather than KS statistics:

from crc_framework import TabulatedDistribution, fit_quantiles

curve = TabulatedDistribution.from_return_periods(
    [5, 10, 25, 50, 100],
    [0.2, 0.6, 1.1, 1.5, 1.9],
    tail="upper",
)
fit = fit_quantiles(curve, family="gumbel_r")

Fit a known point mass and tail

For a known point mass, use fit_hurdle_quantiles and supply its probability; the framework does not infer an exact mass from sparse zero-valued knots:

from crc_framework import fit_hurdle_quantiles

fit = fit_hurdle_quantiles(
    curve,
    family="gumbel_r",
    atom_probability=0.5,
    atom_location=0.0,
)

Fit censored quantiles

For sparse return-period curves whose lower values mean "at or below the physical detection bound", use fit_censored_quantiles. It fits every knot with a Gaussian left-censored likelihood, rather than treating repeated zeros as an exact atom or discarding them from the fit:

from crc_framework import fit_censored_quantiles

fit = fit_censored_quantiles(
    [0.5, 0.8, 0.9, 0.96, 0.98, 0.99, 0.996, 0.998, 0.999],
    [0, 0, 0, 0, 0, 0, 0.03, 0.06, 0.10],
    family="genextreme",
    censor_location=0.0,
)

The residual scale has a reproducible positive floor (by default 1e-3 times the robust value scale) because sparse tails may otherwise make the likelihood unbounded as residual variance approaches zero. The fitted object is the latent parametric distribution; producers should clamp it at the censor location when storing a non-negative observed curve.

TabulatedDistribution remains the lossless interpolation of the supplied knots. Parametric and hurdle fits are lossy, so systems that require source reconstruction must persist the original probability/value pairs separately.

Create microscores from flood exposure

from crc_framework import (
    RiskFactor,
    ScenarioMetadata,
    TabulatedDistribution,
    TransformContext,
    generate_microscores,
    impacts,
)

exposure = TabulatedDistribution.from_return_periods(
    periods=[10, 20, 50, 100, 200, 500],
    values=[0.1, 0.2, 0.5, 0.9, 1.4, 2.0],
    tail="upper",
)

impact = impacts.for_factor(
    RiskFactor.CFLOOD,
    context=TransformContext(
        continent="Europe",
        building_type="Commercial buildings",
    ),
)(exposure)

suite = generate_microscores(
    exposure,
    impact=impact,
    probabilities=[0.95, 0.99],
    metadata=ScenarioMetadata(factor=RiskFactor.CFLOOD.value),
)

generate_microscores returns a MicroscoreSuite. Use suite.scores to inspect sampled exposure and impact values, suite.at(q) to obtain the binary outcome at a requested probability, and exposure_statistics and impact_statistics for summary diagnostics.

Evaluate impacts

Impact functions expose two deliberately distinct operations:

  • impact.evaluate(values, context=...) evaluates event-aligned exposure values. Input shape and order are preserved, including for decreasing or non-monotonic callables. This is the appropriate operation when return periods continue to identify the source hazard events.
  • impact(distribution, probabilities=..., context=...) transforms an exposure distribution into an impact distribution. Decreasing built-in transforms reorder the resulting quantiles so the output remains a valid distribution for risk metrics.

The built-in LinearImpact, SigmoidImpact, and PiecewiseLinearImpact support both operations. CallableImpact adapts a vectorized NumPy callable for point evaluation, while the backward-compatible CallableTransform also supports distribution transformation.

import numpy as np

from crc_framework import (
    CallableImpact, LinearImpact, TabulatedDistribution, generate_microscores,
)

exposure = TabulatedDistribution([0.5, 0.9, 0.99], [0.5, 1.0, 2.0])
impact_function = LinearImpact(slope=0.25, maximum=1.0)
event_impacts = impact_function.evaluate(np.array([0.5, 2.0]))
impact = impact_function(exposure)
suite = generate_microscores(
    exposure,
    impact=impact,
    probabilities=[0.95, 0.99],
)

custom = CallableImpact(lambda values: np.clip(values / 2.0, 0.0, 1.0))
custom_event_impacts = custom.evaluate(np.array([0.5, 2.0]))

impacts.for_factor(...) selects a registry-backed climate transform. Supply a TransformContext with the relevant geography, building type, and historical values; pass overrides when an application needs to replace transform parameters. Registry-backed impacts support the same point and distribution interfaces, with point evaluation delegated directly to the native registry.

Aggregate factor outcomes

Each microscore can be converted to a BinaryOutcome. Combine outcomes into the full set of independent downside/upside branches, then calculate VaR and CVaR at one or more confidence levels:

from crc_framework import BinaryOutcome, compute_risk, compute_spanning_set

outcomes = [
    BinaryOutcome("flood", downside_probability=0.05, downside_impact=0.4),
    BinaryOutcome("fire", downside_probability=0.10, downside_impact=0.2),
]

branches = compute_spanning_set(outcomes)
risk = compute_risk(outcomes, levels=[0.80, 0.95])
level_95 = risk.at(0.95)

print(len(branches))  # 4: two possible outcomes per factor
print(level_95.var, level_95.cvar)

Branch generation grows as 2**n for n factors. Set max_branches on compute_spanning_set or compute_risk to enforce an application-specific limit. RiskLevel.attribution reports each factor's contribution to VaR and CVaR.

Spatial helpers

Spatial helpers accept an H3 cell as an integer or string, normalize it to H3 resolution 4, and return None when no reference mapping exists.

from crc_framework import lookup_geography, lookup_ipcc_region

cell = 600550049193132031
geography = lookup_geography(cell)
region = lookup_ipcc_region(cell)

if geography is not None:
    print(geography.continent, geography.countries)
print(region)

lookup_continent returns a continent name, lookup_ipcc_region returns the IPCC region, and lookup_geography returns a Geography object with the continent and intersecting ISO3 country codes.

Public API

The package exports the following primary interfaces:

  • Distributions: EmpiricalDistribution, TabulatedDistribution, FittedDistribution, HurdleDistribution, PointMassDistribution, fit_distribution, fit_quantiles, fit_censored_quantiles, fit_hurdle_quantiles, fit_all, and quality_metrics.
  • Transforms: impacts, ImpactRegistry, ImpactFunction, ClimateImpact, LinearImpact, SigmoidImpact, PiecewiseLinearImpact, CallableImpact, and CallableTransform.
  • Metrics: generate_microscores, compute_spanning_set, and compute_risk.
  • Models and constants: ScenarioMetadata, TransformContext, RiskFactor, Pathway, RISK_FACTORS, PATHWAYS, and HORIZONS.
  • Spatial lookup: lookup_continent, lookup_ipcc_region, and lookup_geography.

Development

Repository layout

Path Responsibility
crates/core Shared Rust algorithms and reference data
src/lib.rs PyO3 extension
python/crc_framework Typed Python API shipped with the extension
crates/wasm WASM exports backed by the Rust core
js JS adapter, TypeScript declarations, build tooling, and consumer tests
tests Python tests and shared parity fixtures

Python consumers should import crc_framework; crc_framework._core is an implementation detail that may change between releases.

Python setup and checks

Run these commands from the repository root:

python -m venv .venv
.venv/bin/python -m pip install --upgrade pip maturin
.venv/bin/python -m pip install -e ".[test]"

cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace --locked
.venv/bin/python -m mypy
.venv/bin/python -m pytest
.venv/bin/maturin build --release --locked

After changing Rust code, run .venv/bin/maturin develop to rebuild the Python extension. Python-only edits are available directly from the editable install.

JavaScript setup and checks

Use the Node version in js/.nvmrc, install the wasm32-unknown-unknown Rust target and wasm-pack 0.15.0, then:

cd js
npm ci
npm run build
npm test
npx playwright install chromium
npm run test:browser
npm run test:consumer

The consumer test packs the generated distribution and checks it with Vite, TypeScript, SSR, and Chromium. See JS build and performance guidance for packaging and benchmarking commands.

Native and WASM transcendental math can differ slightly. Numerical regression and parity tests use explicit tolerances; structural validation stays exact. The quantile fitting golden test documents the optional exact-comparison mode for refactors in a fixed environment.

Versioning and releases

The single version source is [workspace.package].version in the root Cargo.toml. All three Rust crates inherit it; maturin derives the Python version, and the JS build derives the npm version. Source js/package.json stays private and versionless; the build generates the public package manifest in ignored js/dist/.

To release, for example, 0.4.0-alpha.4:

  1. Edit only the workspace version in Cargo.toml, then run cargo check -p crc-framework-core to refresh Cargo.lock.
  2. Review and commit Cargo.toml and Cargo.lock with the release changes. Push and wait for the PR checks to pass.
  3. In GitHub Releases, create v0.4.0-alpha.4 targeting the tested branch or commit. A release can target wasm before it is merged into main.
  4. Check both Package release and JavaScript WASM workflow results. Publishing is independent, so one registry can succeed while another fails.
Destination Version in this example Release behavior
Rust workspace 0.4.0-alpha.4 Versioned source; no crates.io publishing workflow is configured
PyPI: crc-framework 0.4.0a4 release.yaml builds wheels and an sdist, attaches assets to the GitHub release, and publishes to PyPI
npm: @riskthinking.ai/crc-framework 0.4.0-alpha.4 npm.yaml builds/tests and publishes the tested tarball under the alpha dist-tag

Use v + the exact Cargo version for the Git tag. Python's a4 spelling is an output conversion, not the release-tag format. The npm publisher rejects a tag that differs from its generated package version. Stable 0.4.0 uses tag v0.4.0 and npm's latest channel; beta and rc prereleases use their respective channels. No npm version edits, extra versioning tools, or CI-generated version commits are needed.

npm publishing uses GitHub OIDC with the production environment. The npm trusted publisher must authorize organization RiskThinking, repository crc-framework-rs, workflow npm.yaml, environment production, and direct npm publish; no npm token secret is needed. Python publishing also uses the production environment through its separate workflow.

Tags trigger publishing. Re-running an existing tag uses the code at that tag; a new fix requires a new release version. Keep released tags fixed and increment the version for subsequent releases.

License

CRC Framework is licensed under the GNU Affero General Public License, version 3 or any later version (AGPL-3.0-or-later). See LICENSE.

Parts of the numerical distribution implementation are derived from or informed by SciPy and Cephes. Their applicable copyright notices and license terms are preserved in THIRD_PARTY_NOTICES.md.

Metadata

Release files for crc-framework 0.4.0a4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for crc-framework 0.4.0a4
File Size Uploaded
crc_framework-0.4.0a4.tar.gz 6.0 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for crc-framework 0.4.0a4
File
crc_framework-0.4.0a4-cp315-cp315-macosx_10_12_x86_64.whl CPython 3.15 CPython 3.15 macOS 10.12+ x86-64 Details
crc_framework-0.4.0a4-cp314-cp314t-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64 Details
crc_framework-0.4.0a4-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
crc_framework-0.4.0a4-cp314-cp314t-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64 Details
crc_framework-0.4.0a4-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
crc_framework-0.4.0a4-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
crc_framework-0.4.0a4-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
crc_framework-0.4.0a4-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
crc_framework-0.4.0a4-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
crc_framework-0.4.0a4-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
crc_framework-0.4.0a4-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
crc_framework-0.4.0a4-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
crc_framework-0.4.0a4-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
crc_framework-0.4.0a4-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details

Total release size: 48.9 MB

Release files / crc_framework-0.4.0a4.tar.gz

Download URL crc_framework-0.4.0a4.tar.gz
Size 6.0 MB
Tags Source
SHA-256 checksum
How to use checksums
9f82642a6b52028ed37d4fd31bd5d55ff96b6c93da77ff7e343e578647096c22
BLAKE2b-256 checksum
How to use checksums
b14fce0692314b2d923147445ec249f566682061db3376f365f5d4fa5d0a7e31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / crc_framework-0.4.0a4-cp315-cp315-macosx_10_12_x86_64.whl

Download URL crc_framework-0.4.0a4-cp315-cp315-macosx_10_12_x86_64.whl
Size 3.0 MB
Tags CPython 3.15 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
df058fad5848130bf1060b8ca4d78e40c76afa8971b6253ae29643a3b5b7a24e
BLAKE2b-256 checksum
How to use checksums
677a095b37f7a01ae1b120f09d82b734eb4eecc70e1a972806e5960da5f8b405
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / crc_framework-0.4.0a4-cp314-cp314t-manylinux_2_28_x86_64.whl

Download URL crc_framework-0.4.0a4-cp314-cp314t-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
8da1cc975a652c3d2aac1e38869cb8a62ca3ca4a5fe1ac0ca9b797ed5acf5b0e
BLAKE2b-256 checksum
How to use checksums
9da22eea1680591c579cf8e3ca1116d88fc3962f37da162babc8a213350a3552
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / crc_framework-0.4.0a4-cp314-cp314t-macosx_11_0_arm64.whl

Download URL crc_framework-0.4.0a4-cp314-cp314t-macosx_11_0_arm64.whl
Size 3.1 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a32a37c587057997e1e67c3933c41c245f23db0d0e6f5ac41c84a386b7888f7f
BLAKE2b-256 checksum
How to use checksums
4f22f73815963dfb19370a0cf5bde7a033859632c29e44f96d9be9019a264dec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / crc_framework-0.4.0a4-cp314-cp314t-macosx_10_12_x86_64.whl

Download URL crc_framework-0.4.0a4-cp314-cp314t-macosx_10_12_x86_64.whl
Size 3.0 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
266954783af329b0302e52dccf584cf8e083ad4d69489259bf71ee91a5f245e2
BLAKE2b-256 checksum
How to use checksums
73d4d67706c24f0cb2d9da927ee086356f078dad20c2991302c0dbfdebda054e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / crc_framework-0.4.0a4-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL crc_framework-0.4.0a4-cp314-cp314-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
313bc777d7adb64b6b31e3cda975e149e356e6b27125e381851610f934363d72
BLAKE2b-256 checksum
How to use checksums
aee5f95af3953c234af7794e2e8b7e235bb4edfce3003fb70dd5e848a67d99bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / crc_framework-0.4.0a4-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL crc_framework-0.4.0a4-cp313-cp313-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
82388551554d68b4f9bbcf26980f274fa1b41b309660541201e74961f03e8544
BLAKE2b-256 checksum
How to use checksums
9016da0868b48a4daa60ee83550a18add1031d436ea39167fbd3b253d7a6897c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / crc_framework-0.4.0a4-cp313-cp313-macosx_11_0_arm64.whl

Download URL crc_framework-0.4.0a4-cp313-cp313-macosx_11_0_arm64.whl
Size 3.1 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
106dc414c073f104582f763b706eac4cfba7dfa95f58f9afbaf6451cbbcc9cfd
BLAKE2b-256 checksum
How to use checksums
b98736277df3fa489681a955af6d23726e5ca44596259bee8fb8b11f8b2907ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / crc_framework-0.4.0a4-cp313-cp313-macosx_10_12_x86_64.whl

Download URL crc_framework-0.4.0a4-cp313-cp313-macosx_10_12_x86_64.whl
Size 3.0 MB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
535b36b560a1137afe220005dca779ebced67f2d5b3b166ec154071d32be6780
BLAKE2b-256 checksum
How to use checksums
fe7d4c93bdd61d40a68fb6ef9166e7bfee84b1382610555dc1ce84087f6d0ca8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / crc_framework-0.4.0a4-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL crc_framework-0.4.0a4-cp312-cp312-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2ee5c6fe063e72a0f79f6e91441d98c8cf1d0ad88f445a0415ade05e71720ac8
BLAKE2b-256 checksum
How to use checksums
96a805fe3c9d106d369afae7a9fb31e9069a64eb2ea55d21e1003c5d432ffd10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / crc_framework-0.4.0a4-cp312-cp312-macosx_11_0_arm64.whl

Download URL crc_framework-0.4.0a4-cp312-cp312-macosx_11_0_arm64.whl
Size 3.1 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
dea0007d181ca8ed6145865b3b73da030dffe5236eb1a12eb86bdb9fd4944375
BLAKE2b-256 checksum
How to use checksums
5a6075b27a4cad27a3eb41ea0e9644bc5a568636e8a3253a56a6107dcecd64c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / crc_framework-0.4.0a4-cp312-cp312-macosx_10_12_x86_64.whl

Download URL crc_framework-0.4.0a4-cp312-cp312-macosx_10_12_x86_64.whl
Size 3.0 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
aa1805300b2c42d37c9d8ba78d2d49ba832a5b7a9d61f4acf6af4ef98fd8af0c
BLAKE2b-256 checksum
How to use checksums
afb2cb735a0d591e7a0e09458ab63ea910b45f79763951c04f05dd1f42846e20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / crc_framework-0.4.0a4-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL crc_framework-0.4.0a4-cp311-cp311-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
72c7af3cd40e94c877921f09e35148824b021423cfe2c9e6a95fa0f7f8d2089d
BLAKE2b-256 checksum
How to use checksums
0b47d1639dfef16da46c8a5b3a109a6d42e386d1c8ccf22afd061e221548c607
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / crc_framework-0.4.0a4-cp311-cp311-macosx_11_0_arm64.whl

Download URL crc_framework-0.4.0a4-cp311-cp311-macosx_11_0_arm64.whl
Size 3.1 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a69fcecd4f36fc01ee3a078a2063a39d61b839528a829e8a489d1a1d80db6776
BLAKE2b-256 checksum
How to use checksums
c99cbbbde6941973e5b760f468011eef72b0c6e7e7f8e0bc752234eda44ab0ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / crc_framework-0.4.0a4-cp311-cp311-macosx_10_12_x86_64.whl

Download URL crc_framework-0.4.0a4-cp311-cp311-macosx_10_12_x86_64.whl
Size 3.0 MB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
aa5674f0ba4a6f51ed7a624dc8ff0d7da921d630d824c82ad0852afb3d36d2a8
BLAKE2b-256 checksum
How to use checksums
fc0e23348b41d616d161ab3578c8936d6e369e0e0477305403e5d4d0661791f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log
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