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
Metadata
Release files for fastdual 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fastdual-0.3.1.tar.gz | 61.2 kB | Details |
Built distributions (wheels)
Total release size: 1.5 MB
Release files / fastdual-0.3.1.tar.gz
| Download URL | fastdual-0.3.1.tar.gz |
|---|---|
| Size | 61.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a6f39a4bef7599f4ca4f18d3bef43e9d29116d7dba5ecef4281df487ad7e116a
|
|
BLAKE2b-256 checksum How to use checksums |
aac190def011cca8a5dc0a8c4abce7e474fef08a0a7f76c1bbebeddfc3171539
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / fastdual-0.3.1-cp313-cp313-win_amd64.whl
| Download URL | fastdual-0.3.1-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 64.9 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b7c7c5dc8e43a8ffc126ade6558a795147dcf5250d84bd1e0b4294cd0872b965
|
|
BLAKE2b-256 checksum How to use checksums |
e2645a2969043de571b162f0dcaa915913fbcf2f1b3e843dc0b5ab1f617df7cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / fastdual-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | fastdual-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 174.2 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
843bad886c431ec8b2f77a71f2937e694f1652032b273c1bba35a35cf316fbae
|
|
BLAKE2b-256 checksum How to use checksums |
a17d066642461a84da48197f4136b022c2f09d335a303c471f76885fff13afe2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / fastdual-0.3.1-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | fastdual-0.3.1-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 59.8 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4b306ced60ae822967cf5dc8b06c063ac1a179e5c7b0d3579feccdb771b3c73b
|
|
BLAKE2b-256 checksum How to use checksums |
b1e056cdd9db8c552d644accbf58dc23f1ab233e23c147d8b674b3fd21281021
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / fastdual-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl
| Download URL | fastdual-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl |
|---|---|
| Size | 61.4 kB |
| Tags | CPython 3.13 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
64f27c213ce30a53b4bffca515a1e840796c585bf5ecbf47e8856fbd32ca50cc
|
|
BLAKE2b-256 checksum How to use checksums |
d66c6e198b585f93a4590415b7441e5ee1aa1b200eeb4df71c8d424726429581
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / fastdual-0.3.1-cp312-cp312-win_amd64.whl
| Download URL | fastdual-0.3.1-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 64.9 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
ab4237a94219539aea488c7eaf1c90345afb1010124162c8d39661554c0169d9
|
|
BLAKE2b-256 checksum How to use checksums |
38a6b4f15a7bea4b296e0588a1aee340438ad3b13ace748a7892bec0b86f53e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / fastdual-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | fastdual-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 174.3 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
33fce6d28a5e99903ecfd8b42d342690ddfd2c9fbeef661fcc4ccdcf4a872d0f
|
|
BLAKE2b-256 checksum How to use checksums |
f327761e61f50e1fd80392b841acd95a39ffd37517e50d6fc83afacc36c111ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / fastdual-0.3.1-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | fastdual-0.3.1-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 59.8 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
924011733feec452d7a64629c98ba51119e358baeca6a814da995d85d9979df5
|
|
BLAKE2b-256 checksum How to use checksums |
4914b832c4ead59121b8cbb5816b0b655674e8c91a9a50c01b1c10abf12d902f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / fastdual-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl
| Download URL | fastdual-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl |
|---|---|
| Size | 61.4 kB |
| Tags | CPython 3.12 macOS 10.13+ x86-64 |
|
SHA-256 checksum How to use checksums |
4121c20f6b9d815e2d3489f87139749398fd6843788c22589621289da16658b2
|
|
BLAKE2b-256 checksum How to use checksums |
a56f08714521d7eda3b9d206355db3b462911a230876794389c010e88d4dd42e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / fastdual-0.3.1-cp311-cp311-win_amd64.whl
| Download URL | fastdual-0.3.1-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 64.6 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
29bd00ea1e963e2f5d57942fdd8af4be929420d41ea846a76a8df4489a33bcb1
|
|
BLAKE2b-256 checksum How to use checksums |
ed6e6cc01e20eb6a6727e7eb8710284f3b9c4f83bbbcfb7302a61b3011648a76
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / fastdual-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | fastdual-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 169.8 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
1057ef2a4f692edd0b02b87ec91bb3249fa450367a6eefd9045958330f5aac30
|
|
BLAKE2b-256 checksum How to use checksums |
3022b1f9d719b8232011325dbcbdcfba8ec105aa53a861ca2ef0be4da0c4abb9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / fastdual-0.3.1-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | fastdual-0.3.1-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 59.7 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
0af4080a2cf3469c1f927b292c350f3ea78d7ee4a31ac6d28d3826198fcc9793
|
|
BLAKE2b-256 checksum How to use checksums |
9196e0fb21807ec7966a267b74ca5a42e6fe8c27e04115e0858ec24f0e998206
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / fastdual-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl
| Download URL | fastdual-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl |
|---|---|
| Size | 61.2 kB |
| Tags | CPython 3.11 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
5d9b3fb61e4d5d500873911c49798a2ad1d8c4657b18d4f23675f9edcd1f0192
|
|
BLAKE2b-256 checksum How to use checksums |
11e6e0d1a6ca2cde1c2e53850f2221682abfff4d6dc578194e5a3832a381976e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / fastdual-0.3.1-cp310-cp310-win_amd64.whl
| Download URL | fastdual-0.3.1-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 64.6 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
9610d16b2472239cdc045b6a52cdd29b99db5803b1def61641ee28680b767ffb
|
|
BLAKE2b-256 checksum How to use checksums |
8557c25d5c5b63eff4afb87b6f136faaf00e8da98f72163564ae6703d842d8aa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / fastdual-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | fastdual-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 167.6 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
b75dae1999e85a7130968fd1ac16ea48ee7662564dca810d9d86dd5bb117b694
|
|
BLAKE2b-256 checksum How to use checksums |
9f7d0e6f3f6ae49608b8646c42fc51f510b28520609241a6b92e6bbc9173f54d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / fastdual-0.3.1-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | fastdual-0.3.1-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 59.8 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
879830b44621a8e0e95b085b90bf11a1add692b3beaedef34255b7eaf4d09635
|
|
BLAKE2b-256 checksum How to use checksums |
90c8a2a511a8a3c490c72b3ddb6c6c7d0b51fa8b3dca26a2bb49f0d0c4d9079d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency logRelease files / fastdual-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl
| Download URL | fastdual-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl |
|---|---|
| Size | 61.3 kB |
| Tags | CPython 3.10 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
91c5535a08f6f6d3e5188286b182a292441c5121fb3e0cb7507e0d3cb217b684
|
|
BLAKE2b-256 checksum How to use checksums |
4cad152a8483d94d0a805a37b0612faa55461596bc9e8d0b8c56f625106c7a2a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.
Transparency log