snn_opt
A spiking neural network solver for constrained convex optimization.
A real run, not an illustration. The bowl is the objective of a 2-D
quadratic program; the coloured walls are its four linear constraints. Each
Euler step drifts down the gradient (the marker has no momentum: this is a
first-order flow drawn on the surface). When a step crosses a wall, the
state is reset onto it, and that reset is a spike (right, top). The
network searches: wall 4 fires for three steps and falls silent, then wall
1 is recruited and fires on every step until the optimum. The run certifies at iteration 201, 2e-16 from an optimum computed independently
(right, bottom). Default settings, snn_opt 0.7.1. Interactive 3-D version:
snn.ahkhan.me.
Abstract
snn_opt implements the spiking neural network (SNN) → convex optimization
equivalence as a practical solver. It minimises a convex quadratic
\min_{x \in \mathbb{R}^n}\ \tfrac{1}{2}\, x^\top A x + b^\top x
\quad\text{subject to}\quad C x + d \le 0,\quad x \in K_1 \cap \dots \cap K_r,
by alternating gradient descent, the leaky-integrate drift of a membrane potential, with discrete projection events that reset the state onto the constraint it crossed, the optimization analogue of an integrate-and-fire spike. The $K_q$ are optional convex sets added in v0.7.0: balls, second-order and friction cones, the PSD cone, spectral-norm balls, affine subspaces, intersections of these, and user-supplied differentiable convex inequalities. The construction follows Mancoo, Keemink and Machens (NeurIPS 2020); the solver itself is described in Khan, Cao and Li, Neurocomputing 2026, and underlies the SNN-X research program, classical machine-learning and control problems recast as constrained convex programs and solved by these dynamics (see Applications).
The repository is both a research artifact, since published SNN-X results reproduce from the code here, and a teaching resource: annotated examples, a self-contained mathematical writeup, and benchmarks that show convergence, projection dynamics and the solver's accuracy limits against independent, certified references.
The idea in three moves
- Drift. Between spikes the state follows the negative gradient, $x \leftarrow x - k_0 \nabla f(x)$, with $\nabla f(x) = Ax + b$. This is a population of leaky integrators driven by the objective.
- Spike. When a step leaves the feasible set, the most-violated constraint fires and applies a minimal correction back onto its boundary: a step along $c_j$ for a row, an exact projection for a cone or ball. Firings repeat within the step until every constraint holds.
- Settle. At the optimum the drift into the active walls is exactly balanced by their spikes. Which constraints keep firing is the active set, and their firing balances the gradient as the KKT multipliers do, so the spike raster doubles as a readout of the solution's structure.
In continuous time this is $\dot x = -\nabla f(x) - C^\top s(t)$ with a
corrective spike train $s(t)$; discretised with forward Euler and an
adaptive projection that reaches the boundary exactly, it is a projected
gradient method whose diagnostics are a neural raster.
docs/theory.md derives it from LIF dynamics, including
the eigenvalue-based step size that removes k0 as a hyperparameter.
Quick start
pip install snn-opt # prebuilt wheels: Linux, macOS, Windows; CPython 3.9-3.14
import numpy as np
from snn_opt import solve_qp
# Minimise ||x||^2 subject to x_1 + 2 x_2 >= 1, written as -x_1 - 2 x_2 + 1 <= 0.
A = np.eye(2)
b = np.zeros(2)
C = np.array([[-1.0, -2.0]])
d = np.array([1.0])
x0 = np.array([1.0, 1.0])
result = solve_qp(A, b, C, d, x0)
print(result.summary()) # converged? iterations? spikes? certificate?
print("x* =", result.final_x) # [0.2, 0.4]
For repeated solves (warm-started receding-horizon problems), construct an
SNNSolver once and call .solve(x0) per instance; see
examples/example4_warm_start.py.
How it behaves: convergence and projection dynamics
Four diagnostic figures, regenerated from benchmarks/ with
python benchmarks/run_all.py, give a quick visual sense of what the solver
actually does. Every objective gap below is measured against an independent
reference optimum from snn_opt.reference (via
benchmarks/qpref.py), never against a long run of
snn_opt itself; scoring the solver against its own fixed point cannot reveal a
standing offset between that fixed point and the true minimiser, and on these
problems there is one. The reference carries its own certified bound on
||x - x*|| (of order 1e-6 here); differences far below that are agreement with
the reference, not certified errors.
Convergence on a random 50-D QP with 30 inequalities (7 active at the
optimum). The gap descends geometrically for about 1800 iterations, then the
iterate settles into a period-2 limit cycle: it alternates between two
points whose gaps are 3.0e-4 and 6.7e-4, which is why the two branches in panel
(a) are drawn separately and why panel (b) flatlines rather than decaying. The
run is jointly feasible throughout (max row distance 8.2e-7) and reports
converged=False at the 4000-iteration cap: the scale-invariant KKT
certificate (v0.6.0) measures the limit cycle's relative optimality defect at
8.9e-4, above the default kkt_rel_tol = 1e-4, and the value is a true floor
(unchanged at 40k iterations). Loosen kkt_rel_tol, or shrink the floor
itself with k0_scale, to certify on this problem. See
Accuracy and tuning for where the floor comes from.
Projection-spike raster on an 8-D QP over a 16-facet polytope whose unconstrained minimiser sits well outside the feasible set. Each marker is one projection event. The network visibly searches for the active set: row 11 fires a burst around t = 4..10 and then falls silent, while rows 5, 10 and 3 are recruited at t ~= 21, 23 and 41 and fire on every step thereafter. Those three persistent rows are exactly the active set of the true optimum. This is the practical payoff of the spiking view, and the literal sense in which the solver is spiking.
Warm-start speedup on a sequence of 30 drifting QPs, a stylized MPC
workload, measured under the v0.6.0 KKT stopping criterion with checks every
10 iterations after iteration 20 (patience=2; the shipped defaults check
every 50). From the second problem onward, warm starting cuts a
221-iteration cold solve to 101 iterations, an essentially free 2.19x, and
wall time falls in step (2.03x on the benchmark machine). With the shipped
check schedule the same sequence gives 351 and 201 iterations.
Iterations are the headline because they are deterministic; the wall-time
panel is the median of five timed runs per problem, since a single pass picks
up scheduler noise indistinguishable from signal.
Accuracy against step size, at three iteration budgets. The spiking dynamics
converge to a fixed point of the discretised flow, which is offset from the
exact minimiser by an amount that shrinks with the gradient step k0. Smaller
k0 also means more iterations are needed to arrive, so each budget has a knee,
and the knee moves left as the budget grows. The shipped default
(k0_scale = 0.5) sits to the right of every knee: on this problem it leaves a
gap of 6.7e-4, while k0_scale = 0.02 reaches 1.2e-5 given 80k iterations.
A closer look: trajectory and raw-vs-optimized modes
Two figures generated by the example scripts give a more concrete sense of what the dynamics look like in 2-D, where everything is easy to visualize:
State evolution and 2-D trajectory for examples/example1_basic_2d.py, a
constrained QP whose unconstrained minimum lies outside the feasible polytope.
Left: per-component value over time, with the projection events shown as a rug
along the bottom. The sawtooth in each trace is the integrate-and-fire dynamic
itself: drift away from the boundary, spike back onto it, repeat. Right: the
trajectory in state space over objective contours, gliding down the gradient,
meeting the active facet and sliding along it to the constrained optimum. This
example deliberately runs projection_method='fixed', which produces many small
corrections rather than one exact jump, because that is what makes the spiking
behaviour visible.
Output of examples/example_raw_mode.py, comparing a fixed gradient and
projection step against the defaults (auto k0 from the Lipschitz constant,
exact projection to the boundary). Both reach the optimum on a problem whose
constraint is active at the solution: the optimized run gets within 1e-16 of the
exact objective in roughly 25 iterations, while the raw run needs the full 300
to reach 1e-15.
Beyond polytopes: conic constraints (v0.7)
A desired contact force $p$ lies outside the friction cone $\Vert f_t\Vert \le 0.5, f_n$, so it would slip. Gradient flow pulls the force toward $p$ in the metric of the objective; each time a step leaves the cone, a spike projects it back exactly, and the state slides around the curved wall to the closest admissible force. At the end the objective's level set through $x^\star$ (orange) just touches the cone, and $-\nabla f(x^\star)$ points along the cone's outward normal: the KKT condition, made visible. Real run, default settings.
Any convex set with a cheap Euclidean projection, or any differentiable
convex inequality, joins the same winner-take-all spike sweep as the rows of
C. Opt in through nonlinear_candidates. The same idea as the animation,
with a Euclidean objective:
import numpy as np
from snn_opt import OptimizationProblem, SNNSolver, SolverConfig, scaled_soc_projector
cone = scaled_soc_projector(t_index=2, z_indices=[0, 1], mu=0.5) # ||(f1, f2)|| <= 0.5 f3
p = np.array([1.53, -0.39, 1.29]) # desired force
problem = OptimizationProblem(np.eye(3), -p, np.zeros((0, 3)), np.zeros(0),
nonlinear_candidates=(cone,))
result = SNNSolver(problem, SolverConfig()).solve(np.array([0.0, 0.0, 1.0]))
| Family | Constructors |
|---|---|
| Balls, halfspaces, affine subspaces | ball_projector, halfspace_projector, AffineSubspaceProjector |
| Second-order and friction cones | soc_projector, scaled_soc_projector, lift_soc_l1, lift_soc_l2 |
| Matrix sets | psd_cone_projector, spectral_ball_projector, spectral_norm_cutter |
| Intersections | dykstra_projector, joint_projector (rows and cones projected jointly) |
| Your own | CutterCandidate(value, jacobian), ProjectorCandidate(project) |
When several sets can be active together, wrap them in one
dykstra_projector. It projects exactly onto the intersection; left as
separate candidates, the sweep alternates between them. The worked example
examples/example8_friction_cone_grasp.py
finds the gentlest three-finger grasp of a ball, with force and torque
balance plus one friction cone per finger. Wrapped, it certifies in 201
iterations to within 4e-13 of a Newton-polished reference; as separate
candidates, it stops at the iteration cap with a 5e-2 relative KKT defect.
Built-in sets also run on the compiled backend (backend='c'; PSD and
spectral blocks up to 8×8); custom callbacks need backend='python'. The
full reference, including when the certificate becomes a direct bound on
the state error (strongly convex objectives with Dykstra, PSD or spectral
candidates), is in
docs/api.md; the
derivation is docs/theory.md §8.
Trusting the result
Three fields answer the questions that matter on any real problem:
result.joint_feasible # rows, bounds and candidates all within feasibility_tol
result.kkt_residual / result.kkt_scale # scale-invariant optimality defect
result.converged # True means the KKT certificate passed (v0.6.0+)
converged=True means a KKT-cone certificate passed, together with
feasibility and a plateau check, at three consecutive checkpoints. For
polyhedral problems and bare cone or ball candidates it is one nonnegative
least-squares fit of $-\nabla f(x)$ onto the cone of unit constraint
normals, with a complementarity guard, accepted relative to the problem's
own gradient scale. That decision is invariant under objective rescaling,
row order, row duplication and per-row scaling, so the same problem
certifies identically at natural scale and at 1e10×. For a strongly convex
problem whose candidates are exact Dykstra, PSD or spectral projectors, it
is instead a bound on $\Vert x - x^\star\Vert$ in state units
(details). A run that reports converged=False either hit its iteration cap before
the certificate passed or aborted on its projection watchdog
(projection_budget_exhausted); convergence_reason says which, and
kkt_residual / kkt_scale says how far from optimal it stopped. The
history of these fields, including the v0.5.0 removal of a terminal bound
clip that could report an objective below the true optimum, is in
docs/correctness.md.
Accuracy and tuning
The spiking dynamics converge to a fixed point of the discretised flow, not to
the exact minimiser of the QP. On well-conditioned problems the two are close;
they are not identical, and the difference is set by the gradient step size
k0 = k0_scale / L.
Concretely, on the 50-D benchmark of Figure 1 with the shipped defaults, the solver reaches a period-2 limit cycle whose objective gap against the exact optimum alternates between 3.0e-4 and 6.7e-4, and stays there: the value is identical to ten significant figures at 20k and at 100k iterations. It is jointly feasible the whole time. So the limitation is accuracy of the fixed point, not feasibility.
What to do about it, in order of usefulness:
- Read
kkt_residual / kkt_scaleas the optimality verdict. It is the scale-invariant KKT defect of the final point, comparable across problems and objective scalings;converged=Truecertifies it belowkkt_rel_tol. On this benchmark it reports 8.9e-4, an honest measurement of the limit cycle, which is why the run does not certify at the default 1e-4. - Lower
k0_scale, and raise the iteration budget with it. Figure 4 maps the trade. On that problem, 0.5 gives 6.7e-4 and 0.02 gives 1.2e-5, but only if the budget is large enough to arrive; at 5k iterations the same 0.02 setting is far worse than the default. Tune the pair, neverk0_scalealone. - Project exactly instead of greedily. The offset comes from the
sequential row sweep, which is not the exact projection onto the polytope
when several rows are active. Pass the rows as one
joint_projector(C, d)candidate (with emptyC,din the problem). On the Figure 1 problem the objective gap drops from the 6.7e-4 floor to 2.1e-10 under the default certificate, and the iterate reaches 3.8e-10 from $x^\star$ withkkt_rel_tol=1e-9, at the cost of an inner Dykstra loop per step (3.5 s instead of milliseconds on the compiled backend;benchmarks/05_exact_projection.py). Seedocs/theory.md§8.2. - Polish externally if you need machine precision. Once the active set is
correct (and it usually is, see Figure 2), the exact optimum follows from one
equality-constrained KKT solve on those rows, in well under a millisecond on
these sizes. For an independent reference with an error certificate, use
snn_opt.reference.solve_reference.
Two known limitations are worth stating plainly. Ill-conditioned or stiff
QPs are the harder case: the native adaptive stepping can fail to reach
tolerance and return an infeasible point, and naive Jacobi/diagonal
preconditioning conflicts with the adaptive step-size rule rather than fixing
it. When a run reports converged=False, read the diagnosis in order: check
joint_feasible and projection_budget_exhausted first (feasibility failures
and watchdog aborts are their own categories), then read
kkt_residual / kkt_scale; since v0.6.0 that number is scale-invariant, so
"how far from optimal" is finally a well-posed question at any problem
scaling.
Backends and hardware
Installation options
snn_opt requires Python 3.9+, NumPy, and SciPy. The fastest path is PyPI:
pip install snn-opt # core, prebuilt wheel (no compiler needed)
pip install "snn-opt[examples]" # also installs matplotlib for examples
pip install "snn-opt[dev]" # examples + cvxpy + pytest + ruff
The PyPI distribution name is
snn-opt(hyphenated, lowercase, per PEP 503); the Python import name issnn_opt. So youpip install snn-optand thenimport snn_opt.
For an editable install from a checkout (development workflow):
git clone https://github.com/ahkhan03/SNN_opt.git
cd SNN_opt
pip install -e . # core
pip install -e ".[examples]" # also installs matplotlib for examples
pip install -e ".[dev]" # examples + cvxpy + pytest + ruff
For a specific commit (reproducibility for papers/collaborators):
pip install "git+https://github.com/ahkhan03/SNN_opt.git@<commit-sha>"
The package can also be run without installation: every example and test sits next to a small sys.path bootstrap that points at src/. Smoke test:
python tests/test_installation.py
Compiled C++ backend
The PyPI wheels ship a precompiled C++ kernel (snn_opt._kernel) that accelerates the inner adaptive-projection loop by roughly an order of magnitude over the pure-Python path. Opt in via the backend keyword:
result = solve_qp(A, b, C, d, x0, backend='c') # compiled kernel (auto)
result = solve_qp(A, b, C, d, x0, backend='python') # reference (default)
The compiled kernel comes in three numerically identical variants that differ only in how the inner matrix–vector products are threaded:
backend |
matvec threading |
|---|---|
'c' |
auto: OpenMP multicore when the wheel was built with it, else single-thread |
'c_serial' |
forced single-thread (SIMD only) |
'c_openmp' |
forced OpenMP multicore (raises if the wheel was built without OpenMP) |
Only the matvec is data-parallel; the Euler recurrence and the greedy projection
are inherently serial (an Amdahl ceiling of roughly 2–3× on a few cores). Because
per-call thread fork/join only pays off on large systems, the multicore path is
automatically skipped below a work threshold, so 'c' matches the serial path on
small/medium problems and only spins up threads on large ones. Multithreading
honours OMP_NUM_THREADS; snn_opt._kernel.HAS_OPENMP and
snn_opt._kernel.max_threads() report the build's capability.
All backends are kept in lockstep by the parity test suite (tests/test_c_backend_parity.py). The C kernel supports dense problems with projection_method='adaptive' and up to 4096 constraint rows (the Gram precompute cap); sparse inputs, other projection methods, and larger constraint sets are rejected with a clear error rather than silently falling back, so select backend='python' for those. The same kernel source is HLS-compatible and is the basis for the FPGA deployment track. When the precompiled kernel is unavailable on your platform (rare), the 'c*' backends raise a clear error and the Python backend continues to work.
Problem transforms (eigenbasis)
Orthogonal to the backend, the transform axis rewrites the problem into an equivalent one that is cheaper to solve and maps the solution back. Transforms are an explicit opt-in (SolverConfig.transform); the canonical solver stays the default, and a transform composes with any backend.
from snn_opt import solve_qp
result = solve_qp(A, b, C, d, x0, ...) # canonical (default)
from snn_opt import SNNSolver, SolverConfig, OptimizationProblem
cfg = SolverConfig(transform='eigenbasis', backend='c')
result = SNNSolver(OptimizationProblem(A, b, C, d), cfg).solve(x0)
EigenbasisTransform (transform='eigenbasis') rotates a symmetric-PSD Hessian into its eigenbasis (A = VΛVᵀ), collapsing the dominant O(n²) A @ x gradient step into an O(n) elementwise product; the projection is unchanged because the constraint Gram is rotation-invariant. The win grows with problem size.
Since v0.5.0 the transform does accept box bounds. Per-coordinate bounds are not rotation-invariant, so they cannot stay implicit: they are materialized as explicit rotated unit-norm rows, growing m by up to 2n. The O(1) implicit-facet advantage is deliberately surrendered under a transform, which is the trade to be aware of when combining the two. See docs/api.md.
FPGA reference kernels
fpga/kv260_v05/ is the restricted fixed-horizon Kria K26
reference physically qualified for the SNN-MSRP study (v0.5 projection
semantics, fixed-point contract; routed to close timing at 200 MHz, with the
deployed kernel clock measured at 160 MHz). fpga/kv260_v07/
adds native ball and scaled-second-order-cone resets on the resident
datapath, board-qualified with the kernel running at 200 MHz and raw state
and telemetry equal to native emulation. Each README records its measured qualification surface and
unsupported cases. They are references for the hardware track, not general
FPGA backends for solve_qp.
Examples
All scripts live under examples/ and are runnable as plain python examples/example_name.py.
| # | Script | Problem | Highlights |
|---|---|---|---|
| 1 | example1_simple_2d.py |
2D quadratic with two linear cuts | Smallest possible runnable demo |
| 1b | example1_basic_2d.py |
Same problem, with trajectory plot | See examples/example1_basic_2d.png |
| 1c | example1_advanced_2d.py |
Shifted feasible region, infeasible start | Spike raster + violation plot |
| 2 | example2_3d_polytope.py |
3D QP with 4 hyperplanes | Multiple active constraints, vertex solution |
| 3 | example3_linear_program.py |
Box-constrained LP ($A=0$) | LP via the same machinery |
| 4 | example4_warm_start.py |
Sequence of related QPs | Receding-horizon / MPC pattern; warm starts eliminate the projection events (see Figure 3 for the quantitative benchmark) |
| 5 | example5_infeasible_recovery.py |
Infeasible initializations | Automatic projection to feasibility |
| 6 | example6_equality_constraint.py |
Equality via a sandwiched band | $x_1 = a$ as a tight $\pm \varepsilon$ inequality pair |
| 7 | example7_svm_dual.py |
SVM dual with kernel | Implicit box facets + auto step size on a real ML task |
| 8 | example8_friction_cone_grasp.py |
Three-finger grasp with friction cones | Conic constraints, Dykstra intersection, Clarabel cross-check; writes example8_friction_cone_grasp.png |
| . | example_raw_mode.py |
Bypass auto-config | Compares raw vs. optimized solver settings |
Run them all in sequence:
python examples/run_all_examples.py
Documentation
docs/theory.md: derivation of the SNN/convex-optimization equivalence, step size, projection geometry, convergence criteria, and (§8) the conic extension.docs/api.md: hand-curated API reference, includingsnn_opt.nonlinear.docs/correctness.md: what the feasibility and certification fields mean, and how they changed in v0.5 and v0.6.docs/applications.md: published work that uses this solver.benchmarks/README.md: what each figure shows and how to regenerate it.docs/media/README.md: how the animations are produced from solver output.- snn.ahkhan.me: companion site with the interactive 3-D player, written for students and curious researchers.
Applications
The framework is demonstrated in:
- Khan, Cao & Li (2026), An Event-Driven Neurodynamic Solver with Adaptive Projection for Constrained Quadratic Programming, Neurocomputing, 703:134705. doi:10.1016/j.neucom.2026.134705. The adaptive-projection solver implemented here.
- Khan, Mohammed & Li (2025), Portfolio Optimization: A Neurodynamic Approach Based on Spiking Neural Networks, Biomimetics, 10(12):808. doi:10.3390/biomimetics10120808. Portfolio selection cast as a constrained QP and solved by these dynamics.
Additional applications are in preparation and will be added to
docs/applications.md as they appear in print.
Citing this work
If snn_opt plays a role in your research or teaching, please cite the
software and the solver paper:
@software{khan2026snnopt,
author = {Khan, Ameer Hamza and Li, Shuai},
title = {snn\_opt: A Spiking Neural Network Solver for Constrained Convex Optimization},
year = {2026},
version = {0.8.0},
url = {https://github.com/ahkhan03/SNN_opt},
license = {Apache-2.0},
}
@article{khan2026eventdriven,
author = {Khan, Ameer Hamza and Cao, Xinwei and Li, Shuai},
title = {An Event-Driven Neurodynamic Solver with Adaptive Projection for Constrained Quadratic Programming},
journal = {Neurocomputing},
volume = {703},
pages = {134705},
year = {2026},
doi = {10.1016/j.neucom.2026.134705},
}
@inproceedings{mancoo2020understanding,
author = {Mancoo, Allan and Keemink, Sander and Machens, Christian K.},
title = {Understanding Spiking Networks Through Convex Optimization},
booktitle = {Advances in Neural Information Processing Systems (NeurIPS)},
year = {2020},
}
License
Apache-2.0, see LICENSE. Permissive, with an explicit patent grant; suitable for both academic and commercial reuse.
Acknowledgments
Developed at the School of Artificial Intelligence, Taizhou University.
This codebase implements the SNN-QP research program led by Prof. Shuai Li (IEEE Fellow; Faculty of Information Technology and Electrical Engineering, University of Oulu, Finland), whose work on neurodynamic optimization originated this line of inquiry. The mathematical framework follows Mancoo, Keemink and Machens (NeurIPS 2020) and the broader projection-neural-network lineage (Hopfield–Tank, Kennedy–Chua, Xia–Wang, Liu–Wang). Pull requests, bug reports, and citations of the SNN-X papers in your own work are all warmly welcomed.
Metadata
Release files for snn-opt 0.8.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| snn_opt-0.8.1.tar.gz | 176.1 kB | Details |
Built distributions (wheels)
Total release size: 9.7 MB
Release files / snn_opt-0.8.1.tar.gz
| Download URL | snn_opt-0.8.1.tar.gz |
|---|---|
| Size | 176.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
632a02f88b40c57104d7e2eddda8bc6a81ba3d8b1a2fde5b2681cfc11632f406
|
|
BLAKE2b-256 checksum How to use checksums |
87cb8f06ec922310bb6ff8fb94817d86dfc831f82539fd54d62528e6f40e8c83
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp314-cp314-win_amd64.whl
| Download URL | snn_opt-0.8.1-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 454.4 kB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f412cddfa1b1617916c54e05f1ffc3412f4c2f0aa6368f5f8404d59a25c79074
|
|
BLAKE2b-256 checksum How to use checksums |
95800849e89c11254f597b8f2e4a4284f589617e4789a070ba1e5bd24e7ba740
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | snn_opt-0.8.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 459.6 kB |
| Tags | CPython 3.14 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c39bba140f23e6d49d8bb9d3605e432df82944f415c9bd2d1476647ae7f75e64
|
|
BLAKE2b-256 checksum How to use checksums |
8e8145406febb0f8a730aabb4e1dfc9dc148fc2fbba2b2719ac11aef15b36a8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
| Download URL | snn_opt-0.8.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 442.5 kB |
| Tags | CPython 3.14 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
f30be169763667018e9a1e9a45e5b4c62a9f6fc4db4b0a5e2568f01eac853313
|
|
BLAKE2b-256 checksum How to use checksums |
368d0fc6160d94ef54f5d796eb6423042a173435288158a3be3e9b1c381af759
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | snn_opt-0.8.1-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 256.9 kB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
93017fb12db9836aa61a08558212516cf752b21eb5df3a10871fdf8750781b64
|
|
BLAKE2b-256 checksum How to use checksums |
9d52fbb50e543a8356c5ec77b4ea09b93dde26f59c9aa6b43379b9cb290c397a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp313-cp313-win_amd64.whl
| Download URL | snn_opt-0.8.1-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 443.7 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
c55f34ac876a7ca95a920c645e063b9d1c445015b96cfb54264ab381f66a427c
|
|
BLAKE2b-256 checksum How to use checksums |
ff1cd3cee7101bd9dd421a9ee5ad7d1009f2e3c4c29342a4d6a0690613cd26d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | snn_opt-0.8.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 459.2 kB |
| Tags | CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
7ca2befdc350aac3085aadf96ba4f78e1de4773fdb708bdd3e7b69c67ed5d2bf
|
|
BLAKE2b-256 checksum How to use checksums |
af56d64249725bc8eba5cb2181a11aaf55b3f730a08de4bde404b85e5e17715c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
| Download URL | snn_opt-0.8.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 441.5 kB |
| Tags | CPython 3.13 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
f91f75cc5ccb2717644ce8f97779353dafc31868139c97db49d1587efe8df967
|
|
BLAKE2b-256 checksum How to use checksums |
17f7d37f3b0bf5098d0a863bef99f1e291cf5be95a68d32b0ee588df56a4c6fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | snn_opt-0.8.1-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 257.0 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8a42f53285bb5af86b5184405aba406818bcbca2352583e600c2719fa45e08e8
|
|
BLAKE2b-256 checksum How to use checksums |
c7d24d19b3821c3e5c32a22c8e2335e0f5d597facac9da219a7f12c5cb0b8674
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp312-cp312-win_amd64.whl
| Download URL | snn_opt-0.8.1-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 443.7 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
62c36e4da45d8fa870c7968c76b9cc24619979cf2bbe50d5b82c76cd9d6158d9
|
|
BLAKE2b-256 checksum How to use checksums |
0e5bbdd6e920464829b1026a7a6c35ef8d6b83721a78afd04265054f5a79ffc5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | snn_opt-0.8.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 459.1 kB |
| Tags | CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
940dfe826db12e01c3f9b5e01d74618ef4dd0acfa2161ce03943aad4ec931c02
|
|
BLAKE2b-256 checksum How to use checksums |
e65f43423d15b0340024c4cf58f016a7180c05d3a67a4d890be3fe4bb0ee5e85
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
| Download URL | snn_opt-0.8.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 441.6 kB |
| Tags | CPython 3.12 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
1df6fd25d70b44e467b61b874dd45d843491c40695aae0e5a8a9b71f63536558
|
|
BLAKE2b-256 checksum How to use checksums |
72ef3979c3e40cbb23af129992800c1d8905975615bcf85e6f9bd9525e1da842
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | snn_opt-0.8.1-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 256.9 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4abeb248b508a4b64857356c247307f58ab3a8ecac4d37495110937141ec5138
|
|
BLAKE2b-256 checksum How to use checksums |
35151e653e1540e5a86eb59475903671e22dac3081b1b8e4085de6e2d12170e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp311-cp311-win_amd64.whl
| Download URL | snn_opt-0.8.1-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 440.8 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
50781a6bf6ab28abf80a162559c041ba29dd1beb7c2638b28201ff78e649c4fc
|
|
BLAKE2b-256 checksum How to use checksums |
d798a2b85424c584bcb838db0a7a7fc1f8dfcde501cc734bd7221e2ee141f41d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | snn_opt-0.8.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 454.1 kB |
| Tags | CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
b9d0186678f4394dc26a8845d78108d8a907b88a2379b097ca53e84ef6f425f6
|
|
BLAKE2b-256 checksum How to use checksums |
b97a26e79490bdce3dba64988ffccd89e5afd7829393fd7a17c3ee3b7b9b5d75
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
| Download URL | snn_opt-0.8.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 438.2 kB |
| Tags | CPython 3.11 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
5eeb9c17f52beed4184ddce7dc2fd426c2ea95b9acb865012ac13153b624f477
|
|
BLAKE2b-256 checksum How to use checksums |
550de307e6fa7cd2da76534abd4d3dc0e3e3e5da5783562a0f24545d49fa0a31
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | snn_opt-0.8.1-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 253.8 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b38ca362602f3453da78e8e49c6ecf4076b06a6136d1def4d5775616b6c9b84e
|
|
BLAKE2b-256 checksum How to use checksums |
5ef099f1fbf5ef7aee67e8b29d10ea5d6b4c1195c34c7ad27823a5b061bb1d0b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp310-cp310-win_amd64.whl
| Download URL | snn_opt-0.8.1-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 440.2 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
2c70e0986f568f4bd99c47a132aac35e551e50dacf80139449a585381895622d
|
|
BLAKE2b-256 checksum How to use checksums |
90a8031aaa98f1d6c5717bd2dd53492c9f118371d60a805ecccb20bc0353170e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | snn_opt-0.8.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 453.1 kB |
| Tags | CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
a091c423d1844fcb026c882a8ad953727d6be971e01f519406a7fafe4570ba98
|
|
BLAKE2b-256 checksum How to use checksums |
23826839c0758b05734d8acd95a77e3750073762496e5471823684bd77346555
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
| Download URL | snn_opt-0.8.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 437.3 kB |
| Tags | CPython 3.10 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
4b42d3bebfdcdf18e17ffb15bba0121262485e00ecbd39de01167e95ce770236
|
|
BLAKE2b-256 checksum How to use checksums |
24685942f74d7d6aea45c4ea865e34cbd3c4e32024df7368fdae45742b3b137b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | snn_opt-0.8.1-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 252.5 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
5071baf858168ed181e3ecfd9fd34c6e71827f9f9b4807b5c8c3809181e4af39
|
|
BLAKE2b-256 checksum How to use checksums |
bed983f0a6f0b9379c7bb6041e48c237b8dd6c92b1e5387cdd3b1968fd763fab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp39-cp39-win_amd64.whl
| Download URL | snn_opt-0.8.1-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 441.1 kB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
2170ae6ad274e3298d731cac880399e1fe12b2cbfa1eac8a48be72a3d92459f8
|
|
BLAKE2b-256 checksum How to use checksums |
189b62b454beaf8b74eec8b884c855c50e0d75c7a5ab83639be98947ef5c095e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | snn_opt-0.8.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 452.5 kB |
| Tags | CPython 3.9 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
b01e361910e4000211ac8284bdf722867473354a585987e4ae2a7f39dba4acbd
|
|
BLAKE2b-256 checksum How to use checksums |
114f7f9173cc8c7e9c6a7e7ba2fed965d967a3c9b1655e2c6266e0416b61b02e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
| Download URL | snn_opt-0.8.1-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 437.8 kB |
| Tags | CPython 3.9 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
33863ac69d23ebb24740b0bf6ac0382ac6ceb67aaf247fc2c969e3d78f459b3d
|
|
BLAKE2b-256 checksum How to use checksums |
a321665c56515a14e395432d25a664d122516243349bfe2b526ab53d4d66345c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / snn_opt-0.8.1-cp39-cp39-macosx_11_0_arm64.whl
| Download URL | snn_opt-0.8.1-cp39-cp39-macosx_11_0_arm64.whl |
|---|---|
| Size | 252.7 kB |
| Tags | CPython 3.9 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
9b3279164dc64bb916d4c5789566f69c9c7b40f24ba7bb9e693f6da70b0604e7
|
|
BLAKE2b-256 checksum How to use checksums |
adf99d411f936c4e830acc39c2ba24dd96dec2e0d3695dcc13dd35d8a8f48c99
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency log