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, plus i686, ppc64le, s390x), macOS (x86_64, arm64), and Windows (AMD64, ARM64). RISC-V wheels are temporarily disabled until the official PyPA riscv64 images ship a new enough LLVM. Python 3.10 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 the threads= argument on the GIL-free kernels, or concurrent.futures around them.

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)

cdist and the packed and symmetric kernels take a threads= argument, where 0 means every logical processor, and row ranges are still available for partitioning the work yourself.

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 Apple platforms & Linux 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 128-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="float64")

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_size → cblas_sgemm_pack → cblas_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/longjmp on any kernel path — exceptions 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 capabilities 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 SVCVT → SVFMLA 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 same 32-entry LUT integer path. E4M3 scaled by 16 reaches 7,168 — 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.

Citation

If NumKong helps your research or product, please cite it:

@software{Vardanian_NumKong,
  author = {Vardanian, Ash},
  title = {{NumKong: 2000 Mixed Precision Kernels For All}},
  doi = {10.5281/zenodo.21480519},
  url = {https://github.com/ashvardanian/NumKong},
  license = {Apache-2.0}
}

License

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

Metadata

Release files for numkong 7.8.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for numkong 7.8.2
File Size Uploaded
numkong-7.8.2.tar.gz 1.2 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for numkong 7.8.2
File
numkong-7.8.2-cp314-cp314t-win_arm64.whl CPython 3.14 CPython 3.14 free-threading Windows ARM64 Details
numkong-7.8.2-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
numkong-7.8.2-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details
numkong-7.8.2-cp314-cp314t-musllinux_1_2_s390x.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ IBM System/390x Details
numkong-7.8.2-cp314-cp314t-musllinux_1_2_ppc64le.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ PowerPC 64-le Details
numkong-7.8.2-cp314-cp314t-musllinux_1_2_i686.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-32 Details
numkong-7.8.2-cp314-cp314t-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 Details
numkong-7.8.2-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.39+ RISC-V 64, Linux glibc 2.38+ RISC-V 64 Details
numkong-7.8.2-cp314-cp314t-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64 Details
numkong-7.8.2-cp314-cp314t-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64 Details
numkong-7.8.2-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ IBM System/390x, Linux glibc 2.17+ IBM System/390x Details
numkong-7.8.2-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ PowerPC 64-le, Linux glibc 2.28+ PowerPC 64-le Details
numkong-7.8.2-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-32, Linux glibc 2.28+ x86-32 Details
numkong-7.8.2-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
numkong-7.8.2-cp314-cp314t-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 free-threading macOS 10.15+ x86-64 Details
numkong-7.8.2-cp314-cp314-win_arm64.whl CPython 3.14 CPython 3.14 Windows ARM64 Details
numkong-7.8.2-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
numkong-7.8.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl CPython 3.14 CPython 3.14 PyEmscripten 2026.0+ WebAssembly Details
numkong-7.8.2-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
numkong-7.8.2-cp314-cp314-musllinux_1_2_s390x.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ IBM System/390x Details
numkong-7.8.2-cp314-cp314-musllinux_1_2_ppc64le.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ PowerPC 64-le Details
numkong-7.8.2-cp314-cp314-musllinux_1_2_i686.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-32 Details
numkong-7.8.2-cp314-cp314-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ ARM64 Details
numkong-7.8.2-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl CPython 3.14 CPython 3.14 Linux glibc 2.39+ RISC-V 64, Linux glibc 2.38+ RISC-V 64 Details
numkong-7.8.2-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
numkong-7.8.2-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details
numkong-7.8.2-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ IBM System/390x, Linux glibc 2.28+ IBM System/390x Details
numkong-7.8.2-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ PowerPC 64-le, Linux glibc 2.28+ PowerPC 64-le Details
numkong-7.8.2-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-32, Linux glibc 2.28+ x86-32 Details
numkong-7.8.2-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
numkong-7.8.2-cp314-cp314-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.15+ x86-64 Details
numkong-7.8.2-cp313-cp313-win_arm64.whl CPython 3.13 CPython 3.13 Windows ARM64 Details
numkong-7.8.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
numkong-7.8.2-cp313-cp313-pyemscripten_2025_0_wasm32.whl CPython 3.13 CPython 3.13 PyEmscripten 2025.0+ WebAssembly Details
numkong-7.8.2-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
numkong-7.8.2-cp313-cp313-musllinux_1_2_s390x.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ IBM System/390x Details
numkong-7.8.2-cp313-cp313-musllinux_1_2_ppc64le.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ PowerPC 64-le Details
numkong-7.8.2-cp313-cp313-musllinux_1_2_i686.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-32 Details
numkong-7.8.2-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details
numkong-7.8.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl CPython 3.13 CPython 3.13 Linux glibc 2.38+ RISC-V 64, Linux glibc 2.39+ RISC-V 64 Details
numkong-7.8.2-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
numkong-7.8.2-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details
numkong-7.8.2-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ IBM System/390x, Linux glibc 2.28+ IBM System/390x Details
numkong-7.8.2-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ PowerPC 64-le, Linux glibc 2.17+ PowerPC 64-le Details
numkong-7.8.2-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-32, Linux glibc 2.17+ x86-32 Details
numkong-7.8.2-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
numkong-7.8.2-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
numkong-7.8.2-cp312-cp312-win_arm64.whl CPython 3.12 CPython 3.12 Windows ARM64 Details
numkong-7.8.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
numkong-7.8.2-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
numkong-7.8.2-cp312-cp312-musllinux_1_2_s390x.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ IBM System/390x Details
numkong-7.8.2-cp312-cp312-musllinux_1_2_ppc64le.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ PowerPC 64-le Details
numkong-7.8.2-cp312-cp312-musllinux_1_2_i686.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-32 Details
numkong-7.8.2-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details
numkong-7.8.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl CPython 3.12 CPython 3.12 Linux glibc 2.38+ RISC-V 64, Linux glibc 2.39+ RISC-V 64 Details
numkong-7.8.2-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
numkong-7.8.2-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details
numkong-7.8.2-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ IBM System/390x, Linux glibc 2.17+ IBM System/390x Details
numkong-7.8.2-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ PowerPC 64-le, Linux glibc 2.17+ PowerPC 64-le Details
numkong-7.8.2-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-32, Linux glibc 2.17+ x86-32 Details
numkong-7.8.2-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
numkong-7.8.2-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
numkong-7.8.2-cp311-cp311-win_arm64.whl CPython 3.11 CPython 3.11 Windows ARM64 Details
numkong-7.8.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
numkong-7.8.2-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
numkong-7.8.2-cp311-cp311-musllinux_1_2_s390x.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ IBM System/390x Details
numkong-7.8.2-cp311-cp311-musllinux_1_2_ppc64le.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ PowerPC 64-le Details
numkong-7.8.2-cp311-cp311-musllinux_1_2_i686.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-32 Details
numkong-7.8.2-cp311-cp311-musllinux_1_2_aarch64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ ARM64 Details
numkong-7.8.2-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl CPython 3.11 CPython 3.11 Linux glibc 2.38+ RISC-V 64, Linux glibc 2.39+ RISC-V 64 Details
numkong-7.8.2-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
numkong-7.8.2-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details
numkong-7.8.2-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ IBM System/390x, Linux glibc 2.28+ IBM System/390x Details
numkong-7.8.2-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ PowerPC 64-le, Linux glibc 2.28+ PowerPC 64-le Details
numkong-7.8.2-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-32, Linux glibc 2.28+ x86-32 Details
numkong-7.8.2-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
numkong-7.8.2-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
numkong-7.8.2-cp310-cp310-win_arm64.whl CPython 3.10 CPython 3.10 Windows ARM64 Details
numkong-7.8.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
numkong-7.8.2-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
numkong-7.8.2-cp310-cp310-musllinux_1_2_s390x.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ IBM System/390x Details
numkong-7.8.2-cp310-cp310-musllinux_1_2_ppc64le.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ PowerPC 64-le Details
numkong-7.8.2-cp310-cp310-musllinux_1_2_i686.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-32 Details
numkong-7.8.2-cp310-cp310-musllinux_1_2_aarch64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ ARM64 Details
numkong-7.8.2-cp310-cp310-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl CPython 3.10 CPython 3.10 Linux glibc 2.38+ RISC-V 64, Linux glibc 2.39+ RISC-V 64 Details
numkong-7.8.2-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
numkong-7.8.2-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details
numkong-7.8.2-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ IBM System/390x, Linux glibc 2.28+ IBM System/390x Details
numkong-7.8.2-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ PowerPC 64-le, Linux glibc 2.28+ PowerPC 64-le Details
numkong-7.8.2-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-32, Linux glibc 2.28+ x86-32 Details
numkong-7.8.2-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
numkong-7.8.2-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details

Total release size: 314.7 MB

Release files / numkong-7.8.2.tar.gz

Download URL numkong-7.8.2.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
e6ee79dcddbac90dc71e22e27abef0adda066977b31f1afa44890855012a5ac0
BLAKE2b-256 checksum
How to use checksums
1f43a7d15bfe7b6c72e90e6f2178e9f11389619e7dc1fb02467db04d532aaa76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314t-win_arm64.whl

Download URL numkong-7.8.2-cp314-cp314t-win_arm64.whl
Size 454.3 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows ARM64
SHA-256 checksum
How to use checksums
cd28eb563b31b862e30a7e6061fb515471e1f9cedb0b16c16235fa7439a8b9e8
BLAKE2b-256 checksum
How to use checksums
8b14c02d56181d7fd9177166e4ca13ee609d5a6e6512cae61f92543165a96113
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314t-win_amd64.whl

Download URL numkong-7.8.2-cp314-cp314t-win_amd64.whl
Size 509.7 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
88bb231ebded88d6610acc49c8216a949d82b4033c8792cafbe9ee562ec58b6b
BLAKE2b-256 checksum
How to use checksums
8c54809ef945147a52c0cc159f75f66192b271ab75d1eca12e691a0a7d513b09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL numkong-7.8.2-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 10.4 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
270c193534d2db8ac4321b018e721e0be603eec6b86206f4de861b50d0f95f51
BLAKE2b-256 checksum
How to use checksums
575d317ce2cafa8d0060c7a19bac45cfb1ef061b08255304b6a3bb028fe68ed1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314t-musllinux_1_2_s390x.whl

Download URL numkong-7.8.2-cp314-cp314t-musllinux_1_2_s390x.whl
Size 2.4 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ IBM System/390x
SHA-256 checksum
How to use checksums
07c28743e4675db904508e1e1b823a7d27190aa1bede07ab223ad855e18f6436
BLAKE2b-256 checksum
How to use checksums
80c507882d5d630f8d442895491f7a1a3d1812d392ee6ca5b3638151f2cd731d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314t-musllinux_1_2_ppc64le.whl

Download URL numkong-7.8.2-cp314-cp314t-musllinux_1_2_ppc64le.whl
Size 2.9 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ PowerPC 64-le
SHA-256 checksum
How to use checksums
56046694dae68834ac0985b57431e8db429b267b7367d67116e873b1698cc867
BLAKE2b-256 checksum
How to use checksums
242010f5e9a7f651cf0f3b5614f077a07ab80e68482cb231668edbf97ab255c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314t-musllinux_1_2_i686.whl

Download URL numkong-7.8.2-cp314-cp314t-musllinux_1_2_i686.whl
Size 2.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
cdeb3fdd8c5f7cfd2f3901192e709eaa76cdd8561a829330893b1dceb98ec54e
BLAKE2b-256 checksum
How to use checksums
3bc51d9398fe41853996ed283cc2e38c1c906c25c7cbabdc8b508b88e743a4ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314t-musllinux_1_2_aarch64.whl

Download URL numkong-7.8.2-cp314-cp314t-musllinux_1_2_aarch64.whl
Size 5.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
f23d8749a5863bce085336b7b671bc60c3edcf5cd93eb65eac68d11b44abfa9a
BLAKE2b-256 checksum
How to use checksums
8faccc92571c43d90cb19497ad2a890a0f1ddb64547da468ba9edf8c68cba6b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl

Download URL numkong-7.8.2-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl
Size 2.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.38+ RISC-V 64 Linux glibc 2.39+ RISC-V 64
SHA-256 checksum
How to use checksums
edda185b5b9a9e31f45db5c6f6f2f2839155b07d3efcf3cb5f393ae83e18a9a4
BLAKE2b-256 checksum
How to use checksums
113cb7b81220e11bf68386a062aa3ebfa80e0f9959d9169f2e4068514d44030a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314t-manylinux_2_28_x86_64.whl

Download URL numkong-7.8.2-cp314-cp314t-manylinux_2_28_x86_64.whl
Size 10.5 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
88d0ae6da569ee9b37333add350e79e5bc88726cff5a500ed2139856c2b6bf66
BLAKE2b-256 checksum
How to use checksums
80f1b7c9a464662991d98b17c7356d9ceacd4ee0249a2f96e3927246e8bf391d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314t-manylinux_2_28_aarch64.whl

Download URL numkong-7.8.2-cp314-cp314t-manylinux_2_28_aarch64.whl
Size 5.4 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
75d51f9c7ccbec89d0c55feb06bd915139555d72a76e2f09c05ae5ecfc488ed6
BLAKE2b-256 checksum
How to use checksums
047fad927bf616e3ac7af097ef42675731a6db20a12ee8bdeeb0be7d909f7f57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl

Download URL numkong-7.8.2-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Size 2.5 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ IBM System/390x Linux glibc 2.28+ IBM System/390x
SHA-256 checksum
How to use checksums
8c4c9a392821b96328c91635af83126cf605a0bf6ccbcbec6c74787c6e535ad0
BLAKE2b-256 checksum
How to use checksums
6b01ac84818f56be84b8a7406c1fcddb2b365bb6babaa6f2292737ec75084beb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl

Download URL numkong-7.8.2-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Size 2.9 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ PowerPC 64-le Linux glibc 2.28+ PowerPC 64-le
SHA-256 checksum
How to use checksums
622aed110963a21c08cab53bb98cb5ed335b5a3c72398e986d9867c459180036
BLAKE2b-256 checksum
How to use checksums
2f54e747f93ee6cc23dda9709578b8d81bef5c99d286d2d71268e6f61bcb1564
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl

Download URL numkong-7.8.2-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Size 2.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-32 Linux glibc 2.28+ x86-32
SHA-256 checksum
How to use checksums
8537cf2f03801866e12f275e05b322da0f1dceb47d7bb98ca3681096c1d02475
BLAKE2b-256 checksum
How to use checksums
c3de2c8300972cdfa01cfb9dcf14132f242be00954a63c03f7ff1ac632fbc4dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314t-macosx_11_0_arm64.whl

Download URL numkong-7.8.2-cp314-cp314t-macosx_11_0_arm64.whl
Size 818.8 kB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7c53b28c706fd9fc94aa0296b3097e8bb1ccdb56b4ebc768d2c9241c911b7883
BLAKE2b-256 checksum
How to use checksums
96a40c494237a24e32db7f7d11a94b55dc1a80aa4b9038ddf92546dac65ddd12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314t-macosx_10_15_x86_64.whl

Download URL numkong-7.8.2-cp314-cp314t-macosx_10_15_x86_64.whl
Size 859.3 kB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
6bf30a93eccb1a1fdca9931d4a85bfe8d1e4538eda35ee85ef6f5d19d1571bba
BLAKE2b-256 checksum
How to use checksums
dbd807181c70face725984bfbb236b23277dbd4abcc6d25ab012db5bb519482a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314-win_arm64.whl

Download URL numkong-7.8.2-cp314-cp314-win_arm64.whl
Size 452.8 kB
Tags CPython 3.14 Windows ARM64
SHA-256 checksum
How to use checksums
88a8ab23d4dea8066f0a0f7eeaaeff101469ee8a8ecd9fe261ed2cd047c305fc
BLAKE2b-256 checksum
How to use checksums
59379377854b27300f4f8c9348fb59759e3f9697418830e9799bfdecb437c8d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314-win_amd64.whl

Download URL numkong-7.8.2-cp314-cp314-win_amd64.whl
Size 507.0 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
30db57f52779dfc5d0e341b8b7cfa4091c1d4222355512186c796ec8030d1078
BLAKE2b-256 checksum
How to use checksums
b0a9dfd9336cb88f8c5cca5e4c2bb594e92e1122adb2acda292eabb76e01c756
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl

Download URL numkong-7.8.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
Size 381.1 kB
Tags CPython 3.14 PyEmscripten 2026.0+ WebAssembly
SHA-256 checksum
How to use checksums
c832f275ff407c17a131c44df9a481f4a61e4c03165e3d9b342e291314502a5c
BLAKE2b-256 checksum
How to use checksums
0da665f56d5fdf38a906d88f2330e43a35c3003f9dfc89cf9bdd237bcfad6395
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL numkong-7.8.2-cp314-cp314-musllinux_1_2_x86_64.whl
Size 10.4 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
35d4da974cb9390a2322ea11da3107dd27ea733b640fec3f01f4323313225491
BLAKE2b-256 checksum
How to use checksums
c60048590c67cc80ffc057f20b3f84415ce889025bf6d4d62d8188421e5d6ffb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314-musllinux_1_2_s390x.whl

Download URL numkong-7.8.2-cp314-cp314-musllinux_1_2_s390x.whl
Size 2.4 MB
Tags CPython 3.14 Linux musl 1.2+ IBM System/390x
SHA-256 checksum
How to use checksums
b54ad1e245366c0ee0442465873375fbdca389a88ee94bfca8521e628fb90254
BLAKE2b-256 checksum
How to use checksums
b5f3f2cf0d5dcdd88907453a6db7856a24bea341e24adbdc2520ee017f552a9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314-musllinux_1_2_ppc64le.whl

Download URL numkong-7.8.2-cp314-cp314-musllinux_1_2_ppc64le.whl
Size 2.9 MB
Tags CPython 3.14 Linux musl 1.2+ PowerPC 64-le
SHA-256 checksum
How to use checksums
6cb8e265bf7689de4f83f1bc740e3296c25ba8e43b1f158a49e3d0efd4f47481
BLAKE2b-256 checksum
How to use checksums
afe77f2c878c06f47753651818fc85bdd4acbcbf5df865f5b85967a17be611d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314-musllinux_1_2_i686.whl

Download URL numkong-7.8.2-cp314-cp314-musllinux_1_2_i686.whl
Size 2.3 MB
Tags CPython 3.14 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
4ec9eacfe0ccd896d3c962f14ae8b8b7fbec10f2510d9931b52391b9a17541fc
BLAKE2b-256 checksum
How to use checksums
2411f08c597b2f8c16a2ef0725561ab3565b5ab98498ee0a1923907224f908f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314-musllinux_1_2_aarch64.whl

Download URL numkong-7.8.2-cp314-cp314-musllinux_1_2_aarch64.whl
Size 5.3 MB
Tags CPython 3.14 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
95bed178f60ea9b0fe0689dcff86a3a08a3611bd6d583726b4dbfcf3ee12baa2
BLAKE2b-256 checksum
How to use checksums
21e26b327c291150e348e528770715c49ff15e90ecc81895a45aa61dad93dfb3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl

Download URL numkong-7.8.2-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl
Size 2.7 MB
Tags CPython 3.14 Linux glibc 2.38+ RISC-V 64 Linux glibc 2.39+ RISC-V 64
SHA-256 checksum
How to use checksums
0679783f351af7db47e4ff72cdc7c170a26bb17595f62e2064daa38bb9755af0
BLAKE2b-256 checksum
How to use checksums
bf1e77549658d333131a90ac692e8512920d0581e0a9184079e1a53b4d0afb28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL numkong-7.8.2-cp314-cp314-manylinux_2_28_x86_64.whl
Size 10.5 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
27b9f193ba60a8c0070960da193ad6f90cc466b6575a273f39cdfd61b7a65c20
BLAKE2b-256 checksum
How to use checksums
76c4505f6f72a6e5ac3541c5946c34a3d0e3b25f69eb8e83fe5b1ad7b1bf60af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL numkong-7.8.2-cp314-cp314-manylinux_2_28_aarch64.whl
Size 5.4 MB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
13e316025cd98520ffe402f48dac859c94c185bca94752fd14a32d207b46e885
BLAKE2b-256 checksum
How to use checksums
f4f371651605afbf410c53fc6589d979b313971e90a584b421c71f68383edf91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl

Download URL numkong-7.8.2-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Size 2.5 MB
Tags CPython 3.14 Linux glibc 2.17+ IBM System/390x Linux glibc 2.28+ IBM System/390x
SHA-256 checksum
How to use checksums
81d45586f9e680b64c96eba2ae6eba812c99a597c0260b0e60af95af6ffc4b21
BLAKE2b-256 checksum
How to use checksums
aa2bd773b85cd5dc2323da75ca4d901d3886b5698237d701dd782e5f31bdf5ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl

Download URL numkong-7.8.2-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Size 2.9 MB
Tags CPython 3.14 Linux glibc 2.17+ PowerPC 64-le Linux glibc 2.28+ PowerPC 64-le
SHA-256 checksum
How to use checksums
00e95c89353cb983a2318638aac4b1bf4bce569c3c86458ce7f893a73b46f36c
BLAKE2b-256 checksum
How to use checksums
1c13df3e747a7f227e307bdfc35fcf67af185ccad736ed5da9995b9dd40403a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl

Download URL numkong-7.8.2-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Size 2.3 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-32 Linux glibc 2.28+ x86-32
SHA-256 checksum
How to use checksums
5a280f132e6be753c08d04f7b728016beec1cbef4b51e3dc16913b52c0d84dc4
BLAKE2b-256 checksum
How to use checksums
399bb74af69bd5c07b81cb8e89079065bc10328e7241640372b55870712b741b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314-macosx_11_0_arm64.whl

Download URL numkong-7.8.2-cp314-cp314-macosx_11_0_arm64.whl
Size 817.1 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7e00c9d26f2f11955828d7df36620b7eb8b9d32886753fdd6f2f5c461d1dfdb1
BLAKE2b-256 checksum
How to use checksums
69ab539af3389bb13196d7fa086b9cffdab421d4a33dd2e1a1cf3fefbd97f5ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp314-cp314-macosx_10_15_x86_64.whl

Download URL numkong-7.8.2-cp314-cp314-macosx_10_15_x86_64.whl
Size 857.4 kB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
1dc3d0d3296de82a62e1003630dc7949dfb47d21408c0d00a1731ea63d1255cd
BLAKE2b-256 checksum
How to use checksums
ab3bb1ec0556513fc8d448c923ed5d44e272948a5203b286bbbd267388c1a25f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp313-cp313-win_arm64.whl

Download URL numkong-7.8.2-cp313-cp313-win_arm64.whl
Size 431.3 kB
Tags CPython 3.13 Windows ARM64
SHA-256 checksum
How to use checksums
e20fc836d65a8fba90e3c54b510802d37588252cc4a02a3a948dc8116a3a30b3
BLAKE2b-256 checksum
How to use checksums
1220d17ec8f8c93b2a9606195f7f106457a52d8db6672ad92d61859dc6b7b710
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp313-cp313-win_amd64.whl

Download URL numkong-7.8.2-cp313-cp313-win_amd64.whl
Size 492.4 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
93beca1751cdaceb2fc8df13e0e4401695d069cea7e62bd37b3da6ad7b67ad41
BLAKE2b-256 checksum
How to use checksums
f8706b08a8d3d5ea8500df67078d5cf327ae80a26d351e2f72accee7aa3b4300
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp313-cp313-pyemscripten_2025_0_wasm32.whl

Download URL numkong-7.8.2-cp313-cp313-pyemscripten_2025_0_wasm32.whl
Size 383.6 kB
Tags CPython 3.13 PyEmscripten 2025.0+ WebAssembly
SHA-256 checksum
How to use checksums
8cee6a6ce056ddffc731ab567a19fe730dd1d7d8ce438332dc360c17f4a6a4cc
BLAKE2b-256 checksum
How to use checksums
2790330d813b3d2b3d71764d0fe4a732d6ada8baa46534ce3a983f210fe33eed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL numkong-7.8.2-cp313-cp313-musllinux_1_2_x86_64.whl
Size 10.4 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
e4ab7349c2bf75c95288ec4b2c85dc433a65edc5249cd55f992d554d2e90875d
BLAKE2b-256 checksum
How to use checksums
ca1b8c14d04cee5770253288a0f5435c6baf47827dab4d252c57d82dc7dc4718
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp313-cp313-musllinux_1_2_s390x.whl

Download URL numkong-7.8.2-cp313-cp313-musllinux_1_2_s390x.whl
Size 2.4 MB
Tags CPython 3.13 Linux musl 1.2+ IBM System/390x
SHA-256 checksum
How to use checksums
f5a480c1855ceed01927955a5fe31a53841788022b8628e30d94936671a0945c
BLAKE2b-256 checksum
How to use checksums
cde3a2887ad9a1e83b815cf148084c148fe7f93187c37766a9dd610995d18e58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp313-cp313-musllinux_1_2_ppc64le.whl

Download URL numkong-7.8.2-cp313-cp313-musllinux_1_2_ppc64le.whl
Size 2.9 MB
Tags CPython 3.13 Linux musl 1.2+ PowerPC 64-le
SHA-256 checksum
How to use checksums
fd2fc9d9f606b1c9b2559195c5ca9e94e7ae1c6d86c107a59a9b3bb417729cc3
BLAKE2b-256 checksum
How to use checksums
e40a2f8ec944f504e609e90dd0ac3fe6a7ff91f8886ed2721e342cab299b791a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp313-cp313-musllinux_1_2_i686.whl

Download URL numkong-7.8.2-cp313-cp313-musllinux_1_2_i686.whl
Size 2.3 MB
Tags CPython 3.13 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
45543b1ce306c1fc680ec936ecf3e0c60c7dc55beac013a4404a9c177642f7ad
BLAKE2b-256 checksum
How to use checksums
809f4208eed39093b528b4deecdbb4146f2a83e823fb9cb77e336e3804950262
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp313-cp313-musllinux_1_2_aarch64.whl

Download URL numkong-7.8.2-cp313-cp313-musllinux_1_2_aarch64.whl
Size 5.3 MB
Tags CPython 3.13 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
6ba33d8ae482281f0826e8462ba4063c171965d550cc1e1702c6040bce5e34d0
BLAKE2b-256 checksum
How to use checksums
50b5f536d86f9b1ab9efd9b1eb1ecb297d09d70a42fafac9ee5811c953c6416c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl

Download URL numkong-7.8.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl
Size 2.7 MB
Tags CPython 3.13 Linux glibc 2.38+ RISC-V 64 Linux glibc 2.39+ RISC-V 64
SHA-256 checksum
How to use checksums
ac626268b078e0343c876a05645925bb123bd7184714119f4713a7bed92647cb
BLAKE2b-256 checksum
How to use checksums
02983c9e87d1242960883e837704616c1490455d9dafdc4daf2da6c2a3a0ff77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL numkong-7.8.2-cp313-cp313-manylinux_2_28_x86_64.whl
Size 10.5 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6722067d08925912d6b925cdaadd0372ac953db2d59dfc88723d7984fe872dfb
BLAKE2b-256 checksum
How to use checksums
367a493f9ddab52258c90bad3ea09f81dd18ba09e6f39f59d7bf4b58f3f38ddb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL numkong-7.8.2-cp313-cp313-manylinux_2_28_aarch64.whl
Size 5.4 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
a884ba4227732e9c329231bb3a7f9e2c295a95b97a0cd82531b22e228cf43bce
BLAKE2b-256 checksum
How to use checksums
e540ed64048beb21afbd5fdcf9db6fbca840e74c220a71cd79272b6dc6be5b14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl

Download URL numkong-7.8.2-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Size 2.5 MB
Tags CPython 3.13 Linux glibc 2.17+ IBM System/390x Linux glibc 2.28+ IBM System/390x
SHA-256 checksum
How to use checksums
94efd8c0d29aa620cd766538d61bff4b81999785ff1df29e5da601ce3324ddc8
BLAKE2b-256 checksum
How to use checksums
82b8406d5eb0f3af12ef6f7ce4b35cb88d9a96466608b7457160f70474ac0ae1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl

Download URL numkong-7.8.2-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Size 2.9 MB
Tags CPython 3.13 Linux glibc 2.17+ PowerPC 64-le Linux glibc 2.28+ PowerPC 64-le
SHA-256 checksum
How to use checksums
9a44084aa334f226ab28c60583e9921f34bc145982a5563d58bc26cae2c7bec1
BLAKE2b-256 checksum
How to use checksums
162cd67cad079da6794a1d82573957aeedc87d39214e41a98f36538f0242674d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl

Download URL numkong-7.8.2-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Size 2.3 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-32 Linux glibc 2.28+ x86-32
SHA-256 checksum
How to use checksums
13604f55556622f167e3571d5e0c504046e6fa79bb6efb7397ff6865b39f52a5
BLAKE2b-256 checksum
How to use checksums
bb426f5a6a6dd150ccf911e3517a21aae1643be621336c0184576943c43c69fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp313-cp313-macosx_11_0_arm64.whl

Download URL numkong-7.8.2-cp313-cp313-macosx_11_0_arm64.whl
Size 817.0 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
33765b7c14399c8c019c70d1eccad1899e64313cfada8f0b7b4d3dd1f5a753ac
BLAKE2b-256 checksum
How to use checksums
e97c9fb3fd2e55ec996f2fd6b72c40d527b533a066908722038785168dad0b83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp313-cp313-macosx_10_13_x86_64.whl

Download URL numkong-7.8.2-cp313-cp313-macosx_10_13_x86_64.whl
Size 857.3 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
336dac9463affb3db2a8a36d31a9420d3d03fd5320979944e2c357780fb70dd4
BLAKE2b-256 checksum
How to use checksums
0025e132502b607cc0fed8e56606de66fc49f923ce81afcebdcdc60f4cf84cde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp312-cp312-win_arm64.whl

Download URL numkong-7.8.2-cp312-cp312-win_arm64.whl
Size 431.3 kB
Tags CPython 3.12 Windows ARM64
SHA-256 checksum
How to use checksums
8571ae7dc16d37f3c9efff2d3b605c5dcdc5b770f00d7bc235627f3b484ae153
BLAKE2b-256 checksum
How to use checksums
8d2b3d3c2398ce6c2810bb2a24fa0899cbf80bcbbf6a35c057e872f68bd28c2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp312-cp312-win_amd64.whl

Download URL numkong-7.8.2-cp312-cp312-win_amd64.whl
Size 492.4 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
c177248fe33fba31e02e45ea31a7bdf98162a4e2eca087349fe4e8988db7d28c
BLAKE2b-256 checksum
How to use checksums
06900289eb36650d0c70ac35d23948027d375eac67fcb6f6db385ee87a38e43d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL numkong-7.8.2-cp312-cp312-musllinux_1_2_x86_64.whl
Size 10.4 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
6e0c59941a3ac71c281b4b1844a2905c639029e818d82d070ad34ba784480aa8
BLAKE2b-256 checksum
How to use checksums
e57349ca98bbedbd0be5c885f2cee92caaf8a694fbb01a3f86a224d29972492f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp312-cp312-musllinux_1_2_s390x.whl

Download URL numkong-7.8.2-cp312-cp312-musllinux_1_2_s390x.whl
Size 2.4 MB
Tags CPython 3.12 Linux musl 1.2+ IBM System/390x
SHA-256 checksum
How to use checksums
9b70b657e52584f806fff0ff36bc24087ac1f48bdb3184df0a642c7b9f34deac
BLAKE2b-256 checksum
How to use checksums
ec5f2e8aa4e40db378fb80cc749710669801c1de19c3cbfd97097eb87a5ef517
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp312-cp312-musllinux_1_2_ppc64le.whl

Download URL numkong-7.8.2-cp312-cp312-musllinux_1_2_ppc64le.whl
Size 2.9 MB
Tags CPython 3.12 Linux musl 1.2+ PowerPC 64-le
SHA-256 checksum
How to use checksums
72e6298ed55778d5cdb2b05a998a383b74ece26c68a4040637356b8a31a6a570
BLAKE2b-256 checksum
How to use checksums
cd5833d0ac471d18e840b6c850b1268af76197c72d0c53cd3af276cb4063b4b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp312-cp312-musllinux_1_2_i686.whl

Download URL numkong-7.8.2-cp312-cp312-musllinux_1_2_i686.whl
Size 2.3 MB
Tags CPython 3.12 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
b13eee4c7146df8580b55db560eddcbf5e5121d9d3b1583f80122d9c868141d3
BLAKE2b-256 checksum
How to use checksums
94a66ace9ca1c03fa6797c1ff1614fb273f37a72f71999e1bbf07f7d04414d04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp312-cp312-musllinux_1_2_aarch64.whl

Download URL numkong-7.8.2-cp312-cp312-musllinux_1_2_aarch64.whl
Size 5.3 MB
Tags CPython 3.12 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
ceb6327bf8529bbf489d57b1428dcfc0df80964437f559e649020a581481ff61
BLAKE2b-256 checksum
How to use checksums
fbdcd9eaf754b790d66e3f27f8969b439ead2db1e315599f2be3d4286de4d32b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl

Download URL numkong-7.8.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl
Size 2.7 MB
Tags CPython 3.12 Linux glibc 2.38+ RISC-V 64 Linux glibc 2.39+ RISC-V 64
SHA-256 checksum
How to use checksums
bf22d4b14c8a7f239ae92248205195f6fca3806f5662641f271b001a5363cd01
BLAKE2b-256 checksum
How to use checksums
8aba82738d72e75536109d71cd0b6c6c5e7e33fcb2be495f52927d5ead1e96d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL numkong-7.8.2-cp312-cp312-manylinux_2_28_x86_64.whl
Size 10.5 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
992963524bfccf43c1d0b760f6f1d5590fdbcd05b0aabe1ee1ea7784587371b0
BLAKE2b-256 checksum
How to use checksums
e65c326dbff3fdb525a52d95c80058665d4d75efaf54398854eed2bf35b2f244
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL numkong-7.8.2-cp312-cp312-manylinux_2_28_aarch64.whl
Size 5.4 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
b245a42f21219667f11e83da4dd3faaad10dfb701b487ae6b99d7e781279dbc3
BLAKE2b-256 checksum
How to use checksums
4d1e777d537ee2596bd39ef9ed3abde4078a45b441169092265230579b57334e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl

Download URL numkong-7.8.2-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Size 2.5 MB
Tags CPython 3.12 Linux glibc 2.17+ IBM System/390x Linux glibc 2.28+ IBM System/390x
SHA-256 checksum
How to use checksums
fbcda60ffa72421d878020372805dbb99976b2cc73a8df3509f70a34cc7d26fb
BLAKE2b-256 checksum
How to use checksums
6fc1eed82bba90257ffd9efdb6ff46decf694e81d8181aad152785e63ea32be0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl

Download URL numkong-7.8.2-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Size 2.9 MB
Tags CPython 3.12 Linux glibc 2.17+ PowerPC 64-le Linux glibc 2.28+ PowerPC 64-le
SHA-256 checksum
How to use checksums
bbc0b56fdead0c0cec5d0df589cf5eeee28d4cf08a0d9e7c5662987dc2e537c6
BLAKE2b-256 checksum
How to use checksums
929fff0523f8998936e8c119aa9dc12abe47299c509f06ffe3862474af088a45
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl

Download URL numkong-7.8.2-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Size 2.3 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-32 Linux glibc 2.28+ x86-32
SHA-256 checksum
How to use checksums
a016ab072deee8a6c8c21ab22297effb029149031be2eba91970c80f7f05e0e8
BLAKE2b-256 checksum
How to use checksums
0d40a1355e2ac28fe9a0ec9876967f37913a0538333e9b07e117dce02765c1b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp312-cp312-macosx_11_0_arm64.whl

Download URL numkong-7.8.2-cp312-cp312-macosx_11_0_arm64.whl
Size 817.0 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6a2369b79de5737d36d0fad1c1ac10ab4c8f8df25c44ca0b244c67524e3e3da0
BLAKE2b-256 checksum
How to use checksums
906a6eb54843491fa71baa7acbdf9a0c4e85d8ca79021031012d7f532a3dca6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp312-cp312-macosx_10_13_x86_64.whl

Download URL numkong-7.8.2-cp312-cp312-macosx_10_13_x86_64.whl
Size 857.3 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
e8fb86559ccedad1e975aa2bd8ff2315d15b23f25c53af531cca8cf797390300
BLAKE2b-256 checksum
How to use checksums
64bf921e6287379c7de66b02d20118bf779cc018a994069a7e4a767d64cc9db3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp311-cp311-win_arm64.whl

Download URL numkong-7.8.2-cp311-cp311-win_arm64.whl
Size 430.8 kB
Tags CPython 3.11 Windows ARM64
SHA-256 checksum
How to use checksums
cca7d14e483fb80c997706c65c363bf272de7f7bda945dae90f673b7c682d652
BLAKE2b-256 checksum
How to use checksums
24689a64974c13a32e0424cd6ce43614733fc878f3bc41368b92891ccca2f96e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp311-cp311-win_amd64.whl

Download URL numkong-7.8.2-cp311-cp311-win_amd64.whl
Size 492.1 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
ee3eea244f8bf6610d9824a0c2e8db0279ae4476b0321d9800e834f66278dcd4
BLAKE2b-256 checksum
How to use checksums
d60e7baa7fc8642a5821a01e1544bb4a740d075b413bcb9eb8b7824ba8251cc2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL numkong-7.8.2-cp311-cp311-musllinux_1_2_x86_64.whl
Size 10.4 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
55ff62b14f2f681c13fccc0edfff72ccf00136e3cdebdea1641f1658c523928b
BLAKE2b-256 checksum
How to use checksums
dfc3f2d82efcbf1cbce2a5cf9101bdb762e2e23cda40e463b7d0b90ffb4c2fdd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp311-cp311-musllinux_1_2_s390x.whl

Download URL numkong-7.8.2-cp311-cp311-musllinux_1_2_s390x.whl
Size 2.4 MB
Tags CPython 3.11 Linux musl 1.2+ IBM System/390x
SHA-256 checksum
How to use checksums
f663bb8b9bbc6e4b425aa5f1c08fbba9cca2085cb53836149111acb8f622f93f
BLAKE2b-256 checksum
How to use checksums
a75e3461157cf9cd88f616b2f61597924b9ba3e03e4c3a9c9056540147e26e9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp311-cp311-musllinux_1_2_ppc64le.whl

Download URL numkong-7.8.2-cp311-cp311-musllinux_1_2_ppc64le.whl
Size 2.9 MB
Tags CPython 3.11 Linux musl 1.2+ PowerPC 64-le
SHA-256 checksum
How to use checksums
28d7eb41286791e0ba1ac2fac2667f0132c82f0497b48a6a5c9be9642e44f4e7
BLAKE2b-256 checksum
How to use checksums
86e201fa3750ad21d84135c2c6bdb29dbf0dd59638ddb8c8913a1d62b9cd2c64
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp311-cp311-musllinux_1_2_i686.whl

Download URL numkong-7.8.2-cp311-cp311-musllinux_1_2_i686.whl
Size 2.3 MB
Tags CPython 3.11 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
a91790f38d9f8587f8d2d82f997723e5c32f36e5da2c510f4e9f332a4ee77b1c
BLAKE2b-256 checksum
How to use checksums
8dad60cdf838629c69a775db482290894f70e79bf78d15a1126d9e8346e5606d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp311-cp311-musllinux_1_2_aarch64.whl

Download URL numkong-7.8.2-cp311-cp311-musllinux_1_2_aarch64.whl
Size 5.3 MB
Tags CPython 3.11 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
649d67ed4881fca6b9ad6d27e27ebdaf00844b6eb62e6fc9c767b9f6f27e4fc6
BLAKE2b-256 checksum
How to use checksums
85767379cda1ad4226d07bdbbaf71cc50cb6089e5e25540e5814aa82a5064179
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl

Download URL numkong-7.8.2-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl
Size 2.7 MB
Tags CPython 3.11 Linux glibc 2.38+ RISC-V 64 Linux glibc 2.39+ RISC-V 64
SHA-256 checksum
How to use checksums
3831a2692a822e5689257da8bd1646853b52d7108def1adb3ac1e3bb7cbe14a2
BLAKE2b-256 checksum
How to use checksums
2f64a6fed507d88931e22bddd4486224dc5108c891a166ecb49bd9ba466074af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL numkong-7.8.2-cp311-cp311-manylinux_2_28_x86_64.whl
Size 10.5 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b216587c2d2dcab8d2b75bdc3d1dd7a7c9eb2d4f05827cf9f3c781e1ea5a770b
BLAKE2b-256 checksum
How to use checksums
b564bdc937e6d974586bd187c8a5f62eea79383444ecfbdd180cf5b7ae6fca5f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL numkong-7.8.2-cp311-cp311-manylinux_2_28_aarch64.whl
Size 5.4 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
0378a06f93c29c8d4f08607763833b0deab4e8cb0406a7e69d85f9d7c7346248
BLAKE2b-256 checksum
How to use checksums
4f63122c7e1334b4ab5234a86e8c12e9cef2e1f1f7c6e52f937959341fecfa6c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl

Download URL numkong-7.8.2-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Size 2.5 MB
Tags CPython 3.11 Linux glibc 2.17+ IBM System/390x Linux glibc 2.28+ IBM System/390x
SHA-256 checksum
How to use checksums
2ed4d2a1dee8fab25cd8a3359012a79c1edff3924296a91acdb8b82a26ca9657
BLAKE2b-256 checksum
How to use checksums
a6cb43f6a5bbfdf050b9b5cb72eef4d1247b139508ab843466e69a3974a62453
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl

Download URL numkong-7.8.2-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Size 2.9 MB
Tags CPython 3.11 Linux glibc 2.17+ PowerPC 64-le Linux glibc 2.28+ PowerPC 64-le
SHA-256 checksum
How to use checksums
e1256546383df9fe5eea09048b165da5d74c661d01e870279b8dc517994a2714
BLAKE2b-256 checksum
How to use checksums
05c2863cf5f5f212920495429fcd4e1fbb0b3b9295accec951cce51d9caacb97
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl

Download URL numkong-7.8.2-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Size 2.3 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-32 Linux glibc 2.28+ x86-32
SHA-256 checksum
How to use checksums
f5de9adaae4a6908fc1700e11dd705928a0be1166eb5163db3f6c49ae8c44b3b
BLAKE2b-256 checksum
How to use checksums
6eefba3294c9e2bb246e6cb0ba6f62c6710f47af37defd1a01a7c49671b27cfb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp311-cp311-macosx_11_0_arm64.whl

Download URL numkong-7.8.2-cp311-cp311-macosx_11_0_arm64.whl
Size 816.6 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
98ce522d87082e344b20ce3ba9fc8499d575155dcc8a5c2a655a0fdd267ae275
BLAKE2b-256 checksum
How to use checksums
8ba70f53facc0cdd8c94306ce9b5806db752aa5fc6b81f15040b16cc813883ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp311-cp311-macosx_10_9_x86_64.whl

Download URL numkong-7.8.2-cp311-cp311-macosx_10_9_x86_64.whl
Size 857.2 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
d373f46b98a8fb10921ffbce5408d285150a72a6508b007da543bb5bc8c584e1
BLAKE2b-256 checksum
How to use checksums
f90072145af0aac6d75a319ae5d0032dc435c4c303fb3daebd65d32a3eacc8ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp310-cp310-win_arm64.whl

Download URL numkong-7.8.2-cp310-cp310-win_arm64.whl
Size 431.0 kB
Tags CPython 3.10 Windows ARM64
SHA-256 checksum
How to use checksums
0ddd144efe2f5928ecf8a3828f9db80d8d0fd0b4a87b698ad513315785f91e71
BLAKE2b-256 checksum
How to use checksums
7879d2ae9e6936ed23d599e44b13e05e58e38fab70c93a0777bf3208b3a85061
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp310-cp310-win_amd64.whl

Download URL numkong-7.8.2-cp310-cp310-win_amd64.whl
Size 492.2 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
b0e099381b1d7def777bd0c82957dc6a60a2b7469803e4791324867702ac4b10
BLAKE2b-256 checksum
How to use checksums
f542b7c30da7b0a790f5a33fb81038a863c23d7f25c98327dca5e99670f7cd5d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL numkong-7.8.2-cp310-cp310-musllinux_1_2_x86_64.whl
Size 10.3 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
ba2d40d06139301992aae0a079dc10932c6527700a809e2a77279a7ce8f29d58
BLAKE2b-256 checksum
How to use checksums
16716311214e240e60c570a42b414dca344cbf5e6e61c9120d1a68ea2d30de87
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp310-cp310-musllinux_1_2_s390x.whl

Download URL numkong-7.8.2-cp310-cp310-musllinux_1_2_s390x.whl
Size 2.4 MB
Tags CPython 3.10 Linux musl 1.2+ IBM System/390x
SHA-256 checksum
How to use checksums
99a8db41ec30dd486d9f2e68000b833555abd478d0eb70fbdd37f35d93f6ddbf
BLAKE2b-256 checksum
How to use checksums
81e051984bb3101aaa0d45181220dd195781690c8d93a7e680ec6d4593b500bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp310-cp310-musllinux_1_2_ppc64le.whl

Download URL numkong-7.8.2-cp310-cp310-musllinux_1_2_ppc64le.whl
Size 2.9 MB
Tags CPython 3.10 Linux musl 1.2+ PowerPC 64-le
SHA-256 checksum
How to use checksums
438139eee8f9f79fba0715f1deb6f694abe9d116ae7f50c08497d02eee75b412
BLAKE2b-256 checksum
How to use checksums
907c86d1872a7e0c4660655e7ed9fcfda1905d9e0cbd5ff4fe9f74269b9a9b9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp310-cp310-musllinux_1_2_i686.whl

Download URL numkong-7.8.2-cp310-cp310-musllinux_1_2_i686.whl
Size 2.3 MB
Tags CPython 3.10 Linux musl 1.2+ x86-32
SHA-256 checksum
How to use checksums
ef0b5420b53f5da91ad171cd8722ca171a72a8e16eb2b6aff404221644de9d1a
BLAKE2b-256 checksum
How to use checksums
255d7e6b229c95c7a88f27907c5cb3129238b03d6d435a30a9fab9bb1de16315
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp310-cp310-musllinux_1_2_aarch64.whl

Download URL numkong-7.8.2-cp310-cp310-musllinux_1_2_aarch64.whl
Size 5.3 MB
Tags CPython 3.10 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
5763b55afcbeb356bfececcda9452a4d2bbb0ae26040120c3b967f8930122649
BLAKE2b-256 checksum
How to use checksums
0e0bf3968c236ed096d0bb449f028d84771a43b74baa11c4589deb4702ee2f04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp310-cp310-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl

Download URL numkong-7.8.2-cp310-cp310-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl
Size 2.7 MB
Tags CPython 3.10 Linux glibc 2.38+ RISC-V 64 Linux glibc 2.39+ RISC-V 64
SHA-256 checksum
How to use checksums
0d47084756fdafa885062ddfe1d6b829947e8a68bbdf586611e3e0bb4d82cbb6
BLAKE2b-256 checksum
How to use checksums
d4a8b3fc021b7d783cae5a8e4ddaaf275b44a2e70a832e26f3788ce10ce0ecc3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL numkong-7.8.2-cp310-cp310-manylinux_2_28_x86_64.whl
Size 10.5 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c4a70b512069157368065c9b36d9bf2ba17471ddbb52e53b53bb33c507936551
BLAKE2b-256 checksum
How to use checksums
1abf25a5de42298809ef5100b098b1956ce5df4d79b50b8374eae32f1751ae7e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp310-cp310-manylinux_2_28_aarch64.whl

Download URL numkong-7.8.2-cp310-cp310-manylinux_2_28_aarch64.whl
Size 5.4 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
ce9337d758d0a557c8bbbbbafe87d49319b4b64f950b92ee3f1e4a1a6366636a
BLAKE2b-256 checksum
How to use checksums
2d84d1867132b6cadbd01bc701632aab58f6d052f32bcee7a2f82b5e8222b3cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl

Download URL numkong-7.8.2-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Size 2.5 MB
Tags CPython 3.10 Linux glibc 2.17+ IBM System/390x Linux glibc 2.28+ IBM System/390x
SHA-256 checksum
How to use checksums
687cdfd4fcb953491b424126115699ce536e4167afcd27da31f3d8278d650151
BLAKE2b-256 checksum
How to use checksums
6dc185518208db853bdef0a43626a0e8d7d7b4eebf647a5e4a19f008eb2dcfb5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl

Download URL numkong-7.8.2-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Size 2.9 MB
Tags CPython 3.10 Linux glibc 2.17+ PowerPC 64-le Linux glibc 2.28+ PowerPC 64-le
SHA-256 checksum
How to use checksums
3c20343f1b6699278ce9d9e4864da02475ffa6ab2c572d14b03b0ebb8479ed77
BLAKE2b-256 checksum
How to use checksums
7daac38387d4f3b2fbea7e1d711df47480a0ecfd6b703d6bb3321ecd08dc4510
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl

Download URL numkong-7.8.2-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl
Size 2.2 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-32 Linux glibc 2.28+ x86-32
SHA-256 checksum
How to use checksums
bc5612e27bfe5ee16558d717cb6995f1246f9328bd75032cab3752e461946aeb
BLAKE2b-256 checksum
How to use checksums
e96d09774b55cc4ceb6192d1918ea8e8004600c4e89b8884a5e0c052f3e4208a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp310-cp310-macosx_11_0_arm64.whl

Download URL numkong-7.8.2-cp310-cp310-macosx_11_0_arm64.whl
Size 816.9 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
22a16860f1e6f250d5f30e542027cca3838b03e0333bd0f9df48b36a3ce66815
BLAKE2b-256 checksum
How to use checksums
353ba4b54e9f761d62ef8fbb7791ef290923fcd223ffe5a3cec291ac00631dfd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / numkong-7.8.2-cp310-cp310-macosx_10_9_x86_64.whl

Download URL numkong-7.8.2-cp310-cp310-macosx_10_9_x86_64.whl
Size 857.3 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
b2be863d2e12ebfed1e755021fdd109e93c5132422b19730bb2dd164780ac36a
BLAKE2b-256 checksum
How to use checksums
68ddf02e21ddacaf3d8e08b47c2603ff74e3be3ee48c5322b59a64a19d525b66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page