Parse, store, validate, and emit Crystallographic Information Files (CIF)
Project description
cifflow
Parse, store, validate, and emit Crystallographic Information Files (CIF).
What it does
- Focused on multi-block powder CIF files, but generally applicable
- Constructs CIF files
- Parses CIF 1.1 and CIF 2.0 files, including all string types (triple-quoted, multiline text fields, embedded quotes) and save frames
- Constructs
CifFileobjects programmatically from Python values (CifWriter), and performs arbitrary edits: add/remove/rename tags, loops, blocks, and save frames - Populate default values as defined in the dictionary
- Loads DDLm dictionaries with full
_import.getresolution, producing a typed schema - Removes common parse-time artefacts automatically (
clean): orphan error tags, duplicate blocks/save frames/tags, loop padding; for anything beyond these automatic fixes, useCifWriter - Ingests parsed or constructed CIF data into DuckDB using the dictionary-derived schema: one table per category, foreign keys enforced, unknown tags routed to a fallback tier
- Emits valid CIF from a populated database in four modes: ORIGINAL, GROUPED, ONE_BLOCK, ALL_BLOCKS
- Trusts the user — if you pass in multiple blocks, cifflow assumes they all belong together and, failing key value clashes, can be interpreted as a single database/experiment
- Visualises a schema as a Graphviz DOT string or a self-contained interactive HTML file
Documentation
The full API reference is at rowlesmr.github.io/cifflow.
Key properties
Error-tolerant. The parser never raises on malformed input. Every structural problem produces an explicit error event; parsing continues and all recoverable data is preserved.
No silent data loss. Duplicate tag values are preserved. Tags not mapped by the dictionary go to a fallback table, not a discard pile.
Round-trip fidelity. For well-formed input, emitted CIF re-parses to the same data. All values are
stored and emitted as raw strings; ValueType provenance (placeholder . and ? vs quoted equivalents)
is preserved throughout.
Canonical caseless names. Block names, save frame names, and tag names are stored in Unicode canonical
caseless form (NFC(casefold(NFD(x)))). Lookups are automatically casefolded: cif["ABC"] finds a block
stored as "abc".
Streaming parser. The parser is event-driven. CIF source is consumed in a single pass; the IR accumulates events incrementally. The Rust extension provides high-throughput Arrow output without any Python file objects.
Installation
Prebuilt wheels are available for Python 3.10 -- 3.14 with MacOS, Windows, and Linux.
pip install cifflow
To install from source (includes the Rust extension):
git clone https://github.com/rowlesmr/cifflow.git
cd cifflow
pip install -e ".[dev]"
maturin develop
Quick start
Parse a CIF file
from cifflow import build
text = open('structure.cif', encoding='utf-8').read()
cif, errors = build(text) # never raises; errors is a list[ParseError]
for block_name in cif.blocks: # block names are always lowercase
block = cif[block_name]
print(f'{block_name}: {len(block.tags)} tags, {len(block.loops)} loops')
The best way to resolve errors is to inspect the list of errors, edit the file accordingly, and try again. No assumptions are made about how to correct errors automatically.
Full pipeline: dictionary → DuckDB → CIF
To see what is going on in the lexing, parsing, ingestion, and schema generation phases, see the inspect module.
import pathlib
from cifflow import (
DictionaryLoader, directory_resolver,
save_dictionary, load_dictionary,
generate_schema,
build, ingest, emit, EmitMode,
)
from cifflow.types import CifVersion
# 1. Load dictionary (with JSON cache to avoid re-parsing on every run)
cache = pathlib.Path('cif_pow_cache.json')
resolver = directory_resolver('data/dictionaries')
if cache.exists():
dictionary = load_dictionary(cache)
else:
dictionary = DictionaryLoader(resolver=resolver).load(
open('data/dictionaries/cif_pow.dic', encoding='utf-8').read())
save_dictionary(dictionary, cache)
# 2. Derive schema
schema = generate_schema(dictionary)
# 3. Parse CIF
cif, errors = build(open('all_the_data.cif', encoding='utf-8').read())
# # 3.5 Edit CIF - to fix errors or alter content
# writer = CifWriter(cif.version, cif)
# for block in writer.blocks:
# # Do alterations
# cif = writer.build() # raises ValueError if any errors present
# 4. Ingest into an in-memory DuckDB database
# Pass a file path string to persist: ingest(cif, 'output.db', schema=schema)
conn, warnings = ingest(cif, schema=schema)
# # 4.5 Generate any default values
# generate_defaults(conn, schema)
# 5. Emit CIF
output = emit(conn, schema, mode=EmitMode.ORIGINAL, version=CifVersion.CIF_2_0)
open('output.cif', 'w', encoding='utf-8').write(output)
See example_workflow.py in the repository root for a fully annotated end-to-end demonstration covering
all four emission modes, type-cast export, and fidelity checking.
The full API reference is at rowlesmr.github.io/cifflow.
Architecture
Parser → Event Stream → IR → Dictionary-aware Mapping → DuckDB → Output/API
| Layer | Responsibility |
|---|---|
| Lexer | Tokenisation, ValueType assignment |
| Parser | Token sequence interpretation, error recovery, event emission |
| IR (CIFModel) | Event accumulation, loop validation, multiline text transformation |
| Dictionary | DDLm parsing, schema derivation |
| DuckDB | Persistent storage: structured tables when a dictionary is present, fallback tier otherwise |
| Output | Valid CIF regeneration |
Layer responsibilities are strictly separated. The parser does not know about the dictionary. The dictionary does not know about the IR. The output layer only reads from DuckDB.
Status
Everything should work. Issues, suggestions, and requests gladly recieved.
Development
Run the fast test suite (excludes tests that load large real-world CIF files):
python -m pytest -m "not slow"
Run the full suite including slow tests:
python -m pytest
After modifying the Rust extension, recompile before running Python tests:
maturin develop
License
Apache 2.0. See LICENSE.
The bundled JavaScript files (viz.js 2.1.2 and svg-pan-zoom 3.6.1) used by
visualise_schema_html are MIT-licensed. Licence notices are in
src/cifflow/dictionary/js/LICENSES.txt.
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 cifflow-0.1.14.tar.gz.
File metadata
- Download URL: cifflow-0.1.14.tar.gz
- Upload date:
- Size: 1.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33070dff68f289eaaced5b7ced0766ed85147b913b5aeb5500a10f272f9d4638
|
|
| MD5 |
84cb40427ab4995733add64710e298fd
|
|
| BLAKE2b-256 |
6377684633950f50059cdf8c53908d0540edba8df42fab9b4e4dfc9d46c65458
|
Provenance
The following attestation bundles were made for cifflow-0.1.14.tar.gz:
Publisher:
release.yml on rowlesmr/cifflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cifflow-0.1.14.tar.gz -
Subject digest:
33070dff68f289eaaced5b7ced0766ed85147b913b5aeb5500a10f272f9d4638 - Sigstore transparency entry: 1825044106
- Sigstore integration time:
-
Permalink:
rowlesmr/cifflow@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/rowlesmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file cifflow-0.1.14-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: cifflow-0.1.14-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdc325faf6b88838ed64c257b0220bea015c1502eb7193a125c1a564b1e3f791
|
|
| MD5 |
324522f262432319b2cfe1baf0e48584
|
|
| BLAKE2b-256 |
fe83872b4a15afa5b40b234969bf334f0cca58eb3da09133c57db3c1e057f228
|
Provenance
The following attestation bundles were made for cifflow-0.1.14-cp314-cp314-win_amd64.whl:
Publisher:
release.yml on rowlesmr/cifflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cifflow-0.1.14-cp314-cp314-win_amd64.whl -
Subject digest:
fdc325faf6b88838ed64c257b0220bea015c1502eb7193a125c1a564b1e3f791 - Sigstore transparency entry: 1825044195
- Sigstore integration time:
-
Permalink:
rowlesmr/cifflow@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/rowlesmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file cifflow-0.1.14-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: cifflow-0.1.14-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.3 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.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14c3226afad014b23c3538f858598344d1d128fa62eb01c4ffb68fb191c4b81a
|
|
| MD5 |
1e4d8e7a9ede6fcdaa568df62de3757f
|
|
| BLAKE2b-256 |
23396d2c3c373716b790b13d71533f63e4184ce48202a4eb2642a9f299e6f305
|
Provenance
The following attestation bundles were made for cifflow-0.1.14-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on rowlesmr/cifflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cifflow-0.1.14-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
14c3226afad014b23c3538f858598344d1d128fa62eb01c4ffb68fb191c4b81a - Sigstore transparency entry: 1825044267
- Sigstore integration time:
-
Permalink:
rowlesmr/cifflow@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/rowlesmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file cifflow-0.1.14-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.
File metadata
- Download URL: cifflow-0.1.14-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.14, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80b3ce013d34fe8b0dc684604f7763ed3bcef58c3b02c5e062b8fec35fb64ea3
|
|
| MD5 |
fee0d55ba19000efb8164469fb175e0c
|
|
| BLAKE2b-256 |
7febeeee21990400791fc6d3f21e831de0cc841c1f7c6ccbedc7e836c0daf521
|
Provenance
The following attestation bundles were made for cifflow-0.1.14-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:
Publisher:
release.yml on rowlesmr/cifflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cifflow-0.1.14-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl -
Subject digest:
80b3ce013d34fe8b0dc684604f7763ed3bcef58c3b02c5e062b8fec35fb64ea3 - Sigstore transparency entry: 1825044178
- Sigstore integration time:
-
Permalink:
rowlesmr/cifflow@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/rowlesmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file cifflow-0.1.14-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: cifflow-0.1.14-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea8b60a9bb1ba3f8b6ca084b49dbfd3911560ca0d8d865ea3f536f901a2b36ec
|
|
| MD5 |
6c19fcb054343a06c16ebb4584a1540d
|
|
| BLAKE2b-256 |
3735c7798d60fbbe79954d91350cb001ba007d6f25149bb0cd24babb4f7a5f82
|
Provenance
The following attestation bundles were made for cifflow-0.1.14-cp313-cp313-win_amd64.whl:
Publisher:
release.yml on rowlesmr/cifflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cifflow-0.1.14-cp313-cp313-win_amd64.whl -
Subject digest:
ea8b60a9bb1ba3f8b6ca084b49dbfd3911560ca0d8d865ea3f536f901a2b36ec - Sigstore transparency entry: 1825044216
- Sigstore integration time:
-
Permalink:
rowlesmr/cifflow@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/rowlesmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file cifflow-0.1.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: cifflow-0.1.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.3 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.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e7fd911fa2fcc5cfedfcf6f1d94bc9f644938dd57f9c63c4d6a7154725deeb0
|
|
| MD5 |
9a1e4461c4f36c1a72a09c7fe8c404df
|
|
| BLAKE2b-256 |
63097c80198b23c02346836b52ad4a2336b9b3c8457cfdef6b696369c88496eb
|
Provenance
The following attestation bundles were made for cifflow-0.1.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on rowlesmr/cifflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cifflow-0.1.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
4e7fd911fa2fcc5cfedfcf6f1d94bc9f644938dd57f9c63c4d6a7154725deeb0 - Sigstore transparency entry: 1825044290
- Sigstore integration time:
-
Permalink:
rowlesmr/cifflow@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/rowlesmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file cifflow-0.1.14-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.
File metadata
- Download URL: cifflow-0.1.14-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.13, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea11df32a12b94d708f8928528b6ace3ef324a9a4ef99249b6d4983c53644ccd
|
|
| MD5 |
ce2c24b0490db4d4ea413ef11a50db3f
|
|
| BLAKE2b-256 |
bfe278696e28c8a9ff465aaa748099d374385556e6d4ea9d502ffbb13625fccb
|
Provenance
The following attestation bundles were made for cifflow-0.1.14-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:
Publisher:
release.yml on rowlesmr/cifflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cifflow-0.1.14-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl -
Subject digest:
ea11df32a12b94d708f8928528b6ace3ef324a9a4ef99249b6d4983c53644ccd - Sigstore transparency entry: 1825044448
- Sigstore integration time:
-
Permalink:
rowlesmr/cifflow@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/rowlesmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file cifflow-0.1.14-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: cifflow-0.1.14-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3bd16234aa3526c5e28309a6ba12bbe6b73bc820f2dd0c1e720a1792700a8acf
|
|
| MD5 |
73ad98471ecb05ee3b9b89455530dce4
|
|
| BLAKE2b-256 |
8a9f98140b15b5bcd5b81b9431dae90d56907f49747f29e1712c80b32a6c19c0
|
Provenance
The following attestation bundles were made for cifflow-0.1.14-cp312-cp312-win_amd64.whl:
Publisher:
release.yml on rowlesmr/cifflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cifflow-0.1.14-cp312-cp312-win_amd64.whl -
Subject digest:
3bd16234aa3526c5e28309a6ba12bbe6b73bc820f2dd0c1e720a1792700a8acf - Sigstore transparency entry: 1825044309
- Sigstore integration time:
-
Permalink:
rowlesmr/cifflow@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/rowlesmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file cifflow-0.1.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: cifflow-0.1.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.3 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.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f69c1146c18a54a23e1ed5efa6e753769c99905a26e77f10135fd6b6ba1d110
|
|
| MD5 |
a88ae81df41442c5b2bc37eb961a69b9
|
|
| BLAKE2b-256 |
7be25a6238e249c554935556a96e694ef806dfbec4b191b2f45866ba5e71cd46
|
Provenance
The following attestation bundles were made for cifflow-0.1.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on rowlesmr/cifflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cifflow-0.1.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
4f69c1146c18a54a23e1ed5efa6e753769c99905a26e77f10135fd6b6ba1d110 - Sigstore transparency entry: 1825044354
- Sigstore integration time:
-
Permalink:
rowlesmr/cifflow@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/rowlesmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file cifflow-0.1.14-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.
File metadata
- Download URL: cifflow-0.1.14-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.12, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1902a93d40f4751f661657de21daeb59a3ab78e79249aeb153551f8d536fc235
|
|
| MD5 |
3176753985a717526d57180b97dc9789
|
|
| BLAKE2b-256 |
2ebd801c94e120a3d55c935ce71ba0fdca4060ddf8ff7fe2b848851bbf7206ce
|
Provenance
The following attestation bundles were made for cifflow-0.1.14-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:
Publisher:
release.yml on rowlesmr/cifflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cifflow-0.1.14-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl -
Subject digest:
1902a93d40f4751f661657de21daeb59a3ab78e79249aeb153551f8d536fc235 - Sigstore transparency entry: 1825044160
- Sigstore integration time:
-
Permalink:
rowlesmr/cifflow@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/rowlesmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file cifflow-0.1.14-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: cifflow-0.1.14-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f346bef87d8c4ea7bfe091432d172d9516f518021269c74248e4110ca4e0840
|
|
| MD5 |
6723dad47509ff93b554cdd393e7a96c
|
|
| BLAKE2b-256 |
9d86bd26037b49b143d6bf895a1f75e637049ee7c3d20ef7717b415df778405a
|
Provenance
The following attestation bundles were made for cifflow-0.1.14-cp311-cp311-win_amd64.whl:
Publisher:
release.yml on rowlesmr/cifflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cifflow-0.1.14-cp311-cp311-win_amd64.whl -
Subject digest:
0f346bef87d8c4ea7bfe091432d172d9516f518021269c74248e4110ca4e0840 - Sigstore transparency entry: 1825044127
- Sigstore integration time:
-
Permalink:
rowlesmr/cifflow@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/rowlesmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file cifflow-0.1.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: cifflow-0.1.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a3ce15445ea4e2579e0c629b2344283b07726055309f457025a21922456b49c
|
|
| MD5 |
172c0c4574085c631f9b0cf49b64e515
|
|
| BLAKE2b-256 |
cef36bf3ffb6a34a9ad0d96b5d5194bca9e163b87f773b39cf3a58763868f0ee
|
Provenance
The following attestation bundles were made for cifflow-0.1.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on rowlesmr/cifflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cifflow-0.1.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
9a3ce15445ea4e2579e0c629b2344283b07726055309f457025a21922456b49c - Sigstore transparency entry: 1825044418
- Sigstore integration time:
-
Permalink:
rowlesmr/cifflow@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/rowlesmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file cifflow-0.1.14-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.
File metadata
- Download URL: cifflow-0.1.14-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.11, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a70ef8e245ed8508194a8d5efe287c378d91ffeacf6f2f9e04ae0a27237d76a3
|
|
| MD5 |
ea641a5721223bebaeb0b14782980ae1
|
|
| BLAKE2b-256 |
1c6681611532e068c4feb754ea237d5170dbab0c3b5d873da610c2237d262612
|
Provenance
The following attestation bundles were made for cifflow-0.1.14-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:
Publisher:
release.yml on rowlesmr/cifflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cifflow-0.1.14-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl -
Subject digest:
a70ef8e245ed8508194a8d5efe287c378d91ffeacf6f2f9e04ae0a27237d76a3 - Sigstore transparency entry: 1825044371
- Sigstore integration time:
-
Permalink:
rowlesmr/cifflow@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/rowlesmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file cifflow-0.1.14-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: cifflow-0.1.14-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8a06324bc1ca4be1befca75e10bb85766b992903856b594425cf1ced2ef3398
|
|
| MD5 |
a20ee36512ddab6fa3afef453f32eeb5
|
|
| BLAKE2b-256 |
31db8874ac367d0477cdc9de0b15fa699a8cabeb9d434ca1276c7b16d29958a0
|
Provenance
The following attestation bundles were made for cifflow-0.1.14-cp310-cp310-win_amd64.whl:
Publisher:
release.yml on rowlesmr/cifflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cifflow-0.1.14-cp310-cp310-win_amd64.whl -
Subject digest:
d8a06324bc1ca4be1befca75e10bb85766b992903856b594425cf1ced2ef3398 - Sigstore transparency entry: 1825044243
- Sigstore integration time:
-
Permalink:
rowlesmr/cifflow@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/rowlesmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file cifflow-0.1.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: cifflow-0.1.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e435d5f079d253dd61228b53d65175c8abefd005d5fc2f3ba6affc65b75c343
|
|
| MD5 |
b87624c25b87aea6065b5c1f0ee598c2
|
|
| BLAKE2b-256 |
77b5af52c2bd53b8101271573acf82d1324aff9d9dc029f8a2cc3655e9a5b4a2
|
Provenance
The following attestation bundles were made for cifflow-0.1.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on rowlesmr/cifflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cifflow-0.1.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
2e435d5f079d253dd61228b53d65175c8abefd005d5fc2f3ba6affc65b75c343 - Sigstore transparency entry: 1825044393
- Sigstore integration time:
-
Permalink:
rowlesmr/cifflow@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/rowlesmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Trigger Event:
push
-
Statement type:
File details
Details for the file cifflow-0.1.14-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.
File metadata
- Download URL: cifflow-0.1.14-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.10, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3e512e46fd92f26c32b0520d18ab085901eb1b73f6b056dc51aeec4e541be67
|
|
| MD5 |
7a3ad594b2fda8ae06c2f8db21655e6c
|
|
| BLAKE2b-256 |
a9b0f7e2b1efbd736a20b4e18f2d3888ad3c398998fe75e9290074396b80e269
|
Provenance
The following attestation bundles were made for cifflow-0.1.14-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:
Publisher:
release.yml on rowlesmr/cifflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cifflow-0.1.14-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl -
Subject digest:
d3e512e46fd92f26c32b0520d18ab085901eb1b73f6b056dc51aeec4e541be67 - Sigstore transparency entry: 1825044330
- Sigstore integration time:
-
Permalink:
rowlesmr/cifflow@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/rowlesmr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@14c1fc338e792b8a2f9a118167f1f3a70913e9bd -
Trigger Event:
push
-
Statement type: