Skip to main content

NumKong for Python

NumKong for Python is the main high-level SDK in the project. It targets the gap between numpy and low-level native kernels: you keep buffer-protocol interoperability and shape-aware outputs, but you stop giving up mixed precision, widened accumulators, packed reuse, and backend-specific optimizations every time you leave float64. It combines NumPy-friendly buffers with native mixed-precision kernels, zero-copy tensor views, packed and symmetric matrix operations, sparse helpers, geometric mesh alignment, and MaxSim. The API feels NumPy-shaped with familiar scalar, batched, and all-pairs entrypoints, while Tensor keeps shape, dtype, and strides visible through a memoryview-backed container. Low-precision dtypes (BFloat16, Float8, Float6, packed bits) flow through the same API, and dense, packed, and symmetric kernels release the GIL around native work.

Ecosystem Comparison

Feature NumKong NumPy/SciPy PyTorch
Operation families dots, distances, binary, probability, geospatial, curved, mesh, sparse, MaxSim, elementwise, reductions, cast, trig dots, distances, elementwise, reductions, some probability via cdist dots, distances, elementwise, reductions
Precision BFloat16 through sub-byte — Float8, Float6, Int4, packed bits; automatic widening; Kahan summation; 0 ULP in Float32/Float64 Float16, partial BFloat16; no auto-widening; standard accuracy Float16, BFloat16, partial Float8; explicit AMP required; standard accuracy
Runtime SIMD dispatch auto-selects best ISA per-thread at runtime on x86, ARM, RISC-V compile-time only CPU: compile-time; CUDA: runtime
Packed matrix, GEMM-like pack once, reuse across query batches np.dot/@ — no persistent packing torch.mm — no persistent distance-oriented packing
Symmetric kernels, SYRK-like skip duplicate pairs, up to 2x speedup for self-distance pdist computes one triangle; cdist recomputes both X @ X.T recomputes both triangles
Output parameter out= Yes — all major entrypoints Yes — most ufuncs and functions; SciPy: some functions only Yes for torch.mm, torch.matmul; No for torch.cdist
Fast CPython calling convention Yes — direct METH_FASTCALL Yes — vectorcall in 2.0+ No — tensor dispatch overhead
GIL release batched, packed, and symmetric kernels some ops only most ops

Quickstart

import numpy as np
import numkong as nk

a, b = np.random.randn(1536).astype(np.float32), np.random.randn(1536).astype(np.float32)
dot = nk.dot(a, b)  # widened accumulation, not same-dtype
print(dot)

Installation

From PyPI:

python -m pip install numkong

From a local checkout:

python -m pip install .

Quick runtime check:

python -c "import numkong as nk; print(nk.get_capabilities())"

Wheel Compatibility and Building from Source

Pre-built wheels are available on PyPI for Linux (x86_64, aarch64, riscv64, plus i686, ppc64le, s390x), macOS (x86_64, arm64), and Windows (AMD64, ARM64). Python 3.9 through 3.14 is supported, including free-threading variants (3.13t, 3.14t). Every wheel is built with NK_DYNAMIC_DISPATCH=1, so a single wheel covers all CPU generations on a given architecture.

When building from source, the compiler requirements depend on the platform. On macOS x86 only AVX2 is available; on macOS ARM NEON is always present, but SME requires Apple M4+ with Xcode 16+ (AppleClang 16+). RISC-V builds require Clang and LLD because GCC lacks zvfh, zvfbfwma, and zvbb support. On Windows, MSVC 19.44+ (Visual Studio 2022 17.14+) is recommended for full AVX-512 with FP16/BF16/VNNI. Build parallelism is controlled by NK_BUILD_PARALLEL, which defaults to min(cpu_count, 4) and should be lowered in memory-constrained containers. There is no OpenMP dependency. Python-side parallelism uses concurrent.futures with GIL-free kernels.

NK_BUILD_PARALLEL=2 pip install . --no-build-isolation

Dot Products

Dot products are their own family because storage type, conjugation rules, and output widening matter.

import numpy as np
import numkong as nk

a = (np.random.randn(256) + 1j * np.random.randn(256)).astype(np.complex64)
b = (np.random.randn(256) + 1j * np.random.randn(256)).astype(np.complex64)

dot = nk.dot(a, b)   # numpy.dot(a, b)
vdot = nk.vdot(a, b) # numpy.vdot(a, b)

print(dot, vdot)

Real low-precision inputs can also be routed through explicit dtype tags when the storage buffer itself is raw bytes.

Dense Distances

The dense distance entrypoints cover sqeuclidean, euclidean, and angular. The first important difference from NumPy or SciPy is that the accumulator policy is not forced to match the storage dtype.

import numpy as np
import numkong as nk

a = np.random.randn(768).astype(np.float16)
b = np.random.randn(768).astype(np.float16)

sqeuclidean = nk.sqeuclidean(a, b)
euclidean = nk.euclidean(a, b)
angular = nk.angular(a, b)

For float16, a naive same-dtype implementation is exactly the kind of path that loses precision or widens too late. NumKong's API makes the widening policy part of the kernel contract.

Output Control: out=, dtype=, and out_dtype=

Most distance and dot-product entrypoints accept out=, dtype=, and out_dtype= keyword arguments. Passing them avoids dynamic memory allocations for temporary objects.

import numpy as np
import numkong as nk

queries = np.random.randn(100, 768).astype(np.float32)
database = np.random.randn(100, 768).astype(np.float32)

# Pre-allocated output with out=
out = nk.zeros((100,), dtype="float32")
nk.sqeuclidean(queries, database[:100], out=out)  # writes in-place, returns None

# Explicit input dtype for raw byte buffers
raw = np.frombuffer(some_bytes, dtype=np.uint16)
nk.dot(raw, raw, dtype=nk.bfloat16)  # reinterpret uint16 as bf16

# Output dtype override
nk.euclidean(queries[0], database[0], out_dtype="float32")  # accumulate in f64, downcast result

When out= is provided, the function writes results in-place and returns None. The out array must be pre-allocated with the correct shape and a supported dtype. For custom float types (bfloat16, float16, float8_e4m3, float8_e5m2, float6_e2m3, float6_e3m2), type objects are preferred over strings — they are faster to dispatch and provide IDE autocomplete:

nk.dot(a, b, dtype=nk.bfloat16) # works faster
nk.dot(a, b, dtype="bfloat16")  # works a bit slower

Buffer-First Casting

nk.astype converts a CPU buffer in one native pass. Unlike nk.Tensor(a).astype(dtype), it never stages a through an intermediate NumKong Tensor. The input may have arbitrary rank and strides, and the returned Tensor preserves its shape and is C-contiguous.

image_u8 = np.random.randint(0, 256, size=(1080, 1920, 3), dtype=np.uint8)
image_f32 = nk.astype(image_u8, "float32")

# Reuse an existing allocation — writes in place and hands `out` back.
out = np.empty(image_u8.shape, dtype=np.float32)
assert nk.astype(image_u8, "float32", out=out) is out

Any writable buffer works as out, whether a NumPy array, a memoryview, or a NumKong Tensor. It must be C-contiguous, exactly the input shape, already of the requested dtype, and must not overlap the input. A NumKong Tensor is the way to name a dtype NumPy cannot express, such as bfloat16, uint1, int4, or uint4. The native conversion runs without the GIL.

The conversion policy is NumKong's core policy. Same-dtype conversion makes an independent copy, and narrower floating formats use round-to-nearest, ties-to-even. Float-to-integer conversion rounds ties to even, saturates finite overflows and infinities, and maps NaN to zero. All NumKong dtype names are accepted as targets.

Set Similarity

Packed-binary metrics operate on packed bits. That is why the right NumPy equivalent uses np.packbits, not bool arrays fed to scalar Python code.

import numpy as np
import numkong as nk

a_bits = np.random.randint(0, 2, size=256, dtype=np.uint8)
b_bits = np.random.randint(0, 2, size=256, dtype=np.uint8)
a, b = np.packbits(a_bits), np.packbits(b_bits)

hamming = nk.hamming(a, b, dtype="uint1")
jaccard = nk.jaccard(a, b, dtype="uint1")

Integer set Jaccard works on sorted ascending arrays of integer identifiers. Both inputs must be sorted in ascending order for correct results.

set_a = np.array([1, 3, 5, 7, 9], dtype=np.uint32)  # must be sorted ascending
set_b = np.array([3, 5, 8, 9, 10], dtype=np.uint32)  # must be sorted ascending
jaccard_sets = nk.jaccard(set_a, set_b) # |A ∩ B| / |A ∪ B|
assert 0.0 < jaccard_sets < 1.0, "|A ∩ B| / |A ∪ B| should be in (0, 1)"

Probability Metrics

Probability divergences deserve their own section because they are not just "one more distance".

import numpy as np
import numkong as nk

p = np.array([0.2, 0.3, 0.5], dtype=np.float32)
q = np.array([0.1, 0.3, 0.6], dtype=np.float32)

kl_forward, kl_reverse = nk.kullbackleibler(p, q), nk.kullbackleibler(q, p)
assert kl_forward != kl_reverse, "KLD is asymmetric"

js_forward, js_reverse = nk.jensenshannon(p, q), nk.jensenshannon(q, p)
np.testing.assert_allclose(js_forward, js_reverse, atol=1e-6)  # JSD is symmetric

Geospatial Metrics

Geospatial kernels take four coordinate arrays. Inputs are in radians. Outputs are in meters.

import numpy as np
import numkong as nk

# Statue of Liberty (40.6892°N, 74.0445°W) → Big Ben (51.5007°N, 0.1246°W)
liberty_lat, liberty_lon = np.array([0.7101605100], dtype=np.float64), np.array([-1.2923203180], dtype=np.float64)
big_ben_lat, big_ben_lon = np.array([0.8988567821], dtype=np.float64), np.array([-0.0021746802], dtype=np.float64)

vincenty = nk.vincenty(liberty_lat, liberty_lon, big_ben_lat, big_ben_lon)    # ≈ 5,589,857 m (ellipsoidal, baseline)
haversine = nk.haversine(liberty_lat, liberty_lon, big_ben_lat, big_ben_lon)  # ≈ 5,543,723 m (spherical, ~46 km less)

# Vincenty in f32 — drifts ~2 m from f64
liberty_lat32 = liberty_lat.astype(np.float32)
liberty_lon32 = liberty_lon.astype(np.float32)
big_ben_lat32 = big_ben_lat.astype(np.float32)
big_ben_lon32 = big_ben_lon.astype(np.float32)
vincenty_f32 = nk.vincenty(liberty_lat32, liberty_lon32, big_ben_lat32, big_ben_lon32)  # ≈ 5,589,859 m (+2 m drift)

Curved Metrics

Curved-space kernels use an extra metric tensor or inverse covariance and should not be mixed into the Euclidean section.

import numpy as np
import numkong as nk

# Complex bilinear form: aᴴ M b
a = (np.ones(16) + 1j * np.zeros(16)).astype(np.complex64)
b = (np.zeros(16) + 1j * np.ones(16)).astype(np.complex64)
m = np.eye(16, dtype=np.complex64)
bilinear = nk.bilinear(a, b, m)

# Real Mahalanobis distance: √((a−b)ᵀ M⁻¹ (a−b))
x = np.ones(32, dtype=np.float32)
y = np.full(32, 2.0, dtype=np.float32)
inv_cov = np.eye(32, dtype=np.float32)
mahalanobis = nk.mahalanobis(x, y, inv_cov)

Scalar Types and Low-Precision Formats

NumKong exposes two different low-precision stories in Python. It exposes Python scalar objects for a few formats. And it exposes tensor dtypes for the broader buffer-oriented path.

The six scalar types have stable payload sizes even though Python object headers are not:

Type Bits Bytes Range Inf NaN
nk.float16 1+5+10 2 ±65504 yes yes
nk.bfloat16 1+8+7 2 ±3.4×10³⁸ yes yes
nk.float8_e4m3 1+4+3 1 ±448 no yes
nk.float8_e5m2 1+5+2 1 ±57344 yes yes
nk.float6_e2m3 1+2+3 1 ±7.5 no no
nk.float6_e3m2 1+3+2 1 ±28 no no

The Bits column shows sign + exponent + mantissa bit counts. The Bytes column is the stable payload size; float8_* and float6_* both store 1 byte because the sub-byte formats are padded to byte alignment.

The full object footprint is interpreter-dependent. Use sys.getsizeof(nk.float16(1.0)) if you need the heap footprint of the Python wrapper object itself. Use Tensor.itemsize and Tensor.nbytes for the stable payload sizes of array storage.

ml_dtypes matters here because NumKong explicitly interoperates with the formats that NumPy still does not model well. The test suite compares bfloat16, float8_e4m3, float8_e5m2, float6_e2m3, and float6_e3m2 behavior against ml_dtypes where that comparison is meaningful.

Promotion is intentional. Mixed exotic floats are routed through wider compute types rather than pretending a same-width accumulator is good enough.

ml_dtypes Interoperability

NumKong accepts ml_dtypes arrays directly — no .view(np.uint8) workaround needed:

import ml_dtypes
a = np.random.randn(100, 768).astype(np.float32).astype(ml_dtypes.bfloat16)
b = np.random.randn(100, 768).astype(np.float32).astype(ml_dtypes.bfloat16)
result = nk.cdist(a, b, "dot")  # just works

NumKong scalars also work as NumPy dtype specifiers:

arr = np.array([1.0, 2.0, 3.0], dtype=nk.bfloat16)
float(arr[0])  # → 1.0

Type name mapping between the two libraries:

ml_dtypes NumKong Status
ml_dtypes.bfloat16 nk.bfloat16 / "bfloat16" Identical format
ml_dtypes.float8_e4m3 nk.float8_e4m3 / "e4m3" Identical (IEEE E4M3)
ml_dtypes.float8_e4m3fn nk.float8_e4m3 / "e4m3" Identical (E4M3FN = no inf)
ml_dtypes.float8_e5m2 nk.float8_e5m2 / "e5m2" Identical format
ml_dtypes.float6_e2m3fn nk.float6_e2m3 / "e2m3" Identical (MX E2M3)
ml_dtypes.float6_e3m2fn nk.float6_e3m2 / "e3m2" Identical (MX E3M2)
ml_dtypes.float8_e4m3fnuz Rejected: different bias, NaN, and zero
ml_dtypes.float8_e5m2fnuz Rejected: different NaN and zero encoding
ml_dtypes.float8_e4m3b11fnuz Rejected: bias=11, incompatible encoding
ml_dtypes.float8_e8m0fnu Not supported: exponent-only MX scale format
ml_dtypes.float8_e3m4 Not supported: no NumKong kernel
ml_dtypes.float4_e2m1fn Not supported: 4-bit MX float
ml_dtypes.int4 "int4" Compatible via buffer protocol
ml_dtypes.uint4 "uint4" Compatible via buffer protocol
ml_dtypes.int2 Not supported
ml_dtypes.uint2 Not supported

Tensor Objects and Buffer Interop

Tensor is a memoryview-backed object with NumPy-like metadata. It is the central container for strided views, transpose, reshape, flatten, and axis reductions.

import numpy as np
import numkong as nk

t = nk.Tensor(np.arange(12, dtype=np.float32).reshape(3, 4))

print(t.shape, t.dtype, t.ndim, t.strides, t.itemsize, t.nbytes)
print(np.asarray(t))      # zero-copy array view when layout allows it
print(t.T.shape)          # transposed Tensor view
print(t.reshape(2, 6).shape)
print(t.flatten().shape)

# Slicing — row, column, and scalar access
row0 = t[0, :]            # first row, shape (4,)
col2 = t[:, 2]            # third column, strided view, shape (3,)
val  = t[1, 2]            # scalar element access → 6.0

# Reductions compose with sliced views
idx = col2.argmin()        # index of the minimum in the third column
mn, i0, mx, i1 = col2.minmax()

The important layout rules are:

  • Tensor preserves shape and byte strides.
  • Transpose and slicing can produce non-contiguous views.
  • General reductions accept those views.
  • Matrix-style packed kernels require row-contiguous left operands.
  • Packed and symmetric outputs require C-contiguous out buffers.

Memory Layout Requirements

API family Input requirement Output requirement
Dense distances (dot, euclidean, etc.) Rows must be contiguous (strides[last] <= itemsize). Strided rows (sliced columns) are rejected. out= can have any stride along dim 0, but inner dim must be contiguous.
cdist Same as dense distances out= must be rank-2 with shape (a.count, b.count)
Elementwise (scale, blend, fma) Arbitrary strides (strided views are supported) out= must match input shape; strides are preserved
Packed matrix (dots_packed) Left operand: rank-2, contiguous rows, no negative strides Output: C-contiguous with expected dtype
Symmetric (dots_symmetric) Contiguous rows out=: C-contiguous square matrix
Tensor reductions (sum, min, argmin, etc.) Arbitrary strides (strided views supported) N/A (returns scalar or reduced tensor)

All-Pairs APIs and cdist

cdist is the NumPy/SciPy-shaped all-pairs entrypoint. It handles rectangular matrix pairs and symmetric self-distance cases.

import numpy as np
import numkong as nk

queries = np.random.randn(100, 768).astype(np.float32)
database = np.random.randn(10_000, 768).astype(np.float32)

pairwise = nk.angular(queries, database[:100])             # rectangular broadcasted pairwise call
all_pairs = nk.cdist(queries, database, metric="angular")  # scipy.spatial.distance.cdist analogue

assert np.asarray(pairwise).shape == (100, 100)
assert np.asarray(all_pairs).shape == (100, 10_000)

The intended large-scale parallel model for packed and symmetric kernels is external partitioning with row ranges, not a hidden threads= argument.

Elementwise Operations

Elementwise arithmetic and fused operations are their own family. They share the tensor infrastructure but should not be collapsed into the reduction or matrix sections.

import numpy as np
import numkong as nk

a = np.arange(8, dtype=np.float32)
b = np.arange(8, dtype=np.float32)[::-1].copy()

scaled = nk.scale(a, alpha=2.0, beta=1.0)     # 2 * a + 1
blended = nk.blend(a, b, alpha=0.25, beta=0.75)
fused = nk.fma(a, b, a, alpha=1.0, beta=1.0)  # a * b + a

assert np.asarray(scaled).shape == (8,)
assert np.asarray(fused).shape == (8,)

Moments Reductions

Moments reductions return (sum, sum_of_squares). The key property is that NumKong does not force you into same-storage accumulation.

import numpy as np
import numkong as nk

x = np.full(4096, 255, dtype=np.uint8)

nk_sum, nk_sumsq = nk.moments(nk.Tensor(x))
naive_sum = np.sum(x, dtype=np.uint8)      # overflows immediately
naive_sumsq = np.sum(x * x, dtype=np.uint8) # also overflows

print(nk_sum, nk_sumsq, naive_sum, naive_sumsq)
assert nk_sum > int(naive_sum)
assert nk_sumsq > int(naive_sumsq)

Same-width accumulation is a bad default for low-precision storage.

Min/Max Reductions

Min/max reductions are in a separate section because they cover strided reduction cases. NumKong provides SIMD-accelerated strided reductions that are not common in other libraries.

import numpy as np
import numkong as nk

matrix = nk.Tensor(np.array([
    [ 3.0,  0.0, 7.0],
    [ 1.0,  2.0, 5.0],
    [ 4.0, -1.0, 6.0],
], dtype=np.float32))

second_column = matrix[:, 1]  # strided view into a row-major Nx3 tensor

idx = second_column.argmin()
mn, i0, mx, i1 = second_column.minmax()

assert idx == 2
assert int(i0) == 2
assert float(np.asarray(mn)) == -1.0

Fresh measurement for the rewritten docs: on an Apple M2 Pro, np.argmin(matrix[:, 1]) on a row-major 2,000,000 x 3 float32 array took about 1.63 ms median. The equivalent NumKong Tensor(... )[:, 1].argmin() took about 0.67 ms median. That is about 2.45x faster on this strided reduction case.

Sparse Operations and Intersections

Sparse helpers cover both sorted-index intersections and weighted sparse dot products.

import numpy as np
import numkong as nk

idx_a, idx_b = np.array([1, 3, 5, 7], dtype=np.uint32), np.array([3, 4, 5, 8], dtype=np.uint32)
intersection_size = nk.intersect(idx_a, idx_b) # len(np.intersect1d(idx_a, idx_b))
assert intersection_size == 2, "indices 3 and 5"

val_a, val_b = np.array([1.0, 2.0, 3.0, 4.0], dtype=np.float32), np.array([5.0, 6.0, 7.0, 8.0], dtype=np.float32)
sparse_dot = nk.sparse_dot(idx_a, val_a, idx_b, val_b)
assert sparse_dot > 0, "weighted dot over shared indices"

Packed Matrix Kernels for GEMM-Like Workloads

Packed matrix kernels are the right tool when the right-hand side is reused across many query batches. This is the GEMM-like story.

import numpy as np
import numkong as nk

left = np.random.randn(128, 768).astype(np.float32)
right = np.random.randn(10_000, 768).astype(np.float32)

right_packed = nk.dots_pack(right, dtype="float32")  # pack once, reuse many times
scores = nk.dots_packed(left, right_packed)          # equivalent to left @ right.T

assert scores.shape == (128, 10_000)
assert right_packed.nbytes == nk.PackedMatrix.packed_size(10_000, 768, dtype="float32")

Important runtime rules from the current implementation:

  • a must be rank-2
  • a must have contiguous rows
  • negative strides are rejected for these matrix kernels
  • out, when provided, must be C-contiguous with the expected dtype
  • start_row and end_row split the left operand rows

The arithmetic advantages are:

  • one-time packing of B
  • one-time internal layout conversion and depth padding
  • norm reuse for angulars_packed and euclideans_packed
  • no repeated scan of the original right-hand-side layout

Packing itself does not require aligned caller buffers. The packed object owns its internal payload and handles the layout under the hood.

Tensor @ PackedMatrix is also supported and maps to the same packed dot-product path.

Symmetric Kernels for SYRK-Like Workloads

Symmetric kernels solve a different problem from packed cross-matrix kernels. They compute self-similarity or self-distance matrices. This is the SYRK-like story.

import numpy as np
import numkong as nk

vectors = np.random.randn(1024, 768).astype(np.float32)
out = nk.zeros((1024, 1024), dtype="float64")

nk.dots_symmetric(vectors, out=out, start_row=0, end_row=256)
nk.dots_symmetric(vectors, out=out, start_row=256, end_row=512)

assert out.shape == (1024, 1024)

This family has different economics from packed GEMM-like work. It avoids duplicate (i, j) and (j, i) evaluations. It is naturally partitioned by row windows of one square output.

angulars_symmetric and euclideans_symmetric also benefit from reuse of dot-product-derived work inside the symmetric sweep. That is why these APIs are faster than a nested Python loop over angular(a[i], a[j]).

Geometric Mesh Alignment

Mesh alignment returns a structured result object. The current implementation exposes rotation, scale, rmsd, a_centroid, and b_centroid.

import numpy as np
import numkong as nk

source = np.array(
    [[0.0, 0.0, 0.0],
     [1.0, 0.0, 0.0],
     [0.0, 1.0, 0.0]],
    dtype=np.float32,
)

result = nk.kabsch(source, source.copy())
assert np.asarray(result.rotation).shape == (3, 3)
assert float(np.asarray(result.scale)) == 1.0

# Umeyama with known 2x scaling
target = source * 2.0
result = nk.umeyama(source, target)
assert float(np.asarray(result.rmsd)) < 1e-6, "umeyama should recover exact alignment"
assert abs(float(np.asarray(result.scale)) - 2.0) < 0.01, "umeyama should recover 2x scale"

That field-level check is the right style for this API family. It tells the reader exactly what the result object owns.

MaxSim and ColBERT-Style Late Interaction

MaxSim is the late-interaction primitive used by systems such as ColBERT. It is not generic matrix multiplication.

import numpy as np
import numkong as nk

queries = np.random.randn(32, 128).astype(np.float32)
documents = np.random.randn(192, 128).astype(np.float32)

q = nk.maxsim_pack(queries, dtype="float32")
d = nk.maxsim_pack(documents, dtype="float32")
score = nk.maxsim_packed(q, d)

assert np.isfinite(score)
assert q.nbytes == nk.MaxSimPackedMatrix.packed_size(32, 128, dtype="float32")

Capabilities, GIL Behavior, and Parallel Partitioning

Capability detection is explicit:

import numkong as nk

caps = nk.get_capabilities()
print({k: v for k, v in caps.items() if v})

The current implementation releases the GIL around the native dense metric calls and around the packed and symmetric matrix kernels. The repository also has threading tests for packed and symmetric row-range partitioning.

GEMM-like packed work and SYRK-like symmetric work should be documented differently:

import concurrent.futures
import numpy as np
import numkong as nk

left = np.random.randn(4096, 768).astype(np.float32)
right = np.random.randn(8192, 768).astype(np.float32)
packed = nk.dots_pack(right, dtype="float32")
out = nk.zeros((4096, 8192), dtype="float64")  # out must be pre-allocated with correct shape and dtype

def packed_chunk(start, end):
    nk.dots_packed(left, packed, out=out, start_row=start, end_row=end) # split left rows against one shared packed RHS

with concurrent.futures.ThreadPoolExecutor(max_workers=4) as pool:
    for start in range(0, 4096, 1024):
        pool.submit(packed_chunk, start, min(start + 1024, 4096))
import concurrent.futures
import numpy as np
import numkong as nk

vectors = np.random.randn(4096, 768).astype(np.float32)
out = nk.zeros((4096, 4096), dtype="float64")  # out must be pre-allocated with correct shape and dtype

def symmetric_chunk(start, end):
    nk.dots_symmetric(vectors, out=out, start_row=start, end_row=end) # split row windows of one square output

with concurrent.futures.ThreadPoolExecutor(max_workers=4) as pool:
    for start in range(0, 4096, 1024):
        pool.submit(symmetric_chunk, start, min(start + 1024, 4096))

OpenMP and other native schedulers still matter in lower layers. For Python, the intended user-facing story is external partitioning around the GIL-free kernels you actually use.

Addressing External Memory

NumKong implements the Python buffer protocol for zero-copy interop with NumPy, PyTorch, and other buffer-aware libraries. Two additional primitives cover pointer-level workflows: data_ptr reads the integer address out of any Tensor, and from_pointer() wraps any integer address back into one.

data_ptr returns the raw address, suitable for passing into ctypes, CUDA, or any FFI boundary. from_pointer(address, shape, dtype, *, strides=None, owner=None) creates a non-owning Tensor view. The optional owner keeps the source object alive for the lifetime of the view.

import numpy as np
import numkong as nk

# Round-trip through an integer address
matrix = nk.zeros((3, 4), dtype='float32')
address = matrix.data_ptr
matrix_view = nk.from_pointer(address, (3, 4), 'float32', owner=matrix)

# Wrap a NumPy array with zero copies
embeddings = np.random.randn(1024).astype(np.float32)
embeddings_view = nk.from_pointer(embeddings.ctypes.data, (1024,), 'float32', owner=embeddings)
nk.dot(embeddings, embeddings_view)  # same underlying data

PyTorch tensors already implement the buffer protocol, so most functions accept them directly. For explicit pointer-level control, or to go the other direction, the same primitives apply:

import torch

query = torch.randn(512)
nk.dot(query, query)  # buffer protocol, zero copy

# Explicit pointer wrap
query_view = nk.from_pointer(query.data_ptr(), tuple(query.shape), 'float32', owner=query)

# NumKong → PyTorch: 1D via buffer protocol, N-D via numpy bridge
flat = torch.frombuffer(memoryview(nk_tensor), dtype=torch.float32)
shaped = torch.as_tensor(np.asarray(nk_tensor))

CUDA unified memory, pinned buffers, and mmap'd files all work the same way — any CPU-accessible pointer is valid.

import ctypes, mmap

# CUDA unified memory (ensure CPU accessibility first)
cudart = ctypes.CDLL("libcudart.so")
unified_ptr = ctypes.c_void_p()
cudart.cudaMallocManaged(ctypes.byref(unified_ptr), 4096, 1)
cudart.cudaDeviceSynchronize()
unified = nk.from_pointer(unified_ptr.value, (1024,), 'float32')

# Memory-mapped file
with open("data.bin", "r+b") as f:
    mapping = mmap.mmap(f.fileno(), 0)
    mapped = nk.from_pointer(ctypes.addressof(
        ctypes.c_char.from_buffer(mapping)),
        (1024,), 'float32', owner=mapping)

NumKong: Mixed Precision for All

Portable mixed-precision math, linear-algebra, & retrieval library with 2'000+ SIMD kernels for x86, Arm, RISC-V, LoongArch, Power, & WebAssembly, leveraging rare algebraic transforms with both 1D & 2D registers like AMX & SME, covering 15+ numeric types from 4-bit integers & 6-bit floats to 128-bit complex numbers, validated against 118-bit extended-precision baselines with saturation, casting, & rounding edge-case coverage, in a 5-100x smaller binary than other BLAS-like alternatives, co-designed with Tensor abstractions in C++, Python, Rust, JavaScript, GoLang, & Swift.

NumKong banner

Latency, Throughput, & Numerical Stability

Most libraries return dot products in the same type as the input — Float16 × Float16 → Float16, Int8 × Int8 → Int8. This leads to quiet overflow: a 2048-dimensional i8 dot product can reach ±10 million, but i8 maxes out at 127. NumKong promotes to wider accumulators — Float16 → Float32, BFloat16 → Float32, Int8 → Int32, Float32 → Float64 — so results stay in range.

Input NumPy + OpenBLAS PyTorch + MKL JAX NumKong
░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░
f64 2.0 gso/s, 1e-15 err 0.6 gso/s, 1e-15 err 0.4 gso/s, 1e-14 err 5.8 gso/s, 1e-16 err
f32 1.5 gso/s, 2e-6 err 0.6 gso/s, 2e-6 err 0.4 gso/s, 5e-6 err 7.1 gso/s, 2e-7 err
bf16 0.5 gso/s, 1.9% err 0.5 gso/s, 1.9% err 9.7 gso/s, 1.8% err
f16 0.2 gso/s, 0.25% err 0.5 gso/s, 0.25% err 0.4 gso/s, 0.25% err 11.5 gso/s, 0.24% err
e5m2 0.7 gso/s, 4.6% err 0.5 gso/s, 4.6% err 7.1 gso/s, 0% err
i8 1.1 gso/s, overflow 0.5 gso/s, overflow 0.5 gso/s, overflow 14.8 gso/s, 0% err

Single 2048-d dot product on Intel Sapphire Rapids, single-threaded. Each cell shows gso/s, mean relative error vs higher-precision reference. gso/s = Giga Scalar Operations per Second — a more suitable name than GFLOP/s when counting both integer and floating-point work. NumPy 2.4, PyTorch 2.10, JAX 0.9.

A fair objection: PyTorch and JAX are designed for throughput, not single-call latency. They lower execution graphs through XLA or vendored BLAS libraries like Intel MKL and Nvidia cuBLAS. So here's the same comparison on a throughput-oriented workload — matrix multiplication:

Input NumPy + OpenBLAS PyTorch + MKL JAX NumKong
░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░ ░░░░░░░░░░░░░░
f64 65.5 gso/s, 1e-15 err 68.2 gso/s, 1e-15 err ~14.3 gso/s, 1e-15 err 8.6 gso/s, 1e-16 err
f32 140 gso/s, 9e-7 err 145 gso/s, 1e-6 err ~60.5 gso/s, 1e-6 err 37.7 gso/s, 4e-7 err
bf16 851 gso/s, 1.8% err ~25.8 gso/s, 3.4% err 458 gso/s, 3.6% err
f16 0.3 gso/s, 0.25% err 140 gso/s, 0.37% err ~26.1 gso/s, 0.35% err 103 gso/s, 0.26% err
e5m2 0.4 gso/s, 4.6% err ~26.4 gso/s, 4.6% err 398 gso/s, 0% err
i8 0.4 gso/s, overflow 50.0 gso/s, overflow ~0.0 gso/s, overflow 1279 gso/s, 0% err

Matrix multiplication (2048 × 2048) × (2048 × 2048) on Intel Sapphire Rapids, single-threaded. gso/s = Giga Scalar Operations per Second, same format. NumPy 2.4, PyTorch 2.10, JAX 0.9, same versions.

For f64, compensated "Dot2" summation reduces error by 10–50× compared to naive Float64 accumulation, depending on vector length. For f32, widening to Float64 gives 5–10× lower error. The library ships as a relatively small binary:

Package Size Parallelism & Memory Available For
PyTorch + MKL 705 MB Vector & Tile SIMD, OpenMP Threads, Hidden Allocs Python, C++, Java
JAX + jaxlib 357 MB Vector SIMD, XLA Threads, Hidden Allocs Python
NumPy + OpenBLAS 30 MB Vector SIMD, Built-in Threads, Hidden Allocs Python
mathjs 9 MB No SIMD, No Threads, Many Allocs JS
NumKong 5 MB Vector & Tile SIMD, Your Threads, Your Allocs 7 languages

Every kernel is validated against 118-bit extended-precision baselines with per-type ULP budgets across log-normal, uniform, and Cauchy input distributions. Tests check triangle inequality, Cauchy-Schwarz bounds, NaN propagation, overflow detection, and probability-simplex constraints for each ISA variant. Results are cross-validated against OpenBLAS, Intel MKL, and Apple Accelerate. A broader throughput comparison is maintained in NumWars.

Quick Start

Language Install Compatible with Guide
C / C++ CMake, headers, & prebuilt Linux, macOS, Windows, Android include/README.md
Python pip install Linux, macOS, Windows python/README.md
Rust cargo add Linux, macOS, Windows rust/README.md
JS npm install & import Node.js, Bun, Deno & browsers javascript/README.md
Swift Swift Package Manager macOS, iOS, tvOS, watchOS swift/README.md
Go go get Linux, macOS, Windows via cGo golang/README.md

What's Inside

NumKong covers 17 numeric types — from 6-bit floats to 64-bit complex numbers — across dozens of operations and 30+ SIMD backends, with hardware-aware defaults: Arm prioritizes f16, x86 prioritizes bf16.

Language Bindings

Operation C 99 & C++ 23 Python Rust JavaScript Swift GoLang
Vector Ops
Dot Product
Spatial Metric
Set Similarity
Geospatial ·
Mesh Alignment · · ·
Sparse Products · · ·
Probability Divergences ·
Curved Spaces · · ·
Many-to-Many Vector Ops
"Dots" Products
"Spatials" Metrics
"Sets" Similarities ·
MaxSim Scoring ·
Scalar Ops
Cast · ·
Reduce · · ·
Each · · ·
Trigonometry · · ·

Design Decisions

  • Avoid loop unrolling and scalar tails.
  • Don't manage threads and be compatible with any parallelism models.
  • Don't manage memory and be compatible with arbitrary allocators & alignment.
  • Don't constrain ourselves to traditional BLAS-like Matrix Multiplication APIs.
  • Don't throw exceptions and pass values by pointers.
  • Prefer saturated arithmetic and avoid overflows, where needed.
  • Cover most modern CPUs with flexible dispatch and wait for them to converge with GPUs.

The rest of this document unpacks the functionality and the logic behind the design decisions.

Auto-Vectorization & Loop Unrolling

Most "optimized SIMD code" is a 2–4x unrolled data-parallel for-loop over f32 arrays with a serial scalar tail for the last few elements:

float boring_dot_product_f32(float const *a, float const *b, size_t n) {
    __m256 sum0 = _mm256_setzero_ps(), sum1 = _mm256_setzero_ps();
    size_t i = 0;
    for (; i + 16 <= n; i += 16) {
        sum0 = _mm256_fmadd_ps(_mm256_loadu_ps(a + i), _mm256_loadu_ps(b + i), sum0);
        sum1 = _mm256_fmadd_ps(_mm256_loadu_ps(a + i + 8), _mm256_loadu_ps(b + i + 8), sum1);
    }
    float result = _mm256_reduce_add_ps(_mm256_add_ps(sum0, sum1));
    for (; i < n; i++) result += a[i] * b[i]; // serial tail
    return result;
}

This kind of unrolling has been a common request for NumKong, but the library avoids it by design.

Modern CPUs already "unroll" in hardware. Out-of-order engines with reorder buffers of 320–630 entries (Zen 4: 320, Golden Cove: 512, Apple Firestorm: ~630) can keep a dozen of loop iterations in-flight simultaneously. The physical register file is much larger than the ISA-visible architectural registers — Skylake has ~180 physical integer registers behind 16 architectural GPRs, and ~168 physical vector registers behind 32 architectural ZMMs. The register renaming unit maps the same zmm0 in iteration N and iteration N+1 to different physical registers, extracting cross-iteration parallelism automatically — exactly the benefit that source-level unrolling was historically supposed to provide.

Unrolling works against NumKong's goals. Every unrolled copy is a distinct instruction in the binary. With 1,500+ kernel endpoints across 30+ backends, even 2x unrolling would inflate the .text section by megabytes — directly impacting install size for Python wheels, NPM packages, and Rust crates. Larger loop bodies also increase instruction-cache and micro-op-cache pressure; Agner Fog also recommends:

"avoid loop unrolling where possible in order to economize the use of the micro-op cache".

A loop that spills out of the uop cache falls back to the slower legacy decoder, making the "optimized" version slower than the compact original. For a header-only library, unrolling also compounds compilation time: register allocation is NP-hard (reducible to graph coloring), and unrolling multiplies the number of simultaneously live ranges the allocator must consider, increasing compile time super-linearly across every translation unit that includes the headers.

Serial tails are a correctness hazard. The leftover elements after the last full SIMD chunk run through a scalar loop that silently drops FMA fusion, compensated accumulation, and saturating arithmetic — producing results with different numerical properties than the SIMD body. NumKong often uses masked loads instead (_mm512_maskz_loadu_ps on AVX-512, predicated svld1_f32 on SVE), processing every element through the same arithmetic path regardless of alignment. It's not exactly orthogonal to loop-unrolling, but makes a different kernel layout more compatible.

The gains come from elsewhere. On Intel Sapphire Rapids, NumKong was benchmarked against auto-vectorized code compiled with GCC 12. GCC handles single-precision float well, but struggles with _Float16 and other mixed-precision paths:

Kind GCC 12 f32 GCC 12 f16 NumKong f16 f16 improvement
Inner Product 3,810 K/s 192 K/s 5,990 K/s 31 x
Cosine Distance 3,280 K/s 336 K/s 6,880 K/s 20 x
Euclidean Distance ² 4,620 K/s 147 K/s 5,320 K/s 36 x
Jensen-Shannon Divergence 1,180 K/s 18 K/s 2,140 K/s 118 x

NumKong's f16 kernels are faster than GCC's f32 output — not because of unrolling, but because they use F16C conversion instructions, widening FMA pipelines, and compensated accumulation that compilers do not synthesize from a plain for loop. The same story repeats for bf16, e4m3, i8, and i4: these types require algorithmic transformations — lookup tables, algebraic domain shifts, asymmetric VNNI tricks — that live beyond the reach of auto-vectorization.

Parallelism & Multi-Threading

BLAS libraries traditionally manage their own thread pools. OpenBLAS spawns threads controlled by OPENBLAS_NUM_THREADS, Intel MKL forks its own OpenMP runtime via MKL_NUM_THREADS, and Apple Accelerate delegates to GCD (Grand Central Dispatch). This works in isolation — but the moment your application adds its own parallelism (joblib, std::thread, Tokio, GCD, OpenMP), you get thread oversubscription: MKL spawns 8 threads inside each of your 8 joblib workers, producing 64 threads on 8 cores, thrashing caches and stalling on context switches. The Python ecosystem has built entire libraries just to work around this problem, and scikit-learn's documentation devotes a full page to managing the interaction between joblib parallelism and BLAS thread pools.

NumKong takes a different position: the numerics layer should not own threads. Modern hardware makes the "spawn N threads and split evenly" model increasingly untenable:

  • Server-grade CPUs have hundreds of cores split across sockets, chiplets, and tiles, resulting in dozens of physical NUMA domains with vastly different memory access latencies. A thread pool that ignores NUMA topology will spend more time on remote memory stalls than on arithmetic.
  • Consumer-grade CPUs pack heterogeneous Quality-of-Service core types on the same die — Intel P-cores and E-cores run at different frequencies and sometimes support different ISA extensions. A naive work-split gives equal chunks to fast and slow cores, and the whole task stalls waiting for the slowest partition.
  • Real-time operating systems in robotics and edge AI cannot afford to yield the main thread to a BLAS-managed pool. These systems need deterministic latency, not maximum throughput.

Instead, NumKong exposes row-range parameters that let the caller partition work across any threading model. For GEMM-shaped dots_packed, this is straightforward — pass a slice of A's rows and the full packed B to compute the corresponding slice of C. For SYRK-shaped dots_symmetric, explicit start_row / end_row parameters control which rows of the symmetric output matrix a given thread computes. The GIL (Global Interpreter Lock) is released around every kernel call, making NumKong compatible with concurrent.futures, multiprocessing, or any other parallelism model:

import concurrent.futures, numkong as nk, numpy as np

vectors, num_threads = np.random.randn(1000, 768).astype(np.float32), 4
output = nk.zeros((1000, 1000), dtype="float32")

def compute_slice(t):
    start = t * (len(vectors) // num_threads)
    end = start + len(vectors) // num_threads if t < num_threads - 1 else len(vectors)
    nk.dots_symmetric(vectors, out=output, start_row=start, end_row=end)

with concurrent.futures.ThreadPoolExecutor(max_workers=num_threads) as pool:
    list(pool.map(compute_slice, range(num_threads)))

For users who want a ready-made low-latency thread pool without the oversubscription baggage of OpenMP, we built ForkUnion — a minimalist fork-join library for C, C++, and Rust that avoids mutexes, CAS atomics, and dynamic allocations on the critical path, with optional NUMA pinning on Linux.

Memory Allocation & Management

BLAS libraries typically allocate internal buffers during GEMM — OpenBLAS packs matrices into L2/L3-sized panels via per-thread buffer pools backed by mmap or shmget. This hidden allocation has caused real problems: 14 lock/unlock pairs per small GEMM call throttling 12-thread scaling to 2x, silently incorrect results from thread-unsafe allocation in np.dot, and deadlocks after fork() due to mutex state not being reset in child processes. The BLASFEO library was created specifically for embedded model-predictive control where malloc during computation is unacceptable.

NumKong never allocates memory. Following the same philosophy as Intel MKL's packed GEMM API (cblas_sgemm_pack_get_sizecblas_sgemm_packcblas_sgemm_compute), NumKong exposes typed three-phase interfaces — nk_dots_packed_size_*nk_dots_pack_*nk_dots_packed_* — where the caller owns the buffer and NumKong only fills it.

The reason GEMM libraries repack matrices at all is that every hardware target has a different preferred layout — Intel AMX expects B in a VNNI-interleaved tile format (pairs of BFloat16 values packed into DWORDs across the K dimension), while Arm SME wants column vectors for its FMOPA outer-product instructions. Since GEMM is $O(N^3)$ and repacking is $O(N^2)$, the cost is asymptotically free — but the allocation and locking overhead is not.

NumKong's nk_dots_pack_* family performs five transformations beyond simple reordering:

  • Type pre-conversion — mini-floats (E4M3, BFloat16, etc.) are upcast to the compute type once during packing, not on every GEMM call. This amortizes the conversion cost across all rows of A that will be multiplied against the packed B.
  • SIMD depth padding — rows are zero-padded to the SIMD vector width (16 for AVX-512 Float32, 64 for AVX-512 Int8), allowing inner loops to load without boundary checks.
  • Per-column norm precomputation — squared norms ($|b_j|^2$) are computed and stored alongside the packed data, so distance kernels (angulars_packed, euclideans_packed) can reuse them without a separate pass.
  • ISA-specific tile layout — AMX packing interleaves BFloat16 pairs into 16×32 tiles matching TDPBF16PS expectations; SME packing arranges vectors at SVE granularity for FMOPA outer products; generic backends use simple column-major with depth padding.
  • Power-of-2 stride breaking — when the padded row stride is a power of 2, one extra SIMD step of padding is added. Power-of-2 strides cause cache set aliasing where consecutive rows map to the same cache sets, effectively shrinking usable L1/L2 capacity — stride-256 traversals can be ~10x slower than stride-257.
import numkong as nk, numpy as np

right_matrix = np.random.randn(1000, 768).astype(np.float16)
right_packed = nk.dots_pack(right_matrix, dtype=nk.float16)                        # pack once
for query_batch in stream: results = nk.dots_packed(query_batch, right_packed)    # reuse many times

Why Not Just GEMM? The Evolution of Matrix Multiplication APIs

The classic BLAS GEMM computes $C = \alpha A B + \beta C$ for Float32/Float64 matrices. It covers many use cases, but LLM inference, vector search, and quantum simulation expose three ways in which the traditional interface falls short.

Frozen weights justify separating packing from computation. During LLM inference, a very large share of GEMM calls use a static weight matrix — weights don't change after loading. This makes offline repacking a one-time cost amortized over the entire serving lifetime: NVIDIA's TurboMind explicitly splits GEMM into offline weight packing (hardware-aware layout conversion) and online mixed-precision computation, and Intel MKL's packed GEMM API exposes the same two-phase pattern. NumKong's nk_dots_pack_*nk_dots_packed_* path follows this philosophy — pack the weight matrix once, reuse it across all queries.

Mixed precision demands more than an epilogue addition. Modern transformer layers operate in a precision sandwich: weights stored in BFloat16/Float8, GEMM accumulated in Float32, output downcast back to BFloat16 for the next layer. Between GEMM calls, LayerNorm or RMSNorm re-normalizes hidden states, so the next layer is often much closer to an angular or normalized similarity computation than to a plain raw dot product. nGPT takes this to its logical conclusion: all vectors live on the unit hypersphere, and every matrix-vector product is a pure angular distance. This means many "GEMM" workloads in production are semantically closer to many-to-many angular distance computation — which is exactly what NumKong's angulars_packed and euclideans_packed kernels compute directly, fusing norm handling and type conversion into a single pass.

The GEMM-for-distances trick has real costs. A common shortcut in vector search is to decompose pairwise Euclidean distance as $|a - b|^2 = |a|^2 + |b|^2 - 2 \langle a, b \rangle$, precompute norms, and call sgemm for the inner-product matrix. Both FAISS and scikit-learn use this approach — and both document its limitations. Scikit-learn's docs warn of "catastrophic cancellation" in the subtraction; this has caused real bugs with ~37% error on near-identical Float32 vectors. The $O(N^2)$ postprocessing pass (adding norms, square roots, divisions) is not free either — NVIDIA's RAFT measured a 20–25% speedup from fusing it into the GEMM epilogue. Even FAISS switches to direct SIMD when the query count drops below 20. The standard BLAS interface was never designed for sub-byte types either — no vendor supports Int4, and sub-byte types cannot even be strided without bit-level repacking.

Some operations need more than GEMM + postprocessing. NumKong implements several GEMM-shaped operations where the "epilogue" is too complex for a simple addition:

  • Bilinear forms ($a^T C b$) in quantum computing compute a scalar expectation value — the naive approach materializes an $N$-dimensional intermediate vector $Cb$, but NumKong's typed nk_bilinear_* kernels stream through rows of $C$ with nested compensated dot products, never allocating beyond registers. For complex-valued quantum states, where the intermediate would be a 2N-element complex vector, the savings double.
  • MaxSim scoring for ColBERT-style late-interaction retrieval computes $\sum_i \min_j \text{angular}(q_i, d_j)$ — a sum-of-min-distances across token pairs. A GEMM would produce the full $M \times N$ similarity matrix, but NumKong's typed nk_maxsim_packed_* kernels fuse a coarse Int8-quantized screening with full-precision angular refinement on winning pairs only, packing both query and document matrices to use all 4 SME tiles as accumulators. PLAID and maxsim-cpu have independently shown that dedicated MaxSim kernels can outperform the GEMM decomposition by 5–10x.

NumKong treats these as first-class operations — dots_packed, euclideans_packed, angulars_packed, typed nk_bilinear_* kernels, and typed nk_maxsim_packed_* kernels — rather than decomposing everything into GEMM + postprocessing.

Precision by Design: Saturation, Rounding, & Float6 Over Float8

Floating-point arithmetic on computers is not associative: $(a + b) + c \neq a + (b + c)$ in general, and upcasting to wider types is not always sufficient. NumKong makes operation-specific decisions about where to spend precision and where to economize, rather than applying one rule uniformly.

Saturation depends on the operation. A reduction over a 4 GB array of i8 values contains ~4 billion elements — but Int32 wrapping overflow occurs after just ~17 million Int8 summands ($127 \times 16.9\text{M} > 2^{31}$). Reductions in NumKong use saturating arithmetic because the input can be arbitrarily long. Matrix multiplications don't need saturation because GEMM depth rarely exceeds tens of thousands — well within Int32 range. x86 provides no saturating 32-bit SIMD add (only byte/word variants), so NumKong implements saturation via overflow detection with XOR-based unsigned comparison on platforms that lack native support.

Square roots & special math ops are platform-specific. Angular distance requires $1/\sqrt{|a|^2 \cdot |b|^2}$ — but the cost of computing this normalization varies dramatically across hardware. x86 VSQRTPS takes ~12 cycles, followed by VDIVPS at ~11 cycles — totalling ~23 cycles for a precise 1/sqrt(x). The VRSQRT14PS alternative starts with a 14-bit estimate in ~4 cycles, then one Newton-Raphson iteration ($y = y \cdot (1.5 - 0.5 x y^2)$, ~4 more cycles) reaches full Float32 precision — roughly 3x faster. ARM's FRSQRTE provides only ~8 bits, requiring two Newton-Raphson iterations to match. NumKong selects the iteration count per platform so the final ULP bound is consistent across ISAs, rather than exposing different precision to different users.

E2M3 and E3M2 can outperform E4M3 and E5M2. 6-bit MX formats can be scaled to exact integers, enabling integer accumulation that avoids E5M2's catastrophic cancellation risk. This works because E2M3's narrower exponent range means every representable value maps to an integer after a fixed shift — no rounding, no cancellation. See Mini-Floats for a worked example.

Every such decision — saturation thresholds, Newton-Raphson iteration counts, integer vs floating-point paths — is documented per operation and per type in the module-specific READMEs.

Calling Convention & Error Handling

NumKong never throws exceptions, never sets errno, and never calls setjmp/longjmpexceptions bloat call sites with unwind tables and are invisible to C, Python, Rust, Swift, Go, and JavaScript FFI; errno is thread-local state whose storage model varies across C runtimes. Instead, every function takes inputs as const pointers, writes outputs through caller-provided pointers, and returns void:

void nk_dot_f32(nk_f32_t const *a, nk_f32_t const *b, nk_size_t n, nk_f64_t *result);
void nk_dot_bf16(nk_bf16_t const *a, nk_bf16_t const *b, nk_size_t n, nk_f32_t *result);

Pointers eliminate implicit casts for types with platform-dependent storage — this is why they matter for half-precision types. nk_f16_t and nk_bf16_t resolve to native __fp16 / __bf16 when available but fall back to unsigned short otherwise — if passed by value, the compiler would silently apply integer promotion instead of preserving the bit pattern. Passing by pointer keeps the representation opaque: kernels read raw and convert explicitly when needed, so the same binary works regardless of whether the compiler understands _Float16.

The only place that requires error signaling is dynamic dispatch — looking up the best kernel for the current CPU at runtime. When no kernel matches, the dispatcher sets the capabilities mask to zero and fills the function pointer with a family-specific error stub such as nk_error_dense_ from c/dispatch.h and c/numkong.c that writes 0xFF into the output — NaN for floats, −1 for signed integers, TYPE_MAX for unsigned.

Compile-Time and Run-Time Dispatch

NumKong provides two dispatch mechanisms. Compile-time dispatch selects the fastest kernel supported by the target platform at build time — thinner binaries, no indirection overhead, but requires knowing your deployment hardware. Run-time dispatch compiles every supported kernel into the binary and picks the best one on the target machine via nk_capabilities() — one pointer indirection per call, but a single binary runs everywhere. The run-time path is common in DBMS products (ClickHouse), web browsers (Chromium), and other upstream projects that ship to heterogeneous fleets. Distributed artifacts (Rust crate, Python wheels, JS native modules, shared libs from the default CMake build) pin the translation-unit baseline to each architecture's ABI floor so the library runs on any CPU matching the ABI, not just the build host — see CONTRIBUTING.md for the per-arch table and the NK_MARCH_NATIVE override used for host-tuned local builds.

All kernel names follow the pattern nk_{operation}_{type}_{backend}. If you need to resolve the best kernel manually, use nk_find_kernel_punned with a nk_kernel_kind_t, nk_dtype_t, and a viable capabilities mask:

nk_metric_dense_punned_t angular = 0;
nk_capability_t used = nk_cap_serial_k;
nk_find_kernel_punned(
    nk_kernel_angular_k, nk_f32_k,            // what functionality? for which input type?
    nk_capabilities(),                        // which capabilities are viable?
    (nk_kernel_punned_t *)&angular, &used);   // the kernel found and capabilties used!

The first call to nk_capabilities() initializes the dispatch table; all subsequent calls are lock-free.

Numeric Types

Float64 & Float32: IEEE Precision

Float64 — NumKong uses compensated summation that tracks numerical errors separately. On serial paths, we use Neumaier's algorithm (1974), an improvement over Kahan-Babuška that correctly handles cases where added terms are larger than the running sum, achieving $O(1)$ error growth instead of $O(n)$. On SIMD paths with FMA support, we implement the Dot2 algorithm (Ogita-Rump-Oishi, 2005), maintaining separate error compensators for both multiplication and accumulation via TwoProd and TwoSum operations. The accuracy differences are visible in the benchmark tables above — compensated Float64 suits scientific computing where numerical stability matters more than raw speed.

Float32 — SIMD implementations load Float32 values, upcast to Float64 for full-precision multiplication and accumulation, then downcast only during finalization. This avoids catastrophic cancellation at minimal cost since modern CPUs have dedicated Float64 vector units operating at nearly the same throughput as Float32. The same compensated accumulation strategy applies to Mahalanobis distance, bilinear forms, and KL/JS divergences.

// Dot2 TwoProd: Capture multiplication rounding error
h = a * b;
r = fma(a, b, -h);  // Extracts rounding error

// Dot2 TwoSum: Capture addition rounding error
t = sum + product;
e = (sum - t) + product;  // Compensator term

BFloat16 & Float16: Half Precision

BFloat16 — not an IEEE 754 standard type, but widely adopted for AI workloads. BFloat16 shares Float32's 8-bit exponent but truncates the mantissa to 7 bits, prioritizing dynamic range over precision (±3.4×10³⁸ with coarser granularity). On old CPUs, upcasting BFloat16 to Float32 requires just an unpack and left-shift by 16 bits (essentially free); on newer CPUs, both Arm and x86 provide widening mixed-precision dot products via DPBF16PS (AVX-512 on Genoa/Sapphire Rapids) and BFDOT (NEON on ARMv8.6-A Graviton 3+). NumKong's Float8 types (E4M3/E5M2) upcast to BFloat16 before using DPBF16PS, creating a three-tier precision hierarchy: Float8 for storage, BFloat16 for compute, Float32 for accumulation.

Float16 — IEEE 754 half-precision with 1 sign bit, 5 exponent bits (bias=15), and 10 mantissa bits, giving a range of ±65504. Float16 prioritizes precision over range (10 vs 7 mantissa bits), making it better suited for values near zero and gradients during training. On x86, older CPUs use F16C extensions (Ivy Bridge+) for fast Float16 → Float32 conversion; Sapphire Rapids+ adds native AVX-512-FP16 with dedicated Float16 arithmetic. On Arm, ARMv8.4-A adds FMLAL/FMLAL2 instructions for fused Float16 → Float32 widening multiply-accumulate, reducing the total latency from 7 cycles to 4 cycles and achieving 20–48% speedup over the separate convert-then-FMA path.

Platform BFloat16 Path Step Float16 Path Step
x86
Diamond, '26 ↓ Genoa 32 VDPPHPS widening dot 32
Sapphire, '23 ↓ Genoa 32 ↓ Skylake 16
Genoa, '22 VDPBF16PS widening dot 32 ↓ Skylake 16
Skylake, '15 SLLI + VFMADD 16 VCVTPH2PS + VFMADD 16
Haswell, '13 SLLI + VFMADD 8 VCVTPH2PS + VFMADD 8
Arm
Apple M2+, '22 BFDOT widening dot 8 ↓ FP16FML 8
Graviton 3+, '21 SVBFDOT widening dot 4–32 SVCVTSVFMLA 4–32
Apple M1, '20 ↓ NEON 8 FMLAL widening FMA 8
Graviton 2, '19 ↓ NEON 8 FCVTL + FMLA 4
Graviton 1, '18 SHLL + FMLA 8 bit-manip → FMLA 8
RISC-V
RVV+Zvfbfwma VFWMACCBF16 widening FMA 4–32 ↓ RVV 4–32
RVV+Zvfh ↓ RVV 4–32 VFWMACC widening FMA 4–32
RVV shift + VFMACC 4–32 convert + VFMACC 4–32

BFloat16 shares Float32's 8-bit exponent, so upcasting is a 16-bit left shift (SLLI on x86, SHLL on Arm) that zero-pads the truncated mantissa — essentially free. Float16 has a different exponent width (5 vs 8 bits), requiring a dedicated convert: VCVTPH2PS (x86 F16C) or FCVTL (Arm NEON). Widening dot products (VDPBF16PS, BFDOT, FMLAL) fuse the conversion and multiply-accumulate into one instruction. Sapphire Rapids has native VFMADDPH for Float16 arithmetic, but NumKong does not use it for general dot products — Float16 accumulation loses precision. It is only used for mini-float (E2M3/E3M2) paths where periodic flush-to-Float32 windows keep error bounded. The table above covers only vector dot-product paths - GEMMs also leverage Arm SME and Intel AMX instructions. Beyond x86, Arm, and RISC-V, NumKong also ships LoongArch, WebAssembly, and PowerPC backends, also excluded from the table.

Mini-Floats: E4M3, E5M2, E3M2, & E2M3

Format Bits Range NumKong Promotion Rules Support in GPUs
E5M2FN 8 ±57344 BFloat16 → Float32 H100+, MI300+
E4M3FN 8 ±448 BFloat16 → Float32 H100+, MI300+
E3M2FN 6 → 8 ±28 B- & Float16 → Float32, Int16 → Int32 only block-scaled
E2M3FN 6 → 8 ±7.5 B- & Float16 → Float32, Int8 → Int32 only block-scaled
Scaled NVFP4 4 ±6 B200+
Scaled MXFP4 4 ±6 B200+, MI325+

Block scaling. NumKong does not implement block-scaled variants (MXFP4, NVFP4, or block-scaled E3M2/E2M3). Block scaling couples elements through a shared exponent per block, introducing structural bias into a fundamentally uniform operation. NumKong treats each element independently; block-scaled inputs should be dequantized before processing.

FNUZ variants. AMD MI300 (CDNA 3) uses FNUZ encoding (negative-zero-is-NaN) rather than the OCP standard. MI350+ and NVIDIA H100/B200 both use OCP-standard E4M3FN/E5M2FN. NumKong follows the OCP convention; FNUZ inputs require conversion before processing.

8-bit floats (E4M3 & E5M2) follow the OCP FP8 standard. E4M3FN (no infinities, NaN only) is preferred for training where precision near zero matters; E5M2FN (with infinities) provides wider dynamic range for inference. On x86 Genoa/Sapphire Rapids, E4M3/E5M2 values upcast to BFloat16 via lookup tables, then use native DPBF16PS for 2-per-lane dot products accumulating to Float32. On Arm Graviton 3+, the same BFloat16 upcast happens via NEON table lookups, then BFDOT instructions complete the computation.

Platform E5M2 Path Step E4M3 Path Step
x86
Diamond, '26 VCVTBF82PH → F16 + VDPPHPS 32 VCVTHF82PH → F16 + VDPPHPS 32
Genoa, '22 → BF16 + VDPBF16PS 32 ↓ Ice Lake 64
Ice Lake, '19 ↓ Skylake 16 octave LUT + VPDPBUSD 64
Skylake, '15 rebias → F32 FMA 16 rebias → F32 FMA 16
Haswell, '13 rebias → F32 FMA 8 rebias → F32 FMA 8
Arm
NEON+FP8DOT, '26 native FDOT 16 native FDOT 16
NEON+FP16FML, '20 SHL → F16 + FMLAL 16 LUT → F16 + FMLAL 16
NEON, '18 SHL + FCVTL + FMA 8 → F16 + FCVTL + FMA 8
RISC-V
RVV+Zvfbfwma rebias → BF16 + VFWMACCBF16 4–32 LUT → BF16 + VFWMACCBF16 4–32
RVV+Zvfh SHL → F16 + VFWMACC 4–32 LUT → F16 + VFWMACC 4–32
RVV rebias → F32 + VFMACC 4–32 LUT → F32 + VFMACC 4–32

E5M2 shares Float16's exponent bias (15), so E5M2 → Float16 conversion is a single left-shift by 8 bits (SHL 8). E4M3 on Ice Lake uses "octave decomposition": the 4-bit exponent splits into 2 octave + 2 remainder bits, yielding 7 integer accumulators post-scaled by powers of 2.

6-bit floats (E3M2 & E2M3) follow the OCP MX v1.0 standard. Their smaller range allows scaling to exact integers that fit in i8/i16, enabling integer VPDPBUSD/SDOT accumulation instead of the floating-point pipeline. Float16 can also serve as an accumulator, accurately representing ~50 products of E3M2FN pairs or ~20 products of E2M3FN pairs before overflow. On Arm, NEON FHM extensions bring widening FMLAL dot-products for Float16 — both faster and more widely available than BFDOT for BFloat16.

Platform E3M2 Path Step E2M3 Path Step
x86
Sierra Forest, '24 ↓ Haswell 32 VPSHUFB + VPDPBSSD 32
Alder Lake, '21 ↓ Haswell 32 VPSHUFB + VPDPBUSD 32
Ice Lake, '19 VPERMW + VPMADDWD 32 VPERMB + VPDPBUSD 64
Skylake, '15 VPSHUFB + VPMADDWD 64 VPSHUFB + VPMADDUBSW 64
Haswell, '13 VPSHUFB + VPMADDWD 32 VPSHUFB + VPMADDUBSW 32
Arm
NEON+FP8DOT, '26 → E5M2 + FDOT 16 → E4M3 + FDOT 16
NEON+DotProd, '19 VQTBL2 + SMLAL 16 VQTBL2 + SDOT 16
NEON, '18 → F16 + FCVTL + FMA 16 → F16 + FCVTL + FMA 16
RISC-V
RVV I16 gather LUT + VWMACC 4–32 U8 gather LUT + VWMACC 4–32

E3M2/E2M3 values map to exact integers via 32-entry LUTs (magnitudes up to 448 for E3M2, 120 for E2M3), enabling integer accumulation with no rounding error. On NEON+FP8DOT, E3M2 is first promoted to E5M2 and E2M3 to E4M3 before the hardware FDOT instruction. Sierra Forest and Alder Lake use native VPDPBSSD (signed×signed) and VPDPBUSD (unsigned×signed) respectively for E2M3.

E4M3 and E5M2 cannot use the integer path. E4M3 scaled by 16 reaches 7,680 — too large for Int8, barely fitting Int16 with a 128-entry table. E5M2's range (±57,344) makes the scaled product exceed Int32 entirely. Without the integer path, E5M2 falls back to Float32 accumulation — where its 2-bit mantissa (only 4 values per binade) creates a catastrophic cancellation risk that E2M3's integer path avoids completely:

i = 0 i = 1 i = 2 i = 3 i = 4 i = 5 i = 6
aᵢ 0.00122 20480 −0.00122 1.5 −3072 −640 0.00146
bᵢ −40 320 −1280 −7.63e⁻⁵ 0.000427 10240 −4.58e⁻⁵
aᵢ·bᵢ −0.04883 6553600 1.5625 −0.000114 −1.3125 −6553600 ≈ 0

Why Float32 accumulation fails here. The accurate sum of these 7 products is ≈ 0.201. A vfmaq_f32 call accumulates 4 lanes at a time; the first batch already carries values around ±6.5 M. At that magnitude the Float32 ULP is 0.5 — so the small meaningful terms (−0.049, 1.563, −1.313, −0.0001) are all below one ULP and get absorbed during lane reduction. The large terms then cancel exactly to zero, and the information is gone. Final Float32 result: 0.0 instead of 0.201.

Int8 & Int4: Integer Types

Both signed and unsigned 8-bit and 4-bit integers are supported with Int32 accumulation to prevent overflow. A notable optimization is the VNNI algebraic transform: on Ice Lake+ with AVX-512 VNNI, the native DPBUSD instruction is asymmetric (unsigned × signed → signed), but NumKong uses it for both Int8×Int8 and UInt8×UInt8. For signed Int8×Int8, we convert the signed operand to unsigned via XOR with 0x80, compute DPBUSD(a⊕0x80, b) = (a+128)×b, then subtract a correction term 128×sum(b) to recover the true result. For unsigned UInt8×UInt8, we XOR the second operand to make it signed, compute DPBUSD(a, b⊕0x80) = a×(b-128), then add correction 128×sum(a) via the fast SAD instruction.

Int4 values pack two nibbles per byte, requiring bitmask extraction: low nibbles (byte & 0x0F) and high nibbles (byte >> 4). For signed Int4, the transformation (nibble ⊕ 8) - 8 maps the unsigned range [0,15] to signed range [−8,7]. Separate accumulators for low and high nibbles avoid expensive nibble-interleaving and allow SIMD lanes to work in parallel.

// Asymmetric transform for i8×i8 using DPBUSD (unsigned×signed)
a_unsigned = a XOR 0x80;           // Convert signed→unsigned
result = DPBUSD(a_unsigned, b);    // Computes (a+128)×b
correction = 128 * sum(b);         // Parallel on different port
final = result - correction;       // True a×b value

Binary: Packed Bits

The u1x8 type packs 8 binary values per byte, enabling Hamming distance and Jaccard similarity via population-count instructions. On x86, VPOPCNTDQ (Ice Lake+) counts set bits in 512-bit registers directly; on Arm, CNT (NEON) operates on 8-bit lanes with a horizontal add. Results accumulate into u32 — sufficient for vectors up to 4 billion bits. Binary representations are the most compact option for locality-sensitive hashing and binary neural network inference.

Complex Types

NumKong supports four complex types — f16c, bf16c, f32c, and f64c — stored as interleaved real/imaginary pairs. Complex types are essential in quantum simulation (state vectors, density matrices), signal processing (FFT coefficients, filter design), and electromagnetic modeling. The dot operation computes the unconjugated dot product $\sum a_k b_k$, while vdot computes the conjugated inner product $\sum \bar{a}_k b_k$ standard in physics and signal processing.

For complex dot products, NumKong defers sign flips until after the accumulation loop: instead of using separate FMA and FMS (fused multiply-subtract) instructions for the real component, we compute $a_r b_r + a_i b_i$ treating all products as positive, then apply a single bitwise XOR with 0x80000000 to flip the sign bits. This avoids execution port contention between FMA and FMS, letting dual FMA units stay occupied.

for (...) { // Complex multiply optimization: XOR sign flip after the loop
    sum_real = fma(a, b, sum_real);   // No sign flip in loop
    sum_imag = fma(a, b_swapped, sum_imag);
}
sum_real = xor(sum_real, 0x80000000);  // Single XOR after loop

Reading Materials

Beyond the READMEs in this repository, there are several standalone articles covering different evolution steps and features of this library.

License

Feel free to use the project under Apache 2.0 or the Three-clause BSD license at your preference.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

numkong-7.8.0.tar.gz (1.2 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

numkong-7.8.0-cp314-cp314t-win_arm64.whl (454.1 kB view details)

Uploaded CPython 3.14tWindows ARM64

numkong-7.8.0-cp314-cp314t-win_amd64.whl (509.3 kB view details)

Uploaded CPython 3.14tWindows x86-64

numkong-7.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl (10.4 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

numkong-7.8.0-cp314-cp314t-musllinux_1_2_s390x.whl (2.4 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ s390x

numkong-7.8.0-cp314-cp314t-musllinux_1_2_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ppc64le

numkong-7.8.0-cp314-cp314t-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ i686

numkong-7.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

numkong-7.8.0-cp314-cp314t-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

numkong-7.8.0-cp314-cp314t-manylinux_2_28_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

numkong-7.8.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.5 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.8.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.8.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.3 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

numkong-7.8.0-cp314-cp314t-macosx_11_0_arm64.whl (623.0 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

numkong-7.8.0-cp314-cp314t-macosx_10_15_x86_64.whl (629.3 kB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

numkong-7.8.0-cp314-cp314-win_arm64.whl (452.6 kB view details)

Uploaded CPython 3.14Windows ARM64

numkong-7.8.0-cp314-cp314-win_amd64.whl (506.7 kB view details)

Uploaded CPython 3.14Windows x86-64

numkong-7.8.0-cp314-cp314-musllinux_1_2_x86_64.whl (10.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

numkong-7.8.0-cp314-cp314-musllinux_1_2_s390x.whl (2.4 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ s390x

numkong-7.8.0-cp314-cp314-musllinux_1_2_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ppc64le

numkong-7.8.0-cp314-cp314-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ i686

numkong-7.8.0-cp314-cp314-musllinux_1_2_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

numkong-7.8.0-cp314-cp314-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

numkong-7.8.0-cp314-cp314-manylinux_2_28_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

numkong-7.8.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.8.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.8.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

numkong-7.8.0-cp314-cp314-macosx_11_0_arm64.whl (620.6 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

numkong-7.8.0-cp314-cp314-macosx_10_15_x86_64.whl (627.3 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

numkong-7.8.0-cp313-cp313t-win_arm64.whl (432.5 kB view details)

Uploaded CPython 3.13tWindows ARM64

numkong-7.8.0-cp313-cp313t-win_amd64.whl (494.3 kB view details)

Uploaded CPython 3.13tWindows x86-64

numkong-7.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl (10.4 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

numkong-7.8.0-cp313-cp313t-musllinux_1_2_s390x.whl (2.4 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ s390x

numkong-7.8.0-cp313-cp313t-musllinux_1_2_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ppc64le

numkong-7.8.0-cp313-cp313t-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

numkong-7.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

numkong-7.8.0-cp313-cp313t-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ x86-64

numkong-7.8.0-cp313-cp313t-manylinux_2_28_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ ARM64

numkong-7.8.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.5 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.8.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.8.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.3 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

numkong-7.8.0-cp313-cp313t-macosx_11_0_arm64.whl (623.0 kB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

numkong-7.8.0-cp313-cp313t-macosx_10_13_x86_64.whl (629.2 kB view details)

Uploaded CPython 3.13tmacOS 10.13+ x86-64

numkong-7.8.0-cp313-cp313-win_arm64.whl (431.1 kB view details)

Uploaded CPython 3.13Windows ARM64

numkong-7.8.0-cp313-cp313-win_amd64.whl (492.1 kB view details)

Uploaded CPython 3.13Windows x86-64

numkong-7.8.0-cp313-cp313-musllinux_1_2_x86_64.whl (10.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

numkong-7.8.0-cp313-cp313-musllinux_1_2_s390x.whl (2.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ s390x

numkong-7.8.0-cp313-cp313-musllinux_1_2_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ppc64le

numkong-7.8.0-cp313-cp313-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

numkong-7.8.0-cp313-cp313-musllinux_1_2_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

numkong-7.8.0-cp313-cp313-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

numkong-7.8.0-cp313-cp313-manylinux_2_28_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

numkong-7.8.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.8.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.8.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

numkong-7.8.0-cp313-cp313-macosx_11_0_arm64.whl (620.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

numkong-7.8.0-cp313-cp313-macosx_10_13_x86_64.whl (627.1 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

numkong-7.8.0-cp312-cp312-win_arm64.whl (431.1 kB view details)

Uploaded CPython 3.12Windows ARM64

numkong-7.8.0-cp312-cp312-win_amd64.whl (492.1 kB view details)

Uploaded CPython 3.12Windows x86-64

numkong-7.8.0-cp312-cp312-musllinux_1_2_x86_64.whl (10.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

numkong-7.8.0-cp312-cp312-musllinux_1_2_s390x.whl (2.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ s390x

numkong-7.8.0-cp312-cp312-musllinux_1_2_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ppc64le

numkong-7.8.0-cp312-cp312-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

numkong-7.8.0-cp312-cp312-musllinux_1_2_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

numkong-7.8.0-cp312-cp312-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

numkong-7.8.0-cp312-cp312-manylinux_2_28_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

numkong-7.8.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.8.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.8.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

numkong-7.8.0-cp312-cp312-macosx_11_0_arm64.whl (620.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

numkong-7.8.0-cp312-cp312-macosx_10_13_x86_64.whl (627.1 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

numkong-7.8.0-cp311-cp311-win_arm64.whl (430.6 kB view details)

Uploaded CPython 3.11Windows ARM64

numkong-7.8.0-cp311-cp311-win_amd64.whl (491.6 kB view details)

Uploaded CPython 3.11Windows x86-64

numkong-7.8.0-cp311-cp311-musllinux_1_2_x86_64.whl (10.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

numkong-7.8.0-cp311-cp311-musllinux_1_2_s390x.whl (2.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ s390x

numkong-7.8.0-cp311-cp311-musllinux_1_2_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ppc64le

numkong-7.8.0-cp311-cp311-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

numkong-7.8.0-cp311-cp311-musllinux_1_2_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

numkong-7.8.0-cp311-cp311-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

numkong-7.8.0-cp311-cp311-manylinux_2_28_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

numkong-7.8.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.8.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.8.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

numkong-7.8.0-cp311-cp311-macosx_11_0_arm64.whl (620.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

numkong-7.8.0-cp311-cp311-macosx_10_9_x86_64.whl (626.7 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

numkong-7.8.0-cp310-cp310-win_arm64.whl (430.8 kB view details)

Uploaded CPython 3.10Windows ARM64

numkong-7.8.0-cp310-cp310-win_amd64.whl (491.8 kB view details)

Uploaded CPython 3.10Windows x86-64

numkong-7.8.0-cp310-cp310-musllinux_1_2_x86_64.whl (10.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

numkong-7.8.0-cp310-cp310-musllinux_1_2_s390x.whl (2.4 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ s390x

numkong-7.8.0-cp310-cp310-musllinux_1_2_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ppc64le

numkong-7.8.0-cp310-cp310-musllinux_1_2_i686.whl (2.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

numkong-7.8.0-cp310-cp310-musllinux_1_2_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

numkong-7.8.0-cp310-cp310-manylinux_2_28_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

numkong-7.8.0-cp310-cp310-manylinux_2_28_aarch64.whl (5.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

numkong-7.8.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (2.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

numkong-7.8.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (2.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

numkong-7.8.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl (2.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.28+ i686

numkong-7.8.0-cp310-cp310-macosx_11_0_arm64.whl (620.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

numkong-7.8.0-cp310-cp310-macosx_10_9_x86_64.whl (626.9 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file numkong-7.8.0.tar.gz.

File metadata

  • Download URL: numkong-7.8.0.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numkong-7.8.0.tar.gz
Algorithm Hash digest
SHA256 4c4577c3cb64f9b5fa0d005809ccfa01fb6a52f4f53e6d445a22e63bd59525c9
MD5 ac4fa5787115fbe7a94c859a67257f70
BLAKE2b-256 27049dc8fdfeb261c619b3f1b66979368becd3aebbfca299a28ec07fb589b5d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0.tar.gz:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314t-win_arm64.whl.

File metadata

  • Download URL: numkong-7.8.0-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 454.1 kB
  • Tags: CPython 3.14t, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numkong-7.8.0-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 0b645873852493f15a595c9a4b1ebbb5a81e0b7149c9d1d6b2a86e5292e324f5
MD5 889d2d3dbfe9733a7acbe8d29e008b63
BLAKE2b-256 c612c5eedd0ae1e6cce89e0699c26f00ad3e92c2dd3d18a9b05064feb5c20b77

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314t-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: numkong-7.8.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 509.3 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numkong-7.8.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 32ceb77c948145f252bac5f17c36815de78b3b4b41c68aee23292d71a952957c
MD5 bce02cf5aaae94f86a46e548014f871a
BLAKE2b-256 66bf79d55955383f32e3138bb337f02f9e2fe7977bebb5fbaf439758619a1e15

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314t-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3719f5d4250f6b5f5fb611ec1f7d867be24d6b0d0cae2f59f629012620ed5c0e
MD5 f0f6c98e814e6bc69867d64d1d59f499
BLAKE2b-256 f6cbc395bfc136e5a76f2f2f1405f8904cd6cdf29f777a509e7e531a94bba776

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314t-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314t-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 deec0d7b44feea4506aa1430fddb4809800fb855eee64f01b08fb924c2d7ecc3
MD5 24d2065ed8b098adaaf73c2d89e746a7
BLAKE2b-256 dbdf682483fb476758addce5adabee7b3bc5930220337c29be671f996e08c524

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314t-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314t-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314t-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 e490e6e1966c5d388a8540189784c1728b429b13574d51a324ff4ff1aee26bb1
MD5 bbf33b978eae6529fcf8a96fb39e0a91
BLAKE2b-256 f6051d5132e1743a8fc6926b89c113e406ed585e072ce15b0833f3119846afb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314t-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 eba7900257d6ac9f78f196486247b84756813a62f7de03be78af0119488b8dba
MD5 53c9a8c071446bf334fd201a103e8272
BLAKE2b-256 3a495c13da4e06d0fed5893257ee2d5787a601d05bea35a8882e5ece85e75d7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314t-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 acfdfe89e6554db25bcb3195f49e1d70be4ae48bc8305df39ff3deeb05f155c5
MD5 ea022da33e6cd1adbd1dcce6998c8975
BLAKE2b-256 5063d484a1db9d39050b8fffa70b765b704d384dde36da6a4d1d6490acf6e9ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4adc3de7954e9951da46b98bc45bdfa0a50217032bda703f7b4a48ee3143e98c
MD5 371b86e3c68fed9f90c0894f77100694
BLAKE2b-256 8e11fa9cb0da3b58537f3a5d222368b31bd1f979c4fd3a6a955f9399be563069

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314t-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 73b7cd682cf56add3b84b670bce187e1060da94057f88ecc5b504f0f0615dcd9
MD5 38ee5a6fb9e3c430d9227c26e6a8f6e9
BLAKE2b-256 77edf275d114fa75759a5c8ba2d8b0c13bb81856a913589476674118da538453

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314t-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 94bccc5bb2ed9b5c15f5f19a69f3f74d63a475f34e05dfd31e82559bc416ad4a
MD5 6f145ece42f5958d84e41f22a226ab1a
BLAKE2b-256 63e7d78c20e31a9a6dc557c7f882942391c9657d6814e7f9953743322f64555e

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 53d2c5aaa70ae25456fafaabc14c6c473c8929bdecc7d5d61df790b40d1a3a19
MD5 3e6ec201bdf2b1ed6cb12b89732aca0c
BLAKE2b-256 46f08d4b015ac9585d909a33b58d2bea2a8dd00aab4a7e37ae4cb8c9c0f4b298

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 714cfb9aef8a01afbc2cb9c23968b501f25ce88354598df9729fd311901ff0ce
MD5 68f94aeef875b1e2aa248aaf275a6553
BLAKE2b-256 35d0c1f5ead15dc395bc3edf241ab4cf12e349b5132b21511c0cf074e6635cd7

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ca9cf8fcfaa25fe8051f9d3ff5d943ebd45e59a2780344be997b931a6ff20678
MD5 4ceaf25e680bfac4d13cb3479ab24bcd
BLAKE2b-256 7aecc5e7f0d6df10fb50031d06b1718210fbae7e25755643b70ec41e1a71d012

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 fa5e4fc0feb429094058ea8dff3279aa290126e04d6fd64f39834ddf5511d1c5
MD5 377b9bc7392e08efed844cff5e1296d4
BLAKE2b-256 63a5ead743284d6a58ff81d9b1b69f7f65287c1e1abb420b45658a9a23cdc552

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314t-macosx_10_15_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: numkong-7.8.0-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 452.6 kB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numkong-7.8.0-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 1506bd0f3a531f1ff61b9edcc0e4ce446b6c64958954af0b8d68939b1a0cb887
MD5 0162c06fdb16a5a233a5c1715c9d1f5a
BLAKE2b-256 722005498fa9fe7c4870ffaba992f730864c0bcd434bd084b91d7852aa1bd78c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: numkong-7.8.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 506.7 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numkong-7.8.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f24e89511073cf49369e40f27bab3467338ae674d861d0314e357c4190bce504
MD5 710a506f1f2ee0160e741b5276e144cd
BLAKE2b-256 dad7bf97c9bd4890625435acf645753b0eae9daf0c287d72b508d5727078291e

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fee54690e61fb17226cbcabd5e511c0e70dc83bf0af9b1b5524708a5500d84bc
MD5 08328c1f59c7c0219c7ab8e3925558a1
BLAKE2b-256 a36f5ebaf3e68491b06f8506ba3ae383de5dbc1cd8ec9f6141ebcfae092a4176

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 2da0084ec3df2830e3d63c751dd210de6bc7020982d09bf3d7616a3c98133482
MD5 729c141132370464afda2207a1bbd573
BLAKE2b-256 3f38ee7a89c629b67d788585f66fe00250ffd66cdc7dda86f5da412413640f58

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 5ba09103bec2ccbfacddc561a50c1073f6d4b3961d200d398b698520b1bac796
MD5 452a31c32d736721500168a294bbc3bf
BLAKE2b-256 ec05b20b4935b482550721df4fb09210bb2eda903727db6aa7951f72778e3878

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 173a3c353f9ad39addd90d1936e09922d2d7a2f93810d931b9eda58bb192d313
MD5 808089e7a6af6439b962fc56770a4cc0
BLAKE2b-256 eefd1ea73f03e477030e0d6dcec1df4678520f70d90a3957d185c889c3a83fa8

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d5429f332aef41c040835fe1f405422f2c90162d562e9bd26a17ef9e4a86a0cb
MD5 729ac727570ab0535f9e82445241d0ef
BLAKE2b-256 e9c68bf5c40fda1442571dfb73a090cc370ebd6effe8e432fddeb02686f2c509

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6c19e22b1f01185102d9c38a82e6fc1aecf4dbb917d0a74c79d58d92b6b6e4ca
MD5 48fb65d5c19376c314a098737baa6e69
BLAKE2b-256 8099568de2380b54d29987e7b7d085e797e3e3db5fe224188ef0ada7b14a8103

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e0273da6c392ad693e049e2ce85e60501c26fcf2067c787a94519cc2b4209c20
MD5 e987f1990083b8b6ebab421561017012
BLAKE2b-256 536d44afdd9973d07fdffbb432f916c757ae32c10f57be7b3c844d67e86083b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 412477a73b2bf944662069172f3ccdebbf06ecc667939a18db3c09f2fe241429
MD5 9ede6f2f2c4f9d05ae634aef38b5086c
BLAKE2b-256 5a362d2ac5e2e9d4bd7736d790cce7a2d244e92e86af6fcf1d4693298ab4dd7d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 3d05f82f25cf07256364ff10b0729811aa32e82ce24e32c4931a43e7ea24f9ea
MD5 3a177124dd32e63cc6a85fa11c325d52
BLAKE2b-256 7fa94d7314ce2ef3880066b2321c1a7483a4546c8092a2a1cd5e7fe9a3dbc6b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 7509ea718bbd0d22c02e2a9292198ad250525c1c89d611f36a329c4803bc40fb
MD5 c8cc50d346a4fdae35d6aa92e059c8ec
BLAKE2b-256 f33bac9479d139c82c9de2dc775a01afbf8729bc53cc699f0ebc950d0ae4fdb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1f24c2e6d4fe558eea27bab453acf33401e1d6bd7f65fccb1fd2d20c0fcb7681
MD5 6eb356569d75aa6eef18e94e161547df
BLAKE2b-256 38c95e935a8aeb7eb9f8a1b2e861eae0b549acaeca146e49617f019d4b2ce45c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f6ff667465ba96ae03e6a930c2ce378c7611a64a1afb2e42f105b61e6d5151a5
MD5 ad4c9a794f1683134652e71ffda618c3
BLAKE2b-256 3d28830883b97225799829e9bebec744d4c929dd2635b884fc362cc9e0d0dae9

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313t-win_arm64.whl.

File metadata

  • Download URL: numkong-7.8.0-cp313-cp313t-win_arm64.whl
  • Upload date:
  • Size: 432.5 kB
  • Tags: CPython 3.13t, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numkong-7.8.0-cp313-cp313t-win_arm64.whl
Algorithm Hash digest
SHA256 5272437aff361f8a0566262158cd2b8022798c3182ac2cd8393a903afd259cec
MD5 84e86c3d10e0d862c75d87a3d04081b4
BLAKE2b-256 2e6f2f4d0f3e0699d04e2c637c9e46e750e3f1600514d3a6779fdc34fa4232eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313t-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313t-win_amd64.whl.

File metadata

  • Download URL: numkong-7.8.0-cp313-cp313t-win_amd64.whl
  • Upload date:
  • Size: 494.3 kB
  • Tags: CPython 3.13t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numkong-7.8.0-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 16bff56013a84408a1e813b73467b7830863ead2129f89994a861d1521ecc7a4
MD5 4895c9e683e5e59b07bcedf81e5f6d55
BLAKE2b-256 aed1bac764a7ea501d495ac09c3f901854d50c679bd590e9f1eccff15441a90a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313t-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 562fb419e39fa404513154722098640042b0d305e476fa6085dfbc5ad73d4d79
MD5 375872f47e077d0a6f564a8f04a6ef44
BLAKE2b-256 f8cb5c8c83c95566b1acb9c79b4bd141b202b90140641f24ceb131690ad6f254

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313t-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313t-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 837f2a093eab00533375adf04b89348916d67533c7f0dd25c626566fb38b0794
MD5 8218e0561a9d86d2015be137ec3243fc
BLAKE2b-256 03510b12cad783e04d4d95165449dfa3cb83cefe60c71640c6dee80615417edb

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313t-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313t-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313t-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 dc130cd8acb0fea2c7a4b7a927560dc270de8877b7b34c0463a691e74dfb54e9
MD5 c7b2c48c57d66d1220608b4a297e4a1c
BLAKE2b-256 2dcc3026f1b2cb04dc55701184ddba63f2d88f2ec9a74e6819d0e7aefbf1ceee

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313t-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 b4769b00f7dc8e3e2064f1c24f9bfc79b77874521d6ca054e0324864b384849d
MD5 eca9bf646b0e0c1582891b9db5ecb99e
BLAKE2b-256 3acbcab5336cd971b0c7295c4fb1f9d92cfa2109e626432cbe3db40543b5f1af

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313t-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f679cbd1ba2884a1a9cde900ab4c26b82b03b9abe6b7083bdc8da73117e8c38f
MD5 dabf0589ae6b34565a85216cfd192176
BLAKE2b-256 d263bb2d4b048ac3a7220942f61f957ca66cb36e6ee869731d27a21c667dfa6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 248f11a020d85dc3bc927e004884b5bf75640e3dc283452221fbafed3bf26b4d
MD5 917d36a336fe457c83d8d71322b97aeb
BLAKE2b-256 c48f201f2be6a5add4910b45a002e33f71fba84ff6fcb7498a7d978c071e927d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313t-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 db40eec7d71f4861f5c656dbf802420e69f97a04a4cdd5a0863b9d56dd53659e
MD5 6298200831cea48e98265ecf304c8933
BLAKE2b-256 149d2d6f9f31cce9594355ecd5e938936a19d3eefdc0102ecd459103cc63d7de

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313t-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 dbca652878ff1c00c71cc0b5211d076c214eb23cddda61d75253fab98d388f89
MD5 6bc4d2a2bf907dde24a2266dd2fd397e
BLAKE2b-256 4487c98ee1def871ab06ed8ab2e15b3854879d63b4d397830b8ffa324c77312f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 56b000d6390d568eda8d35305301835d8daa93204dd71729e96acfc501c9530a
MD5 a83f11d669c80f628a7630e6ff85c6c7
BLAKE2b-256 e7f1a8b6c6cfdf9370ba3ad12e2e3aa183d0665b1095b72cc4916568447974cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 f29597b0116c4e2c2eb00515a798c2727ad58ed2a6b536e0364fe206f1ab734e
MD5 f163e8bfa2c3bc613c83827bfd072d55
BLAKE2b-256 df2bdc50c6a68206289e676746c1f6e56c096eb4083d6355e40c73cc8a384547

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b734bc8283b3eaf4f55e2255fa8751ac516feb90ff733c1fd42086a445624661
MD5 afc4edd7dc62cb779266f8bf1cfb3bcc
BLAKE2b-256 850dc951ba18b3f14cf5d2b6641538e430f4a64ad1509194802117edbebe4a33

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313t-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313t-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313t-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 3fccd2234ad53682c86912e92586554fb312a63f5cf8bb814f79c9ce2f16d183
MD5 fa50db560ca7a778a6d271062c17e604
BLAKE2b-256 e9f08fc629edc2d9dcc0487468bb5ce1646967ed5aa18ebc599f6d7f3e83f966

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313t-macosx_10_13_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: numkong-7.8.0-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 431.1 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numkong-7.8.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 2b1171799e0fe93ccfe8c42f5880eb5a18084bad1ae4e7a00ca4ddcebb36201c
MD5 8453fbcc7072776d7a4970d0ef587136
BLAKE2b-256 4c724794328c24c4953c9354977da4a38c0e031ad022bafee30a53d4ae953b42

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: numkong-7.8.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 492.1 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numkong-7.8.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 fd0dd074ffdaecf3c97f5ffe250dadb27ff65037c30111cdfec5b6964ea4dd61
MD5 6e57c0b6278930793456445fd0236bf3
BLAKE2b-256 5f6e9a72788b064ed9f9d773725c41a3f9f4c42c1adac2ab0ab04e97d9968a22

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c03ed09b93259dc6d39769423cbb17bb92a5263acb3ad6507800835ed058b942
MD5 22ab48ba81cc3d267425d56f3f053e44
BLAKE2b-256 77e3c5f30707d68872780b62356771ff47415505be37afcf19b1e35db0a5b673

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 8b690cfa7f27063a95b48e9eb4dde934d9c7307e88eb3eb327e7ef94f6f3289c
MD5 7400513a7ddec34669f1b48381de3ce6
BLAKE2b-256 e27d04287cf4b4f886d5745a47b123a47a6d80536226c064fdc192adac62bacd

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 40f967a45778665232a24f811e2038003c72c35c5a3334c68695922175ea85f9
MD5 ec67b2942f101bd523927cc9e7da686c
BLAKE2b-256 42876782f92b5d94a8aeb022efe9b4c5b9f0e3f22f5762d15d3834d07a321c1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 fd1da707f239a255afbd4a77fb5ed0bd093593d8e24140e69633f85c1cbb179c
MD5 4240e0773993c5d39f848c12ad63776c
BLAKE2b-256 acfed3cb203aebfe01dbab71c61d9c9a3a3ad2c840b1e9db67ed17af1cbb54fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7f446fc35b8f0b8342a96876cb3ea873a8ed0c95e4e2019d2f98f48714fbba7c
MD5 f5efa27d7c8aa482c0266743b91edab8
BLAKE2b-256 ae950d0c37b9462a37f1eaf25572804c0ed3a061842c97284f4209d9523cc9f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cb20894b53164577e98e58149067cce423c79abad50e1d00197b5ae8545313f4
MD5 96d21cd8fc94ac485a1fec2ce5dc2cd3
BLAKE2b-256 9aaa5eb14078a3249cdae8f1a3524a79caad646bb26922a2245eceb218162656

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b33c0cab0d08c2fb847138ca9751343a236a1f7f020953d40bbf3fddb918d909
MD5 5e513ba026e42226f4a5bc13d7b902ad
BLAKE2b-256 15a84550942600336f2dbb8611d727fc9e9c1bacd9e361f9a67260d5b14c2344

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 b2a6cda1aa8ccb0b56270899bfde13a8fdc776391c92412b3796e64a3a1fb88e
MD5 04d09d8de3d223ac2e92822a4444ba7c
BLAKE2b-256 b494c227cc1a8d155f160fa9286c7846151dee550c8c9a425bb4457e7963e931

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 5862783b6242d53ca2334127c36404a0a355b8a9966c0da552efd7bfc237d9ab
MD5 4e31a07103df680474f0cfc8d9611612
BLAKE2b-256 174e99be60698445c4026d3318593327c5b76b947ca3cf2b1b282b78e7b7b4af

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 5335ab3c934ecb514da4119d13917e64c362cf303f068b63b7cc1db459867726
MD5 242ec7e019302f224a966ef05bd25f48
BLAKE2b-256 18e6dce947d8f08353b92c327f6bf1aa86320e82bff507a27f9543870301683e

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 007f400337b5c6d4e51d495fcb130e03c078e6d96ff95947f94389ba10ad4db4
MD5 0e1d58fd9e2ae4d29b969363707efe04
BLAKE2b-256 75504086900fb8b3f4100d972c2de6390c17e00f64315401c4668935406fc711

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 aa13490bc47069053176fa9615b46a9970a510c8c5274f43d7fee054aa4f7097
MD5 66da35b5d1c21e6616d7798ee4bfbdf6
BLAKE2b-256 04e4c5f4a49e9072fcf0a1e55d95506098b51decc105f0290bcfe47201dc66e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: numkong-7.8.0-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 431.1 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numkong-7.8.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 03e5b39737a71fa2de291bbf75d080a30c5d31cbf7811513c88d6694754ab17c
MD5 dafa90f4ea6c6d8dcfd4cb3560aaf854
BLAKE2b-256 cf3da29cfb0c36fea4082a9b11574830b4b355f1f368ac4aa2250bd6e8c5b374

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp312-cp312-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: numkong-7.8.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 492.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numkong-7.8.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 179eb9b0cce167d4e1943092ab141a60c25e918987b641f70861dd4d90365e8c
MD5 aab834f33d1ce781293346e2ee4810fa
BLAKE2b-256 4e9683a57b7746278b1ed685cec2fa29413b6733a7bddcd68d155cef8e6bb6e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp312-cp312-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 203225c2cee687bb0eb727dbfe4a1c169f628ca75456f1b9e764395d09cd2b96
MD5 65c353287c3677e3c29bf4e6a41a4f0b
BLAKE2b-256 c37ae7d41d133edbb55c87b09c48c2729dd4ccfb20174c4b0e9ad75bd7721468

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp312-cp312-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp312-cp312-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 cdeedcc77eb333a5e679a1b3b462d56a950879c2175f22e7b24eaf347f145bf9
MD5 618da39a33c1fa688dac7fedd41f8f7a
BLAKE2b-256 d2fa19c4565c5d7be98d106b091500423e517e7c50f574f49785ae3aa8ecae63

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp312-cp312-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp312-cp312-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp312-cp312-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 8d6cd4237fa4e17256eebb531b82adf32fba42947ad97733e6bee8a2c2b9e099
MD5 34fbb93525079506c7550006c3180290
BLAKE2b-256 659eb90997e1389b3fc6d957ca383265e8fc349d535bd0977f674ee28e3034fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp312-cp312-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 1db9d22fa04373cd488fd9685d5d2fa0ea944855d9d8dd5800662551ad5131d7
MD5 dd44bf50e488e5ce8ccb4e82d2a1687b
BLAKE2b-256 f238e00d32b786e4251cb47c95a512d309ad8ca5517a31d56eb3c6df26762647

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp312-cp312-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4f9e2c0a731b22ee4f0066bc0d5babcbae82a9ca58f255b118224cdafe93e1c8
MD5 84ce5176864761764032b3f91e62c200
BLAKE2b-256 b27cd6a7dc63ab1ebbbc7703e8a0c401247c5796795a9aa80f3e7564baa18988

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c24b27df47f76c728ee91495016dc7cb9468e566255762614b540e045bbd26de
MD5 e230c8c71bca4ee7c2337ee58dc92392
BLAKE2b-256 31d9dd8c9f4ae813b574ef516e58fd7cd418dbacb25336f6691b84736ceca532

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 183d0cfd7cd95f83195920296066ba1eb56f2bb55646dfe2d57b8b26ffc79e13
MD5 326a3933f40118eaadb27d1f52eeff4e
BLAKE2b-256 eb1134bc73dc480f4a1b86585c4a06f2faf2274e58c9e242aa12bcac3ce760f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 bebd4cdaaa247de14aad272a3e75fe883c7e0f2e2ba90bf802503692626c69b2
MD5 85a436198c81c0ca69639b85e2798ee3
BLAKE2b-256 b0c7fe8cf14ef3a159e594364ffe65d8a9be909bf58143f44b2fbf63ee90d4cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 69219239958dfc7249d74f1c8102b17ccf7cea454426c15797dc6c3cbd7ef980
MD5 2afe194574c2f89bcd5284355fa4e1c2
BLAKE2b-256 ee7f9a8b60fc158289bb4ec799b256c6ba1e03709dc5e5471837fbf5314c9766

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 4aea2c16c1a5cb7548f9ead79f6e4459f3dad8aefd046114d39ad8ce5983d306
MD5 1fee775ed33eb8dae4ff2035e9863c84
BLAKE2b-256 ba3ef50e495a5f5f6a2d7bbe1a669150b0366a25c7b66cc878c46946ea467624

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 09994f1052aa55e28de7c964b93bc8219220bdb618be1b9d8667f22ef9c8e303
MD5 bea7f91f6e5e73eec12cdbb6a1a62850
BLAKE2b-256 05b69d6b4d928a62055212f495cd36f29e8cd71cf46c68ff8391238c3e8d992e

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 8be34206618dfb87e1bfcd428797f1073bd884d90eabfa1821df387f106ca56f
MD5 0c34f69cb58a2a4209cd615d7626e8ce
BLAKE2b-256 80a86398e0fda343f978fffc6d4bdca05ad0103cd9f2d7155b0193b9a9d501fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: numkong-7.8.0-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 430.6 kB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numkong-7.8.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 6e0c7a33416837a8bcc5ae8ff9b2562aa4eb303f0d3fd95d60ce5947aee13931
MD5 57c4ec301217dcdd8fc87c8d2d2208e9
BLAKE2b-256 c373bdeab85d3f7fb986e8c099245fca264b35db5173623765929d95a4040442

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp311-cp311-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: numkong-7.8.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 491.6 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numkong-7.8.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 aff5390273a641bc00726b3f5a585cf04f36c2c9e45b257e9e8a1769dab9c6b8
MD5 cc445b8eee2924fe8bf890d0b7a81dcf
BLAKE2b-256 8874300e4b3e7a0d02ac115b841ea18fc3758fc748e434aa965d55c462c76e17

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp311-cp311-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7a52905aeb779857b4a608a4debf28a0d33e68dbc1325c3ac7e4446c87531248
MD5 9777b0e54d069f932565445cc4f6c7e5
BLAKE2b-256 181ec204f977d4730b513432157b79274a384b88e8f4c7961f0e868a8f6327b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp311-cp311-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp311-cp311-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 eff0ddb98f547ba5159da6208fdea224b2fc1b818c048a47819a5f9a91c92cd5
MD5 0f0fb301a95b9489fdf9a9dbea12eae4
BLAKE2b-256 b6af2daacb38132c19e746401e6d665d0c6d2c7dded2ab7793de00978e623785

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp311-cp311-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp311-cp311-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp311-cp311-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 29491a080d842d43695e802aadbf391047169be70ab73697d54fe762967b8a2a
MD5 0dfa614747c62e3d9eab093bbb3d1d58
BLAKE2b-256 537973b94848216b5ae0f886898cfca178a9023a0bbe7a3f4e061b98c327be6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp311-cp311-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 957dbb30d58c3023616e402c7484c2a9e44f9191b7ce3721187923e9427d03dc
MD5 77178c06a809c5f6b4c8bf7193b62873
BLAKE2b-256 ce589985fcdb7b76994029823a96781369bf2e7b735e0b548aa1964bcaafd1ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp311-cp311-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 602debae751bc21a8bdbee89c30395f33a44e4ac6f32f6164d9093a60e99af77
MD5 21f658afa1c13154133f6ae5428c1480
BLAKE2b-256 c339c36d6abeb4f78b6a53a2bf09e8abdddc74d1e6dd21982b37f2ded1427cc9

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7112d42a41b5813c694d93a438820c493ae76030be6f840110e2d50587a3e7c7
MD5 5ee006b496aded0634513e9cf917940b
BLAKE2b-256 8367ff313cd2447f27e0139a881650497dd66b96c8360195e3f0d608e3bea6c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 331b23498294a7cb63b775d22dde6df9f520da9fa9dc48f73fc131b75be8ed4f
MD5 ebbac10371b45c9b82d4ab664cf7e0c9
BLAKE2b-256 f2c80750982ee6f249bb5d5a8d189582ce27c3bdcdf499d91a9589bcf432d712

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 7230778fed2f00016449129263486cf4b393ba485078ac5a98078ac094d700fc
MD5 0df07ef4f3dfd42c46c765ee4a0d3697
BLAKE2b-256 625a61d3c23f18b365e23b200f95a1153ff3c9be2d0d560f86e1ca1e005c3098

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 ca45301e3c0346ee823ea0871f6ae652e9893148629598537f094236432d7589
MD5 96fad0e9304c5325c70cc0d95b1d6d64
BLAKE2b-256 83ac63a1ee221501e0e207076374adcd7a2cf937eef8c9a72e1a02c038329456

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 3dd5afe56bf7ce8383bc6f6022c94d0180ecebc0dcf0c5ffa74a9d8948a6e96b
MD5 85f952e7f85bfbf5233539b933391597
BLAKE2b-256 59fc1d907fe7d66798b58cad3f1ebabc9b1d5fd998ba552601f3fa39a8e0958f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3a3c801338de536484107704c3bcd9f3c4ea51f808668c380e9c972fa37d287a
MD5 aa964fbb08f8cce552602304996ecc52
BLAKE2b-256 22d1396b8cbd554fa69be81e7d0de38f94befe1e1dcf912c2a321c92f56605df

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b65b55731c07d0def356c44c237ef5901185d7d359793974567ae0e8b5cad11e
MD5 4497adf16549f4654075fec0c612f9f7
BLAKE2b-256 c903be538562ac1054cb6149ddc50d25d5d61195af6f612efb104f62b7f917fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp310-cp310-win_arm64.whl.

File metadata

  • Download URL: numkong-7.8.0-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 430.8 kB
  • Tags: CPython 3.10, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numkong-7.8.0-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 b2230194314b7e054c382bd8c74dad68117ad2bdf521e8878f78d5abf0c986a0
MD5 e27ed0f46942c93583741df355cdde84
BLAKE2b-256 0ac6063a783477d6ba3539ce17a67d226753d7a95e289ae91390cc9b7b8d4d29

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp310-cp310-win_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: numkong-7.8.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 491.8 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numkong-7.8.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ec19d49671b687721e771e6f1e19283aaed2332b15195e914dd8d65968d37a0a
MD5 aeb21f934f21a0d56a3cfefa00c90581
BLAKE2b-256 578c2c077bea2c0239c841d953573dc195053f9cf2355c6c907e88e3c9ea5e21

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp310-cp310-win_amd64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 14d45cd44996bc36bf7d16270567fa3ef1ed2ec85bda0700b6d485c616294394
MD5 08b40755412c68a289d8d44f32d7ee99
BLAKE2b-256 7b159208adb8431cc8dcab4acd285fa2499fdeacc27707c17f36345a22ceca83

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp310-cp310-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp310-cp310-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 dad1da5e5f1b797360e6ed4df803dba068e47b31adaa00925fac34dfe117de86
MD5 01718061dcff3ce8e770934f5909c69a
BLAKE2b-256 e797faf59aea61eb5229cf2b523e12194a846eaded6839686fbebcea7ce92d2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp310-cp310-musllinux_1_2_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp310-cp310-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp310-cp310-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 22bffaecef20240bde97c1219d1f454e1d0b5fb6534f9e133ba5eb7320ffc3c7
MD5 4304fc1dc06967dfd48bae99a6bfe811
BLAKE2b-256 aeb0d4bbb9c087125f7e3bb293b00673380a9cb243a9949c763c5291ad3055ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp310-cp310-musllinux_1_2_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 5efafb049dd23fadc74cc613c82d3671e6759e64d130f6e0443c352bb962f001
MD5 e8d5c3588fdc5958b53df80425d7030c
BLAKE2b-256 956db5a69873d41782f47a51dd4e774107b458711fdd032d4dcfa34d1ab0d261

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp310-cp310-musllinux_1_2_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 537b8708619f075ea533530b20d69de1d7a27db08477630538686fd43e33bb23
MD5 373dde2d75c8385503b480760c18c4d5
BLAKE2b-256 3463a85f787d4839a6f153f78d08a7cd0f434760a3fc15f1e4107d38f46e04af

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp310-cp310-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 166696573248b5cb769432faef8e95a1f0fc1723d4f55f15d7356420ff9e4d34
MD5 700df573ceac30f9c11c21b1612749cc
BLAKE2b-256 e1f8c73c6b7cd406efa3b5730622303a05e6a6e35d6f15b0f7b4956985863c4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8326adef3f33c5afe22ac144848ed776543e4488d04c7618ea6a7f9c23abd523
MD5 bdff3d0c2b2a968050f435325e11f15c
BLAKE2b-256 bbc402c5689ec256ec95e218b32211275f741a34888750bec0d90035c2be89ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp310-cp310-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 0deb94653dfcd4522f19c0561c1b8ccdbc4ff50360d3c7b6dfb60a3f3a22677f
MD5 ba499c0328da5b4d932f8b95939c94a5
BLAKE2b-256 05fe1ca19c91f9b959f00ee001092a063a9a4dfb738419795894a89d32ff6840

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 3a9beaba10cf8a8fb7620a5e75840a4d34344c029dd697c1810b6c73261db179
MD5 89b7d71db4d3d065550f159859200fdb
BLAKE2b-256 19ae9a633a8d31b8d7e9d6280f4514f92c9c2e3e8cfeb9233a9f97ea886e91e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 df685617039d31ba755f5b58bed33974a9a319715f8cc284f68d6df1d5b0f67b
MD5 b562aaf3a2cc2d3eca950e7c14aba600
BLAKE2b-256 971ecb94b5d91ebbb91dd4147a66846568fe4cd10d4523d935e3a0e7d7f979c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0324f161d38383a8acb72f095ab45ab2aa2550c70160de30a0aad17b6dd907b1
MD5 15ea84e27f6d4c5e53a881a85daa6287
BLAKE2b-256 d4e35a6bac2089646c774af16f0715b1344ccfdbdce8d4c03f7bdea6c233e44b

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numkong-7.8.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for numkong-7.8.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a5c68f645ce9a3e64ecec5de418e6e531ea6cce8a7d459628490ecfba85c2216
MD5 0bdafa8c1abb8ee8f2a3e65c2cfbc755
BLAKE2b-256 0e3db9cee993b169faacee2aa69e2548e7b9a007707e2872a6a22f73af273822

See more details on using hashes here.

Provenance

The following attestation bundles were made for numkong-7.8.0-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: release-python.yml on ashvardanian/NumKong

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page