Skip to main content

winnex-nano

Native Winnex inference engine — deterministic spectral tokenizer, multimodel weight balancing, and chunk generation via the Madhava fast build.

Model-agnostic (Qwen / BERT / DeepSeek / GPT), C++20/OpenCL, no CUDA. Reuses the winnex-madhava engine kernels (QKᵀ matmul, selective-top-K with Cauchy-Schwarz bounds) — no code duplication.

Components

Module Purpose
SpectralTokenizer Character → quaternion spectrum (deterministic, no BPE, no vocabulary)
WeightBalancer Multimodel fusion: W' = Σᵢ αᵢ·R(qᵢ)·Wᵢ
ChunkEngine Geração por chunks com memória de trabalho Madhava — não faz stream de pesos
server_sse OpenAI-compatible /v1/chat/completions (stream + non-stream)

Installation

pip install winnex-nano

Requires winnex-madhava>=1.8.1 (the engine), numpy. Optional: winnex-nano[server] for the SSE server (fastapi, uvicorn, httpx).

Quick start

import winnex_nano as wn

# 1. Deterministic spectral tokenizer (no BPE, no vocabulary)
tok = wn.SpectralTokenizer(embed_dim=64)
states = tok.encode("Winnex AI")       # list of quaternions
text = tok.decode(states)              # round-trip: "Winnex AI"

# 2. Multimodel weight balancing: W' = Σ αᵢ·R(qᵢ)·Wᵢ
bal = wn.WeightBalancer()
model_a = {"layer.0.weight": [1, 2, 3, 4]}
model_b = {"layer.0.weight": [10, 20, 30, 40]}
a = wn.BlendWeight(); a.alpha = 0.5
b = wn.BlendWeight(); b.alpha = 0.5
fused = bal.blend([model_a, model_b], [a, b])   # [5.5, 11, 16.5, 22]

# 3. ChunkEngine — geração por chunks com memória de trabalho Madhava
#
# ATENÇÃO AO ESCOPO: isto NÃO faz streaming de pesos. A decisão do próximo
# chunk é uma função que você fornece; a classe não carrega modelo nenhum.
# Para inferência de verdade, use ForwardEngine (prefill/step), abaixo.
engine = wn.ChunkEngine()
chunks = []
engine.generate_chunks(
    "O Madhava e deterministico.",
    lambda ctx, top: " chunk" if len(chunks) < 3 else "",
    lambda c: chunks.append(c.text) if not c.done else None,
)

Sobre o nome. Esta classe se chamava StreamEngine até a 0.1.33. O nome estava errado: em inferência, "stream" quer dizer carregar pesos em fluxo para rodar um modelo maior que a memória, e esta classe nunca fez isso. O alias StreamEngine e o método .stream() continuam funcionando, mas estão depreciados e somem na 0.2. O modo de pesos que faz streaming real por camada é ForwardEngine::weight_mode() == "stream" — e ele é mais lento que a CPU quando o modelo não cabe no device (medido: 90,8 s contra 67,0 s no 7B).

Server (OpenAI-compatible, real inference)

pip install "winnex-nano[server]"
python -m winnex_nano.server_sse --model /path/to/checkpoint --port 30002
curl -N http://localhost:30002/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"messages":[{"role":"user","content":"The capital of France is"}],
       "max_tokens":32,"stream":true}'

It runs the native engine end to end: tokenizer → prefill → sample → step → detokenize, on the KV cache, with greedy or temperature/top-k sampling, stop sequences, a real chat template when the tokenizer has one, and SSE in OpenAI's chunk format. /health reports the device and the weight mode that were actually selected.

eng.prefill([...ids])   # -> logits for the last prompt token; fills the KV cache
eng.step(next_id)       # -> logits for the next token; appends to the cache
eng.embed_ids([...ids]) # -> [n, hidden] rows, without touching the whole table

prefill+step is bit-identical to a full forward at every position (max difference 0.0 over 85 tokens) and matches transformers to 1.2e-4.

Throughput, honestly. Qwen3-4B on an RTX 5060 Ti in device mode: prefill 40.6 tok/s, decode 2.6 tok/s. Decode is the slow one because attention, RoPE, RMSNorm and the residual stream stay on the CPU by design — at seq_len=1 the per-projection device round-trip dominates. Moving the whole layer to OpenCL is the next real gain and is not done.

Changed in 0.1.28. Previous versions of this server answered every request with 12-character slices of the prompt. It was commented as a placeholder, but at the HTTP layer it was indistinguishable from a real completion. If you are running an older version, it is not inferring.

Honest benchmark (vs BPE)

Run the full benchmark on Kaggle — installs winnex-nano from PyPI and reports round-trip, throughput and O(1) decode scaling on real multilingual text:

Kaggle

Metric winnex-nano spectral BPE (Qwen2.5)
Round-trip perfect 8/8 n/a
Char error rate 0.00% n/a
Encode throughput 234K chars/s 4.3M chars/s
Stream (3 chunks) 1.7 ms ~2.1 s (HTTP)
Vocabulary none 151K tokens

The spectral tokenizer is 100% deterministic with no vocabulary dependency, but 50–70× slower and ~1000× less compact than BPE. It is an autonomous encoding for the native multimodel engine, NOT a drop-in BPE replacement for a BPE-trained model.

Native forward pass — memory and speed

ForwardEngine runs a Qwen2/Qwen2.5/Qwen3/Llama checkpoint without torch, without transformers and without CUDA. Weights come straight out of the .safetensors file; the heavy matrix work goes to OpenCL.

import struct, numpy as np, winnex_nano as wn

# Map the payload instead of copying it. The 7B payload is 14.2 GB and the
# constructor copies it; view() borrows it and lets the kernel page it in.
with open(P, "rb") as f:
    hlen = struct.unpack("<Q", f.read(8))[0]
    header = f.read(hlen).decode()
st = wn.Safetensors.view(
    np.memmap(P, dtype=np.uint8, mode="r", offset=8 + hlen), header)

eng = wn.ForwardEngine(wn.load_config(cfg_path), st)
eng.enable_gpu()            # decides the weight strategy, see below
print(eng.weight_mode)      # "device" | "resident" | "stream" | "cpu"

enable_gpu() picks one of three strategies, in this order:

Mode What lives where When
device every projection on the GPU (bf16 when f32 does not fit); host keeps only norms and biases the model fits in VRAM
stream one layer at a time through a scratch buffer half the model fits the device but the whole does not
cpu nothing on the device the model does not fit even at bf16

resident is not reachable through enable_gpu(). It is computed only when no device was created — and enable_gpu() creates the device first, and throws if it cannot. The mode remains in weight_mode()'s vocabulary and in the code that selects it, but there is no public call that reaches it without a GPU. Treat the table above as the actual contract; resident is dead code reachable only by editing the source.

Measured on an RTX 5060 Ti (16 GB) and a 31 GB host, Qwen2.5-7B, 131 tokens:

Path PPL Time RSS Anonymous heap
CPU 15.55172 69.8 s 14.2 GB 0.69 GB
GPU device 15.55171 7.5 s 14.4 GB 0.74 GB

The perplexity difference is 7e-6 relative — the checkpoint is already bf16, so the GPU path's bf16 weights are the same numbers the CPU reads after widening them to f32. Nothing is lost that was ever in the file.

RSS stays high in both rows because the payload is mapped: those pages are the file, evictable under pressure, not heap. The number that decides whether a model fits a machine is the anonymous column.

Attention: exact softmax, and the Madhava mode

The default is exact causal softmax — the function the pretrained weights encode. It is not negotiable: replacing it with a top-k filter that does not renormalise was tried in this codebase, and the cost is recorded in run_layer: perplexity 2.0e7 against 37.4, correlation ≈ 0 with the reference.

