Python source bundler that produces a single .py file from multi-module projects
Project description
Cribo: Python Source Bundler
Cribo is a Rust-based CLI tool that, via fast, heuristically proven bundling, consolidates a scattered Python codebaseโfrom a single entry point or monorepoโinto one idiomatic .py file. This not only streamlines deployment in environments like PySpark, AWS Lambda, and notebooks but also makes ingesting Python codebases into AI models easier and more cost-effective while preserving full functional insights.
What is "Cribo"?
Cribo is named after the Mussurana snake (Clelia clelia), nicknamed "Cribo" in Latin America. Just like the real Cribo specializes in hunting and neutralizing venomous snakes (with a diet that's 70-80% other snakes!), our tool wrangles Python dependencies and circular imports with ease. Brazilian farmers even keep Cribos around for natural pest controlโthink of this as the Python ecosystem's answer to dependency chaos. In short:Cribo eats tricky imports for breakfast, so your code doesn't have to!
Features
- ๐ฆ Rust-based CLI based on Ruff's Python AST parser
- ๐ Can be installed via
pip install criboornpm install cribo - ๐ Contemporary minds can also use
uvx criboorbunx cribo - ๐ฒ Tree-shaking (enabled by default) to inline only the modules that are actually used
- ๐ Circular dependency resolution using Tarjan's strongly connected components (SCC) analysis and function-level lazy import transformations, with detailed diagnostics
- ๐งน Unused import trimming to clean up Python files standalone
- ๐ฆ Requirements generation with optional
requirements.txtoutput - ๐ง Configurable import classification and source directories
- ๐ Fast and memory-efficient
- ๐ Performance tracking with built-in benchmarking
Installation
๐ Supply Chain Security: All npm and pypi packages include provenance attestations for enhanced security and verification.
From PyPI (Python Package)
pip install cribo
From npm (Node.js CLI)
# Global installation
npm install -g cribo
# One-time use
bunx cribo --help
Binary Downloads
Download pre-built binaries for your platform from the latest release:
- Linux x86_64:
cribo_<version>_linux_x86_64.tar.gz - Linux ARM64:
cribo_<version>_linux_arm64.tar.gz - macOS x86_64:
cribo_<version>_darwin_x86_64.tar.gz - macOS ARM64:
cribo_<version>_darwin_arm64.tar.gz - Windows x86_64:
cribo_<version>_windows_x86_64.zip - Windows ARM64:
cribo_<version>_windows_arm64.zip
Each binary includes a SHA256 checksum file for verification.
Package Manager Installation
Aqua
If you use Aqua, add to your aqua.yaml:
registries:
- type: standard
ref: latest
packages:
- name: ophidiarium/cribo@latest
Then run:
aqua install
UBI (Universal Binary Installer)
Using UBI:
# Install latest version
ubi --project ophidiarium/cribo
# Install specific version
ubi --project ophidiarium/cribo --tag v0.4.1
# Install to specific directory
ubi --project ophidiarium/cribo --in /usr/local/bin
From Source
git clone https://github.com/ophidiarium/cribo.git
cd cribo
cargo build --release
Quick Start
Command Line Usage
# Basic bundling
cribo --entry src/main.py --output bundle.py
# Bundle a package directory (looks for __main__.py or __init__.py)
cribo --entry mypackage/ --output bundle.py
# Generate requirements.txt
cribo --entry src/main.py --output bundle.py --emit-requirements
# Verbose output (can be repeated for more detail: -v, -vv, -vvv)
cribo --entry src/main.py --output bundle.py -v
cribo --entry src/main.py --output bundle.py -vv # debug level
cribo --entry src/main.py --output bundle.py -vvv # trace level
# Custom config file
cribo --entry src/main.py --output bundle.py --config my-cribo.toml
CLI Options
-e, --entry <PATH>: Entry point Python script or package directory (required). When pointing to a directory, Cribo will look for__main__.pyfirst, then__init__.py-o, --output <PATH>: Output bundled Python file (required)-v, --verbose...: Increase verbosity level. Can be repeated for more detail:- No flag: warnings and errors only
-v: informational messages-vv: debug messages-vvvor more: trace messages
-c, --config <PATH>: Custom configuration file path--emit-requirements: Generate requirements.txt with third-party dependencies--no-tree-shake: Disable tree-shaking optimization (tree-shaking is enabled by default)--target-version <VERSION>: Target Python version (e.g., py38, py39, py310, py311, py312, py313)-h, --help: Print help information-V, --version: Print version information
The verbose flag is particularly useful for debugging bundling issues. Each level provides progressively more detail:
# Default: only warnings and errors
cribo --entry main.py --output bundle.py
# Info level: shows progress messages
cribo --entry main.py --output bundle.py -v
# Debug level: shows detailed processing steps
cribo --entry main.py --output bundle.py -vv
# Trace level: shows all internal operations
cribo --entry main.py --output bundle.py -vvv
The verbose levels map directly to Rust's log levels and can also be controlled via the RUST_LOG environment variable for more fine-grained control:
# Equivalent to -vv
RUST_LOG=debug cribo --entry main.py --output bundle.py
# Module-specific logging
RUST_LOG=cribo::bundler=trace,cribo::resolver=debug cribo --entry main.py --output bundle.py
Tree-Shaking
Tree-shaking is enabled by default to reduce bundle size by removing unused code:
# Bundle with tree-shaking (default behavior)
cribo --entry main.py --output bundle.py
# Disable tree-shaking to include all code
cribo --entry main.py --output bundle.py --no-tree-shake
How it works:
- Analyzes your code starting from the entry point
- Tracks which functions, classes, and variables are actually used
- Removes unused symbols while preserving functionality
- Respects
__all__declarations and module side effects - Preserves all symbols from directly imported modules (
import module)
When to disable tree-shaking:
- If you encounter undefined symbol errors with complex circular dependencies
- When you need to preserve all code for dynamic imports or reflection
- For debugging purposes to see the complete bundled output
Configuration
Cribo supports hierarchical configuration with the following precedence (highest to lowest):
- CLI-provided config (
--configflag) - Environment variables (with
CRIBO_prefix) - Project config (
cribo.tomlin current directory) - User config (
~/.config/cribo/cribo.toml) - System config (
/etc/cribo/cribo.tomlon Unix,%SYSTEMDRIVE%\ProgramData\cribo\cribo.tomlon Windows) - Default values
Configuration File Format
Create a cribo.toml file:
# Source directories to scan for first-party modules
src = ["src", ".", "lib"]
# Known first-party module names
known_first_party = [
"my_internal_package",
]
# Known third-party module names
known_third_party = [
"requests",
"numpy",
"pandas",
]
# Whether to preserve comments in the bundled output
preserve_comments = true
# Whether to preserve type hints in the bundled output
preserve_type_hints = true
# Target Python version for standard library checks
# Supported: "py38", "py39", "py310", "py311", "py312", "py313"
target-version = "py310"
Environment Variables
All configuration options can be overridden using environment variables with the CRIBO_ prefix:
# Comma-separated lists
export CRIBO_SRC="src,lib,custom_dir"
export CRIBO_KNOWN_FIRST_PARTY="mypackage,myotherpackage"
export CRIBO_KNOWN_THIRD_PARTY="requests,numpy"
# Boolean values (true/false, 1/0, yes/no, on/off)
export CRIBO_PRESERVE_COMMENTS="false"
export CRIBO_PRESERVE_TYPE_HINTS="true"
# String values
export CRIBO_TARGET_VERSION="py312"
Configuration Locations
- Project:
./cribo.toml - User:
- Linux/macOS:
~/.config/cribo/cribo.toml - Windows:
%APPDATA%\cribo\cribo.toml
- Linux/macOS:
- System:
- Linux/macOS:
/etc/cribo/cribo.tomlor/etc/xdg/cribo/cribo.toml - Windows:
%SYSTEMDRIVE%\ProgramData\cribo\cribo.toml
- Linux/macOS:
How It Works
- Module Discovery: Scans configured source directories to discover first-party Python modules
- Import Classification: Classifies imports as first-party, third-party, or standard library
- Dependency Graph: Builds a dependency graph and performs topological sorting
- Circular Dependency Resolution: Detects and intelligently resolves function-level circular imports
- Tree Shaking: Removes unused code by analyzing which symbols are actually used (enabled by default)
- Code Generation: Generates a single Python file with proper module separation
- Requirements: Optionally generates
requirements.txtwith third-party dependencies
Output Structure
The bundled output follows this structure:
#!/usr/bin/env python3
# Generated by Cribo - Python Source Bundler
# Preserved imports (stdlib and third-party)
import os
import sys
import requests
# โ Module: utils/helpers.py โ
def greet(name: str) -> str:
return f"Hello, {name}!"
# โ Module: models/user.py โ
class User:
def **init**(self, name: str):
self.name = name
# โ Entry Module: main.py โ
from utils.helpers import greet
from models.user import User
def main():
user = User("Alice")
print(greet(user.name))
if **name** == "**main**":
main()
Use Cases
PySpark Jobs
Deploy complex PySpark applications as a single file:
cribo --entry spark_job.py --output dist/spark_job_bundle.py --emit-requirements
spark-submit dist/spark_job_bundle.py
AWS Lambda
Package Python Lambda functions with all dependencies:
cribo --entry lambda_handler.py --output deployment/handler.py
# Upload handler.py + requirements.txt to Lambda
Special Considerations
Pydantic Compatibility
Cribo preserves class identity and module structure to ensure Pydantic models work correctly:
# Original: models/user.py
class User(BaseModel):
name: str
# Bundled output preserves **module** and class structure
Pandera Decorators
Function and class decorators are preserved with their original module context:
# Original: validators/schemas.py
@pa.check_types
def validate_dataframe(df: DataFrame[UserSchema]) -> DataFrame[UserSchema]:
return df
# Bundled output maintains decorator functionality
Circular Dependencies
Cribo intelligently handles circular dependencies with advanced detection and resolution:
Resolvable Cycles (Function-Level)
Function-level circular imports are automatically resolved and bundled successfully:
# module_a.py
from module_b import process_b
def process_a(): return process_b() + "->A"
# module_b.py
from module_a import get_value_a
def process_b(): return f"B(using_{get_value_a()})"
Result: โ Bundles successfully with warning log
Unresolvable Cycles (Module Constants)
Temporal paradox patterns are detected and reported with detailed diagnostics:
# constants_a.py
from constants_b import B_VALUE
A_VALUE = B_VALUE + 1 # โ Unresolvable
# constants_b.py
from constants_a import A_VALUE
B_VALUE = A_VALUE * 2 # โ Temporal paradox
Result: โ Fails with detailed error message and resolution suggestions:
Unresolvable circular dependencies detected:
Cycle 1: constants_b โ constants_a
Type: ModuleConstants
Reason: Module-level constant dependencies create temporal paradox - cannot be resolved through bundling
Comparison with Other Tools
| Tool | Language | Tree Shaking | Import Cleanup | Circular Deps | PySpark Ready | Type Hints |
|---|---|---|---|---|---|---|
| Cribo | Rust | โ Default | โ | โ Smart Resolution | โ | โ |
| PyInstaller | Python | โ | โ | โ Fails | โ | โ |
| Nuitka | Python | โ | โ | โ Fails | โ | โ |
| Pex | Python | โ | โ | โ Fails | โ | โ |
Development
Building from Source
git clone https://github.com/ophidiarium/cribo.git
cd cribo
# Build Rust CLI
cargo build --release
# Build Python package
pip install maturin
maturin develop
# Run tests
cargo test
Performance Benchmarking
Cribo uses Bencher.dev for comprehensive performance tracking with statistical analysis and regression detection:
# Run all benchmarks
cargo bench
# Save a performance baseline
./scripts/bench.sh --save-baseline main
# Compare against baseline
./scripts/bench.sh --baseline main
# View detailed HTML report
./scripts/bench.sh --open
Key benchmarks:
- End-to-end bundling: Full project bundling performance (Criterion.rs)
- AST parsing: Python code parsing speed (Criterion.rs)
- Module resolution: Import resolution efficiency (Criterion.rs)
- CLI performance: Command-line interface speed (Hyperfine)
CI Integration:
- Automated PR comments with performance comparisons and visual charts
- Historical performance tracking with trend analysis
- Statistical significance testing to prevent false positives
- Dashboard available at bencher.dev/perf/cribo
See docs/benchmarking.md for detailed benchmarking guide.
Project Structure
cribo/
โโโ src/ # Rust source code
โ โโโ main.rs # CLI entry point
โ โโโ orchestrator.rs # Bundle orchestration and coordination
โ โโโ code_generator.rs # Python code generation (sys.modules approach)
โ โโโ resolver.rs # Import resolution and classification
โ โโโ cribo_graph.rs # Advanced dependency graph with item-level tracking
โ โโโ graph_builder.rs # AST to dependency graph bridge
โ โโโ tree_shaking.rs # Dead code elimination (enabled by default)
โ โโโ semantic_analysis.rs # Enhanced import and symbol analysis
โ โโโ ast_indexer.rs # Deterministic AST node indexing
โ โโโ unused_imports.rs # Legacy import cleanup
โ โโโ visitors/ # AST visitors for various analyses
โ โ โโโ import_discovery.rs
โ โ โโโ side_effect_detector.rs
โ โ โโโ no_ops_removal.rs
โ โโโ ...
โโโ python/cribo/ # Python package
โโโ tests/ # Test suites
โ โโโ fixtures/ # Test projects
โโโ docs/ # Documentation
โโโ Cargo.toml # Rust dependencies
Contributing
Development Setup
# Clone the repository
git clone https://github.com/ophidiarium/cribo.git
cd cribo
# Install Rust toolchain and components
rustup component add llvm-tools-preview
cargo install cargo-llvm-cov
# Build Rust CLI
cargo build --release
# Build Python package
pip install maturin
maturin develop
# Run tests
cargo test
Code Coverage
The project uses cargo-llvm-cov for code coverage analysis:
# Generate text coverage report (Istanbul-style)
cargo coverage-text
# Generate HTML coverage report and open in browser
cargo coverage
# Generate LCOV format for CI
cargo coverage-lcov
# Clean coverage data
cargo coverage-clean
Branch Coverage (Experimental):
# Requires nightly Rust for branch coverage
cargo +nightly coverage-branch
Coverage reports are automatically generated in CI and uploaded to Codecov. See docs/coverage.md for detailed coverage documentation.
Note: If you see zeros in the "Branch Coverage" column in HTML reports, this is expected with stable Rust. Branch coverage requires nightly Rust and is experimental.
Contributing Guidelines
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
License
This project uses a dual licensing approach:
- Source Code: Licensed under the MIT License
- Documentation: Licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0)
What this means
- For the source code: You can freely use, modify, and distribute the code for any purpose with minimal restrictions under the MIT license.
- For the documentation: You can share, adapt, and use the documentation for any purpose (including commercially) as long as you provide appropriate attribution under CC BY 4.0.
See the LICENSE file for the MIT license text and docs/LICENSE for the CC BY 4.0 license text.
Acknowledgments
- Ruff: Python AST parsing and import resolution logic inspiration
- Maturin: Python-Rust integration
For more examples and detailed documentation, visit our documentation site.
For detailed documentation on the unused import trimmer, see docs/unused_import_trimmer.md.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cribo-0.5.10.tar.gz.
File metadata
- Download URL: cribo-0.5.10.tar.gz
- Upload date:
- Size: 414.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
122ecc603780130196e40331a55818d0d7e252cfcd91844885b9757a7a04b05f
|
|
| MD5 |
94ae5ed6b2471bf64009f6770ae2d4c1
|
|
| BLAKE2b-256 |
e3fb2f25437b0c4910b769abc994656cd9c951761eb1ba8ef010ddb007528a47
|
Provenance
The following attestation bundles were made for cribo-0.5.10.tar.gz:
Publisher:
release.yml on ophidiarium/cribo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cribo-0.5.10.tar.gz -
Subject digest:
122ecc603780130196e40331a55818d0d7e252cfcd91844885b9757a7a04b05f - Sigstore transparency entry: 372067960
- Sigstore integration time:
-
Permalink:
ophidiarium/cribo@32134ce778f97c3eed8e68b57f7b82c528f07a15 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ophidiarium
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@32134ce778f97c3eed8e68b57f7b82c528f07a15 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file cribo-0.5.10-py3-none-win_arm64.whl.
File metadata
- Download URL: cribo-0.5.10-py3-none-win_arm64.whl
- Upload date:
- Size: 2.6 MB
- Tags: Python 3, Windows ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72e941dc694b1a24540331e903403145d7ff3d7f3dbb40bfc11c19379a2eee5e
|
|
| MD5 |
bdb5283b61751ef15863bd6e6dee159b
|
|
| BLAKE2b-256 |
9424536e3216f156e8c8d3110225c69f37d8d7bb695bb71c888e1bef6ec4ada4
|
Provenance
The following attestation bundles were made for cribo-0.5.10-py3-none-win_arm64.whl:
Publisher:
release.yml on ophidiarium/cribo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cribo-0.5.10-py3-none-win_arm64.whl -
Subject digest:
72e941dc694b1a24540331e903403145d7ff3d7f3dbb40bfc11c19379a2eee5e - Sigstore transparency entry: 372067973
- Sigstore integration time:
-
Permalink:
ophidiarium/cribo@32134ce778f97c3eed8e68b57f7b82c528f07a15 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ophidiarium
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@32134ce778f97c3eed8e68b57f7b82c528f07a15 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file cribo-0.5.10-py3-none-win_amd64.whl.
File metadata
- Download URL: cribo-0.5.10-py3-none-win_amd64.whl
- Upload date:
- Size: 2.7 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21f05188f9428e343ec4d53ef6ee4d8cf89393cd85a649cc0f1c7407ed4c9b6c
|
|
| MD5 |
4afe78837c77ea3c7cf3f972700e1f0d
|
|
| BLAKE2b-256 |
1b574eab1714f73d2a14c0a2c8ef311bdfbfd184352b12f0441930e5c94c6ef4
|
Provenance
The following attestation bundles were made for cribo-0.5.10-py3-none-win_amd64.whl:
Publisher:
release.yml on ophidiarium/cribo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cribo-0.5.10-py3-none-win_amd64.whl -
Subject digest:
21f05188f9428e343ec4d53ef6ee4d8cf89393cd85a649cc0f1c7407ed4c9b6c - Sigstore transparency entry: 372067981
- Sigstore integration time:
-
Permalink:
ophidiarium/cribo@32134ce778f97c3eed8e68b57f7b82c528f07a15 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ophidiarium
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@32134ce778f97c3eed8e68b57f7b82c528f07a15 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file cribo-0.5.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: cribo-0.5.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.9 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5503250e389bcd513bbf2266fce237746654f36386673a39ed027e060c37b8ae
|
|
| MD5 |
f2fb0178e54350fba68d278a129c5faf
|
|
| BLAKE2b-256 |
c5fb733866cf50e7abaa2624f127e5032d4ebf37db177d8293e0317d072b5ec6
|
Provenance
The following attestation bundles were made for cribo-0.5.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on ophidiarium/cribo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cribo-0.5.10-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl -
Subject digest:
5503250e389bcd513bbf2266fce237746654f36386673a39ed027e060c37b8ae - Sigstore transparency entry: 372068032
- Sigstore integration time:
-
Permalink:
ophidiarium/cribo@32134ce778f97c3eed8e68b57f7b82c528f07a15 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ophidiarium
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@32134ce778f97c3eed8e68b57f7b82c528f07a15 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file cribo-0.5.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: cribo-0.5.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 2.7 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e14e5c0e9540ade3ee066e40eda9f4297cdca04dfa61fe57f47ff1882a95251
|
|
| MD5 |
760a704e8e97c457d32c86acc1274a3d
|
|
| BLAKE2b-256 |
1e85a9c2e73c4ffb221e43f39ab219b7bc937e38b2d9d41060d22230e98033d0
|
Provenance
The following attestation bundles were made for cribo-0.5.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on ophidiarium/cribo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cribo-0.5.10-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl -
Subject digest:
8e14e5c0e9540ade3ee066e40eda9f4297cdca04dfa61fe57f47ff1882a95251 - Sigstore transparency entry: 372068010
- Sigstore integration time:
-
Permalink:
ophidiarium/cribo@32134ce778f97c3eed8e68b57f7b82c528f07a15 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ophidiarium
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@32134ce778f97c3eed8e68b57f7b82c528f07a15 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file cribo-0.5.10-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl.
File metadata
- Download URL: cribo-0.5.10-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
- Upload date:
- Size: 3.0 MB
- Tags: Python 3, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d71c1b7a20f889c79d28a5ea8233228fb7e7a1ed14301d119a2b36202a83196f
|
|
| MD5 |
cd097ec32027124e8e82c1a327e02c79
|
|
| BLAKE2b-256 |
75dbbce27dbe2ab6c11012850143c300d0adf955df12be9f2d02b7fdc9ecded9
|
Provenance
The following attestation bundles were made for cribo-0.5.10-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl:
Publisher:
release.yml on ophidiarium/cribo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cribo-0.5.10-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl -
Subject digest:
d71c1b7a20f889c79d28a5ea8233228fb7e7a1ed14301d119a2b36202a83196f - Sigstore transparency entry: 372068056
- Sigstore integration time:
-
Permalink:
ophidiarium/cribo@32134ce778f97c3eed8e68b57f7b82c528f07a15 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ophidiarium
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@32134ce778f97c3eed8e68b57f7b82c528f07a15 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file cribo-0.5.10-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: cribo-0.5.10-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 2.6 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19fc3b716724cdf41a40c0ab53889e0b12d586e93e94174f6d8f08f832c2272c
|
|
| MD5 |
eb3890e14ed6ae107977658fd423a5a3
|
|
| BLAKE2b-256 |
b115b1a7f87108c55e82fcfd11d284a0ab6f07f9b8aaa4a5073f3d67b05b53c7
|
Provenance
The following attestation bundles were made for cribo-0.5.10-py3-none-macosx_11_0_arm64.whl:
Publisher:
release.yml on ophidiarium/cribo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cribo-0.5.10-py3-none-macosx_11_0_arm64.whl -
Subject digest:
19fc3b716724cdf41a40c0ab53889e0b12d586e93e94174f6d8f08f832c2272c - Sigstore transparency entry: 372068068
- Sigstore integration time:
-
Permalink:
ophidiarium/cribo@32134ce778f97c3eed8e68b57f7b82c528f07a15 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ophidiarium
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@32134ce778f97c3eed8e68b57f7b82c528f07a15 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file cribo-0.5.10-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: cribo-0.5.10-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 2.8 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c901751397f29f14c92460ac87ad24082d1232a47964c08378a51de9b5699726
|
|
| MD5 |
a0eab860f85e747b32175e193fdcd6af
|
|
| BLAKE2b-256 |
1e8e459270992d635268fbc5bc514b9c6b48964754ccebff25a46ac75105f419
|
Provenance
The following attestation bundles were made for cribo-0.5.10-py3-none-macosx_10_12_x86_64.whl:
Publisher:
release.yml on ophidiarium/cribo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cribo-0.5.10-py3-none-macosx_10_12_x86_64.whl -
Subject digest:
c901751397f29f14c92460ac87ad24082d1232a47964c08378a51de9b5699726 - Sigstore transparency entry: 372067996
- Sigstore integration time:
-
Permalink:
ophidiarium/cribo@32134ce778f97c3eed8e68b57f7b82c528f07a15 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ophidiarium
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@32134ce778f97c3eed8e68b57f7b82c528f07a15 -
Trigger Event:
workflow_dispatch
-
Statement type: