Skip to main content
banner

CI Release Native + PyPI PyPI License

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 coefficient
  • arcMode: 0/1 or "low"/"high" (case-insensitive); None keeps the params value
  • params: optional BallisticParams for advanced tuning (gravity, wind, integrator and solver knobs)
  • relAcc: optional constant target relative acceleration (x,y,z); same as solve_accel

Returned dict keys include:

  • success (bool)
  • theta, phi (radians)
  • miss (closest-approach distance)
  • tStar (time of closest approach)
  • relMissAtStar (3-vector miss at tStar)
  • status (SolveStatus integer)
  • message (short diagnostic string)
  • plus convergence diagnostics (iterations, acceptedSteps, lastLambda, lastAlpha)

acceptedSteps, lastLambda and lastAlpha are Levenberg-Marquardt counters. The coordinate-residual core never enters an LM path, so on solve they stay at 0, NaN and NaN -- only iterations is meaningful there. solve_aux populates 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 and out was filled.
  • <0: API-level failure, such as null pointers or an internal exception.
  • Numerical solve success is reported separately by out->success and out->status.
  • ABI v3 adds convergence diagnostics to BallisticOutputs: iterations, acceptedSteps, lastLambda, and lastAlpha. Of these only iterations is populated here: ballistic_solve dispatches to the coordinate-residual core, which never enters a Levenberg-Marquardt path, so acceptedSteps stays 0 and lastLambda / lastAlpha stay NaN. The C ABI does not expose the auxiliary-residual solver that fills them.
  • ABI v4 adds a preset field to BallisticInputs (0=Fast, 1=Balanced, 2=Precise). ballistic_inputs_apply_preset records it so that the full preset tuning (line-search, lambda tries, finite-difference step, golden-section) is carried into ballistic_solve, not only dt/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 → Low
  • arcMode = 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 as relPos0/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)

  1. Build a vacuum-lead initial guess from the moving-target quartic.
  2. Seed the inverse Jacobian analytically from the vacuum-arc map (no trajectory integration), as a cheap preconditioner.
  3. Simulate projectile motion using RK4 integration with drag (+ wind) and track the closest approach between projectile and target.
  4. 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.
  5. Refine the Jacobian with Broyden-style rank-1 updates; take full steps (no Levenberg–Marquardt damping, no line search).
  6. If the warm start does not reach tolerance, retry from a small arc-appropriate theta-grid multistart.
  7. 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-positive g, dt, tMax, or maxIter)
  • 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 = Ok
  • 1 = InvalidInput
  • 2 = InitialResidualFailed
  • 3 = JacobianFailed
  • 4 = LMStepSingular
  • 5 = ResidualFailedDuringSearch
  • 6 = LineSearchRejected
  • 7 = LambdaTriesExhausted
  • 8 = 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)

Source distribution for ballistic-solver 1.2.0
File Size Uploaded Provenance
ballistic_solver-1.2.0.tar.gz 83.7 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for ballistic-solver 1.2.0
File
ballistic_solver-1.2.0-cp315-cp315-win_arm64.whl CPython 3.15 CPython 3.15 Windows ARM64 Details
ballistic_solver-1.2.0-cp315-cp315-win_amd64.whl CPython 3.15 CPython 3.15 Windows x86-64 Details
ballistic_solver-1.2.0-cp315-cp315-musllinux_1_2_x86_64.whl CPython 3.15 CPython 3.15 Linux musl 1.2+ x86-64 Details
ballistic_solver-1.2.0-cp315-cp315-musllinux_1_2_aarch64.whl CPython 3.15 CPython 3.15 Linux musl 1.2+ ARM64 Details
ballistic_solver-1.2.0-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
ballistic_solver-1.2.0-cp315-cp315-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.15 CPython 3.15 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
ballistic_solver-1.2.0-cp315-cp315-macosx_10_15_universal2.whl CPython 3.15 CPython 3.15 macOS 10.15+ universal2 (ARM64, x86-64) Details
ballistic_solver-1.2.0-cp314-cp314-win_arm64.whl CPython 3.14 CPython 3.14 Windows ARM64 Details
ballistic_solver-1.2.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
ballistic_solver-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
ballistic_solver-1.2.0-cp314-cp314-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ ARM64 Details
ballistic_solver-1.2.0-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
ballistic_solver-1.2.0-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
ballistic_solver-1.2.0-cp314-cp314-macosx_10_15_universal2.whl CPython 3.14 CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64) Details
ballistic_solver-1.2.0-cp313-cp313-win_arm64.whl CPython 3.13 CPython 3.13 Windows ARM64 Details
ballistic_solver-1.2.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
ballistic_solver-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
ballistic_solver-1.2.0-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details
ballistic_solver-1.2.0-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
ballistic_solver-1.2.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
ballistic_solver-1.2.0-cp313-cp313-macosx_10_13_universal2.whl CPython 3.13 CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64) Details
ballistic_solver-1.2.0-cp312-cp312-win_arm64.whl CPython 3.12 CPython 3.12 Windows ARM64 Details
ballistic_solver-1.2.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
ballistic_solver-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
ballistic_solver-1.2.0-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details
ballistic_solver-1.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
ballistic_solver-1.2.0-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
ballistic_solver-1.2.0-cp312-cp312-macosx_10_13_universal2.whl CPython 3.12 CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64) Details
ballistic_solver-1.2.0-cp311-cp311-win_arm64.whl CPython 3.11 CPython 3.11 Windows ARM64 Details
ballistic_solver-1.2.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
ballistic_solver-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
ballistic_solver-1.2.0-cp311-cp311-musllinux_1_2_aarch64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ ARM64 Details
ballistic_solver-1.2.0-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
ballistic_solver-1.2.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
ballistic_solver-1.2.0-cp311-cp311-macosx_10_9_universal2.whl CPython 3.11 CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64) Details
ballistic_solver-1.2.0-cp310-cp310-win_arm64.whl CPython 3.10 CPython 3.10 Windows ARM64 Details
ballistic_solver-1.2.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
ballistic_solver-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
ballistic_solver-1.2.0-cp310-cp310-musllinux_1_2_aarch64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ ARM64 Details
ballistic_solver-1.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
ballistic_solver-1.2.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
ballistic_solver-1.2.0-cp310-cp310-macosx_10_9_universal2.whl CPython 3.10 CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64) Details

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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Security 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.

Select from 43 files

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 log

A 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.

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