Skip to main content

aadc-ode

ODE integration with exact adjoints on aadc-ng.

Two families of solvers:

C++ kernel replay (on tape) — the RHS f(y, p) is recorded once into its own tape, and each step records a compute block that replays it.

Solver Method For
bdf_solve Semi-implicit Euler, frozen Jacobian Stiff systems
rk4_solve Classical Runge-Kutta 4th order Non-stiff, fixed step

Python discrete adjoint — adaptive integration forward, then a backward sweep computes exact dJ/dp via vector-Jacobian products from the AAD kernel.

Solver Method For
adaptive_rk45 Dormand-Prince 4(5), adaptive step Non-stiff, high accuracy
fixed_rk4 Classical RK4, fixed step Non-stiff
discrete_adjoint Backward sweep (one VJP per stage) Exact dJ/dp for ERK

What "exact" means here, because it is the one place a knowledgeable user could be misled: exact for the discrete map with the recorded step sequence. The accepted steps h_list are frozen and the adaptive controller is not differentiated — that is the semantics of the cited paper, not an approximation introduced by this port. It is also why the backward sweep needs the forward solve's time grid and cannot invent one:

t_list, x_list, h_list, k_stages = aadc_ode.adaptive_rk45(f, x0, (t0, tf))
dJdp = aadc_ode.discrete_adjoint(aad_rhs, x_list, h_list, k_stages,
                                 aadc_ode.DORMAND_PRINCE_45, p,
                                 dJdx_T=dJdx_T,
                                 t_list=t_list)     # <- pass it

Pass t_list (or t0= if that is all you have). Omitting both reconstructs the stage times from 0.0, which is correct only for an autonomous RHS or a solve that started at t=0 — and wrong, silently, otherwise. It now warns; t0=0.0 is how an autonomous RHS says so and silences it.

AadRhs records the RHS once and replays that one recording at every stage of every step, so a plain if x[0] > 0: inside the RHS freezes its branch at the recording point and uses it at states arbitrarily far away — wrong values and flipped derivatives. Recording therefore raises if the tape reports any active-to-passive conversion; use iif / a masked blend, or allow_passive=True if the branch really is constant over the whole trajectory.

The discrete adjoint is the method from:

R. Martins, E. Lakshtanov. A C++ implementation of the discrete adjoint sensitivity analysis method for explicit adaptive Runge-Kutta methods enabled by automatic adjoint differentiation and SIMD vectorization. Applied Mathematics and Computation, 2025. arXiv:2410.01911

src/bdf.{hpp,cpp}            C++ library: KernelBlock, LUSolveBlock, drivers
src/bdf_selftest.cpp         native checks, incl. the two Python cannot express
bindings/aadcbdf_pybind.cpp  ONE type_caster — where gradients are won or lost
packaging/aadc_ode/          wheel: C++ extension + Python solvers (rk, adjoint)
tests/                       every assertion is on a DERIVATIVE
ci/build.sh · ci/build.ps1   compile + link (no code generation step)

Build and test

. ci/pins.env && SDK_VER="$SDK_VERSION" SDK_SRC_VERSION="$SDK_SRC_VERSION" \
  CORE_WHEEL_VERSION="$CORE_WHEEL_VERSION" bash ci/build.sh python3.10 python3.11 python3.12 python3.13 python3.14
pip install dist/aadc_ode-*.whl
pytest tests/ -q

A requested interpreter that is not installed is a fatal error (matching ci/build.ps1). For a local run that should just build whatever is present, set STRICT=0 to skip missing interpreters instead.

Windows: powershell -File ci\build.ps1 -Pythons 3.10,3.11,3.12,3.13,3.14, from inside an MSVC environment. CI covers linux-x86_64, linux-aarch64, macos-arm64 and windows-x64.

Use

import aadc, aadc_ode

lam = [1.0, 10.0, 100.0, 1000.0]

# 1. Record the RHS once, in ordinary Python.
k = aadc_ode.Kernel()
states, _ = k.begin(n_states=4)
k.end([-lam[i] * states[i] for i in range(4)])

# 2. Record the loop onto an outer tape. 100 steps -> 100 blocks, ONE kernel.
f = aadc.Functions()
f.start_recording()
y0   = [aadc.idouble(1.0) for _ in range(4)]
args = [v.mark_as_input() for v in y0]
xT   = aadc_ode.bdf_solve(k, y0, dt=1e-3, n_steps=100, jac_lag=10)
cost = sum((x * x for x in xT[1:]), xT[0] * xT[0])
out  = cost.mark_as_output()
f.stop_recording()

# 3. Replay and differentiate, at any point — not just the recording point.
ws = f.create_workspace()
for a in args:
    ws.set_val(a, 1.0)
ws.forward()
ws.set_diff(out, 1.0)
ws.reverse()
print([ws.diff(a) for a in args])

begin hands back copies of the library-owned input variables, and that direction is the whole design. An aadc-ng tape slot is keyed by the address of its variable, and this binding marshals Real by value — so a mark_states(y) taking your list would mark throwaway copies while you kept using the originals. Zero gradients, nothing raised. With begin, your expressions sit downstream of the real inputs and the adjoint reaches them.

Design notes

Four properties that affect how you can use this package, rather than how it came to be:

Lane-generic blocks. The compute blocks are ComputeBlockT, so a tape containing them runs on a vector workspace as well as a scalar one. The avx2_lanes self test drives four AVX2 lanes with four different initial conditions and requires them to reproduce four scalar runs bitwise:

PASS avx2_lanes    4 lanes vs 4 scalar runs, worst |delta| = 0.000e+00

One reverse sweep per step, not one per state. A kernel block seeds every output with the outer adjoint and reverses once, computing x̄ += Jᵀȳ directly instead of assembling a full Jacobian. On a 27-state model that is one sweep per step rather than 27.

Thread-safe replay. Each thread gets its own kernel replay workspace. The concurrent_replay self test runs eight threads against one tape and requires bitwise agreement with the sequential run.

The frozen Jacobian is an option, and it is an approximation. The semi-implicit step's cached 1 - dt·J_ii is a record-time constant: replaying with bumped inputs reuses the Jacobian captured while recording. That is the standard semi-implicit trade — the Jacobian is a preconditioner, not part of the answer — but it is an approximation to the derivative of the scheme. freeze_jacobian=False turns it off; jac_lag=1 refreshes it every step.

What is not differentiated

luSolve takes the LU factorisation and pivot vector as passive data and differentiates only the right-hand side. That is the right split for a BDF step — the iteration matrix is a preconditioner rebuilt from the cached Jacobian, not a differentiable input — but it is a real limitation for anyone wanting dx/dA. Adding it means differentiating the factorisation itself (Ā = -x̄ xᵀ and friends), which is a separate piece of work.

Testing philosophy

Every test asserts a derivative. A binding that passivates Real, a second libaadc-ng image, or a block whose reverse never reaches the outer tape all produce values correct to the last digit and gradients of exactly zero — so a value check proves nothing.

The stiff adjoints are checked against a closed form, not finite differences. By T = 0.1 the λ=1000 component has decayed to ~1e-60, and a central difference of a quantity that small is pure cancellation noise; FD gets that adjoint wrong by 0.15%, which would either fail a correct implementation or force a tolerance loose enough to accept a wrong one.

The avx2_lanes and concurrent_replay checks are native C++ and bound as aadc_ode.selftest(). They have to be: aadc_ng's own Python external-function block is scalar-only and its callbacks are Jacobian-supplying, so a Python-only suite could not exercise either — and those are precisely the capabilities this package adds.

Packaging

Per-interpreter (pybind11 is not abi3), on top of the abi3 aadc_ng, bridged by the _aadc_ng._C_API capsule. This wheel ships no libaadc-ng: it links the copy inside the installed aadc_ng wheel and finds it again by RPATH ($ORIGIN/../aadc_ng, @loader_path/../aadc_ng, and on Windows by import order — delvewheel is deliberately not run).

Recording state is thread-local inside libaadc-ng, so a second image gives the extension and the aadc module private recording contexts. For this package that failure would be total: every entry point either opens a recording or records a block onto one someone else opened. test_exactly_one_library_image asserts it directly.

Unlike aadc-example-pybind11 this build does not define AADCNG_ALLOW_TO_PASSIVE_BOOL. That macro enables active-to-passive bool conversions across the whole translation unit, and a package whose entire purpose is keeping an exact adjoint through a stiff solver should not switch on implicit passivation to compile itself. bdf.hpp includes only <aadcNG/idoubleNG.h> — never the <aadcNG/aadcNG.h> umbrella — which keeps the deleted iboolNG::operator bool() doing its job.

Licence and support

aadc-ode is distributed under the MatLogica EULA and depends on the aadc core, which runs in Community Edition unless licensed — non-commercial and academic use only. The full licence and the third-party notices travel inside the wheel, under aadc_ode-<version>.dist-info/licenses/.

For commercial licensing, advanced features or support: matlogica.com · info@matlogica.com

Release files for aadc-ode 0.6.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for aadc-ode 0.6.3
File
aadc_ode-0.6.3-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
aadc_ode-0.6.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
aadc_ode-0.6.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
aadc_ode-0.6.3-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
aadc_ode-0.6.3-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
aadc_ode-0.6.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
aadc_ode-0.6.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
aadc_ode-0.6.3-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
aadc_ode-0.6.3-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
aadc_ode-0.6.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
aadc_ode-0.6.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
aadc_ode-0.6.3-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
aadc_ode-0.6.3-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
aadc_ode-0.6.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
aadc_ode-0.6.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
aadc_ode-0.6.3-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
aadc_ode-0.6.3-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
aadc_ode-0.6.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
aadc_ode-0.6.3-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
aadc_ode-0.6.3-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 3.9 MB

Release files / aadc_ode-0.6.3-cp314-cp314-win_amd64.whl

Download URL aadc_ode-0.6.3-cp314-cp314-win_amd64.whl
Size 169.7 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
03a06dc5f58639481ece4a08032d122b390442a18a1e02dd7f6f58084be39084
BLAKE2b-256 checksum
How to use checksums
73200ef7ba39299c90ffdadbd22d76d50c4f29f2103c1ed5794f34040612ab31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL aadc_ode-0.6.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 219.9 kB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
12714a0a966e50c1cb39bd6d35fa530ec20e00d18d417c4dc138aa03212060e0
BLAKE2b-256 checksum
How to use checksums
7d99fb2e11dac84bc03a8c930d81b9056cb384d6d772ca04e848b44b988724f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL aadc_ode-0.6.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 208.0 kB
Tags CPython 3.14 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
3d1a61107e125aed3c5f3d3b1d4d514241a5f87973047afc45b063f406205133
BLAKE2b-256 checksum
How to use checksums
bb01baa3b82618777597f8a81beaccb8b956556c823bbd37da5d4cf819bac391
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp314-cp314-macosx_11_0_arm64.whl

Download URL aadc_ode-0.6.3-cp314-cp314-macosx_11_0_arm64.whl
Size 179.9 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b2a2355ea19384c7271822a342fbe968a98ad29f626ef9453d07725c45defbe9
BLAKE2b-256 checksum
How to use checksums
52a15505fd3fd696a32dd55a0e69a38664787bb17e16631c8b27ed44f54a3ec6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp313-cp313-win_amd64.whl

Download URL aadc_ode-0.6.3-cp313-cp313-win_amd64.whl
Size 165.8 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
4fcb4b72a1a2415573123317147df3b62fb2d04e1b589ccac634e3e198ca7d70
BLAKE2b-256 checksum
How to use checksums
5143e8a950dec7a9f42f64ffd99011889d78c207d1a7189eda7a10feb5f4df9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL aadc_ode-0.6.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 219.6 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
87c5b772b4d2785001bd37c29d1298aa121bc9069b69c89add9ee7793f3f4424
BLAKE2b-256 checksum
How to use checksums
61bd2b406aab180c2671762abb2587d16e1dd00df30012812e4daec285e5ed4a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL aadc_ode-0.6.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 207.3 kB
Tags CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
391f49fb1ab7472faf8ff1ed7e96edcfc3e9ec2547dce4ca5abc95c813d4a759
BLAKE2b-256 checksum
How to use checksums
db9ac166cbbc1eb614519c33e1079908157718975645ffff864ad2834a3c3c77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp313-cp313-macosx_11_0_arm64.whl

Download URL aadc_ode-0.6.3-cp313-cp313-macosx_11_0_arm64.whl
Size 179.6 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ba91ee9ef8d2c071c82ff9fb694b9af9843c65b0ee884ac35989b76c3ee5217b
BLAKE2b-256 checksum
How to use checksums
b0a04bcefec8623b00b0cfcabd321ebae106d8dfabb0f2012d1869342f6e0ad8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp312-cp312-win_amd64.whl

Download URL aadc_ode-0.6.3-cp312-cp312-win_amd64.whl
Size 165.8 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
7ba412eea501a6d93c320c3f4184db978c9a0f33bb4e6e6353c8a8f20dfa5076
BLAKE2b-256 checksum
How to use checksums
58517d28a5a3572800a9e6c39a2f6338bf463867a985c62b8c3c2d6f84e1b78b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL aadc_ode-0.6.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 219.5 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b84b7abbd97e137f9cd76711a7ad9c2fd7af3fc6817c0b542c016f99a94c661d
BLAKE2b-256 checksum
How to use checksums
5a00f1e155f6e9f0b3c4a44c706faff4da442795f862f9b3c2f28e079610ae9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL aadc_ode-0.6.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 207.2 kB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
61631e16e42cc349efdcfafb6bac12a88f4ec9241bd5342b736ec491ecc66488
BLAKE2b-256 checksum
How to use checksums
fd18709bfe1fcddd0572529d4daa50aae8c9ab24b8440acbdc004c6bf992fb56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp312-cp312-macosx_11_0_arm64.whl

Download URL aadc_ode-0.6.3-cp312-cp312-macosx_11_0_arm64.whl
Size 179.5 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1c0d8b0f318cbee1260ec1a0af4f2cef90c9df00bc760ad72ca8e9ee19639910
BLAKE2b-256 checksum
How to use checksums
64fd442aecf9660d647ff2958c4d21e04a6b60e8a5141d57163516b47076ce1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp311-cp311-win_amd64.whl

Download URL aadc_ode-0.6.3-cp311-cp311-win_amd64.whl
Size 165.1 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
8bf4f036a4f339f78408bbd897abdfc2f2e0bf4e535c87abbf3d3a8d0d4c1e7b
BLAKE2b-256 checksum
How to use checksums
b7a30bcc91d83ab5a0697c41e4d29632b3ddb704186ab34cb0370fa999e8a511
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL aadc_ode-0.6.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 218.4 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
8cd531a5625f812b52e36edd22b289a05713d336fbd39b23e730f94850ff2538
BLAKE2b-256 checksum
How to use checksums
bea69b5a9e7b62b4927e2e2bcff549d1d001fb70655bf28b21b90e44dc02ebb8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL aadc_ode-0.6.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 208.2 kB
Tags CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
424e455e2002025ef6730a792fa5f94ecfb0437ba9850f974adfee1eeb3cc6ff
BLAKE2b-256 checksum
How to use checksums
222a451365fb6f822a965b9b9c66c34fcc2999a5a4f51eb9db85ec47ffd68579
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp311-cp311-macosx_11_0_arm64.whl

Download URL aadc_ode-0.6.3-cp311-cp311-macosx_11_0_arm64.whl
Size 178.8 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
07686ce062d3e07229e1e5b9f975f41da4e435b9fa9c542de39929270003314e
BLAKE2b-256 checksum
How to use checksums
52d9961f33e69d7aabf56ac3ee91d02abe8bd279af3d4e9677239f704afc5f1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp310-cp310-win_amd64.whl

Download URL aadc_ode-0.6.3-cp310-cp310-win_amd64.whl
Size 164.4 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
88e72b5f0b2ace36ac8e5e9a7de9acbd9458b45c46052becbf69c5dabb7488fc
BLAKE2b-256 checksum
How to use checksums
7c1d15be0ffb9f08b0e95dd00a1c706ac3b97c2b9a2c42a575a1d2489995148e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL aadc_ode-0.6.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 216.7 kB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e7607ed87b323eea3b4f6db48c311a57021f1a3b56288c503a24f1dc40ca2b92
BLAKE2b-256 checksum
How to use checksums
95404401929a4f970b12fdc7ccfe8d627477b9f84a691d7544ce91b866c7099c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL aadc_ode-0.6.3-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 206.7 kB
Tags CPython 3.10 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
10dab165add465a397a1839bb7f4df8adf30383489149561219cb321071a3af7
BLAKE2b-256 checksum
How to use checksums
dbeb9b0608c29f53dccb1401a7c8f645fcf0622e01706cd7189adb16b0a59890
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release files / aadc_ode-0.6.3-cp310-cp310-macosx_11_0_arm64.whl

Download URL aadc_ode-0.6.3-cp310-cp310-macosx_11_0_arm64.whl
Size 177.5 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
61856cacecff04adc66b47ae4b374dfa3202d7377013d2acb27a8f522c81f0d3
BLAKE2b-256 checksum
How to use checksums
b7f5693ff468dfcc3cf59770ef4aaaeffe665fa6f15edf0819d22ded34441404
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.2

Release history Release notifications | RSS feed

This release

0.6.3 This release

20 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page