Fast forward-mode automatic differentiation via dual numbers (C extension)
Project description
fastdual
Fast forward-mode automatic differentiation via dual numbers, implemented as a CPython C extension.
Computes exact gradients, Jacobians, and Hessians with minimal overhead — no taping, no graph construction, just numbers that carry their derivatives.
Install
pip install fastdual
Drop-in Gradients
Any function that works with floats works with Dual — no rewriting, no framework, no JIT warmup:
from fastdual import Dual, der
def my_function(x):
return x**3 - 2*x + 1
x = Dual(3.0)
y = my_function(x)
dy_dx = der(y, x) # 25.0 (exact derivative)
Quick Start
from fastdual import Dual, der
import numpy as np
x = Dual(3.0)
y = Dual(5.0)
z = x * y + np.sin(x)
print(z.val) # 15.1411...
print(der(z, x)) # 5.99 (dz/dx = y + cos(x))
print(der(z, y)) # 3.0 (dz/dy = x)
Array Operations
from fastdual import DualArray, val, jac
import numpy as np
xs = DualArray([1.0, 2.0, 3.0]) # independent seeds
result = np.sin(xs) + xs ** 2
print(val(result)) # [sin(1)+1, sin(2)+4, sin(3)+9]
print(jac(result, xs)) # diagonal Jacobian
Automatic Jacobians
from fastdual import autojac
import numpy as np
@autojac
def f(x, y):
return np.array([x**2 + y, x * y**2])
result, J = f(2.0, 3.0)
# result = [7.0, 18.0]
# J = [[4.0, 1.0],
# [9.0, 12.0]]
Automatic Hessians
Second-order derivatives via hyper-dual numbers (also a C extension):
from fastdual import autohess
@autohess
def rosenbrock(x, y):
return (1.0 - x)**2 + 100.0 * (y - x**2)**2
result, H = rosenbrock(1.0, 1.0)
# result = 0.0
# H = [[802, -400],
# [-400, 200]]
Optimization
Automatic gradient computation for scipy.optimize.minimize:
from fastdual import minimize
def objective(x):
return (x[0] - 1)**2 + 100 * (x[1] - x[0]**2)**2
result = minimize(objective, [0.0, 0.0])
print(result.x) # [1.0, 1.0]
Pass hess=True for exact Hessians via hyper-dual numbers, enabling second-order
methods (trust-ncg, Newton-CG, etc.) that converge in fewer iterations:
result = minimize(objective, [0.0, 0.0], hess=True)
Requires pip install fastdual[optimize].
Sparse Jacobians
For large systems with known sparsity, avoid redundant computation via graph coloring:
from fastdual import sparse_jac
import numpy as np
def f(x):
return np.array([x[i-1] + x[i] + x[i+1] for i in range(1, len(x)-1)])
sparsity = ... # boolean (m, n) array of known nonzero entries
J = sparse_jac(f, x0, sparsity) # only n_colors << n forward passes
NumPy Integration
DualArray supports __array_ufunc__ and __array_function__ protocols:
from fastdual import DualArray
import numpy as np
x = DualArray([1.0, 2.0, 3.0])
np.sin(x) # ufuncs
np.dot(x, x) # dot product
np.sum(x) # reduction
np.linalg.norm(x) # L2 norm
np.linalg.solve(A, b) # linear solve with gradient propagation
Supported Operations
Both Dual (first-order) and HyperDual (second-order) types are C extensions. All operations work as methods and (for Dual) as NumPy ufuncs.
Arithmetic
| Operation | Syntax | Dual | HyperDual |
|---|---|---|---|
| Addition | a + b |
yes | yes |
| Subtraction | a - b |
yes | yes |
| Multiplication | a * b |
yes | yes |
| Division | a / b |
yes | yes |
| Floor division | a // b |
yes | — |
| Modulo | a % b |
yes | — |
| Power | a ** b |
yes | yes |
| Negation | -a |
yes | yes |
| Absolute value | abs(a) |
yes | yes |
Transcendental Functions
Available as methods (.sin()) on both types and via NumPy ufuncs (np.sin()) on Dual/DualArray.
| Function | Method | Derivative |
|---|---|---|
sin |
.sin() |
cos(x) |
cos |
.cos() |
-sin(x) |
tan |
.tan() |
sec²(x) |
exp |
.exp() |
exp(x) |
log |
.log() |
1/x |
sqrt |
.sqrt() |
1/(2√x) |
arcsin |
.arcsin() |
1/√(1-x²) |
arccos |
.arccos() |
-1/√(1-x²) |
arctan |
.arctan() |
1/(1+x²) |
sinh |
.sinh() |
cosh(x) |
cosh |
.cosh() |
sinh(x) |
tanh |
.tanh() |
sech²(x) |
arcsinh |
.arcsinh() |
1/√(1+x²) |
arccosh |
.arccosh() |
1/√(x²-1) |
arctanh |
.arctanh() |
1/(1-x²) |
exp2 |
.exp2() |
ln(2)·2ˣ |
log2 |
.log2() |
1/(x·ln2) |
log10 |
.log10() |
1/(x·ln10) |
log1p |
.log1p() |
1/(1+x) |
expm1 |
.expm1() |
exp(x) |
square |
.square() |
2x |
cbrt |
.cbrt() |
1/(3x^⅔) |
Binary Functions (Dual only)
These are available via NumPy ufuncs on Dual/DualArray.
| Function | Usage | Description |
|---|---|---|
arctan2 |
np.arctan2(y, x) |
Two-argument arctangent |
hypot |
np.hypot(a, b) |
√(a² + b²) with gradient |
maximum |
np.maximum(a, b) |
Element-wise maximum |
minimum |
np.minimum(a, b) |
Element-wise minimum |
copysign |
np.copysign(a, b) |
Magnitude of a, sign of b |
Utility Functions
| Function | Method | Dual | HyperDual |
|---|---|---|---|
sign |
.sign() |
yes | yes |
fabs |
.fabs() |
yes | yes |
conjugate |
.conjugate() |
yes | yes |
floor |
.floor() |
yes | yes |
ceil |
.ceil() |
yes | yes |
Predicates (Dual only)
np.isfinite(), np.isinf(), np.isnan() — check the primal value, return bool.
Comparisons
<, <=, ==, !=, >, >= — compare on primal value only.
API Reference
| Function | Description |
|---|---|
Dual(value) |
Create an independent variable (seed) |
Dual(value, seed=False) |
Create a constant (no gradient) |
DualArray(values) |
Array of independent seeds from numeric input |
der(result, wrt) |
Partial derivative of result w.r.t. a seed |
val(array) |
Extract primal values from Dual array |
jac(results, seeds) |
Full Jacobian matrix |
autojac(fn) |
Decorator: fn(*floats) -> (values, jacobian) |
HyperDual(f, f1, f2, f12) |
Hyper-dual number for second derivatives |
@autohess |
Decorator returning (result, hessian) via hyper-dual numbers |
minimize(fn, x0) |
scipy.optimize with automatic gradients |
sparse_jac(fn, x, sparsity) |
Sparse Jacobian via graph coloring |
reset() |
Reset variable ID counter |
Performance
All hot paths are in C — both Dual and HyperDual types are C extensions with zero Python object allocation in the inner loop.
Dual: overhead vs plain floats
| Operation | Dual | float | overhead |
|---|---|---|---|
| Scalar add | 123 ns | 96 ns | 1.3x |
| Scalar mul | 123 ns | 97 ns | 1.3x |
| Scalar pow | 165 ns | 120 ns | 1.4x |
| sin | 142 ns | 115 ns | 1.2x |
| exp | 148 ns | 122 ns | 1.2x |
| log | 131 ns | 114 ns | 1.2x |
| np.sin (10) | 2.5 us | 832 ns | 3.1x |
| np.sin (100) | 6.9 us | 1.8 us | 3.8x |
HyperDual: overhead vs plain floats
| Operation | HyperDual | float | overhead |
|---|---|---|---|
| Scalar add | 92 ns | 96 ns | 1.0x |
| Scalar mul | 93 ns | 97 ns | 1.0x |
| sin | 103 ns | 115 ns | 0.9x |
| exp | 97 ns | 122 ns | 0.8x |
HyperDual carries 4 fixed doubles — no sparse gradient bookkeeping. Per-element arithmetic is nearly free compared to floats.
Jacobian: fastdual vs finite differences
| Benchmark | fastdual | fin. diff. | speedup |
|---|---|---|---|
| Jacobian 10x10 | 20.2 us | 81.2 us | 4.0x faster |
| Jacobian 20x20 | 45.6 us | 239.4 us | 5.2x faster |
Jacobians use the C extension for forward-mode AD — one pass computes all partials simultaneously, vs n+1 function evaluations for finite differences.
Hessian: fastdual vs finite differences
| Benchmark | fastdual | fin. diff. | speedup |
|---|---|---|---|
| Hessian 5x5 | 14.1 us | 184.7 us | 13.1x faster |
| Hessian 10x10 | 71.9 us | 1.0 ms | 14.0x faster |
| Hessian 20x20 | 469.8 us | 6.3 ms | 13.5x faster |
Hessians require n(n+1)/2 function evaluations (each with HyperDual arithmetic). For small n, finite differences with simple functions can be competitive. The hyper-dual approach shines when derivatives must be exact (no step-size tuning) or when the function involves transcendentals where finite-difference errors grow.
Gradient vs Hessian
How much more does a Hessian cost compared to a gradient for the same function?
| Size | Gradient (Dual) | Hessian (HyperDual) | ratio |
|---|---|---|---|
| 5 variables | 11.6 us | 14.1 us | 1.2x |
| 10 variables | 15.2 us | 71.9 us | 4.7x |
| 20 variables | 22.8 us | 469.8 us | 20.6x |
Dual computes the full gradient in a single forward pass but carries a sparse gradient vector that grows with the number of variables. HyperDual uses 4 fixed doubles per element (no per-variable scaling), but needs n(n+1)/2 passes for the full Hessian. The ratio reflects this: Hessians are roughly O(n²) more expensive than gradients.
Test
pytest tests/ -v
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 fastdual-0.3.1.tar.gz.
File metadata
- Download URL: fastdual-0.3.1.tar.gz
- Upload date:
- Size: 61.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 |
a6f39a4bef7599f4ca4f18d3bef43e9d29116d7dba5ecef4281df487ad7e116a
|
|
| MD5 |
479ded9e81168048e6c9ab629db29863
|
|
| BLAKE2b-256 |
aac190def011cca8a5dc0a8c4abce7e474fef08a0a7f76c1bbebeddfc3171539
|
Provenance
The following attestation bundles were made for fastdual-0.3.1.tar.gz:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1.tar.gz -
Subject digest:
a6f39a4bef7599f4ca4f18d3bef43e9d29116d7dba5ecef4281df487ad7e116a - Sigstore transparency entry: 1065632794
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file fastdual-0.3.1-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: fastdual-0.3.1-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 64.9 kB
- 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 |
b7c7c5dc8e43a8ffc126ade6558a795147dcf5250d84bd1e0b4294cd0872b965
|
|
| MD5 |
b68eba20678355fff0bc78ddb198d25e
|
|
| BLAKE2b-256 |
e2645a2969043de571b162f0dcaa915913fbcf2f1b3e843dc0b5ab1f617df7cc
|
Provenance
The following attestation bundles were made for fastdual-0.3.1-cp313-cp313-win_amd64.whl:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1-cp313-cp313-win_amd64.whl -
Subject digest:
b7c7c5dc8e43a8ffc126ade6558a795147dcf5250d84bd1e0b4294cd0872b965 - Sigstore transparency entry: 1065633225
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file fastdual-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: fastdual-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 174.2 kB
- 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 |
843bad886c431ec8b2f77a71f2937e694f1652032b273c1bba35a35cf316fbae
|
|
| MD5 |
03d9f740ea194ff68cd68fc949056fde
|
|
| BLAKE2b-256 |
a17d066642461a84da48197f4136b022c2f09d335a303c471f76885fff13afe2
|
Provenance
The following attestation bundles were made for fastdual-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
843bad886c431ec8b2f77a71f2937e694f1652032b273c1bba35a35cf316fbae - Sigstore transparency entry: 1065633127
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file fastdual-0.3.1-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: fastdual-0.3.1-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 59.8 kB
- 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 |
4b306ced60ae822967cf5dc8b06c063ac1a179e5c7b0d3579feccdb771b3c73b
|
|
| MD5 |
c00753f029b2989a2971a55444e090d8
|
|
| BLAKE2b-256 |
b1e056cdd9db8c552d644accbf58dc23f1ab233e23c147d8b674b3fd21281021
|
Provenance
The following attestation bundles were made for fastdual-0.3.1-cp313-cp313-macosx_11_0_arm64.whl:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1-cp313-cp313-macosx_11_0_arm64.whl -
Subject digest:
4b306ced60ae822967cf5dc8b06c063ac1a179e5c7b0d3579feccdb771b3c73b - Sigstore transparency entry: 1065633492
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file fastdual-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl.
File metadata
- Download URL: fastdual-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl
- Upload date:
- Size: 61.4 kB
- Tags: CPython 3.13, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64f27c213ce30a53b4bffca515a1e840796c585bf5ecbf47e8856fbd32ca50cc
|
|
| MD5 |
5858d29f78e42988afb7eca2034e02f4
|
|
| BLAKE2b-256 |
d66c6e198b585f93a4590415b7441e5ee1aa1b200eeb4df71c8d424726429581
|
Provenance
The following attestation bundles were made for fastdual-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl -
Subject digest:
64f27c213ce30a53b4bffca515a1e840796c585bf5ecbf47e8856fbd32ca50cc - Sigstore transparency entry: 1065633067
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file fastdual-0.3.1-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: fastdual-0.3.1-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 64.9 kB
- 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 |
ab4237a94219539aea488c7eaf1c90345afb1010124162c8d39661554c0169d9
|
|
| MD5 |
bd361d7cf439a31173129ebee9af44e0
|
|
| BLAKE2b-256 |
38a6b4f15a7bea4b296e0588a1aee340438ad3b13ace748a7892bec0b86f53e5
|
Provenance
The following attestation bundles were made for fastdual-0.3.1-cp312-cp312-win_amd64.whl:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1-cp312-cp312-win_amd64.whl -
Subject digest:
ab4237a94219539aea488c7eaf1c90345afb1010124162c8d39661554c0169d9 - Sigstore transparency entry: 1065633344
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file fastdual-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: fastdual-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 174.3 kB
- 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 |
33fce6d28a5e99903ecfd8b42d342690ddfd2c9fbeef661fcc4ccdcf4a872d0f
|
|
| MD5 |
c7c95138bf861b0206adb924cc902482
|
|
| BLAKE2b-256 |
f327761e61f50e1fd80392b841acd95a39ffd37517e50d6fc83afacc36c111ea
|
Provenance
The following attestation bundles were made for fastdual-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
33fce6d28a5e99903ecfd8b42d342690ddfd2c9fbeef661fcc4ccdcf4a872d0f - Sigstore transparency entry: 1065632906
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file fastdual-0.3.1-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: fastdual-0.3.1-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 59.8 kB
- 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 |
924011733feec452d7a64629c98ba51119e358baeca6a814da995d85d9979df5
|
|
| MD5 |
0b82da0e7fdb13f3ffbfce7b270ca37f
|
|
| BLAKE2b-256 |
4914b832c4ead59121b8cbb5816b0b655674e8c91a9a50c01b1c10abf12d902f
|
Provenance
The following attestation bundles were made for fastdual-0.3.1-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
924011733feec452d7a64629c98ba51119e358baeca6a814da995d85d9979df5 - Sigstore transparency entry: 1065632970
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file fastdual-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl.
File metadata
- Download URL: fastdual-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl
- Upload date:
- Size: 61.4 kB
- Tags: CPython 3.12, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4121c20f6b9d815e2d3489f87139749398fd6843788c22589621289da16658b2
|
|
| MD5 |
ec4eaee0bb10090bd9867a480175b406
|
|
| BLAKE2b-256 |
a56f08714521d7eda3b9d206355db3b462911a230876794389c010e88d4dd42e
|
Provenance
The following attestation bundles were made for fastdual-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl -
Subject digest:
4121c20f6b9d815e2d3489f87139749398fd6843788c22589621289da16658b2 - Sigstore transparency entry: 1065633401
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file fastdual-0.3.1-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: fastdual-0.3.1-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 64.6 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29bd00ea1e963e2f5d57942fdd8af4be929420d41ea846a76a8df4489a33bcb1
|
|
| MD5 |
050166bdb9387bd96d15d43a56b84c4c
|
|
| BLAKE2b-256 |
ed6e6cc01e20eb6a6727e7eb8710284f3b9c4f83bbbcfb7302a61b3011648a76
|
Provenance
The following attestation bundles were made for fastdual-0.3.1-cp311-cp311-win_amd64.whl:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1-cp311-cp311-win_amd64.whl -
Subject digest:
29bd00ea1e963e2f5d57942fdd8af4be929420d41ea846a76a8df4489a33bcb1 - Sigstore transparency entry: 1065633173
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file fastdual-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: fastdual-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 169.8 kB
- Tags: CPython 3.11, 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 |
1057ef2a4f692edd0b02b87ec91bb3249fa450367a6eefd9045958330f5aac30
|
|
| MD5 |
19f715704ce6ba49c7bbeaa30c20f8f2
|
|
| BLAKE2b-256 |
3022b1f9d719b8232011325dbcbdcfba8ec105aa53a861ca2ef0be4da0c4abb9
|
Provenance
The following attestation bundles were made for fastdual-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
1057ef2a4f692edd0b02b87ec91bb3249fa450367a6eefd9045958330f5aac30 - Sigstore transparency entry: 1065633027
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file fastdual-0.3.1-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: fastdual-0.3.1-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 59.7 kB
- Tags: CPython 3.11, 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 |
0af4080a2cf3469c1f927b292c350f3ea78d7ee4a31ac6d28d3826198fcc9793
|
|
| MD5 |
118990959edb4f21055f2d65d11c73c2
|
|
| BLAKE2b-256 |
9196e0fb21807ec7966a267b74ca5a42e6fe8c27e04115e0858ec24f0e998206
|
Provenance
The following attestation bundles were made for fastdual-0.3.1-cp311-cp311-macosx_11_0_arm64.whl:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
0af4080a2cf3469c1f927b292c350f3ea78d7ee4a31ac6d28d3826198fcc9793 - Sigstore transparency entry: 1065633451
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file fastdual-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl.
File metadata
- Download URL: fastdual-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl
- Upload date:
- Size: 61.2 kB
- Tags: CPython 3.11, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d9b3fb61e4d5d500873911c49798a2ad1d8c4657b18d4f23675f9edcd1f0192
|
|
| MD5 |
4b4a84690127f841aaf6f58dce05ee4f
|
|
| BLAKE2b-256 |
11e6e0d1a6ca2cde1c2e53850f2221682abfff4d6dc578194e5a3832a381976e
|
Provenance
The following attestation bundles were made for fastdual-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl -
Subject digest:
5d9b3fb61e4d5d500873911c49798a2ad1d8c4657b18d4f23675f9edcd1f0192 - Sigstore transparency entry: 1065632856
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file fastdual-0.3.1-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: fastdual-0.3.1-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 64.6 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9610d16b2472239cdc045b6a52cdd29b99db5803b1def61641ee28680b767ffb
|
|
| MD5 |
5d479f28490b2923aaaacf184f983e8d
|
|
| BLAKE2b-256 |
8557c25d5c5b63eff4afb87b6f136faaf00e8da98f72163564ae6703d842d8aa
|
Provenance
The following attestation bundles were made for fastdual-0.3.1-cp310-cp310-win_amd64.whl:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1-cp310-cp310-win_amd64.whl -
Subject digest:
9610d16b2472239cdc045b6a52cdd29b99db5803b1def61641ee28680b767ffb - Sigstore transparency entry: 1065633292
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file fastdual-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: fastdual-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 167.6 kB
- Tags: CPython 3.10, 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 |
b75dae1999e85a7130968fd1ac16ea48ee7662564dca810d9d86dd5bb117b694
|
|
| MD5 |
5f88806a8e269c10dc7b5845c956217c
|
|
| BLAKE2b-256 |
9f7d0e6f3f6ae49608b8646c42fc51f510b28520609241a6b92e6bbc9173f54d
|
Provenance
The following attestation bundles were made for fastdual-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
b75dae1999e85a7130968fd1ac16ea48ee7662564dca810d9d86dd5bb117b694 - Sigstore transparency entry: 1065633101
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file fastdual-0.3.1-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: fastdual-0.3.1-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 59.8 kB
- Tags: CPython 3.10, 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 |
879830b44621a8e0e95b085b90bf11a1add692b3beaedef34255b7eaf4d09635
|
|
| MD5 |
def347dc74fb292b87e8b9220ac91949
|
|
| BLAKE2b-256 |
90c8a2a511a8a3c490c72b3ddb6c6c7d0b51fa8b3dca26a2bb49f0d0c4d9079d
|
Provenance
The following attestation bundles were made for fastdual-0.3.1-cp310-cp310-macosx_11_0_arm64.whl:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1-cp310-cp310-macosx_11_0_arm64.whl -
Subject digest:
879830b44621a8e0e95b085b90bf11a1add692b3beaedef34255b7eaf4d09635 - Sigstore transparency entry: 1065633531
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file fastdual-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl.
File metadata
- Download URL: fastdual-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl
- Upload date:
- Size: 61.3 kB
- Tags: CPython 3.10, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91c5535a08f6f6d3e5188286b182a292441c5121fb3e0cb7507e0d3cb217b684
|
|
| MD5 |
4d4be7363174e96670345bd73db10cd3
|
|
| BLAKE2b-256 |
4cad152a8483d94d0a805a37b0612faa55461596bc9e8d0b8c56f625106c7a2a
|
Provenance
The following attestation bundles were made for fastdual-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl:
Publisher:
publish.yml on milanofthe/fastdual
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fastdual-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl -
Subject digest:
91c5535a08f6f6d3e5188286b182a292441c5121fb3e0cb7507e0d3cb217b684 - Sigstore transparency entry: 1065633262
- Sigstore integration time:
-
Permalink:
milanofthe/fastdual@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/milanofthe
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@70a3ea5be24f77e7a1fd5ba22e7a3060a5e3e9ae -
Trigger Event:
release
-
Statement type: