ballistic-solver computes the launch angles to hit moving targets under gravity, quadratic air drag, and optional wind — for games, simulation, robotics, and targeting.
Unlike vacuum / closed-form solvers, it simulates the projectile and solves the intercept numerically, so it stays accurate on strongly curved trajectories. Native C/C++ core with a stable C ABI and a modern C++ API (bs::solve), plus Python (pip install ballistic-solver), C#/Unity, and Godot bindings.
https://github.com/user-attachments/assets/7de04137-61d9-4cf0-be5e-9804d6a9c67b
Real-time 3D showcase — the built-in tracker leading a noisy, diving target with range rings, tracer trails, and a live hit-rate HUD (
examples/godot/).
Applications. The solver only sees relative kinematics, so the same code
drops into many domains — most visibly games and simulation (turret
lead-targeting, projectile interception; see the demo above), and equally
robotics (interception / capture), tracking, and other aiming / targeting
problems. An optional position-only tracker (bs.TargetTracker) adds lead-fire
from a noisy track. See benchmarks/intercept_eval.py and examples/viz/ for
cross-domain examples and accuracy comparisons.
Quick start
Python (PyPI)
pip install ballistic-solver
Requires Python >= 3.10. Prebuilt wheels cover CPython 3.10-3.15:
| Platform | Architectures |
|---|---|
| Linux (manylinux + musllinux) | x86_64, aarch64 |
| macOS | universal2 (Intel + Apple Silicon) |
| Windows | AMD64, ARM64 |
Anything outside that falls back to building from the sdist, which needs CMake and a C++17 compiler.
import ballistic_solver as bs
result = bs.solve(
relPos0=(120, 30, 5),
relVel=(2, -1, 0),
v0=90,
kDrag=0.002,
)
print(result["theta"], result["phi"], result["miss"])
print(result["success"], result["status"], result["message"])
For tighter convergence without manually tuning every knob:
params = bs.params_preset("precise")
result = bs.solve((120, 30, 5), (2, -1, 0), 90, 0.002, params=params)
For repeated solves, Python also provides a thin convenience wrapper:
solver = bs.Solver.preset("precise")
result = solver.solve((120, 30, 5), (2, -1, 0), 90, 0.002)
Demo (Unity)
Highly curved trajectories under strong air drag, still converging to a hit against moving targets.
https://github.com/user-attachments/assets/c0c69cdd-0dd4-4606-9c7d-f21dd002d7f7
Why this solver
Many launch-angle solvers either assume a vacuum (no drag) or linearize the dynamics. Each common approach trades away something:
| Approach | Moving target | Drag | Wind | No per-shot tuning | Real-time speed | Robust |
|---|---|---|---|---|---|---|
| Vacuum / closed-form | ○ | ✗ | ✗ | ◎ | ◎ | ○ |
| Brute-force angle grid | ◎ | ◎ | ◎ | ○ | ✗ | ◎ |
| Generic optimizer (e.g. least-squares) | ◎ | ◎ | ◎ | △ | △ | ○ |
| ballistic-solver | ◎ | ◎ | ◎ | ◎ | ◎ | ◎ |
◎ strong · ○ workable · △ limited · ✗ not supported
Vacuum solvers are the fastest but ignore drag and wind. Brute-force grids
handle everything but are too slow for real-time use. Generic optimizers work on
the same residual but need a good initial guess and per-problem tuning, and are
more prone to local minima. ballistic-solver is purpose-built for the
moving-target + drag + real-time corner: a closed-form vacuum warm start, an
analytic Jacobian preconditioner, and a multistart fallback for the hard cases.
See docs/numerical_method.md for the full method.
Key properties
- Moving targets, including constant acceleration
- Quadratic drag, wind, and low / high arc selection
- Fast / balanced / precise presets, with no per-shot tuning
- Physical drag helper:
kDrag = 0.5 * rho * Cd * area / mass - Robust in strongly nonlinear regimes (no analytic assumptions)
- Best-effort result even without full convergence, with explicit success / failure reporting and a diagnostic message
- Stable C ABI, plus a modern C++ API (
bs::solve) - Bindings for Python, C# / Unity, and Godot
pip install ballistic-solver
Python API
solve(...)
solve(relPos0, relVel, v0, kDrag, arcMode=None, params=None, relAcc=None) -> dict
relPos0: target relative position at t=0 (x,y,z)relVel: target relative velocity (x,y,z)v0: muzzle speed (scalar)kDrag: quadratic drag coefficientarcMode:0/1or"low"/"high"(case-insensitive);Nonekeeps theparamsvalueparams: optionalBallisticParamsfor advanced tuning (gravity, wind, integrator and solver knobs)relAcc: optional constant target relative acceleration (x,y,z); same assolve_accel
Returned dict keys include:
success(bool)theta,phi(radians)miss(closest-approach distance)tStar(time of closest approach)relMissAtStar(3-vector miss attStar)status(SolveStatus integer)message(short diagnostic string)- plus convergence diagnostics (
iterations,acceptedSteps,lastLambda,lastAlpha)
acceptedSteps,lastLambdaandlastAlphaare Levenberg-Marquardt counters. The coordinate-residual core never enters an LM path, so onsolvethey stay at0,NaNandNaN-- onlyiterationsis meaningful there.solve_auxpopulates all four.
solve uses the coordinate-residual core (Gauss–Newton on the 3D closest-approach
miss, vacuum-seeded Jacobian, multistart fallback). It is the same signature as
before and a drop-in replacement, typically ~15–25% faster at equal robustness.
solve_aux(...)
solve_aux(relPos0, relVel, v0, kDrag, arcMode=None, params=None, relAcc=None) -> dict
The previous default: the auxiliary-residual method (re-aim through the vacuum
inverse, solved by damped least squares with a multistart fallback). Same return
dict as solve. Kept for compatibility and for reproducing the auxiliary-residual
results.
solve_predicted(...)
solve_predicted(predictor, v0, kDrag, arcMode=None, params=None) -> dict
Lead-fire against a position-only trajectory predictor instead of explicit
relVel/relAcc. predictor(t) returns the predicted relative position (x, y, z)
at time t >= 0 (e.g. from a Kalman/IMM track). Internally a local
constant-acceleration model is fitted at the intercept time and iterated to a
fixed point — exact for constant-velocity / constant-acceleration predictors and
second-order accurate at the intercept for smoothly curving tracks. Returns the
same dict as solve.
TargetTracker
tracker = bs.TargetTracker(processNoise=1.0, measNoise=0.25)
# In practice this is your sensor feed; a synthetic one so the snippet runs:
measurements = [(0.05 * i, (120 - 2.0 * 0.05 * i, 30 + 0.05 * i, 5.0)) for i in range(20)]
for t, pos in measurements: # (timestamp, relative position)
tracker.update(t, pos)
lead = tracker.predict(1.5) # predicted relative position 1.5 s ahead
result = tracker.solve(v0=95.0, kDrag=0.0015) # lead-fire via the predictor seam
A position-only constant-acceleration Kalman tracker (per-axis, white-noise-jerk
model). It denoises the track and recovers velocity/acceleration without
finite-difference noise, then feeds the predictor seam — so callers never supply
relVel/relAcc. See benchmarks/predictor_eval.py for a lead-prediction
accuracy comparison against a constant-velocity baseline.
The real-time 3D showcase at the top of this README is built on this tracker —
the full project is in examples/godot/ (default scene demo/intercept_demo.tscn).
Utilities
params = bs.params_preset("fast") # or "balanced", "precise"
kDrag = bs.k_drag_from_physical(
airDensity=1.225,
dragCoefficient=0.30,
area=0.00426,
mass=0.145,
)
For constant-acceleration targets:
result = bs.solve_accel(
relPos0=(120, 30, 5),
relVel=(2, -1, 0),
relAcc=(0, 0.2, 0),
v0=90,
kDrag=0.002,
params=bs.params_preset("precise"),
)
Solver validity note
The solver internally integrates projectile motion using:
- 4th-order Runge–Kutta (RK4)
- Fixed timestep
dt - Quadratic drag:
a = (0, 0, -g) - kDrag * |v - wind| * (v - wind) - Wind as air velocity
To match in-game ballistics, your runtime simulation must use the same physical model and integrator configuration.
If your game uses a different integrator (e.g., Euler) or a different timestep, the computed launch angles may not hit even if the solver reports success.
C ABI (stable interface)
Primary intercept API:
void ballistic_inputs_init(BallisticInputs* in);
int32_t ballistic_solve(const BallisticInputs* in, BallisticOutputs* out);
Return value policy:
0: API call completed andoutwas filled.<0: API-level failure, such as null pointers or an internal exception.- Numerical solve success is reported separately by
out->successandout->status. - ABI v3 adds convergence diagnostics to
BallisticOutputs:iterations,acceptedSteps,lastLambda, andlastAlpha. Of these onlyiterationsis populated here:ballistic_solvedispatches to the coordinate-residual core, which never enters a Levenberg-Marquardt path, soacceptedStepsstays0andlastLambda/lastAlphastayNaN. The C ABI does not expose the auxiliary-residual solver that fills them. - ABI v4 adds a
presetfield toBallisticInputs(0=Fast, 1=Balanced, 2=Precise).ballistic_inputs_apply_presetrecords it so that the full preset tuning (line-search, lambda tries, finite-difference step, golden-section) is carried intoballistic_solve, not onlydt/tMax/tolMiss/maxIter.
Callers should check both:
int32_t rc = ballistic_solve(&in, &out);
if (rc != 0) {
/* API call failed */
}
if (!out.success) {
/* Solver ran but did not satisfy the requested tolerance. */
}
Since v0.4.0, additional utility functions are available:
void ballistic_rk4_step(...);
int32_t ballistic_simulate_trajectory(...);
int32_t ballistic_simulate_trajectory_from_angles(...);
int32_t ballistic_find_closest_approach(...);
int32_t ballistic_vacuum_arc_angles_to_point(...);
void ballistic_initial_guess_vacuum_lead(...);
Additional extended APIs include:
void ballistic_accel_inputs_init(BallisticAccelInputs* in);
int32_t ballistic_solve_accel(const BallisticAccelInputs* in, BallisticOutputs* out);
int32_t ballistic_inputs_apply_preset(BallisticInputs* in, int32_t preset);
int32_t ballistic_k_drag_from_physical(...);
int32_t ballistic_make_relative_motion(...);
See ballistic_solver_c_api.h for full signatures and parameter definitions.
This enables usage from:
- C / C++
- Python (ctypes via the C ABI)
- C# / .NET / Unity (P/Invoke)
- Godot 4 (GDExtension addon-style example)
- Others via FFI
Prebuilt native binaries are provided via GitHub Releases.
ABI guarantees
- Plain C layout across the boundary
- Fixed-size arrays only
- No dynamic allocation across the boundary
Arc mode
C ABI convention:
arcMode = 0→ LowarcMode = 1→ High
High arc example:
https://github.com/user-attachments/assets/4334ed87-597e-4ad4-b21e-c1a1a17e8cd8
Wind
C ABI convention:
wind[3]= air velocity vector (same frame asrelPos0/relVel)- Drag uses relative airspeed:
v_rel = v_projectile - wind
Wind demo:
https://github.com/user-attachments/assets/1cd998cf-34db-4a74-8817-c6393227ef4e
Using prebuilt binaries (C ABI)
Download the archive for your platform from Releases. Each archive holds the
shared library plus the C ABI header ballistic_solver_c_api.h.
| Archive | Library | Architecture |
|---|---|---|
..._linux.zip |
libballistic_solver.so |
x86_64 |
..._macos.zip |
libballistic_solver.dylib |
arm64 (Apple Silicon) |
..._windows.zip |
ballistic_solver.dll |
AMD64 |
The filenames do not carry the architecture, so note that these are single-architecture builds. Unlike the Python wheels above there is no universal2 macOS archive and no ARM Linux or Windows archive; for those targets build from source or use the Python package.
Use as a CMake dependency (C/C++)
Pull the library straight into your CMake build with FetchContent:
include(FetchContent)
FetchContent_Declare(
ballistic_solver
GIT_REPOSITORY https://github.com/ujinf74/ballistic-solver.git
GIT_TAG v1.1.0
)
set(BUILD_TESTING OFF) # don't build the library's own tests in your tree
FetchContent_MakeAvailable(ballistic_solver)
target_link_libraries(your_app PRIVATE ballistic_solver)
C++
#include <ballistic_solver.hpp>
bs::Problem problem;
problem.rel_pos0 = {120, 30, 5};
problem.rel_vel = {2, -1, 0};
problem.v0 = 90;
problem.k_drag = 0.002;
bs::Options options;
options.preset = bs::Preset::Precise;
bs::Intercept r = bs::solve(problem, options);
if (r) // explicit operator bool() == success
aim(r.theta, r.phi); // elevation, azimuth in radians
With C++20 designated initializers the same call is more compact:
auto r = bs::solve({.rel_pos0 = {120, 30, 5},
.rel_vel = {2, -1, 0},
.v0 = 90,
.k_drag = 0.002},
{.preset = bs::Preset::Precise});
The bs:: API is source-level (build it with the same toolchain as the
library; none of the internal headers leak into your code). For a stable ABI or
FFI from other languages, use the C API instead.
C (stable ABI)
#include "ballistic_solver_c_api.h"
BallisticInputs in; BallisticOutputs out = {0};
ballistic_inputs_init(&in);
in.relPos0[0] = 120; in.relPos0[1] = 30; in.relPos0[2] = 5;
in.relVel[0] = 2; in.relVel[1] = -1; in.relVel[2] = 0;
in.v0 = 90; in.kDrag = 0.002;
if (ballistic_solve(&in, &out) == 0 && out.success)
printf("theta=%.4f phi=%.4f miss=%.4f\n", out.theta, out.phi, out.miss);
C# / Unity usage
A C# P/Invoke example is available in:
examples/dotnet/
On Windows, place ballistic_solver.dll next to the executable
(or ensure it is discoverable via PATH),
then call ballistic_solve via DllImport.
This works directly inside Unity.
Godot
The GDExtension addon in examples/godot/ exposes the solver to GDScript:
var solver := BallisticSolver.new()
var r := solver.solve(rel_pos0, rel_vel, v0, k_drag, 0) # arc_mode: 0 low, 1 high
if r.success:
aim_at(r.theta, r.phi) # elevation, azimuth in radians
A position-only BallisticTracker (Kalman) with the same solve(v0, k_drag, arc_mode)
seam is also provided — it powers the real-time demo at the top of this README.
How it works (high level)
- Build a vacuum-lead initial guess from the moving-target quartic.
- Seed the inverse Jacobian analytically from the vacuum-arc map (no trajectory integration), as a cheap preconditioner.
- Simulate projectile motion using RK4 integration with drag (+ wind) and track the closest approach between projectile and target.
- Use the 3D closest-approach miss vector itself as the residual (it is well-conditioned), and solve the launch angles by Gauss-Newton on it.
- Refine the Jacobian with Broyden-style rank-1 updates; take full steps (no Levenberg–Marquardt damping, no line search).
- If the warm start does not reach tolerance, retry from a small arc-appropriate theta-grid multistart.
- Return the best solution found.
solve uses this coordinate-residual core. The earlier auxiliary-residual method
(re-aim through the vacuum inverse, with damped least squares) remains available
as solve_aux for compatibility and reproducibility.
Failure cases are explicitly detected and reported. See docs/numerical_method.md for a step-by-step description and docs/limitations.md for the modelling assumptions.
When solving can fail
The solver returns a best-effort result even when it cannot satisfy tolMiss.
Common causes include:
- invalid inputs (
v0 <= 0, non-positiveg,dt,tMax, ormaxIter) - geometrically unreachable vacuum targets
- targets that require an intercept beyond
tMax - strong drag or high-arc cases where the selected arc branch cannot be maintained
- iteration limits that are too tight for the requested tolerance
Use success, status, message, and miss together when deciding whether to
accept a solution.
Limitations
ballistic-solver is a point-mass solver with a deliberately scoped physics model:
- point mass — no spin drift / Magnus effect
- quadratic drag with a single coefficient — no Mach-dependent drag table
- constant gravity and uniform, constant wind
- solves launch angles only (muzzle speed and arc branch are inputs)
- no terrain / obstacle collision
- best-effort (not guaranteed) on unreachable or near-limit targets
- a numerical library for games, simulation, robotics, and research — not a certified fire-control system
See docs/limitations.md for the full list and the reasoning behind each.
Status codes (SolveStatus)
BallisticOutputs.status / Python result["status"] corresponds to:
0= Ok1= InvalidInput2= InitialResidualFailed3= JacobianFailed4= LMStepSingular5= ResidualFailedDuringSearch6= LineSearchRejected7= LambdaTriesExhausted8= MaxIterReached
The default coordinate-residual solve emits Ok, InvalidInput, JacobianFailed,
or MaxIterReached. The Levenberg–Marquardt codes (4–7) are specific to the
auxiliary-residual solve_aux path.
message contains a short diagnostic string.
Build from source
cmake -S . -B build
cmake --build build -j
ctest --test-dir build
The shared library target is ballistic_solver.
Regression and benchmark
Distributed regression and benchmark scripts are available:
python tests/random_regression.py
python benchmarks/linear_cases.py
The CI workflow runs the CTest suite -- a C ABI smoke test and a C++ bs::
smoke test -- plus the Python regression script, on Linux, macOS and Windows.
The regression script includes analytic vacuum checks, constructed moving-target
vacuum cases, unreachable-target checks, randomized linear cases, and
constant-acceleration API smoke coverage.
Benchmark numbers depend on CPU, OS, compiler, build type, Python version, and whether native or Python entrypoints are measured. The local reference below was measured on Windows NT 10.0.26200.0, AMD Ryzen 9 6900HS, Python 3.12.8, MSVC 14.44.35207, x64 Release build, through the Python native extension.
Reference preset result from the same local Release build:
fast: 500/500, median 0.031 ms, p95 0.131 ms, p95 miss 2.810e-02 m
balanced: 500/500, median 0.057 ms, p95 0.261 ms, p95 miss 7.053e-03 m
precise: 500/500, median 0.087 ms, p95 0.356 ms, p95 miss 5.596e-06 m
Current default solver (coordinate-residual core) results from 10,000 generated
cases with seed 20260503. The last row is the high-arc moving-target stress case:
| Case set | Success | Median runtime | P95 runtime | P95 miss |
|---|---|---|---|---|
| Low arc, moving target | 10000/10000 (100.00%) | 0.089 ms | 0.266 ms | 6.450e-03 m |
| High arc, stationary target | 10000/10000 (100.00%) | 0.408 ms | 0.846 ms | 8.018e-03 m |
| High arc, moving target | 10000/10000 (100.00%) | 0.607 ms | 1.264 ms | 8.341e-03 m |
For a difficulty-bucketed breakdown (low / high arc × drag strength, with P99 and the hard-corner tail) and the full methodology, see docs/benchmarks.md.
Official repository
The only official repository is https://github.com/ujinf74/ballistic-solver.
Install from PyPI (pip install ballistic-solver) or this repository's Releases
page — not from third-party copies, mirrors, or reuploads.
License
MIT License
Metadata
Release files for ballistic-solver 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ballistic_solver-1.2.0.tar.gz | 83.7 kB | With provenance | Details |
Built distributions (wheels)
Total release size: 23.7 MB
Release files / ballistic_solver-1.2.0.tar.gz
| Download URL | ballistic_solver-1.2.0.tar.gz |
|---|---|
| Size | 83.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
adfe363fdfed3d3081ec8886832d67825202be1a75b598917b3347352ff98a57
|
|
BLAKE2b-256 checksum How to use checksums |
0312f2a9c41627d96666309cd05d3be51a93117413f28226c19600b52cb89938
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp315-cp315-win_arm64.whl
| Download URL | ballistic_solver-1.2.0-cp315-cp315-win_arm64.whl |
|---|---|
| Size | 540.6 kB |
| Tags | CPython 3.15 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
249d99f139ada6ac0a43fe036c9722f21e1819cc838dfa4a169575baa91e15eb
|
|
BLAKE2b-256 checksum How to use checksums |
20585a2247414223820d2921881ee1bbb1a8f30013704dc75bb46bb3e26f3634
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp315-cp315-win_amd64.whl
| Download URL | ballistic_solver-1.2.0-cp315-cp315-win_amd64.whl |
|---|---|
| Size | 367.6 kB |
| Tags | CPython 3.15 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
3880cf86663ab546286ef9a2679a5f83ee34be73ef9cf79b4bce04311d70d9fc
|
|
BLAKE2b-256 checksum How to use checksums |
25e0f8f60b7aa68befc424ac6dba98b294b0ee7deb0f663cdad9b8f4d6409535
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp315-cp315-musllinux_1_2_x86_64.whl
| Download URL | ballistic_solver-1.2.0-cp315-cp315-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.15 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
e8e6b002b7b01f31f3ff07b83ad2b6c07b131e734cd31286a67175d269940a08
|
|
BLAKE2b-256 checksum How to use checksums |
17e21902842d8375a7d5e84d2f1345863c271f619812a8951d56e55e1c8c31a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp315-cp315-musllinux_1_2_aarch64.whl
| Download URL | ballistic_solver-1.2.0-cp315-cp315-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.15 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
5a4e4f76705a488d38239c3acf3e6de770c867825cf2591dcb7b10802e03f794
|
|
BLAKE2b-256 checksum How to use checksums |
78594c4b07e7c40c0c3edcea57ba33847d7a72955d5e19a5bc18aa4c5741d8f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ballistic_solver-1.2.0-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 189.0 kB |
| Tags | CPython 3.15 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
146f22de819ecc42bde953599e855f64599963abd97fe036dbdc2e29f2e9e4f2
|
|
BLAKE2b-256 checksum How to use checksums |
d25ea0f4adca870a713d44f708102ec52fc112aa621f8dd4f21c20dc5832e910
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp315-cp315-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | ballistic_solver-1.2.0-cp315-cp315-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 167.3 kB |
| Tags | CPython 3.15 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
d5d641aa9f5bf4fbe49daa536cb3f1d96d3562db636208b90dc48d5c148d8b0f
|
|
BLAKE2b-256 checksum How to use checksums |
5c2bcdf9f47a1a901a54b75952038f34ac982ab9e699bbb73d6e1a0a6826e74c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp315-cp315-macosx_10_15_universal2.whl
| Download URL | ballistic_solver-1.2.0-cp315-cp315-macosx_10_15_universal2.whl |
|---|---|
| Size | 301.7 kB |
| Tags | CPython 3.15 macOS 10.15+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
f5b4f959051d7c25cd9efa6685175561edffaacce9b13e5fa6327b680d268c0a
|
|
BLAKE2b-256 checksum How to use checksums |
2fbf84fce72ac2ab54c1b268bec9c03000e44de812362c451d2af384a3395b42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp314-cp314-win_arm64.whl
| Download URL | ballistic_solver-1.2.0-cp314-cp314-win_arm64.whl |
|---|---|
| Size | 540.7 kB |
| Tags | CPython 3.14 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
f5b631178f2f06370122039e95d4079222b38620641ceb32a7ad018385323667
|
|
BLAKE2b-256 checksum How to use checksums |
7098a4345dafe2b9911687349e339a74a057365192b16268039841f46bbf7f8e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp314-cp314-win_amd64.whl
| Download URL | ballistic_solver-1.2.0-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 367.6 kB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
c64281990b38e093b68bbc0efe4613b76f4356009c28935f2ef4afb7bca60ad6
|
|
BLAKE2b-256 checksum How to use checksums |
57dd367d71ca76c8abba727a564ae4a9883629e7c08b7c893dce7107c30c0a50
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl
| Download URL | ballistic_solver-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.14 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
b9a712f977ba1e5fcf9cc122062e1f16cd77d4123fc3b4415e1f11df59638b13
|
|
BLAKE2b-256 checksum How to use checksums |
bb817e051f69b89819df926bf4bce9d925c562de6c678560b34af181da4eae02
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp314-cp314-musllinux_1_2_aarch64.whl
| Download URL | ballistic_solver-1.2.0-cp314-cp314-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.14 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
853eb06c2c9d915591a5c659753cac66afb7b2f8df922870bcbf08939fb68270
|
|
BLAKE2b-256 checksum How to use checksums |
37ce9552743a5336341f0e7f57ed61f4470211e06aabe39fd17b271cf63f9b99
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ballistic_solver-1.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 189.0 kB |
| Tags | CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
7e47622296f2262770ba8165c693d648c70a1ed1c9e2a4a5de3ae19972050a6a
|
|
BLAKE2b-256 checksum How to use checksums |
c8a635f558e6432c118dcd0cbd5d56859a42c66c32602a83aabe9901be3daf5d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | ballistic_solver-1.2.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 167.3 kB |
| Tags | CPython 3.14 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
40ff7903310515ee5ad127c2e919316ccd7ea81e19c307c7e92d810c40e48df0
|
|
BLAKE2b-256 checksum How to use checksums |
d885b49c0e189d7199eff7a9146e66c32e83bfc41dfab0876d24d6d221f6beac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp314-cp314-macosx_10_15_universal2.whl
| Download URL | ballistic_solver-1.2.0-cp314-cp314-macosx_10_15_universal2.whl |
|---|---|
| Size | 301.7 kB |
| Tags | CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
f600b2a0f0f7ddf51ea74412f6f7bde87523ce5f458ed1c1acb729a02102104b
|
|
BLAKE2b-256 checksum How to use checksums |
0bcabefb9c7f56b5c5ab9f9c157fe444f3a7da47ef37cc171a526479aa66170c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp313-cp313-win_arm64.whl
| Download URL | ballistic_solver-1.2.0-cp313-cp313-win_arm64.whl |
|---|---|
| Size | 522.9 kB |
| Tags | CPython 3.13 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
2809a4f4443f6db004dcfb5561fa60e1ea278ee6e68a9a02e4788be8a9fec266
|
|
BLAKE2b-256 checksum How to use checksums |
6ac287fec3b40d6ebdc39c16947ae66949eb6b086633b3cd39a68130c7019431
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp313-cp313-win_amd64.whl
| Download URL | ballistic_solver-1.2.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 356.3 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b0c1c984dc0c8e9903786369046df833e9b5d0e369427fcf481d1005ed5271fe
|
|
BLAKE2b-256 checksum How to use checksums |
d6c80133e9020ea6659e20e79f0cdd7d24e10e2adef1bb4fa8523792d5987746
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl
| Download URL | ballistic_solver-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.13 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
1b531254a95f214fb0c1510a2ecd60a79e31c73b9a0fb2e5403bf498f12530e4
|
|
BLAKE2b-256 checksum How to use checksums |
a4b39253c5eb1d5285741d47d6e6096494efa9152f1ce9ae9b41d8981b978592
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp313-cp313-musllinux_1_2_aarch64.whl
| Download URL | ballistic_solver-1.2.0-cp313-cp313-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.13 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
87bcf4579b03a0e024d0c253c49c9bec0d47663c7aa3630a4c46c475340300ca
|
|
BLAKE2b-256 checksum How to use checksums |
437e9b949e79358c1d2845fc0b8b84ac0fd49b45208f8a45caec3e2cbdde62fa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ballistic_solver-1.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 188.9 kB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
542a69ddcaffe2c0349f29555849aa63ffdf305222544333174ca27fb1577a0d
|
|
BLAKE2b-256 checksum How to use checksums |
a005f6b10145c56acc56a475b60d82180691ae2f3978ca67f2d4adb54bbaad4c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | ballistic_solver-1.2.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 166.3 kB |
| Tags | CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
0c8b8cc883fcef9267ae35b272ebdd3437d1e3636f0e4f8ecbd61e5f032618d6
|
|
BLAKE2b-256 checksum How to use checksums |
0d4cc60fa1540139589c602aac6a9aeb4081285ead8693fe2eb9ee9ae5dd0063
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp313-cp313-macosx_10_13_universal2.whl
| Download URL | ballistic_solver-1.2.0-cp313-cp313-macosx_10_13_universal2.whl |
|---|---|
| Size | 300.8 kB |
| Tags | CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
f4bd9541fc4851b023428f12267bcb069dea87ca22e45e5e6afdbaf7e2c4c6a8
|
|
BLAKE2b-256 checksum How to use checksums |
e645430bc8f71b21b85f01fb9b276ac55f85394d14727db865e151475f31d831
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp312-cp312-win_arm64.whl
| Download URL | ballistic_solver-1.2.0-cp312-cp312-win_arm64.whl |
|---|---|
| Size | 522.8 kB |
| Tags | CPython 3.12 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
5fc4770b201f4a2dc6f77a8cbb8e5738761021715ce8f28ec1b18a5e63901b72
|
|
BLAKE2b-256 checksum How to use checksums |
41e4159c50b0a0bd7e48e49d742ef254e8b8a1613c6d5afcc414e014538b828f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp312-cp312-win_amd64.whl
| Download URL | ballistic_solver-1.2.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 356.3 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
094e1ee9431b07bc1019ceecb3d0c4d46719321755a9e22ca354c3985fe9adfd
|
|
BLAKE2b-256 checksum How to use checksums |
c215f7a2330385ac04d3bb31bb86cae7bd1b43aefe752199e6bc77a572d8ce86
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl
| Download URL | ballistic_solver-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
2e2c7663e4a08730f454f57656c40f43f43250d0e41fce9e59c927c07aeb3e25
|
|
BLAKE2b-256 checksum How to use checksums |
584000bb8dbf4fd68212ca8d2a69a5b4103b6d174c5f973d749fed21ed656175
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp312-cp312-musllinux_1_2_aarch64.whl
| Download URL | ballistic_solver-1.2.0-cp312-cp312-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.12 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
03d149375ce25fc23ecc64a6f9a6a9f08bfb95c5383dbf033c7a90c5c0aab8fb
|
|
BLAKE2b-256 checksum How to use checksums |
48dbdfa695de3913f9482c0a3c11aff19dd30d2a71dd6b63fb48a6ea119fa4f0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ballistic_solver-1.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 189.0 kB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c388052b7b3cf645301fceab2558f3e50d4228f8c89bfe92166ba1e5c9e0b88e
|
|
BLAKE2b-256 checksum How to use checksums |
6ff5aa01221679c816af54f15865dcb3105d9b1d4642c404a3732dbe341e8e69
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | ballistic_solver-1.2.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 166.3 kB |
| Tags | CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
513fadf5162515f8958c0ac27f001c93c0430fd1c61f3054d5d5aec6d1dffe0d
|
|
BLAKE2b-256 checksum How to use checksums |
ba74551422221bb85b798b0c7a8464116945e5fa01eba8f9822ed079159034ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp312-cp312-macosx_10_13_universal2.whl
| Download URL | ballistic_solver-1.2.0-cp312-cp312-macosx_10_13_universal2.whl |
|---|---|
| Size | 300.7 kB |
| Tags | CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
097cadc633fb35195473652b5bf22284e5efa47bd09b0ecd3bc9265edfa84e7d
|
|
BLAKE2b-256 checksum How to use checksums |
dbc9d9639b26f9e2f2e9db808e359ebb185de915c544a0e25e7263f9c662a561
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp311-cp311-win_arm64.whl
| Download URL | ballistic_solver-1.2.0-cp311-cp311-win_arm64.whl |
|---|---|
| Size | 524.0 kB |
| Tags | CPython 3.11 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
9cf9d6cc8953e1e2488900878a4bf24eb1df6d5cc112d55799d9dd0387876739
|
|
BLAKE2b-256 checksum How to use checksums |
a87699444ca55cca884c9368d0b4265a8a4de88f14a7433cbbff9d4872558512
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp311-cp311-win_amd64.whl
| Download URL | ballistic_solver-1.2.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 353.6 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1d6beb2e052b39ca579075967b45a86e724a172de7f5e8a1dc104aac8538ed78
|
|
BLAKE2b-256 checksum How to use checksums |
b433894e55c4d45780c4f140479ab4c5532789a9f82dd6f7e6f31a275310f61a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl
| Download URL | ballistic_solver-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
a6cb5070e232556749c726edc3a850da29aefaa911ee34ae3ccc4ce44f2e02fe
|
|
BLAKE2b-256 checksum How to use checksums |
45a7765fdc2aa0827a7e316a40a13b77bdcc2e8ad3519c5bf1534f6613587bc1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp311-cp311-musllinux_1_2_aarch64.whl
| Download URL | ballistic_solver-1.2.0-cp311-cp311-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.11 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
2c9165bbf074dc8035d167e94e3241aed4cc72007fe369a84917bdd5e426774e
|
|
BLAKE2b-256 checksum How to use checksums |
d596feb94d4b633fb60d9646a7791ba0a898ea894910fe81a658fa7a4dec7e73
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ballistic_solver-1.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 186.3 kB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
bd42e217b31694b92b3bd9ace555a7cec2dff832fb99f197a9a44032146224b7
|
|
BLAKE2b-256 checksum How to use checksums |
5f365dd98ed45474566507825ee824bd6328425a8646f63d17ee194739ee444a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | ballistic_solver-1.2.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 166.0 kB |
| Tags | CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
c6bae696af4802f8d6f9a631463de81350446869452d1191c477f66caf3b1185
|
|
BLAKE2b-256 checksum How to use checksums |
65c97a4c53a958a6d2fa002ce5201a6f5f801f172f07404d26b425625dafb551
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp311-cp311-macosx_10_9_universal2.whl
| Download URL | ballistic_solver-1.2.0-cp311-cp311-macosx_10_9_universal2.whl |
|---|---|
| Size | 299.9 kB |
| Tags | CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
de0d214b28d668e8522e7c7c029ff0f0e16548360291aaf363ecfb6f694443a4
|
|
BLAKE2b-256 checksum How to use checksums |
762893335541220b62cb0f80db9659e0e0977e10b38d56f1989f457c99440e98
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp310-cp310-win_arm64.whl
| Download URL | ballistic_solver-1.2.0-cp310-cp310-win_arm64.whl |
|---|---|
| Size | 523.3 kB |
| Tags | CPython 3.10 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
33a8ebee6b8ad0d632802b6e51abb88f09b230e806a68767fad6cc591702a8ee
|
|
BLAKE2b-256 checksum How to use checksums |
8850b3fbbbd2ee33e78d653b856574d59d17507b844d97782ce1eda4aab7b25e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp310-cp310-win_amd64.whl
| Download URL | ballistic_solver-1.2.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 352.4 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
60559c0701f9342bf4b08fc75987eb88d57455cac8dd0b9443cbcab50d8bccb5
|
|
BLAKE2b-256 checksum How to use checksums |
53f782f7827ba07ab05cd992cc27a62059b0cff07dbebbe9e7b2678a0b6c7240
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl
| Download URL | ballistic_solver-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
579b4e0d9035aaf33463b73a147bf58e25976b4fb36f19d3da4a1a6b683c9303
|
|
BLAKE2b-256 checksum How to use checksums |
f4cc32fddd48affacb4ae13dbdd9fad669e1170f5bdcf21d9b6349b9f8767d0f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp310-cp310-musllinux_1_2_aarch64.whl
| Download URL | ballistic_solver-1.2.0-cp310-cp310-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
9d84f6e0c25022b968e2bde9f2757f42f180e9123e6ad5d7bf34f16ab06a4fe4
|
|
BLAKE2b-256 checksum How to use checksums |
d7d9432b4397dc9b88d05a0e3611589af95b3009152e877f350c151ff1b0ce77
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | ballistic_solver-1.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 185.0 kB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3ff0eb1b9af1de02172e5fa416dd7aa63e6d1dba8f0d79ce442d57d9814615dc
|
|
BLAKE2b-256 checksum How to use checksums |
dae79ac657d7eaefd12dd05705bc90b85cef3db41af56bf22d48aba252ca4ca8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
| Download URL | ballistic_solver-1.2.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 164.8 kB |
| Tags | CPython 3.10 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
6961e8bcfa4cf6cc7fa107911c893afdf701f51774511507ea4e4568b645a098
|
|
BLAKE2b-256 checksum How to use checksums |
ce280947347325e0df5bd1b4c04882a35876ca632a4230d2cd0ce4ab36ca7172
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logRelease files / ballistic_solver-1.2.0-cp310-cp310-macosx_10_9_universal2.whl
| Download URL | ballistic_solver-1.2.0-cp310-cp310-macosx_10_9_universal2.whl |
|---|---|
| Size | 297.5 kB |
| Tags | CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
91dd575718c82da6fc9a1aeb19cee7b1218c74d7529d067b4f5f9cf47393a9df
|
|
BLAKE2b-256 checksum How to use checksums |
4c1a2b7663cb9714352da654534d3d88184b184ef67ad799396598f7c05ca755
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 21, 2026.
Transparency logSecurity for ballistic-solver 1.2.0
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.
Full provenance
All 43 files in this release have been uploaded with provenance metadata.
Attestation for ballistic_solver-1.2.0.tar.gz
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 21, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.