MADHAVA_TOPK_ATTN=1 enables the selective mode: keys are pruned while the mass they account for stays within MADHAVA_EPSILON_MASS (default 1e-4) of the full softmax mass. The dropped set is renormalised, so the weights still form a distribution. The guarantee is exact, not a score bound: ‖attn_full − attn_pruned‖₁ ≤ 2ε.

Three facts measured on 2026-10-23, Qwen2.5-0.5B, 80 LAMBADA items:

Arm LAMBADA prefill tok/s
CPU, softmax 35.0% 50.83
CPU, MADHAVA_TOPK_ATTN=1, ε=1e-4 35.0% 50.54
CPU, MADHAVA_TOPK_ATTN=1, ε=0.05 36.2% 50.53
  • Quality is preserved — all three inside the confidence interval (the guarantee holds).
  • It does not accelerate. Computing every score is O(n·d), the same work as full softmax; what is saved is the value accumulation, which only dominates when the context is long. At 97 tokens the difference is noise.
  • It is CPU-only. The selective block lives inside the CPU branch of run_layer. With attention on the GPU the variable has no effect — verified: identical LAMBADA and prefill. And the CPU attention arm is 7.4× slower than the GPU one (50.8 vs 376 tok/s), so reaching the filter costs far more than it can save at short context.

Honest use: an auditable discard guarantee, not a speed lever. Tested at 512 → 8192 tokens, 25 combinations of epsilon (1e-4 to 0.2) x context length, on the CPU arm where the filter actually exists:

softmax exact:  512 54.3 tok/s | 1024 50.8 | 2048 43.4 | 4096 32.8 | 8192 21.8
selective:      time ratio min 0.997, max 1.015, mean 1.003
                logit divergence: max 0.00e+00

The time does not fall at any length, for any epsilon, and the logits are bit-identical — at these sizes the filter discards less than float noise. The code comment claimed the saving lives in the value accumulation "which dominates only when n is large"; that hypothesis is falsified up to 8k tokens. The score computation is the bottleneck and the filter does not avoid it. Porting it to the device is therefore not justified by these numbers.

Supported architectures

Dense only: qwen2, qwen3, llama, mistral. load_config refuses everything else by name, because a model whose maths differs loads cleanly and produces a plausible-looking perplexity that is wrong:

Refused Why
qwen2_moe, qwen3_moe, mixtral need a top-k router over N experts; not implemented
deepseek_v2, deepseek_v3 need MLA (latent attention); not implemented
gemma, gemma2 GeGLU, logit softcapping, sliding window

This list is a contract, not an aspiration. It previously named four MoE architectures the engine had no code for — the failure surfaced as "tensor not found" rather than "architecture unsupported", with the list telling the user the model was supported.

Why it is built this way

  • view instead of a copy. The constructor reads the whole payload into a std::vector. For the 7B that is 14.2 GB before a single weight is used, and it is what made the Kaggle run die with "Kernel died". view() follows the MadhavaL2 contract: the caller owns the pointer, the engine never copies.
  • Weights keyed by tensor name, not by host pointer. In stream mode run_layer builds a fresh LayerWeights per call, so every matrix gets a new address and the device cache never hits — the GPU then re-uploads 14.2 GB per forward and measures slower than the CPU (90.8 s against 67.0 s). Naming the weights (L3.gate_proj) lets the device keep them for the life of the engine regardless of what the host allocator does.
  • bf16 weights when f32 does not fit. The 7B in f32 is 26.1 GB against a 16 GB card. The dtype is decided once for the whole model from the declared total; deciding per matrix mixes formats on the device and corrupts every launch after the first switch.
  • Tiled GEMM. The original kernel was one work-item per output element with no blocking — arithmetic intensity 1 FLOP/byte against a machine balance of ~26, i.e. the kernel waited on its own weight reads. 16x16 local-memory tiles cut global traffic per MAC by ~8x.
  • lm_head streamed. The embedding table is the largest single tensor (152064x3584). Both of its uses — one row per decoded token, and the logits projection — go through the offset table in 512-row blocks, so it costs 7.3 MB instead of 2.18 GB.

Splitting a model into shards

ForwardEngine takes one Safetensors. Checkpoints that arrive as model-00001-of-0000N.safetensors must be merged into a single file first — concatenating the payloads byte-for-byte, without decoding, preserves bf16 and avoids the 30 GB a float32 merge would need.

License

Business Source License 1.1 (BSL 1.1) — pay@winnex.ai.

Pre-patent: https://zenodo.org/records/21861809

Metadata

Release files for winnex-nano 0.1.39

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

Source distribution (sdist)

Source distribution for winnex-nano 0.1.39
File Size Uploaded Provenance
winnex_nano-0.1.39.tar.gz 326.9 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for winnex-nano 0.1.39
File
winnex_nano-0.1.39-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
winnex_nano-0.1.39-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
winnex_nano-0.1.39-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
winnex_nano-0.1.39-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
winnex_nano-0.1.39-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
winnex_nano-0.1.39-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
winnex_nano-0.1.39-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
winnex_nano-0.1.39-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
winnex_nano-0.1.39-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
winnex_nano-0.1.39-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
winnex_nano-0.1.39-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
winnex_nano-0.1.39-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 6.1 MB

Release files / winnex_nano-0.1.39.tar.gz

Download URL winnex_nano-0.1.39.tar.gz
Size 326.9 kB
Tags Source
SHA-256 checksum
How to use checksums
b1ad2c2372cbaeb8a8b2cbb853b34e0c94d5bd7e6ebaad284b3970dc4c9d2baf
BLAKE2b-256 checksum
How to use checksums
496f613b8ffe99a383420184f5f463a3f94c17c69abe39cde3cb86d17c5da46f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

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

PyPI Publish Attestation

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

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / winnex_nano-0.1.39-cp313-cp313-win_amd64.whl

Download URL winnex_nano-0.1.39-cp313-cp313-win_amd64.whl
Size 339.9 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
c9fb7f134ebd1adb24fa60610e64af2e2de9146dd44da4e0f9d03aec87ceb92c
BLAKE2b-256 checksum
How to use checksums
9f831e4cda3de784b3ac0ade03fc0169830a859fc05b9c59bb1f930d2f2bcfc7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

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

PyPI Publish Attestation

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

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / winnex_nano-0.1.39-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL winnex_nano-0.1.39-cp313-cp313-manylinux_2_28_x86_64.whl
Size 757.1 kB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
77d58c752b864b629dbabaeaa2f2e3ead27d13b5a0604d0712a197447adbee94
BLAKE2b-256 checksum
How to use checksums
c0a17b04a086e508bda0b09035a8a8609361fe20323230551561bf8ddb54864f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

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

PyPI Publish Attestation

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

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / winnex_nano-0.1.39-cp313-cp313-macosx_11_0_arm64.whl

Download URL winnex_nano-0.1.39-cp313-cp313-macosx_11_0_arm64.whl
Size 355.1 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
31ea7cd4f4165f05618e791e24f053bb1a07480e0463c0f38bdacfc7a01e6455
BLAKE2b-256 checksum
How to use checksums
0415941d97e0679207cbd9103f54058a27f7efee4bfcc7f1d23bc058cacc6c60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

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

PyPI Publish Attestation

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

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / winnex_nano-0.1.39-cp312-cp312-win_amd64.whl

Download URL winnex_nano-0.1.39-cp312-cp312-win_amd64.whl
Size 339.9 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
464962a0a630563be0d4e6699ac920a7e612ef498649eaeb4e0b8e70e2ecb43a
BLAKE2b-256 checksum
How to use checksums
6bee2d809f46056e8257ceeb69f72047a771a56f741af9e3c1c197959b4aab03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

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

PyPI Publish Attestation

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

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / winnex_nano-0.1.39-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL winnex_nano-0.1.39-cp312-cp312-manylinux_2_28_x86_64.whl
Size 757.1 kB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6364662614766e7c680b25ce0959a94e3dca29078b96bb4d7f11dad89197e018
BLAKE2b-256 checksum
How to use checksums
e5be613e6eab77757a3005b5185cb4c703cfe8ec9d81335a0c1ff5ce2ca52959
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

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

