deepdiff-rs
onix is a Rust rewrite of Python DeepDiff's core: byte-compatible output, 37-4588x faster, with ignore_order support included. Install it as deepdiff-rs, a drop-in DeepDiff class for Python, or run the diff engine as the onix command-line tool.
deepdiff-rs reads live Python objects (or JSON) and produces the exact same report DeepDiff does at verbose_level=2, so it slots into code that already parses DeepDiff output while running dramatically faster on large or deeply nested inputs.
Status (September 2026): deepdiff-rs 0.x is live on PyPI (Python 3.9+, wheels for Linux x86_64/aarch64, macOS arm64/x86_64, and Windows x64, plus an sdist); the onix CLI builds from source, and nothing is on crates.io yet. Ordered and ignore_order diffing are complete, differentially tested against real DeepDiff 9.1.0, and benchmarked. It is 0.x, not stable or 1.0: the API may still change before 1.0.
Table of contents
Install
Python (the deepdiff-rs package, import name deepdiff_rs):
pip install deepdiff-rs
From source:
cd crates/onix-py
uv tool install maturin # the build tool (skip if already installed)
uv sync --group test # creates .venv, installs pytest + pinned deepdiff
uv run --group test maturin develop --release
CLI (the onix binary), from a clean clone:
cargo install --path crates/onix-cli
Library crate (onix-core), a path dependency only (it sets publish = false):
[dependencies]
onix-core = { path = "crates/onix-core" }
Quickstart
The drop-in DeepDiff class, on live Python objects:
from deepdiff_rs import DeepDiff
diff = DeepDiff({"a": 1}, {"a": 2})
if diff:
print(diff.to_json()) # byte-compatible with DeepDiff(...).to_json() at verbose_level=2
print(diff.to_dict()) # the same report as a native Python dict
{"values_changed":{"root['a']":{"new_value":2,"old_value":1}}}
{'values_changed': {"root['a']": {'new_value': 2, 'old_value': 1}}}
diff_json, the fast path when you already have JSON text (it parses, diffs, and serializes entirely in Rust, with no Python-object conversion):
from deepdiff_rs import diff_json
print(diff_json('{"a": 1}', '{"a": 2}'))
{"values_changed":{"root['a']":{"new_value":2,"old_value":1}}}
The onix CLI, diffing two JSON files (compact JSON to stdout, {} for no differences):
$ echo '{"a": 1}' > left.json
$ echo '{"a": 2}' > right.json
$ onix diff left.json right.json
{"values_changed":{"root['a']":{"new_value":2,"old_value":1}}}
Pass --ignore-order to compare every list by value instead of by position, mirroring DeepDiff(..., ignore_order=True).
Known limitations
- Only the core diff is implemented:
exclude_paths,significant_digits, custom operators,verbose_level != 2, and delta/patch are not (yet) supported. - Supported value types are
None,bool,int,float,str,dict(withstrkeys),list,tuple,set,frozenset,datetime.datetime, anddatetime.date; aset/frozensetmember may be any of these except alist,dictorset, matching Python's own hashability rule, transitively through whatever the member nests.ints must fit ini64/u64,floats must be finite, and anything else —time,timedelta, a non-strdict key, a custom object, an arbitrary-precisionint, or a non-finitefloat— raisesTypeError/ValueErrornaming the exact path it was found at. The Datetimes and Sets bullets below cover the deliberate divergences for those two types. Seecrates/onix-py/src/convert.rsandtests/golden/README.md. - A subclass of a supported type (a
tuple,setorfrozensetsubclass includingnamedtuple, adatetime/datesubclass such as pandas'Timestamp) raisesTypeErrorrather than being diffed as its base type, because DeepDiff reports each value's own type name. Atype_changesentry'sold_type/new_typeare type names into_dict(), where DeepDiff returns the type objects. Both are described intests/golden/README.md. - Datetimes compare by instant, with a naive value read as UTC, matching DeepDiff. A changed pair is reported normalized to UTC (
to_json()renders...+00:00,to_dict()returns UTC-awaredatetimes); everywhere else a datetime keeps its raw value. Three deliberate departures:to_json()renders adateasYYYY-MM-DDwhere DeepDiff's ownto_json()raisesTypeError(a documented superset); azoneinfo/pytztzinfo comes back fromto_dict()as a fixed-offsetdatetime.timezonecarrying the offset it was in force at, not the original zone object; and a set holding both a naive and an aware value at one instant reports both as members, where DeepDiff's own digest cache can report only one (seecrates/onix-py/src/convert.rs). Comparing two datetimes whose UTC form would leave year 1..=9999 raisesValueErrornaming the path, where DeepDiff raisesOverflowError; underignore_orderDeepDiff's hasher normalizes every datetime and so raises for such a value even when it is only added, removed, or shuffled, where onix hashes by instant and reports it normally (seetests/golden/README.md).truncate_datetime,timeandtimedeltaare not supported. The normalized-versus-raw split is documented intests/golden/README.md. - Sets are diffed deterministically, where DeepDiff's own answers depend on the order the running process happens to iterate a set in (hash order, and
PYTHONHASHSEED-dependent forstrmembers) or on how its digest cache/computation handles a tuple, frozenset, or calendar member independently of Python's own==. Each consequence — entry order, which member of an equality class is reported, set-versus-sequence coercion, and a tuple/frozenset member's own (positional, not order-/repetition-insensitive) matching rule — is shown with both tools' output intests/golden/README.md's "Set iteration order" section. A report holding afrozensetvalue also serializes to JSON here, where DeepDiff's ownto_json()raisesTypeError— a superset, not a difference in the findings. - Two distinct
strvalues that differ only in lone surrogates ('\ud800'and'\udc00') convert to the same string, so a set holding both loses a member and with it a finding. Tracked as issue #27. - A
strinside atupleorfrozensetset item is rendered with Python'srepr(), which escapes every non-printable character; onix escapes those belowU+0100(the complete set in that range) and passes higher non-printable code points through literally, since escaping them would mean carrying a Unicode category table. Exact for all of ASCII and all printable text. Seecrates/onix-core/src/path.rs. - Adversarially deep input raises
MaxDepthErrorinstead of crashing: the defaultmax_depthis 512 and the hard ceiling isMAX_DEPTH_CEILING(20,000). Seecrates/onix-py/src/guard.rs. ignore_orderpairing isO(N^2)in unpaired elements per side and carries a polynomial cost in both time and memory with input depth; it has nomax_passes/max_diffscutoff, so bound the size and depth of untrusted input yourself. Seecrates/onix-core/src/ignore_order/mod.rs.- Output is byte-identical to DeepDiff except for the cases listed above and two path-rendering quirks;
tests/golden/README.mdenumerates every accepted exception, including integers past2^53(the limit of exactf64representation) inside ordered scalar lists andignore_orderpairing among naive datetimes, which DeepDiff ranks using the process's local timezone while onix reads a naive value as UTC everywhere.
Performance
Two committed, regenerable reports back the numbers below; every figure here is copied verbatim from them.
The Python bindings against real deepdiff on live Python objects, the number a real caller pays (source: crates/onix-py/benchmarks/bench_bindings.py, macOS 26.5.1, Apple M5 Max, median of 11 isolated subprocess runs per side):
| Shape | deepdiff | deepdiff_rs | Speedup |
|---|---|---|---|
ignore_order, 10k shuffled ints, ~5% mutated (live objects) |
3128.94ms | 82.57ms | 37.89x |
| peak RSS | 228.0 MB | 141.2 MB | 1.61x |
| CPU seconds | 3.128 s | 0.083 s | 37.88x |
| Heterogeneous API-payload records, n=20,000 (live objects) | 3466.52ms | 149.18ms | 23.24x |
| peak RSS | 117.5 MB | 148.3 MB | 0.79x |
| CPU seconds | 3.465 s | 0.149 s | 23.24x |
Same ignore_order shape, via diff_json (JSON-string path) |
3133.45ms | 83.16ms | 37.68x |
| peak RSS | 228.9 MB | 141.7 MB | 1.62x |
| CPU seconds | 3.131 s | 0.083 s | 37.68x |
Same API-payload shape, via diff_json (JSON-string path) |
4568.33ms | 86.33ms | 52.92x |
| peak RSS | 139.0 MB | 141.7 MB | 0.98x |
| CPU seconds | 4.566 s | 0.086 s | 52.90x |
| Same API-payload shape, both tools reading two JSON files from disk | 4571.28ms | 85.35ms | 53.56x |
| peak RSS | 139.0 MB | 141.8 MB | 0.98x |
| CPU seconds | 4.569 s | 0.085 s | 53.54x |
The engine's own diff-only time and peak resident memory against pinned deepdiff 9.1.0 (source: perf/RESULTS.md, same machine, median over tier-appropriate runs, diff time excluding process startup and JSON parsing on both sides):
| Fixture | onix diff-only (median, min-max) | deepdiff diff-only (median, min-max) | Speedup | onix peak RSS | deepdiff peak RSS | Memory ratio | ≥5x threshold |
|---|---|---|---|---|---|---|---|
flat_dict_10k |
3.093 ms (3.020 ms-3.153 ms) | 143.691 ms (140.322 ms-145.891 ms) | 46.46x | 5.72 MB | 39.46 MB | 6.90x | ✅ |
flat_dict_100k |
38.354 ms (37.963 ms-38.916 ms) | 1.596 s (1.584 s-1.686 s) | 41.60x | 40.53 MB | 110.95 MB | 2.74x | ✅ |
flat_dict_1m |
450.356 ms (449.689 ms-467.911 ms) | 16.936 s (16.889 s-17.154 s) | 37.60x | 478.10 MB | 753.75 MB | 1.58x | ✅ |
flat_list_100k |
81.787 ms (78.266 ms-89.593 ms) | 4.798 s (4.746 s-4.828 s) | 58.67x | 38.16 MB | 155.11 MB | 4.06x | ✅ |
nested_uniform_d6_b10 |
208.770 ms (208.269 ms-209.842 ms) | 71.500 s (71.498 s-72.875 s) | 342.48x | 224.58 MB | 908.33 MB | 4.04x | ✅ |
api_payloads |
160.667 ms (153.309 ms-171.032 ms) | 94.138 s (93.625 s-94.669 s) | 585.92x | 269.39 MB | 544.98 MB | 2.02x | ✅ |
deep_narrow_d120 |
0.027 ms (0.026 ms-0.028 ms) | 123.792 ms (123.234 ms-124.809 ms) | 4588.45x | 2.18 MB | 41.08 MB | 18.85x | ✅ |
startup_trivial |
0.001 ms (0.001 ms-0.001 ms) | 0.181 ms (0.174 ms-0.207 ms) | 177.24x | 2.18 MB | 32.69 MB | 15.00x | ✅ |
ignore_order_10k |
80.965 ms (80.117 ms-83.510 ms) | 13.010 s (12.900 s-13.023 s) | 160.68x | 108.82 MB | 345.41 MB | 3.17x | ✅ |
identical_1m |
6.996 ms (6.114 ms-7.731 ms) | 15.853 s (15.773 s-16.021 s) | 2266.18x | 315.39 MB | 503.28 MB | 1.60x | ✅ |
Both reports carry their full methodology, fairness rules, and the reproduce command. perf/RESULTS.md is an upper bound (JSON parsed straight into the engine, no Python-object conversion); the bindings table is the product-surface number. Regenerate them with perf/run_bench.sh and crates/onix-py/benchmarks/bench_bindings.py (see CONTRIBUTING.md).
Reference
Python API. The public surface is DeepDiff, diff_json, MaxDepthError, and MAX_DEPTH_CEILING.
DeepDiff(t1, t2, ignore_order=False, max_depth=None): diffs two live Python objects of supported value types —None,bool,int,float,str,dict(withstrkeys),list,tuple,set,frozenset,datetime.datetime, anddatetime.date(see Known limitations for the exact restrictions and exclusions);.to_json()returns the DeepDiff-compatible JSON string,.to_dict()the same report as a dict — with Python types preserved, so a value the diff found in atuple,setorfrozensetcomes back as one and adatetime/datecomes back as a realdatetime/date— and the instance is falsy when there is no difference. Theset_item_added/set_item_removedcategories are lists of path strings, each ending in the item itself (root['a'][2],root['x'],root[(1, 2)]).diff_json(a, b, ignore_order=False, max_depth=None) -> str: diffs two JSON strings entirely in Rust and returns the report as a JSON string.MaxDepthError(aValueErrorsubclass) is raised when input exceedsmax_depth;MAX_DEPTH_CEILING(20,000) is the hard upper bound onmax_depth.
CLI. onix diff <a.json> <b.json> [--max-depth N] [--ignore-order] [--timing] reads both files as JSON and prints a compact, single-line DeepDiff-compatible report to stdout ({} when there is no difference).
--max-depth Noverrides the recursion-depth bound (default: theONIX_MAX_DEPTHenvironment variable if set, else 512).--ignore-ordercompares every list by hash-based matching instead of by position, mirroringDeepDiff(..., ignore_order=True).--timingprints one line of JSON ({"parse_ns": N, "diff_ns": N}) to stderr.
Exit codes:
| Code | Meaning |
|---|---|
0 |
Diff computed successfully (whether or not the report is empty; differences are carried in the stdout JSON, not the exit code). |
1 |
Usage error (missing/unknown subcommand, wrong argument count, unknown flag, non-numeric --max-depth); details and a usage line go to stderr. |
2 |
I/O error (e.g. a missing input file) or a JSON-parse error on either input. |
3 |
max_depth exceeded; the path that tripped the bound goes to stderr. |
Layout
crates/onix-core # the diff engine (library, no I/O)
crates/onix-cli # the `onix` binary (thin CLI over the core)
crates/onix-py # PyO3 bindings, published as `deepdiff-rs`
scripts/ # gen_goldens.py: regenerates tests/golden/ from real DeepDiff
tests/golden # DeepDiff-generated expected outputs (the compatibility corpus)
perf/ # cross-language benchmark harness and RESULTS.md
Contributing
Issues and pull requests are welcome. Open an issue to report a bug, a DeepDiff divergence (include both inputs and the report each engine produces), or a question. Building from source, the quality gates, the golden corpus, benchmarking, mutation testing, and publishing are all in CONTRIBUTING.md.
License
MIT: see LICENSE.
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 deepdiff_rs-0.4.0.tar.gz.
File metadata
- Download URL: deepdiff_rs-0.4.0.tar.gz
- Upload date:
- Size: 260.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ea407e04192690c890fb347e95abff8232483101b0533d06bd0c3537848981a
|
|
| MD5 |
f0e437fb5bdd7df1d614c5ebce9ef954
|
|
| BLAKE2b-256 |
978b594fb98f564c76c7608a5ee4cb52783460f28f1048db483bcb2615198d3e
|
Provenance
The following attestation bundles were made for deepdiff_rs-0.4.0.tar.gz:
Publisher:
publish.yml on ksco92/onix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
deepdiff_rs-0.4.0.tar.gz -
Subject digest:
7ea407e04192690c890fb347e95abff8232483101b0533d06bd0c3537848981a - Sigstore transparency entry: 2712838078
- Sigstore integration time:
-
Permalink:
ksco92/onix@773178c43c5db6f8fd783f23f8af977db3b85b6d -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ksco92
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@773178c43c5db6f8fd783f23f8af977db3b85b6d -
Trigger Event:
push
-
Statement type:
File details
Details for the file deepdiff_rs-0.4.0-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: deepdiff_rs-0.4.0-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 428.4 kB
- Tags: CPython 3.9+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d326e75ae824ddf65617736237391bab543779f132c7595e50e8b5e2516812b
|
|
| MD5 |
13aec3809e6b2c979f7ef6d5bf947688
|
|
| BLAKE2b-256 |
a78a85856dfff07d36b2e1f6f4780f35bcfb1c5ec3ca46992312157a3a99e325
|
Provenance
The following attestation bundles were made for deepdiff_rs-0.4.0-cp39-abi3-win_amd64.whl:
Publisher:
publish.yml on ksco92/onix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
deepdiff_rs-0.4.0-cp39-abi3-win_amd64.whl -
Subject digest:
9d326e75ae824ddf65617736237391bab543779f132c7595e50e8b5e2516812b - Sigstore transparency entry: 2712838205
- Sigstore integration time:
-
Permalink:
ksco92/onix@773178c43c5db6f8fd783f23f8af977db3b85b6d -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ksco92
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@773178c43c5db6f8fd783f23f8af977db3b85b6d -
Trigger Event:
push
-
Statement type:
File details
Details for the file deepdiff_rs-0.4.0-cp39-abi3-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: deepdiff_rs-0.4.0-cp39-abi3-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 535.0 kB
- Tags: CPython 3.9+, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0b01311ce70a780e52f780bc58f1f0e0e4940575e038dcf06928e0f362824fe
|
|
| MD5 |
2773af60fffaf752e03aea700ece820c
|
|
| BLAKE2b-256 |
552020a13eceb048d83327476cbf9fe2c288dab1a0a2ab9cd8b8e63fc66ad544
|
Provenance
The following attestation bundles were made for deepdiff_rs-0.4.0-cp39-abi3-manylinux_2_28_x86_64.whl:
Publisher:
publish.yml on ksco92/onix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
deepdiff_rs-0.4.0-cp39-abi3-manylinux_2_28_x86_64.whl -
Subject digest:
d0b01311ce70a780e52f780bc58f1f0e0e4940575e038dcf06928e0f362824fe - Sigstore transparency entry: 2712838169
- Sigstore integration time:
-
Permalink:
ksco92/onix@773178c43c5db6f8fd783f23f8af977db3b85b6d -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ksco92
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@773178c43c5db6f8fd783f23f8af977db3b85b6d -
Trigger Event:
push
-
Statement type:
File details
Details for the file deepdiff_rs-0.4.0-cp39-abi3-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: deepdiff_rs-0.4.0-cp39-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 506.4 kB
- Tags: CPython 3.9+, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c04605e72dc575d937141fc5d82a68a1a37e0cf04d32886ef29e33573d1ff28
|
|
| MD5 |
8e82ea401f1d355aa8223196d3f094c5
|
|
| BLAKE2b-256 |
69b39b8a70671dfdb4fbbf5fb813ca9954d13f151c092b1e25cd453709bbbe65
|
Provenance
The following attestation bundles were made for deepdiff_rs-0.4.0-cp39-abi3-manylinux_2_28_aarch64.whl:
Publisher:
publish.yml on ksco92/onix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
deepdiff_rs-0.4.0-cp39-abi3-manylinux_2_28_aarch64.whl -
Subject digest:
6c04605e72dc575d937141fc5d82a68a1a37e0cf04d32886ef29e33573d1ff28 - Sigstore transparency entry: 2712838228
- Sigstore integration time:
-
Permalink:
ksco92/onix@773178c43c5db6f8fd783f23f8af977db3b85b6d -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ksco92
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@773178c43c5db6f8fd783f23f8af977db3b85b6d -
Trigger Event:
push
-
Statement type:
File details
Details for the file deepdiff_rs-0.4.0-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: deepdiff_rs-0.4.0-cp39-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 475.6 kB
- Tags: CPython 3.9+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89168480f5f14e710a02836df509f062946637509cffaa7185cee5358e67968d
|
|
| MD5 |
3933e5db8bfa9e3f7d4c0dd79313750c
|
|
| BLAKE2b-256 |
b6123072a4de31bd21e49152b511a0aa36ffe36db55615c6ddab6a0e9e5d0a97
|
Provenance
The following attestation bundles were made for deepdiff_rs-0.4.0-cp39-abi3-macosx_11_0_arm64.whl:
Publisher:
publish.yml on ksco92/onix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
deepdiff_rs-0.4.0-cp39-abi3-macosx_11_0_arm64.whl -
Subject digest:
89168480f5f14e710a02836df509f062946637509cffaa7185cee5358e67968d - Sigstore transparency entry: 2712838131
- Sigstore integration time:
-
Permalink:
ksco92/onix@773178c43c5db6f8fd783f23f8af977db3b85b6d -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ksco92
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@773178c43c5db6f8fd783f23f8af977db3b85b6d -
Trigger Event:
push
-
Statement type:
File details
Details for the file deepdiff_rs-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: deepdiff_rs-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 509.9 kB
- Tags: CPython 3.9+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d65876aa02c32554beac4a4c761bb0a63a42eddb3841bd512a623341c41849b
|
|
| MD5 |
9219f90f1efdd5e6f6f48f7fd130f45b
|
|
| BLAKE2b-256 |
48ddd93f3e52c624244f255b6b6ce8a9dbc914915af42876729a5ac3cfe93141
|
Provenance
The following attestation bundles were made for deepdiff_rs-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl:
Publisher:
publish.yml on ksco92/onix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
deepdiff_rs-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl -
Subject digest:
6d65876aa02c32554beac4a4c761bb0a63a42eddb3841bd512a623341c41849b - Sigstore transparency entry: 2712838101
- Sigstore integration time:
-
Permalink:
ksco92/onix@773178c43c5db6f8fd783f23f8af977db3b85b6d -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ksco92
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@773178c43c5db6f8fd783f23f8af977db3b85b6d -
Trigger Event:
push
-
Statement type: