eagle
Runs kernels on CPU and GPU, with precise control. Part of the RAPTOR family.
eagle: run a million per-sample kernels on the GPU or the CPU
Each sample stops when it is done. eagle records the loop on the GPU once, replays it, and skips the samples that already finished.
aether · hawk · eagle · raptor · the family
eagle is the execution layer of the RAPTOR family: it captures and replays kernels as CUDA graphs to keep work efficient on the GPU, and connects them to the code you already have. See where RAPTOR fits for the full four-part story.
import cupy as cp
import eagle
import hawk
from hawk import Mutable, Param, Scalar, Terminated
@hawk.kernel
def oscillator(omega: Scalar, t_end: Param, dt: Param, terminated: Terminated,
x: Mutable[Scalar], v: Mutable[Scalar], t: Mutable[Scalar]):
x0, v0 = x, v
x = x0 + dt * v0
v = v0 - dt * omega * omega * x0
t += dt
terminated = t >= t_end
n = 1_000_000
result = eagle.simulate(
oscillator,
omega=cp.linspace(1.0, 3.0, n), t_end=1.0, dt=1e-3,
x=cp.ones(n), v=cp.zeros(n), t=cp.zeros(n),
max_steps=10_000,
)
print(result.status, result.steps, result.x[:3])
# finished 1000 [0.54057281 0.54057112 0.54056944]
# (steps counts whole check intervals, so it varies with the launch strategy eagle picks; x does not)
NumPy arrays in, and the same call runs on CPU threads. Quickstart · Install · Performance · C++ API
| 156 ms | 3.9×–47× faster | 3.8×–5.2× less GPU memory |
|---|---|---|
| 1,000,000 RK4 oscillators, each stopping at its own step, up to 1000 steps | than NVIDIA Warp (3.9×), JAX (8.7×), CuPy and PyTorch (47×) — 1,000,000 samples finishing at different times, up to 1000 steps | than CuPy and PyTorch — a million samples in 50 MiB, 1.31× the bare minimum state (CuPy 5.1×, PyTorch 6.9×) |
Quadro P2000 (development GPU). NVIDIA Warp's per-thread kernel is fastest among the GPU arms in 1 of 12 RK4 cells
(N = 1,000,000, every sample running all 1000 steps: 693 ms vs 699 ms) and ties hawk + eagle at
N = 10,000 on the same batch (7.22 ms each). eagle.simulate's wall time is within 1% of the hand-tuned
version in every cell this card runs but N = 1,000 and 10,000 spread-100; memory at a million spread samples is 50 MiB for eagle.simulate against 64 MiB
for NVIDIA Warp. See every number, every arm.
Install
pip install "raptor-eagle[cuda12]" # or [cuda13]; add [torch] for PyTorch interop
pip install "raptor-hawk[cuda12]" # the examples below also write kernels with hawk; [cuda13] for CUDA 13
NVIDIA packages come only through the extras.
raptor-eagle[cuda12]/[cuda13]pull CuPy (cupy-cuda12x/cupy-cuda13x, with the CUDA headers CuPy compiles against);raptor-hawk[cuda12]pullscuda-bindings12,nvidia-cuda-nvrtc-cu12andnvidia-cuda-cccl-cu12, andraptor-hawk[cuda13]pullscuda-bindings13,nvidia-cuda-nvrtc13 andnvidia-cuda-cccl13 (CUDA 13's wheels have no-cu13suffix). Without an extra pip installs no NVIDIA package: you get the CPU route, or the GPU route through a CUDA setup you already have. Pick the extra matching the CUDA version your driver reports (nvidia-smi, top right).
Platforms: built and tested on Linux x86_64 only so far (CPython 3.9–3.14, including free-threaded 3.13t and 3.14t), on NVIDIA GPUs from Pascal (Quadro P2000) and Turing (Tesla T4). There are no wheels for macOS, Windows or ARM yet, and WSL2 is untested. raptor-core and aether-dsc are pure Python and install anywhere.
raptor-eagle needs Python 3.9 or newer (CPython 3.9–3.14) and an NVIDIA driver at run time; no nvcc or CUDA
toolkit. Free-threaded builds (3.13t, 3.14t) are supported as wheels but do not yet declare GIL-free support: CPython re-enables the GIL when eagle is imported and prints a RuntimeWarning, so results are correct but not run in parallel. On 3.13t the [cuda12] / [cuda13] extras do not resolve (CuPy 14 ships no 3.13t wheel), so eagle runs on the CPU route there; 3.14t has no such limit. The wheel ships GPU code for Pascal, Volta, Ampere and Hopper (sm_61/70/80/90) plus PTX for newer GPUs. It
brings raptor-core along. The C++ library (find_package(eagle CONFIG REQUIRED)) is a separate, CMake-only
install; building the Python package from source is covered under Python package below.
C++ library: build, test, install
Requirements: CMake ≥ 3.20 and a C++23 compiler (GCC ≥ 12 or Clang ≥ 16); CUDA
mode also needs a CUDA toolkit 12.6 or newer (tested with 12.6 and 13.0), whose nvcc accepts host compilers only up to
its own ceiling (GCC 13 for CUDA 12.6 — pass -DCMAKE_CUDA_HOST_COMPILER=<g++-13>
if your default is newer). aether must already be installed into PREFIX (see
aether's README); PREFIX is the install directory (inside a conda environment,
use ${CONDA_PREFIX}).
# Configure (CUDA/C++ mode, with tests)
cmake -DCMAKE_PREFIX_PATH=${PREFIX} -DEAGLE_BUILD_TESTS=ON -B build .
# Configure (pure C++ mode)
cmake -DCMAKE_PREFIX_PATH=${PREFIX} -DEAGLE_CPP_MODE=ON -DEAGLE_BUILD_TESTS=ON -B build .
# Build
cmake --build build
# Test — the same command CI runs (there is no ctest wiring)
tests/check_gate.sh cuda build/tests/eagle_tests # or: cpp, for a CPP_MODE build
# Install
cmake --install build --prefix ${PREFIX}
The gate checks both the run and the test listing against the committed name list
tests/expected_tests_<mode>.txt, so a filtered or empty run cannot pass. After adding or removing tests,
regenerate that list from your build and commit it with the test change (removals also need --allow-removals):
tests/check_gate.sh cuda build/tests/eagle_tests --remint.
Downstream projects consume it with find_package(eagle CONFIG REQUIRED) and link eagle::eagle.
Build the Python package from source
The Python package (raptor-eagle, imported as eagle) has two compiled
parts: eagle._core is plain C++ (g++) and needs no CUDA toolkit, runtime or
driver, while eagle/libeagle_cuda.so, the CUDA plugin the core loads on
first use, is built with nvcc (pass -DEAGLE_PYTHON_CUDA_PLUGIN=OFF to
build the core alone) and at run time needs only the NVIDIA driver — it
bundles no CUDA runtime. The build needs aether installed in CUDA mode
(without -DAETHER_CPP_MODE=ON) plus eagle's own headers, both in PREFIX,
and raptor (pip install raptor-core, or a clone next to this one: pip install ../raptor).
cmake -DCMAKE_PREFIX_PATH=${PREFIX} -B build-hdr . && cmake --install build-hdr --prefix ${PREFIX}
pip install raptor-core # or a clone of the raptor repository: pip install ../raptor
export CMAKE_PREFIX_PATH=${PREFIX}
# append ;-DCMAKE_CUDA_HOST_COMPILER=<g++-13> if your default compiler is newer than nvcc accepts
export SKBUILD_CMAKE_ARGS="-DCMAKE_CUDA_ARCHITECTURES=<your GPU's arch, e.g. 70>"
pip install -e ./python
pytest python/tests -m "not gpu and not interop_matrix" # drop the -m filter on a GPU machine with cupy and torch
C++ API
#include <eagle/eagle.h>
__global__ void addOne(int* buf, int n) {
int tid = threadIdx.x + blockIdx.x * blockDim.x;
if (tid < n) buf[tid] += 1;
}
// Record a launch once, replay the captured graph many times.
eagle::cuda::Stream stream;
eagle::cuda::Graph graph;
graph.stream(stream.cuda());
eagle::cuda::StreamCapturer capturer(stream.cuda());
capturer.begin();
addOne<<<1, 64, 0, stream.cuda()>>>(buf, 64);
graph.addNode(capturer.end());
eagle::cuda::Launcher launcher = graph.launcher();
launcher.launch(); // cudaGraphLaunch — no per-call kernel-config overhead
launcher.synchronize();
EAGLE — Extensible Adaptive Graph Launch Engine — is a header-only C++23/CUDA library providing a parallel-dispatch substrate for GPU batch workloads. It bundles the reusable launch machinery in one place:
- CUDA-graph capture & launch — record a stream of kernel launches once
(
StreamCapturer), assemble them into a dependency graph (Graph), and replay via an instantiatedLauncherwith microsecond-class per-launch re-tuning (setLogicalSize). - Stream primitives — RAII
Stream,Event, and host-callback wrappers. - OpenMP + SIMD host dispatch —
eagle::cpu::Hostpacket-batched launchers with masked / flag-aware variants for the pure-C++ path. - Scan / scatter / compaction —
filtering::Scanner,filtering::Slice, and the prefix-sum + scatter kernels behind stream compaction. - Reduction —
eagle::cuda::Reduction(multi-level GPU) andeagle::cpu::Reduction(cache-padded OpenMP). - PyTorch bridge — kernels plug into
loss.backward()andtorch.autograd.forward_ad, so both reverse-mode and forward-mode derivatives run through the same dual-mode engine.
Like its sibling libraries it is dual-mode: the same API compiles as CUDA or as pure C++23 (OpenMP), selected
by EAGLE_CPP_MODE. The C++ core depends only on aether; the Python package (raptor-eagle) also depends on
raptor, whose schema constants it re-exports.
Performance
eagle's committed performance card runs 15
ways of integrating a batch of damped harmonic oscillators (fixed-step RK4, float64, each sample stopping at its
own step count) from 1,000 to 1,000,000 samples: eagle.simulate (the arm above), the CUDA-graph device loop
alone, the same loop with active-set compaction, the same loop with compaction plus an occasional reorder, two
K-fused-steps variants, the automatic-policy and persistent-launch arms, a plain eager launch loop, a CuPy array implementation, a PyTorch masked implementation, a
PyTorch CUDA-graph implementation, a JAX jit(vmap(while_loop)) implementation, an NVIDIA Warp per-thread kernel,
and a CPU OpenMP arm (no device or transfers needed, and the correctness reference the rest are checked against).
The five-arm table below is the headline cut (both distributions, N = 1,000,000); the
full performance page has every arm, every N.
| Distribution (N = 1,000,000) | Arm | wall (range) | sample·steps/s | useful FLOP/s (% of peak) |
|---|---|---|---|---|
| Spread (log-uniform stop steps, up to 1000) | eagle graph (device loop) | 625 ms (625 ms–626 ms) | 3.46e8 | 1.52e10 (16 %) |
| Spread (log-uniform stop steps, up to 1000) | eagle graph + compaction | 415 ms (415 ms–415 ms) | 5.21e8 | 2.29e10 (24 %) |
| Spread (log-uniform stop steps, up to 1000) | eagle graph + compaction + reorder | 279 ms (279 ms–279 ms) | 7.74e8 | 3.41e10 (36 %) |
| Spread (log-uniform stop steps, up to 1000) | CuPy masked | 7.38 s (7.38 s–7.38 s) | 2.93e7 | 1.29e9 (1.4 %) |
| Spread (log-uniform stop steps, up to 1000) | CPU OpenMP | 149 ms (148 ms–150 ms) | 1.45e9 | 6.39e10 (–) |
| Uniform (every sample runs 1000 steps) | eagle graph (device loop) | 703 ms (703 ms–703 ms) | 1.42e9 | 6.26e10 (66 %) |
| Uniform (every sample runs 1000 steps) | eagle graph + compaction | 862 ms (862 ms–862 ms) | 1.16e9 | 5.11e10 (54 %) |
| Uniform (every sample runs 1000 steps) | eagle graph + compaction + reorder | 863 ms (863 ms–863 ms) | 1.16e9 | 5.10e10 (54 %) |
| Uniform (every sample runs 1000 steps) | CuPy masked | 7.38 s (7.38 s–7.38 s) | 1.35e8 | 5.96e9 (6.3 %) |
| Uniform (every sample runs 1000 steps) | CPU OpenMP | 191 ms (190 ms–191 ms) | 5.25e9 | 2.31e11 (–) |
Measured on:
Figures are written by tools/sync_readme_cards.py from the card JSON (the
same numbers card_quadro-p2000.md renders): wall time and rates rounded to 3
significant figures, percent-of-peak to 2; a dash means that arm has no
FP64-peak baseline recorded (CPU). Re-run the script after a card is re-run or
a new perf_card device is added; python/tests/test_readme_cards.py fails
if the committed block has drifted from a fresh render.
Honest wins, not buried: on a dense batch, where every sample runs all 1000 steps, NVIDIA Warp's per-thread kernel is
level with eagle.simulate (7.22 ms vs 7.22 ms at N = 10,000;
693 ms vs 699 ms at N = 1,000,000), and at a fixed overhead of 64 samples it takes 135 µs against eagle.simulate's 117 µs. The CPU
OpenMP arm, which needs no GPU, is faster than every GPU arm on the dense batch from N = 1,000 up (419 µs against 893 µs
at N = 1,000; 191 ms against 699 ms at N = 1,000,000) and on the spread-1000 batch at N = 1,000 (437 µs vs 884 µs);
this is an FP64-weak development card. JAX compiles cold faster than hawk + eagle (about 246 ms, against
eagle.simulate's 1.12 s; NVIDIA Warp's cold compile is 1.49 s), and hawk + eagle's own warm recompile is 109 ms. These are
complementary tools: Warp and hawk + eagle both skip nothing — the difference is who writes the per-thread loop and
who decides when to compact.
Compaction's advantage tracks how early the batch thins: on the spread
distribution it cuts the wall time by 1.51× at N = 1,000,000 (625 ms → 415
ms), while on the uniform distribution, where no sample finishes early,
compaction instead costs 1.23× the plain graph's time (862 ms vs 703 ms) —
plain hawk + eagle graph is the better fit when nothing thins. The eager launch
loop trails the plain graph by about 1.24-1.25× at this N in both
distributions (774 ms / 875 ms vs 625 ms / 703 ms) — a per-step host read
still costs something, even once the kernel runs long enough that launch
overhead alone would not matter. CuPy masked reaches the highest fraction of
peak memory bandwidth of the arms in this table (up to 87% at N = 1,000,000 uniform,
recorded in the card) — the better fit when array-style code matters more
than wall time on an already bandwidth-bound batch.
The reorder arm is compaction's index map plus an occasional physical
reorder, opt-in through eagle.ActiveSet(mask, reorder=theta). It pays off
from about N = 100,000 on the spread distribution, where the batch keeps
thinning: 45.7 ms → 34.1 ms at N = 100,000 (1.34×), 415 ms → 279 ms at N =
1,000,000 (1.49×). Below that it costs instead — about 2-4% longer than
compaction alone at N = 1,000 and 10,000 — and on the uniform distribution,
where nothing needs reordering, it costs at most about 4% more than
compaction alone at any N (862 ms vs 863 ms at N = 1,000,000; 95.1 ms vs
95.4 ms at N = 100,000).
CPU, no GPU at all: the same kernel on 8 OpenMP threads is 149 ms (spread) / 191 ms (uniform) at N = 1,000,000 —
faster than the best GPU arm on the spread batch (156 ms, eagle auto) and faster than every GPU arm on the uniform batch (the best of them, NVIDIA Warp, takes 693 ms),
on this FP64-weak development card; on the harder RK7(8) family (adaptive
orbits, heavier per-step work) the CPU arm is also about twice as fast as the best GPU arm on this same card (7.15 s vs 13.0 s at
N = 1,000,000) — see
where RAPTOR fits for that comparison.
Hardware caveat: measured on a Quadro P2000, a development card (8 SMs, 9.48e10 FLOP/s FP64 peak at its rated clock, from the card). The method carries over unchanged to other GPUs; the absolute numbers, and the crossover points between arms, will differ on data-centre GPUs.
Full write-up, method and the per-N tables: the performance
page. Raw
numbers:
card_quadro-p2000.json /
card_quadro-p2000.md.
hawk write it · eagle run it (this repo) · aether the numerics core · raptor the shared contracts — the RAPTOR family
Apache-2.0 (see LICENSE and
NOTICE) · cite via "Cite this repository"
(CITATION.cff; every tagged release is archived on Zenodo: doi:10.5281/zenodo.23250240) · built to
make GPU computing accessible on modest hardware, for research and education. Collaboration is the point, and a
citation is the currency — get in touch.
Metadata
Release files for raptor-eagle 0.4.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 | |
|---|---|---|---|
| raptor_eagle-0.4.1.tar.gz | 581.1 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| raptor_eagle-0.4.1-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| raptor_eagle-0.4.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.28+ x86-64, Linux glibc 2.26+ x86-64 | Details |
| raptor_eagle-0.4.1-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 free-threading | Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| raptor_eagle-0.4.1-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| raptor_eagle-0.4.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| raptor_eagle-0.4.1-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.28+ x86-64, Linux glibc 2.26+ x86-64 | Details |
| raptor_eagle-0.4.1-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| raptor_eagle-0.4.1-cp39-cp39-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 | Details |
Total release size: 14.5 MB
Release files / raptor_eagle-0.4.1.tar.gz
| Download URL | raptor_eagle-0.4.1.tar.gz |
|---|---|
| Size | 581.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cd77940b11d3bab84fee922d310089a5ba15e5520eae68ea5a48e7be61d0f621
|
|
BLAKE2b-256 checksum How to use checksums |
9eb73e3fc3f7a274a9329d7ef4c6b6dffe9250516172e56a7c914fc7ae835c7e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / raptor_eagle-0.4.1-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | raptor_eagle-0.4.1-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
47cdf5813796327ff496f143c2190f3903baa88797917754d2be3fa3176af8a3
|
|
BLAKE2b-256 checksum How to use checksums |
389eacb44e3ad52c7a4287c327bb3c27180851adae16697b0ff923302de754f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / raptor_eagle-0.4.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | raptor_eagle-0.4.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.14 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d6bcf426b082dc3501cb3b1fd02f4cd903f55f6548d6bb7662312ed719795f94
|
|
BLAKE2b-256 checksum How to use checksums |
aa012d896b324cb431e1f5c067f1e5cddab22bd1b7408873651939dee3959d62
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / raptor_eagle-0.4.1-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | raptor_eagle-0.4.1-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.13 CPython 3.13 free-threading Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
86a50f4a1a5ecd53e04b99b2a80a81cb600e91f3b1364896eb2adac8e13bddd3
|
|
BLAKE2b-256 checksum How to use checksums |
334e89d14de19c027ee8e1b0b86fe2ca62b9e8bc50658ab833944a4b657c12f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / raptor_eagle-0.4.1-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | raptor_eagle-0.4.1-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.13 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
930fe2cb64c74eaa173bf12ba93049a415a456c8f2f218bd60008ee740bda53c
|
|
BLAKE2b-256 checksum How to use checksums |
34447502c5f0bc137b17142bbabae1e078b017226ccd755d3481bff6808aeec1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / raptor_eagle-0.4.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | raptor_eagle-0.4.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.12 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
aa9699c04e350976f509ff51a0b30bc9429bfa845ce52e72102e4bbbc9100e75
|
|
BLAKE2b-256 checksum How to use checksums |
aae3b2d82c3dfba4e0f788d2ade395cc1197ee102ada5fdcef4b9730c6927bd3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / raptor_eagle-0.4.1-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | raptor_eagle-0.4.1-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.11 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
240092dbe5b5167ff91ebbee6f305d9ce78de6477b48ec275bebe806bfe7989d
|
|
BLAKE2b-256 checksum How to use checksums |
becd7d8a4536bea4324be60fdabcc208e9aabcc1058745bf5a2a3ca4d41f0109
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / raptor_eagle-0.4.1-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | raptor_eagle-0.4.1-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.10 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
25208ce17cbabe5b562ff158ebb18eace7766714c5c29d567ce76a388fdd3c90
|
|
BLAKE2b-256 checksum How to use checksums |
4bbd0b1d708dfaca98fca1b049baef37e8bb8e9607cc7c80e44f2bc2fa7708ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / raptor_eagle-0.4.1-cp39-cp39-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
| Download URL | raptor_eagle-0.4.1-cp39-cp39-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.9 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
71cc49ba9505a807123995212b46105d8af0c980373f0ed4f81dfdfcfea1a89f
|
|
BLAKE2b-256 checksum How to use checksums |
d8d3fb6acb9702d3ca7cba2b30cc6ba47c280c87135c9ef219af7e620ff2fb37
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency log