Skip to main content

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 the JS build and test guide for packaging and validation 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.0

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.0
File Size Uploaded Provenance Actions
crc_framework-0.4.0.tar.gz 6.0 MB With provenance Details for crc_framework-0.4.0.tar.gz

Built distributions (wheels)

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

Total release size: 52.0 MB

Release files / crc_framework-0.4.0.tar.gz

Download URL crc_framework-0.4.0.tar.gz
Size 6.0 MB
Tags Source
SHA-256 checksum
How to use checksums
91ff7da60440c4f8192b2aeaa42a48df02f184586a4d3dbbf07031c76a860e5c
BLAKE2b-256 checksum
How to use checksums
55800c9af2890d8270f4d69e34fe7183e97209925ad5166eaa1a6a8fadaceb0e
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 19, 2026.

Transparency log

Release files / crc_framework-0.4.0-cp315-cp315-macosx_11_0_arm64.whl

Download URL crc_framework-0.4.0-cp315-cp315-macosx_11_0_arm64.whl
Size 3.1 MB
Tags CPython 3.15 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d7279f47203f773d5ea3fd1b1596e1a2e2d3f4f38c50836983351e7e422564c7
BLAKE2b-256 checksum
How to use checksums
748f812f63caed38953c232f98ff79b02dd8d98b80a7ea13faad78f49cd98936
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 19, 2026.

Transparency log

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

Download URL crc_framework-0.4.0-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
9dc788b9a1232deb3beea3d95d7da542839cc73133446f46fdc4b0fe1f819531
BLAKE2b-256 checksum
How to use checksums
c400b462d2b66faf0dbb81561acc058f92e8b74286c9ce7fc399085d0fa06217
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 19, 2026.

Transparency log

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

Download URL crc_framework-0.4.0-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
0a716c6fcaf6f645df837bf151756d5bbb649a7e87325d9c612d2d3f238e4c4d
BLAKE2b-256 checksum
How to use checksums
4198a8325928bae63dcf8498a47f904b01b89dd64e4b3442a8753e6003e05a0a
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 19, 2026.

Transparency log

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

Download URL crc_framework-0.4.0-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
530db9c9292c8b5acb2fa9fb677d165e4d14da713252154ace3addee24c4a48d
BLAKE2b-256 checksum
How to use checksums
a2a43b06c46227ef7d5081088864a243db6bee68fed3479b93fd8025cd16745e
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 19, 2026.

Transparency log

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

Download URL crc_framework-0.4.0-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
ce078b671aede990b089ba13753e45b08bf34418c2d8ab2728f36f70a22472d1
BLAKE2b-256 checksum
How to use checksums
78a7889726c96b8bb370008e4780f703f441cf39a4382a2cac30bf61f4686a49
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 19, 2026.

Transparency log

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

Download URL crc_framework-0.4.0-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
6be9f5221030beb7eb5e234e1fae4449e095137ef54b0fd337aafb6df58db0ef
BLAKE2b-256 checksum
How to use checksums
115bc4c61f9f7673cad64de6c27cbce66a717263d9c68a1b481595e38ce69f87
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 19, 2026.

Transparency log

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

Download URL crc_framework-0.4.0-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
488554edb4f7bca731ced20e535bfbb888923d66ec67390686a685474bddbba6
BLAKE2b-256 checksum
How to use checksums
97bcff07fac29968c7e4659240cbd4595fcc0ba3d9b3f1ca6be47ef4a5a720d8
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 19, 2026.

Transparency log

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

Download URL crc_framework-0.4.0-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
03ac820b78322180a50cfc9471d291ab1bcd52dd0aebbcc407e323617e98f823
BLAKE2b-256 checksum
How to use checksums
1f5f4fe56c8c91449ab307543368b5dba860b98b9aead129162af9c50a00fc8b
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 19, 2026.

Transparency log

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

Download URL crc_framework-0.4.0-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
02968a7b5ae84f5af135cdfd391ef21d425625ad46952d21bc877b32e0a49567
BLAKE2b-256 checksum
How to use checksums
824ef5f39f0e993245e93dbbab01265e4f362624d9366478c765b44a9d093bb6
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 19, 2026.

Transparency log

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

Download URL crc_framework-0.4.0-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
bf81ea114d7b80e0459e310d29cf1548f236f0da6ab52e7f5d688dcb2c41f9fd
BLAKE2b-256 checksum
How to use checksums
6b09cd86443acfd20ede402af79bf70f1dd9c9d2d8c917ccb22cbf6bb0537006
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 19, 2026.

Transparency log

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

Download URL crc_framework-0.4.0-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
5a99a8d7bae69cd0c60ecbc7e069785f13895cee91bb7d69273531ed2b17efbf
BLAKE2b-256 checksum
How to use checksums
fc8bba6388e11821f22b30a3921560dd8a09d6e4eb7898356a85c66ca8bb97d1
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 19, 2026.

Transparency log

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

Download URL crc_framework-0.4.0-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
7149952453de11555f8191175a76c20fb7c26bc5468965840bc9a066411e9ff7
BLAKE2b-256 checksum
How to use checksums
d626e06184564f80912423abafe09d095b3351c35faa45637bb4f4f3a9648248
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 19, 2026.

Transparency log

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

Download URL crc_framework-0.4.0-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
c0050eed4d40496039302fa662f86bebad226d2d315e47bd0e8ca97d7974018c
BLAKE2b-256 checksum
How to use checksums
c970906309c01190559d3738dc4661b44d64aba19a516d64d6f53a1fd95877ca
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 19, 2026.

Transparency log

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

Download URL crc_framework-0.4.0-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
cef991421ffd25a0789e6a33c2f46220d2f2a263703bc4d366dfc8ed1449c1a7
BLAKE2b-256 checksum
How to use checksums
e9b480dca96a26c6f490263908a259be09c1f3c0a14dd48d3b4c5ac3412aae75
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 19, 2026.

Transparency log

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

Download URL crc_framework-0.4.0-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
19006a3fb3b8d14b3e3f120e9e2b416c3b2c7ce564073d7a58f72ac318d04a7e
BLAKE2b-256 checksum
How to use checksums
ef8a4ef300d8ae322f2e1beeebfb796b3d97ba7f04a4da3fd1ffc361cd128d0d
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 19, 2026.

Transparency log

Security for crc-framework 0.4.0

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.

Full provenance

All 16 files in this release have been uploaded with provenance metadata.

Select from 16 files

Attestation for crc_framework-0.4.0.tar.gz

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 19, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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