PyPI Publish Attestation

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

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / winnex_nano-0.1.39-cp312-cp312-macosx_11_0_arm64.whl

Download URL winnex_nano-0.1.39-cp312-cp312-macosx_11_0_arm64.whl
Size 355.0 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
efd9a24354b7ea343de723f49cbf62001412ec0640573125079bbd06623e3b19
BLAKE2b-256 checksum
How to use checksums
4f324d3bbb7f29458dde7e6ba20413e1b37b4f118d34a6a1d77a02fbaac33a31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

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

PyPI Publish Attestation

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

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / winnex_nano-0.1.39-cp311-cp311-win_amd64.whl

Download URL winnex_nano-0.1.39-cp311-cp311-win_amd64.whl
Size 336.8 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
2ffddac839c40b01e28ec69c89310147095f043952d985323db39383af3c9dd1
BLAKE2b-256 checksum
How to use checksums
a96dbaec38ac115738dd08bca153d7efc3ad88d8ca545b10375237a13c490d29
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

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

PyPI Publish Attestation

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

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / winnex_nano-0.1.39-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL winnex_nano-0.1.39-cp311-cp311-manylinux_2_28_x86_64.whl
Size 757.3 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
96bb9401b63015eab832261493990792c9a73ae228f3fcf32a625631a55c970f
BLAKE2b-256 checksum
How to use checksums
7efd648fda4fe986b99b3c8f7bb2673809ced65a07a5f7615d089499b361f59d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

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

PyPI Publish Attestation

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

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / winnex_nano-0.1.39-cp311-cp311-macosx_11_0_arm64.whl

Download URL winnex_nano-0.1.39-cp311-cp311-macosx_11_0_arm64.whl
Size 353.1 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4f2eaad64d837012e5a58f07cd874049dbd6e53b013a6667839de32cbf92c0fd
BLAKE2b-256 checksum
How to use checksums
99bc2f63175fc70d3394d87c99fd78406bc4beabbf2014e8aa75eb9f1d160c68
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

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

PyPI Publish Attestation

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

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / winnex_nano-0.1.39-cp310-cp310-win_amd64.whl

Download URL winnex_nano-0.1.39-cp310-cp310-win_amd64.whl
Size 335.5 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
3ce99ef537f8d914b21d9fbd606e3e71e1fe04a943364bf10cd77e377d3e9fc6
BLAKE2b-256 checksum
How to use checksums
83e78428300cfba8dcfe94adca2bcba1bf30b4f2700095f2ed66062656609bea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

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

PyPI Publish Attestation

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

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / winnex_nano-0.1.39-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL winnex_nano-0.1.39-cp310-cp310-manylinux_2_28_x86_64.whl
Size 755.7 kB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a251abeb1b73e4f0b40e77aa0a6635ea8fbfc2c5a0a0b4f7cabd7f61a6571c2a
BLAKE2b-256 checksum
How to use checksums
55cb14f9f820b31d084529d36f185c796ba18140240c1ba172acc8a22cc9249d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

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

PyPI Publish Attestation

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

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / winnex_nano-0.1.39-cp310-cp310-macosx_11_0_arm64.whl

Download URL winnex_nano-0.1.39-cp310-cp310-macosx_11_0_arm64.whl
Size 351.8 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
33115b5ef960c2e6eba75d86a20fbca50edb5980be73ac0d91dfe6838a6431a9
BLAKE2b-256 checksum
How to use checksums
04077efce952cc992e87f5006966537ff6dc5a93e5826f6112b88edb75f34063
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

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

PyPI Publish Attestation

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

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Security for winnex-nano 0.1.39

Provenance

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

Full provenance

All 13 files in this release have been uploaded with provenance metadata.

Select from 13 files

Attestation for winnex_nano-0.1.39.tar.gz

PyPI Publish Attestation

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

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.39 This release

13 release files Full provenance

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