A high-performance compartment modelling library in Rust and Python.
Project description
Commol
A high-performance compartment modelling library for mathematical modeling using difference equations. Commol provides a clean Python API backed by a fast Rust engine for numerical computations.
⚠️ Alpha Stage Warning: Commol is currently in alpha development. The API is not yet stable and may change between versions without backward compatibility guarantees. Use in production at your own risk.
Features
- Intuitive Model Building: Fluent API for constructing compartment models
- Mathematical Expressions: Support for complex mathematical formulas in transition rates (sin, cos, exp, log, etc.)
- Unit Checking: Automatic dimensional analysis to catch unit errors before simulation
- High Performance: Rust-powered simulation engine for fast computations
- Flexible Architecture: Support for stratified populations and conditional transitions
- Type Safety: Comprehensive validation using Pydantic models
- Multiple Output Formats: Get results as dictionaries or lists for easy analysis
Installation
# Install from PyPI (once published)
pip install commol
# Or install from source
git clone https://github.com/MUNQU/commol.git
cd commol/py-commol
pip install maturin
# If using a virtual environment, activate it first
# source venv/bin/activate # On Linux/macOS
# venv\Scripts\activate # On Windows
maturin develop --release
⚠️ Important: The project directory path must not contain tildes (
~) or spaces. Maturin may fail with paths like~/projects/commolor/home/my projects/commol. Use full paths like/home/username/projects/commolinstead.
Quick Start
from commol import ModelBuilder, Simulation
# Build a simple SIR model
model = (
ModelBuilder(name="Basic SIR", version="1.0")
.add_bin(id="S", name="Susceptible")
.add_bin(id="I", name="Infected")
.add_bin(id="R", name="Recovered")
.add_parameter(id="beta", value=0.3)
.add_parameter(id="gamma", value=0.1)
.add_transition(
id="infection",
source=["S"],
target=["I"],
rate="beta * S * I / N"
)
.add_transition(
id="recovery",
source=["I"],
target=["R"],
rate="gamma"
)
.set_initial_conditions(
population_size=1000,
bin_fractions=[
{"bin": "S", "fraction": 0.99},
{"bin": "I", "fraction": 0.01},
{"bin": "R", "fraction": 0.0}
]
)
.build(typology="DifferenceEquations")
)
# Run simulation
simulation = Simulation(model)
results = simulation.run(num_steps=100)
# Display results
print(f"Final infected: {results['I'][-1]:.0f}")
# Visualize results
from commol import SimulationPlotter
plotter = SimulationPlotter(simulation, results)
plotter.plot_series(output_file="sir_model.png")
Using $compartment Placeholder for Multiple Transitions
When you need to apply the same transition to multiple compartments (like death rates), use the $compartment placeholder instead of writing repetitive code:
model = (
ModelBuilder(name="SLIR with Deaths", version="1.0")
.add_bin(id="S", name="Susceptible")
.add_bin(id="L", name="Latent")
.add_bin(id="I", name="Infected")
.add_bin(id="R", name="Recovered")
.add_parameter(id="beta", value=0.3, unit="1/day")
.add_parameter(id="gamma", value=0.2, unit="1/day")
.add_parameter(id="delta", value=0.1, unit="1/day")
.add_parameter(id="d", value=0.01, unit="1/day") # Death rate
.add_transition(
id="infection",
source=["S"],
target=["L"],
rate="beta * S * I / N"
)
.add_transition(
id="progression",
source=["L"],
target=["I"],
rate="gamma * L"
)
.add_transition(
id="recovery",
source=["I"],
target=["R"],
rate="delta * I"
)
# Single transition automatically expands to 4 separate death transitions
.add_transition(
id="death",
source=["S", "L", "I", "R"],
target=[],
rate="d * $compartment" # Expands to: d*S, d*L, d*I, d*R
)
.set_initial_conditions(
population_size=1000,
bin_fractions=[
{"bin": "S", "fraction": 0.99},
{"bin": "L", "fraction": 0.005},
{"bin": "I", "fraction": 0.005},
{"bin": "R", "fraction": 0.0}
]
)
.build(typology="DifferenceEquations")
)
The $compartment placeholder:
- Automatically expands to multiple transitions (one per source compartment)
- Replaces
$compartmentwith the actual compartment name in the rate formula - Works with stratified rates for age-structured or location-based models
- Reduces code duplication and improves maintainability
Example with stratified rates:
.add_transition(
id="death",
source=["S", "I", "R"],
target=[],
rate="d_base * $compartment", # Fallback rate
stratified_rates=[
{
"conditions": [{"stratification": "age", "category": "young"}],
"rate": "d_young * $compartment" # Lower death rate for young
},
{
"conditions": [{"stratification": "age", "category": "old"}],
"rate": "d_old * $compartment" # Higher death rate for old
}
]
)
With Unit Checking
Add units to parameters and bins for automatic dimensional validation and annotated equation display:
model = (
ModelBuilder(name="SIR with Units", version="1.0", bin_unit="person")
.add_bin(id="S", name="Susceptible")
.add_bin(id="I", name="Infected")
.add_bin(id="R", name="Recovered")
.add_parameter(id="beta", value=0.5, unit="1/day") # Rate with units
.add_parameter(id="gamma", value=0.1, unit="1/day")
.add_transition(
id="infection",
source=["S"],
target=["I"],
rate="beta * S * I / N"
)
.add_transition(
id="recovery",
source=["I"],
target=["R"],
rate="gamma * I"
)
.set_initial_conditions(
population_size=1000,
bin_fractions=[
{"bin": "S", "fraction": 0.99},
{"bin": "I", "fraction": 0.01},
{"bin": "R", "fraction": 0.0}
]
)
.build(typology="DifferenceEquations")
)
# Validate dimensional consistency
model.check_unit_consistency() # Ensures all equations have correct units
# Print equations with unit annotations
model.print_equations()
# Output shows:
# S -> I: beta(1/day) * S(person) * I(person) / N(person) [person/day]
# I -> R: gamma(1/day) * I(person) [person/day]
# Export equations in LaTeX format for publications
model.print_equations(format="latex")
# Output: \[\frac{dS}{dt} = - (\beta \cdot S \cdot I / N)\]
Note: Units must be defined for ALL parameters and bins, or for NONE. Partial unit definitions will raise a ValueError to prevent inconsistent models.
Model Calibration
Fit model parameters to observed data using optimization algorithms. Parameters to be calibrated should be set to None:
from commol import (
ModelBuilder,
Simulation,
Calibrator,
CalibrationProblem,
CalibrationParameter,
ObservedDataPoint,
ParticleSwarmConfig,
)
# Build model with unknown parameters
model = (
ModelBuilder(name="SIR Model", version="1.0")
.add_bin(id="S", name="Susceptible")
.add_bin(id="I", name="Infected")
.add_bin(id="R", name="Recovered")
.add_parameter(id="beta", value=None) # To be calibrated
.add_parameter(id="gamma", value=None) # To be calibrated
.add_transition(
id="infection",
source=["S"],
target=["I"],
rate="beta * S * I / N"
)
.add_transition(
id="recovery",
source=["I"],
target=["R"],
rate="gamma * I"
)
.set_initial_conditions(
population_size=1000,
bin_fractions=[
{"bin": "S", "fraction": 0.99},
{"bin": "I", "fraction": 0.01},
{"bin": "R", "fraction": 0.0}
]
)
.build(typology="DifferenceEquations")
)
# Define observed data from real outbreak
observed_data = [
ObservedDataPoint(step=10, compartment="I", value=45.2),
ObservedDataPoint(step=20, compartment="I", value=78.5),
ObservedDataPoint(step=30, compartment="I", value=62.3),
]
# Simulation can be created with None values for calibration
simulation = Simulation(model)
# Specify parameters to calibrate with bounds and initial guesses
parameters = [
CalibrationParameter(
id="beta",
parameter_type="parameter",
min_bound=0.0,
max_bound=1.0,
initial_guess=0.3 # Starting point
),
CalibrationParameter(
id="gamma",
parameter_type="parameter",
min_bound=0.0,
max_bound=1.0,
),
]
# Configure optimization algorithm (config type determines the algorithm)
pso_config = ParticleSwarmConfig(
num_particles=40,
max_iterations=300,
verbose=True
)
# Configure calibration problem
problem = CalibrationProblem(
observed_data=observed_data,
parameters=parameters,
loss_function="sse",
optimization_config=pso_config, # ParticleSwarmConfig or NelderMeadConfig
)
# Run calibration
calibrator = Calibrator(simulation, problem)
result = calibrator.run()
print(f"Calibrated beta: {result.best_parameters['beta']:.4f}")
print(f"Calibrated gamma: {result.best_parameters['gamma']:.4f}")
# Update model with calibrated parameters
model.update_parameters(result.best_parameters)
# Create new simulation with calibrated model
calibrated_simulation = Simulation(model)
calibrated_results = calibrated_simulation.run(num_steps=100)
Calibrating with Scale Parameters:
When observed data is underreported, use scale parameters to estimate the reporting rate:
# Reported cases (potentially underreported)
reported_cases = [10, 15, 25, 40, 60, 75, 85, 70, 50, 30]
# Link observed data to scale parameter
observed_data = [
ObservedDataPoint(
step=idx,
compartment="I",
value=cases,
scale_id="reporting_rate" # Links to scale parameter
)
for idx, cases in enumerate(reported_cases)
]
parameters = [
CalibrationParameter(
id="beta",
parameter_type="parameter",
min_bound=0.1,
max_bound=1.0
),
CalibrationParameter(
id="gamma",
parameter_type="parameter",
min_bound=0.05,
max_bound=0.5
),
CalibrationParameter(
id="reporting_rate",
parameter_type="scale",
min_bound=0.01,
max_bound=1.0
),
]
# Run calibration
result = calibrator.run()
# Separate parameters by type
scale_values = {
param.id: result.best_parameters[param.id]
for param in problem.parameters
if param.parameter_type == "scale"
}
print(f"Calibrated reporting rate: {scale_values['reporting_rate']:.2%}")
# Visualize with scale_values for correct display
plotter.plot_series(observed_data=observed_data, scale_values=scale_values)
Constraining Parameters:
Apply constraints to enforce biological knowledge during calibration.
from commol import CalibrationConstraint
# Add constraint: beta/gamma <= 5 (written as 5 - beta/gamma >= 0)
constraints = [
CalibrationConstraint(
id="r0_bound",
expression="5.0 - beta/gamma",
description="R0 <= 5",
)
]
problem = CalibrationProblem(
observed_data=observed_data,
parameters=parameters,
constraints=constraints, # Include constraints
loss_function="sse",
optimization_config=pso_config,
)
result = calibrator.run()
Probabilistic Calibration:
For uncertainty quantification, use probabilistic calibration to get an ensemble of parameter sets:
from commol import ProbabilisticCalibrationConfig
# Configure probabilistic calibration
prob_config = ProbabilisticCalibrationConfig(
n_runs=20, # Number of calibration runs
confidence_level=0.95
)
problem = CalibrationProblem(
observed_data=observed_data,
parameters=parameters,
loss_function="sse",
optimization_config=pso_config,
probabilistic_config=prob_config, # Enable probabilistic mode
)
# Run probabilistic calibration
calibrator = Calibrator(simulation, problem)
prob_result = calibrator.run_probabilistic()
Documentation
- Installation Guide - Setup and installation
- Quick Start - Build your first model
- User Guide - Core concepts and tutorials
- Model Calibration - Parameter fitting and optimization
- API Reference - Complete API documentation
- Examples - SIR, SEIR, and advanced models
Development
For contributors and developers:
- Development Workflow - Setup, branching, CI/CD
- Contributing Guidelines - How to contribute
- Release Process - Version management
Local Development
# Clone repository
git clone https://github.com/MUNQU/commol.git
cd commol
# Create and activate virtual environment
python -m venv venv
source venv/bin/activate # On Linux/macOS
venv\Scripts\activate # On Windows
# Install Python dependencies
cd py-commol
pip install -e ".[dev,docs]"
# Build Rust workspace
cd ..
cargo build --workspace
# Build Python extension (with virtual environment activated)
cd py-commol
maturin develop --release
# Run tests
pytest
cd ..
cargo test --workspace
# Build documentation locally
cd py-commol
mkdocs serve
⚠️ Path Requirements: Ensure the project path contains no tildes (
~) or spaces. Maturin may fail otherwise.💡 Tip: Make sure your virtual environment is activated before running
maturin develop.
License
Commol is licensed under the MIT License. See LICENSE for details.
Authors
- Rafael J. Villanueva Micó - rjvillan@imm.upv.es
- Carlos Andreu Vilarroig - caranvi1@upv.es
- David Martínez Rodríguez - damarro3@upv.es
Citation
If you use Commol in your research, please cite:
@software{commol2025,
title = {Commol: A High-Performance Compartment Modelling Library},
author = {
Villanueva Micó, Rafael J.
and Andreu Vilarroig, Carlos
and Martínez Rodríguez, David
},
year = {2025},
url = {https://github.com/MUNQU/commol}
}
Support
- Documentation: https://munqu.github.io/commol
- Issue Tracker: https://github.com/MUNQU/commol/issues
- Discussions: https://github.com/MUNQU/commol/discussions
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file commol-0.1.0b3.tar.gz.
File metadata
- Download URL: commol-0.1.0b3.tar.gz
- Upload date:
- Size: 371.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
672eefc5d96f003fa11064758399f9cafdd6c3f646ffe31b8613943169ab3433
|
|
| MD5 |
e85e3acc0cee77b9cf048edf5e84236a
|
|
| BLAKE2b-256 |
13e0757b76199d2c9521782dea85e02abbf1bd6484884e69462c0055acb4ff8f
|
Provenance
The following attestation bundles were made for commol-0.1.0b3.tar.gz:
Publisher:
release.yaml on MUNQU/commol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
commol-0.1.0b3.tar.gz -
Subject digest:
672eefc5d96f003fa11064758399f9cafdd6c3f646ffe31b8613943169ab3433 - Sigstore transparency entry: 846055103
- Sigstore integration time:
-
Permalink:
MUNQU/commol@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/MUNQU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Trigger Event:
release
-
Statement type:
File details
Details for the file commol-0.1.0b3-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: commol-0.1.0b3-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 2.3 MB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ee225680d33e80236fad5b76440d8295caebcb0e8f46c2260287e7497120ebe
|
|
| MD5 |
f551b06fbc5daa44c657d57ecd0a7d52
|
|
| BLAKE2b-256 |
e1cb8564626ec7ae693437002f31ed5830101554af45a92c0464f4d64530ce7e
|
Provenance
The following attestation bundles were made for commol-0.1.0b3-cp314-cp314-win_amd64.whl:
Publisher:
release.yaml on MUNQU/commol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
commol-0.1.0b3-cp314-cp314-win_amd64.whl -
Subject digest:
7ee225680d33e80236fad5b76440d8295caebcb0e8f46c2260287e7497120ebe - Sigstore transparency entry: 846055116
- Sigstore integration time:
-
Permalink:
MUNQU/commol@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/MUNQU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Trigger Event:
release
-
Statement type:
File details
Details for the file commol-0.1.0b3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: commol-0.1.0b3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.8 MB
- Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8b17700530e8be284f612a0e16af6b1bbc4cc80c6d1f9fa0cdebede07b12cc9
|
|
| MD5 |
dce04958af09b87ab8ad64319d13ffc1
|
|
| BLAKE2b-256 |
7eb5bab28e135532dae8386ed86fd3fcd61d623d341f4c93f6ddaab2538e991d
|
Provenance
The following attestation bundles were made for commol-0.1.0b3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yaml on MUNQU/commol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
commol-0.1.0b3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
c8b17700530e8be284f612a0e16af6b1bbc4cc80c6d1f9fa0cdebede07b12cc9 - Sigstore transparency entry: 846055125
- Sigstore integration time:
-
Permalink:
MUNQU/commol@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/MUNQU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Trigger Event:
release
-
Statement type:
File details
Details for the file commol-0.1.0b3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: commol-0.1.0b3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 2.3 MB
- Tags: CPython 3.14, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e308ec39cd1a72782ed5b05574dbe679602b7501bfaa188146fca3bbae3c86e2
|
|
| MD5 |
a60c62d05c8f7fe9c783b681421cca9e
|
|
| BLAKE2b-256 |
2df4451970acbdddf10c5410f5d2b0a5e394140b6ab3bd7e98c25a504384968e
|
Provenance
The following attestation bundles were made for commol-0.1.0b3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yaml on MUNQU/commol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
commol-0.1.0b3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
e308ec39cd1a72782ed5b05574dbe679602b7501bfaa188146fca3bbae3c86e2 - Sigstore transparency entry: 846055108
- Sigstore integration time:
-
Permalink:
MUNQU/commol@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/MUNQU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Trigger Event:
release
-
Statement type:
File details
Details for the file commol-0.1.0b3-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: commol-0.1.0b3-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8beff328830ed4c9153888e7776ceebb41deddba06139796f5c3c651b029c3b
|
|
| MD5 |
0f577853d91a4f2a68e376993bdc7032
|
|
| BLAKE2b-256 |
257b719e896fc8a36d57ad03ab8f4e35a8b03ad04cd93a940196d1baf349cae3
|
Provenance
The following attestation bundles were made for commol-0.1.0b3-cp314-cp314-macosx_11_0_arm64.whl:
Publisher:
release.yaml on MUNQU/commol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
commol-0.1.0b3-cp314-cp314-macosx_11_0_arm64.whl -
Subject digest:
b8beff328830ed4c9153888e7776ceebb41deddba06139796f5c3c651b029c3b - Sigstore transparency entry: 846055138
- Sigstore integration time:
-
Permalink:
MUNQU/commol@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/MUNQU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Trigger Event:
release
-
Statement type:
File details
Details for the file commol-0.1.0b3-cp314-cp314-macosx_10_12_x86_64.whl.
File metadata
- Download URL: commol-0.1.0b3-cp314-cp314-macosx_10_12_x86_64.whl
- Upload date:
- Size: 2.7 MB
- Tags: CPython 3.14, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8da3e9b7e7da9c11abb74433b9aa1a57425e743e511a3bfe807eb28d93f230a4
|
|
| MD5 |
54fb21f9151f645bb8a33f65f1903762
|
|
| BLAKE2b-256 |
a0370bd9a8a53be8e8de93b36fb67403a524609581b7ce2ba16eca05450b3deb
|
Provenance
The following attestation bundles were made for commol-0.1.0b3-cp314-cp314-macosx_10_12_x86_64.whl:
Publisher:
release.yaml on MUNQU/commol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
commol-0.1.0b3-cp314-cp314-macosx_10_12_x86_64.whl -
Subject digest:
8da3e9b7e7da9c11abb74433b9aa1a57425e743e511a3bfe807eb28d93f230a4 - Sigstore transparency entry: 846055166
- Sigstore integration time:
-
Permalink:
MUNQU/commol@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/MUNQU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Trigger Event:
release
-
Statement type:
File details
Details for the file commol-0.1.0b3-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: commol-0.1.0b3-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 2.3 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ed4f2a01483027dd6d58d9343a27069823907aac46baffdd9ed8cecb94f9c43
|
|
| MD5 |
5e353f06600167b69a269bcb0dba21e5
|
|
| BLAKE2b-256 |
4abaf2bcdcb760359f6ba397bc4d77cf93ee50f473d8f13c22b8d604f8abe3f5
|
Provenance
The following attestation bundles were made for commol-0.1.0b3-cp313-cp313-win_amd64.whl:
Publisher:
release.yaml on MUNQU/commol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
commol-0.1.0b3-cp313-cp313-win_amd64.whl -
Subject digest:
6ed4f2a01483027dd6d58d9343a27069823907aac46baffdd9ed8cecb94f9c43 - Sigstore transparency entry: 846055146
- Sigstore integration time:
-
Permalink:
MUNQU/commol@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/MUNQU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Trigger Event:
release
-
Statement type:
File details
Details for the file commol-0.1.0b3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: commol-0.1.0b3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.8 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
448328398178c8b95f3d24ba4ffd1b561cb20128185f9bd8aedcd08b0d8ccf9f
|
|
| MD5 |
f52510017759b53c8fbaf85cf09bd621
|
|
| BLAKE2b-256 |
2771fffe4fd0af1cbc4df42bf1b26a69aeae0eb3d60b753eff933a0c1b60063d
|
Provenance
The following attestation bundles were made for commol-0.1.0b3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yaml on MUNQU/commol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
commol-0.1.0b3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
448328398178c8b95f3d24ba4ffd1b561cb20128185f9bd8aedcd08b0d8ccf9f - Sigstore transparency entry: 846055161
- Sigstore integration time:
-
Permalink:
MUNQU/commol@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/MUNQU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Trigger Event:
release
-
Statement type:
File details
Details for the file commol-0.1.0b3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: commol-0.1.0b3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 2.3 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
401c03b5df3719026749a4a7838935bdf6dd8df1f0646fa24210c6787aaeca38
|
|
| MD5 |
b5be34b91ad787cf19604548b444331d
|
|
| BLAKE2b-256 |
07178c00ae6151937c1df72920982a59dc315bf15759b602cc800b61936c23d6
|
Provenance
The following attestation bundles were made for commol-0.1.0b3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yaml on MUNQU/commol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
commol-0.1.0b3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
401c03b5df3719026749a4a7838935bdf6dd8df1f0646fa24210c6787aaeca38 - Sigstore transparency entry: 846055122
- Sigstore integration time:
-
Permalink:
MUNQU/commol@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/MUNQU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Trigger Event:
release
-
Statement type:
File details
Details for the file commol-0.1.0b3-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: commol-0.1.0b3-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c726cc0a53242b238a1b8805bd4c0ae18049127339ec0737cefdf2d5271664da
|
|
| MD5 |
e5230b88ecb33f02ad895cd8db2752d1
|
|
| BLAKE2b-256 |
bc175e7bb73f43719a2a02ef911f79a7720a026a77ace51653c876d89852e24c
|
Provenance
The following attestation bundles were made for commol-0.1.0b3-cp313-cp313-macosx_11_0_arm64.whl:
Publisher:
release.yaml on MUNQU/commol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
commol-0.1.0b3-cp313-cp313-macosx_11_0_arm64.whl -
Subject digest:
c726cc0a53242b238a1b8805bd4c0ae18049127339ec0737cefdf2d5271664da - Sigstore transparency entry: 846055118
- Sigstore integration time:
-
Permalink:
MUNQU/commol@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/MUNQU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Trigger Event:
release
-
Statement type:
File details
Details for the file commol-0.1.0b3-cp313-cp313-macosx_10_12_x86_64.whl.
File metadata
- Download URL: commol-0.1.0b3-cp313-cp313-macosx_10_12_x86_64.whl
- Upload date:
- Size: 2.7 MB
- Tags: CPython 3.13, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27496391afe2161b03606fd3c09ae91bc2dc6b7ed6956e5813f8ad3569cfb4ea
|
|
| MD5 |
1f6c1ff3284a02ca24b7f66d273efc67
|
|
| BLAKE2b-256 |
fc40dcdaf643614dfccec2ab320214abafb67385125fc773c6abdc4649c7a815
|
Provenance
The following attestation bundles were made for commol-0.1.0b3-cp313-cp313-macosx_10_12_x86_64.whl:
Publisher:
release.yaml on MUNQU/commol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
commol-0.1.0b3-cp313-cp313-macosx_10_12_x86_64.whl -
Subject digest:
27496391afe2161b03606fd3c09ae91bc2dc6b7ed6956e5813f8ad3569cfb4ea - Sigstore transparency entry: 846055142
- Sigstore integration time:
-
Permalink:
MUNQU/commol@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/MUNQU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Trigger Event:
release
-
Statement type:
File details
Details for the file commol-0.1.0b3-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: commol-0.1.0b3-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 2.3 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ad0056afed6bbe9061ba1f7fc74597935effb6cbd7aab8d4ff62b159119c5b0
|
|
| MD5 |
fb4d1ba63f49eb42eda4e5a38f4c90a0
|
|
| BLAKE2b-256 |
33e466e6dff48da82618d531d1540993434bc54ac5e9ae6c775e64149400499a
|
Provenance
The following attestation bundles were made for commol-0.1.0b3-cp312-cp312-win_amd64.whl:
Publisher:
release.yaml on MUNQU/commol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
commol-0.1.0b3-cp312-cp312-win_amd64.whl -
Subject digest:
1ad0056afed6bbe9061ba1f7fc74597935effb6cbd7aab8d4ff62b159119c5b0 - Sigstore transparency entry: 846055159
- Sigstore integration time:
-
Permalink:
MUNQU/commol@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/MUNQU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Trigger Event:
release
-
Statement type:
File details
Details for the file commol-0.1.0b3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: commol-0.1.0b3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.8 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
317c674f10341292ef4ad71bf1a815d0a9071b1fc5b7cdc8e7d04acc831cb3cb
|
|
| MD5 |
ca2e0047ff446454308006d6c43ba84f
|
|
| BLAKE2b-256 |
6ce35ea8496dc28c14c8c7e54cc1010ca9dba585a6d754ea3a6819dad1fb7ea5
|
Provenance
The following attestation bundles were made for commol-0.1.0b3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yaml on MUNQU/commol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
commol-0.1.0b3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
317c674f10341292ef4ad71bf1a815d0a9071b1fc5b7cdc8e7d04acc831cb3cb - Sigstore transparency entry: 846055132
- Sigstore integration time:
-
Permalink:
MUNQU/commol@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/MUNQU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Trigger Event:
release
-
Statement type:
File details
Details for the file commol-0.1.0b3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: commol-0.1.0b3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 2.3 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6de7e8a6273b73d69080b852b498e4a4641ae64c7176e521d8a478f10584d189
|
|
| MD5 |
4fba41986ba6b6d8f6012233afcfd5bb
|
|
| BLAKE2b-256 |
5630083aeb6c91c94757bf4dfdab2c4208ee1e0990d0dd11af5a6c7b5b7f3b55
|
Provenance
The following attestation bundles were made for commol-0.1.0b3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yaml on MUNQU/commol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
commol-0.1.0b3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
6de7e8a6273b73d69080b852b498e4a4641ae64c7176e521d8a478f10584d189 - Sigstore transparency entry: 846055134
- Sigstore integration time:
-
Permalink:
MUNQU/commol@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/MUNQU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Trigger Event:
release
-
Statement type:
File details
Details for the file commol-0.1.0b3-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: commol-0.1.0b3-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b943f764d32a11e30fedee160ab803682b851b6838cb774a63235b1f54d7ea47
|
|
| MD5 |
81f60e4d4f36aace70d88bfd91a50905
|
|
| BLAKE2b-256 |
011f4a03bdc46a417e2e62352f38f32e3cbeab7cb08d86957b5ddf55f764e95b
|
Provenance
The following attestation bundles were made for commol-0.1.0b3-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
release.yaml on MUNQU/commol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
commol-0.1.0b3-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
b943f764d32a11e30fedee160ab803682b851b6838cb774a63235b1f54d7ea47 - Sigstore transparency entry: 846055152
- Sigstore integration time:
-
Permalink:
MUNQU/commol@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/MUNQU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Trigger Event:
release
-
Statement type:
File details
Details for the file commol-0.1.0b3-cp312-cp312-macosx_10_12_x86_64.whl.
File metadata
- Download URL: commol-0.1.0b3-cp312-cp312-macosx_10_12_x86_64.whl
- Upload date:
- Size: 2.7 MB
- Tags: CPython 3.12, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69387357775c149727e39e5aadb35a65267582c238731d44f6f08e77b17bff4c
|
|
| MD5 |
9fc8e42ddf895bc53a42843991dc39d9
|
|
| BLAKE2b-256 |
e5b3d6b92c43ad566e0aa0475eea92117c464e956c0e281a80ba13d73b61c7bc
|
Provenance
The following attestation bundles were made for commol-0.1.0b3-cp312-cp312-macosx_10_12_x86_64.whl:
Publisher:
release.yaml on MUNQU/commol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
commol-0.1.0b3-cp312-cp312-macosx_10_12_x86_64.whl -
Subject digest:
69387357775c149727e39e5aadb35a65267582c238731d44f6f08e77b17bff4c - Sigstore transparency entry: 846055111
- Sigstore integration time:
-
Permalink:
MUNQU/commol@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/MUNQU
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@a1a74af656182951e5b6b60eff0bff28e3388e26 -
Trigger Event:
release
-
Statement type: