Skip to main content

High-performance sequence alignment with gradients of the score w.r.t. the substitution matrix.

Project description

nwgrad

High-performance C++ sequence alignment library with gradient computation for substitution matrix optimization — exposed to Python via nanobind.

nwgrad implements Needleman-Wunsch (global) and Smith-Waterman (local) alignment with both linear and affine gap penalties. Its primary novel feature is computing the gradient of the alignment score with respect to substitution matrix entries, enabling substitution matrix optimization in gradient-based ML pipelines.

Features

  • Global (NW) and local (SW) alignment — shared template core, selected at compile time
  • Linear and affine gap models — single gap penalty or gap-open + gap-extend
  • Hard subgradient — substitution-pair counts along the optimal traceback
  • Soft (differentiable) gradient — forward-backward in log-space; log-partition function and expected substitution counts
  • Multithreaded batch processing — lock-free work dispatch, per-thread gradient accumulation
  • Guide-banded DP — cheap re-alignment under a new matrix around a cached alignment path
  • Double precision throughout — no float truncation in the hot path
  • Zero-copy Python interface — nanobind buffer protocol; no unnecessary array copies

Installation

pip install nwgrad

Or from source:

git clone https://github.com/michalsta/nwgrad
cd nwgrad
pip install .

Requires Python ≥ 3.8 and a C++20 compiler (GCC 11+ or Clang 13+).

Quick Start

import numpy as np
import nwgrad

# Predefined matrices ship as ready-to-use SubstMatrix objects (they carry
# their own alphabet, so you never have to specify the symbol order yourself):
from nwgrad.matrices import BLOSUM62        # SubstMatrix, NCBI 23-symbol alphabet
print(BLOSUM62.alphabet)                    # 'ARNDCQEGHILKMFPSTWYVBZX'

# Or build one from your own (N, N) array.  A SubstMatrix always pairs a matrix
# with the alphabet that indexes its rows/columns:
dna_mat = nwgrad.SubstMatrix(np.eye(4) * 2 - 1, alphabet="ACGT")

Single pair — SeqPair

SeqPair takes an AlignParams object that bundles the substitution matrix with gap penalties. Pass a SubstMatrix directly — its alphabet travels with it, so amino acids map to matrix cells unambiguously:

params = nwgrad.AlignParams(BLOSUM62,
                            gap_open_a=11.0, gap_extend_a=1.0,
                            gap_open_b=11.0, gap_extend_b=1.0)

sp = nwgrad.SeqPair(
    "PLEASANTLY", "MEANLY", params,
    gap_model="affine",   # "linear" | "affine"
    mode="global",        # "global" | "local"
    grad_mode="hard",     # "hard" | "soft" | "none"
)

# Align, then read the score and a printable alignment:
score, grad = sp.score_and_grad()   # one call: allocates DP, aligns, computes grad
print(score)
print(sp.formatted())               # PLEASANTLY / match line / -MEAN---LY
print(sp.aligned())                 # ('PLEASANTLY', '-MEAN---LY')

# `grad` is an AlignParams; inspect it as a dict:
g = grad.to_dict()
print(g["matrix"].shape, g["gap_open_a"], g["gap_extend_b"])

align_full() (the DP) and compute_grad() (reading the gradient off the cached DP tables) are exposed separately so you can re-align many times and only pay for the gradient when you need it; score_and_grad() above just fuses the common case. The hard gradient is a subgradient read from the Viterbi path; the soft gradient (grad_mode="soft") is the exact gradient of the log-partition function via forward–backward.

After updating the matrix, realign_banded() re-scores the pair cheaply around the existing alignment path:

new_params = nwgrad.AlignParams(new_subst_matrix,
                                gap_open_a=11.0, gap_extend_a=1.0,
                                gap_open_b=11.0, gap_extend_b=1.0)
sp.set_params(new_params)
sp.realign_banded(bandwidth=20)
sp.compute_grad()

Batch — SeqPairBatch

from nwgrad.matrices import BLOSUM62

params = nwgrad.AlignParams(BLOSUM62,
                            gap_open_a=11.0, gap_extend_a=1.0,
                            gap_open_b=11.0, gap_extend_b=1.0)
pairs = [
    nwgrad.SeqPair(a, b, params,
                   gap_model="affine", mode="global", grad_mode="soft")
    for a, b in zip(seqs_a, seqs_b)
]

batch = nwgrad.SeqPairBatch(n_threads=8)
for sp in pairs:
    batch.add(sp)

# Align all pairs in parallel; score and grad are cached on each SeqPair
total_log_z = batch.score_and_grad()

# Sum gradients across all pairs → AlignParams
grad = batch.compute_grad()

# Update matrix and re-run with banded DP around the existing paths
new_params = nwgrad.AlignParams(new_subst_matrix,
                                gap_open_a=11.0, gap_extend_a=1.0,
                                gap_open_b=11.0, gap_extend_b=1.0)
batch.set_params(new_params)
total_log_z = batch.score_and_grad(bandwidth=20)
grad = batch.compute_grad()

SeqPair objects are constructed once and reused across optimization iterations. Only the AlignParams changes; the sequence data and, when applicable, the alignment path are preserved.

API Reference

Alphabet

nwgrad.Alphabet.get(symbols: str) -> Alphabet

The character↔index mapping that a matrix, its gradients, and its sequences all share. Alphabets are interned: Alphabet.get("ACGT") is nwgrad.DNA, so two matrices are compatible exactly when their alphabets are the same object.

Named alphabets:

Constant Symbols N
nwgrad.DNA ACGT 4
nwgrad.DNA_N ACGTN 5
nwgrad.RNA ACGU 4
nwgrad.RNA_N ACGUN 5
nwgrad.PROTEIN the canonical 20 20
nwgrad.PROTEIN_X + X (unknown) 21
nwgrad.PROTEIN_UO + U (selenocysteine), O (pyrrolysine) 22
nwgrad.PROTEIN_UOX + U, O, X 23
nwgrad.NCBI_PROTEIN ARNDCQEGHILKMFPSTWYVBZX 23
nwgrad.IUPAC_DNA ATGCSWRYKMBVHDN 15

Extensions append at the end, so the canonical 20 keep indices 0–19 and a 20×20 matrix in that order embeds as the top-left block of any extended one.

The matrices in nwgrad.matrices use a different ordering. BLOSUM, PAM and VTML are all in NCBI column order (NCBI_PROTEIN), and NUC44 is in IUPAC order (IUPAC_DNA). These are not extensions of PROTEIN / DNA — BLOSUM62 does not embed in PROTEIN_X. Combining a matrix over one alphabet with a gradient over another raises, rather than silently misreading the columns.

An Alphabet governs legality and ordering only — scoring is entirely the matrix's job, including for X and N.

For anything not listed, build your own: nwgrad.Alphabet.get("ACGTRYSWKM").

Member Description
symbols The symbol string, in index order
size, len(a) Number of symbols N
index_of(c) Index of c, or -1 if absent
contains(c) Whether c is in the alphabet
encode(s) Validate and encode to indices; raises ValueError on any foreign character
decode(indices) Inverse of encode

SubstMatrix

nwgrad.SubstMatrix(matrix: np.ndarray, alphabet: str = "ACDEFGHIKLMNPQRSTVWY")

Constructs a substitution matrix from an (N, N) float64 numpy array where N = len(alphabet). The default alphabet is the 20 canonical amino acids (ACDEFGHIKLMNPQRSTVWY). Any square matrix with a matching alphabet is accepted — including DNA ("ACGT"), extended amino acids, or any other symbol set. The alphabet is given as a string; if you are holding an Alphabet object, pass its .symbols.

Stored as a dense N × N block indexed by alphabet position — 16 doubles for DNA. Sequences are validated and encoded to indices once, at the boundary, so the DP inner loop is a single O(1) lookup and never touches a character. Asymmetric matrices are fully supported.

Characters outside the alphabet raise ValueError; they are not silently scored as zero. Case is significant — 'd' is not 'D', so soft-masked FASTA must be upper-cased by the caller.

Member Description
score(a, b) Substitution score for single characters a, b
to_matrix() Export as (N, N) float64 numpy array in alphabet order
size Alphabet size N
alphabet The alphabet string (length N)

Predefined matrices are available from nwgrad.matrices as ready-to-use SubstMatrix objects (each already carrying the correct alphabet): BLOSUM45/50/62/80/90, PAM30/70/250, VTML40/80/160/200, and NUC44 (DNA).

from nwgrad.matrices import BLOSUM62
BLOSUM62.alphabet            # 'ARNDCQEGHILKMFPSTWYVBZX'
BLOSUM62.to_matrix()         # (23, 23) float64 array

AlignParams

nwgrad.AlignParams(matrix, gap_open_a=0.0, gap_extend_a=0.0,
                           gap_open_b=0.0, gap_extend_b=0.0)
# or, from a raw array + explicit alphabet:
nwgrad.AlignParams(array, alphabet="ACDEFGHIKLMNPQRSTVWY", gap_open_a=0.0, ...)

Bundles a substitution matrix with (possibly asymmetric) gap penalties. The first form takes a SubstMatrix directly and is preferred — the alphabet travels with the matrix, so there is no risk of mismatching the symbol order. Suffix _a penalties apply to gaps in sequence A, _b to gaps in sequence B.

Member Description
matrix The SubstMatrix (read/write)
gap_open_a / gap_extend_a / gap_open_b / gap_extend_b Gap penalties (read/write)
to_dict() Return {"matrix": (N,N) array, "alphabet": str, "gap_open_a": …, …}
+ - * Element-wise arithmetic over all fields (for gradient-descent updates)

AlignParams is also the gradient type returned by SeqPair.grad / compute_grad(); to_dict() is the easy way to inspect a computed gradient.

Sign convention. Every field of a gradient — the matrix entries and the four gap fields — is the derivative of the score with respect to that field. The score subtracts gap penalties, so a gradient's gap fields come out non-positive while its matrix fields come out non-negative. That is what lets one update rule move the whole struct in the ascent direction:

params = params + lr * grad    # element-wise over matrix and all four gap fields

SeqPair

nwgrad.SeqPair(
    seq_a, seq_b, params,   # params: AlignParams
    gap_model="affine",     # "linear" | "affine"
    mode="global",          # "global" | "local"
    grad_mode="hard",       # "hard" | "soft" | "none"
)

Persistent sequence-pair object. Sequences and alignment mode are fixed at construction; the alignment parameters can be swapped cheaply via set_params(). The pair holds its AlignParams alive automatically, so you don't need to keep a separate reference to it.

Methods:

Method Description
alloc_dp() Pre-allocate own DP tables (needed before align_full() / realign_banded(); not needed if using SeqPairBatch.score_and_grad()).
align_full() Full DP alignment. Sets score and guide_j; clears grad.
realign_banded(bandwidth) Banded DP around the current path. Requires prior align_full(). Sets score; clears grad.
compute_grad() Compute and cache the gradient from the current alignment. Requires align_full() or realign_banded() to have been called first.
score_and_grad() Convenience: alloc_dp() + align_full() + compute_grad() in one call. Returns (score, grad).
aligned() Return the alignment as a pair of gapped strings (seq_a, seq_b). Requires the DP tables (call before drop_dp()).
formatted(width=60) Pretty-printed alignment block (seq A / match line / seq B), wrapped at width columns (0 = no wrap).
set_params(params) Swap alignment parameters. Clears score and grad; preserves guide_j.
drop_dp() Free O(m×n) DP table memory. Cached score, grad, and guide_j survive (but aligned() / compute_grad() then need a re-align).

Properties:

Property Type Description
score float | None Alignment score (or log Z for soft), or None if not computed
grad AlignParams | None Gradient, or None if not computed
guide_j list[int] | None Alignment path (length m+1), or None if not computed
seq_a, seq_b str The fixed sequences
path_valid bool guide_j is usable as a banding guide
score_valid bool score matches current matrix and path
grad_valid bool grad is populated
dp_valid bool DP tables are in memory (compute_grad() is callable)

Gradient modes:

grad_mode score grad
"hard" Viterbi alignment score Substitution-pair counts (integer-valued subgradient)
"soft" Log-partition function log Z Expected substitution counts (true gradient of log Z)
"none" Viterbi alignment score compute_grad() throws

SeqPairBatch

nwgrad.SeqPairBatch(n_threads=0)

n_threads=0 (default) uses hardware_concurrency. add() keeps each SeqPair (and, transitively, its AlignParams) alive for the lifetime of the batch.

Methods:

Method Returns Description
add(seq_pair) Append a SeqPair
set_params(params) Call set_params() on all pairs
score_and_grad(bandwidth=0) float (sum of scores) Full-pipeline parallel alignment. Uses per-thread DP buffers (pair-owned tables are never allocated). If bandwidth > 0, runs a full DP for the guide path then a banded DP. Results are cached on each SeqPair.
compute_grad() AlignParams Sum cached per-pair gradients. No DP work if all grad_valid are already true.
align_full() float (sum of scores) Full DP on all pairs in parallel using pair-owned buffers. Call alloc_dp() first.
realign_banded(bandwidth) float (sum of scores) Banded DP on all pairs in parallel using pair-owned buffers.
alloc_dp() Pre-allocate pair-owned DP tables in parallel.
drop_dp() Free pair-owned DP tables in parallel.

The batch is also a sequence: len(batch) is the number of pairs and batch[i] returns the i-th SeqPair (negative indices allowed), so per-pair results can be read back without keeping a separate list.

Properties:

Property Type Description
n_threads int Thread count

Typical optimization loop:

from nwgrad.matrices import BLOSUM62

# Learnable matrix starts from BLOSUM62; keep its alphabet to stay consistent.
alphabet = BLOSUM62.alphabet
mat_array = BLOSUM62.to_matrix()

# Build pairs once
params = nwgrad.AlignParams(nwgrad.SubstMatrix(mat_array, alphabet),
                            gap_open_a=11.0, gap_extend_a=1.0,
                            gap_open_b=11.0, gap_extend_b=1.0)
batch = nwgrad.SeqPairBatch(n_threads=8)
for a, b in zip(seqs_a, seqs_b):
    batch.add(nwgrad.SeqPair(a, b, params,
                             gap_model="affine", mode="global", grad_mode="soft"))

for step in range(n_steps):
    total_log_z = batch.score_and_grad(bandwidth=bw if step > 0 else 0)
    grad = batch.compute_grad()
    mat_array += lr * grad.matrix.to_matrix()   # both in `alphabet` order
    params = nwgrad.AlignParams(nwgrad.SubstMatrix(mat_array, alphabet),
                                gap_open_a=11.0, gap_extend_a=1.0,
                                gap_open_b=11.0, gap_extend_b=1.0)
    batch.set_params(params)

BatchAligner

Stateless batch alignment: constructs a fresh DP buffer per call and does not preserve alignment paths across calls. Simpler API when you do not need to reuse paths for banded re-alignment.

nwgrad.BatchAligner(
    params,               # AlignParams — matrix and gap penalties together
    band=0,               # 0 = full DP; >0 = banded half-width
    gap_model="affine",   # "linear" | "affine"
    mode="global",        # "global" | "local"
    grad_mode="hard",     # "hard" | "soft" | "none"
    n_threads=1,
)

.align(sequences_a, sequences_b, aligned_a=[], aligned_b=[]) -> BatchResult

Aligns each pair (sequences_a[i], sequences_b[i]). aligned_a / aligned_b, if given, are gapped alignment strings (one per pair) used as banding guides.

BatchResult

Attribute Type Description
scores np.ndarray[N] float64 Score (or log-partition for soft) per pair
grad AlignParams Gradient summed over all pairs

Single-pair convenience functions

Stateless functions that create and destroy their DP tables on every call. Useful for one-off alignments; prefer SeqPair / SeqPairBatch for loops over many pairs or iterative optimization.

All twelve share the same signature — the gap penalties live in the AlignParams, not in the argument list, so the linear and affine variants differ only in which of its gap fields they read:

f(seq_a, seq_b, params, band=0, aligned_a="", aligned_b="")

band > 0 (or a non-empty aligned_a / aligned_b guide pair) runs a banded DP instead of the full one. The sequences are plain str and are validated and encoded against params's alphabet on the way in.

Score only — return float:

Function Gap model Alignment
nw_score Linear Global (NW)
sw_score Linear Local (SW)
nw_score_affine Affine Global (NW)
sw_score_affine Affine Local (SW)

Hard gradient — return (score: float, grad: AlignParams):

Function Gap model Alignment
nw_grad Linear Global
sw_grad Linear Local
nw_affine_grad Affine Global
sw_affine_grad Affine Local

Soft gradient — return (log_z: float, grad: AlignParams):

Function Gap model Alignment
nw_soft_grad Linear Global
sw_soft_grad Linear Local
nw_affine_soft_grad Affine Global
sw_affine_soft_grad Affine Local

(Note the naming is irregular: the affine score functions suffix _affine, while the affine gradient functions infix it.)

score, grad = nwgrad.nw_affine_grad("PLEASANTLY", "MEANLY", params)

Gap penalty conventions

For linear gap model, a gap of length k costs gap_extend * k.

For affine gap model, a gap of length k costs gap_open + gap_extend * k.

This matches BioPython's convention where open is charged once per gap regardless of length.

Performance notes

  • Full O(m×n) DP tables are retained for gradient computation — no Hirschberg-style memory optimisation.
  • SeqPairBatch.score_and_grad() allocates one DpBuffer per thread (sized to the largest sequence pair in the batch) and reuses it across all assigned pairs. Pair-owned DP tables are never allocated, keeping peak memory at n_threads × max(m×n) rather than N × max(m×n).
  • Work is distributed via a shared std::atomic counter — no per-task mutex, no work-stealing queue.
  • Gradient accumulation is per-thread; a single mutex is taken once at join to merge partial gradients.

C++ header-only library

The C++ implementation is header-only (src/nwgrad/cpp/nwgrad/). To use it directly from C++:

python -m nwgrad --include
# prints: /path/to/nwgrad/cpp

Add that path to your include path and #include "nwgrad/aligner.hpp" etc.

Building from source

pip install scikit-build-core nanobind
pip install -e ".[dev]"
pytest tests/Python/

C++ unit tests (requires CMake). The extension target does find_package(nanobind), so even a tests-only configure needs nanobind discoverable:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug \
      -Dnanobind_DIR="$(python -m nanobind --cmake_dir)"
cmake --build build
ctest --test-dir build

-DNWGRAD_SANITIZE=ON builds the C++ tests with AddressSanitizer and UndefinedBehaviorSanitizer (-fno-sanitize-recover=all, so the first violation fails the run rather than printing and carrying on). CI runs this under both GCC and Clang.

License

MIT — see LICENSE.

Project details


Download files

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

Source Distribution

nwgrad-0.2.0.tar.gz (115.4 kB view details)

Uploaded Source

Built Distributions

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

nwgrad-0.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl (556.4 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

nwgrad-0.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl (505.0 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

nwgrad-0.2.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (443.6 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nwgrad-0.2.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (407.9 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

nwgrad-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl (506.9 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

nwgrad-0.2.0-cp314-cp314-musllinux_1_2_x86_64.whl (552.0 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

nwgrad-0.2.0-cp314-cp314-musllinux_1_2_aarch64.whl (502.5 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

nwgrad-0.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (438.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nwgrad-0.2.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (403.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

nwgrad-0.2.0-cp314-cp314-macosx_11_0_arm64.whl (503.1 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

nwgrad-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl (551.8 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

nwgrad-0.2.0-cp313-cp313-musllinux_1_2_aarch64.whl (502.0 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

nwgrad-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (438.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nwgrad-0.2.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (403.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

nwgrad-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (502.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nwgrad-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl (551.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

nwgrad-0.2.0-cp312-cp312-musllinux_1_2_aarch64.whl (502.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

nwgrad-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (438.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nwgrad-0.2.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (403.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

nwgrad-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (502.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nwgrad-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl (551.7 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

nwgrad-0.2.0-cp311-cp311-musllinux_1_2_aarch64.whl (501.8 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

nwgrad-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (438.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nwgrad-0.2.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (404.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

nwgrad-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (507.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

nwgrad-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl (552.2 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

nwgrad-0.2.0-cp310-cp310-musllinux_1_2_aarch64.whl (502.2 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

nwgrad-0.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (439.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nwgrad-0.2.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (405.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

nwgrad-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (508.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

nwgrad-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl (552.4 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

nwgrad-0.2.0-cp39-cp39-musllinux_1_2_aarch64.whl (502.4 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

nwgrad-0.2.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (439.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

nwgrad-0.2.0-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (405.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

nwgrad-0.2.0-cp39-cp39-macosx_11_0_arm64.whl (508.4 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file nwgrad-0.2.0.tar.gz.

File metadata

  • Download URL: nwgrad-0.2.0.tar.gz
  • Upload date:
  • Size: 115.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for nwgrad-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6243251112d202e460e2462def68dd39f63f4c7fee0d17d2ad3f4ee034a54db4
MD5 2ef88e9bff6e45a37d100d1d8d4c3059
BLAKE2b-256 1704f098509cf80e40afc45f4f54e0687837cac4967c292f3d8f66f67ef2275c

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0.tar.gz:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bc3db109d85870e7d6d8cfb0267dc4a283036f72742eb622d9f7570c9d87a30f
MD5 edd9aa53d48950e2832bf12e03284a09
BLAKE2b-256 e2442df8ace112f46aa92a60c3ca1dcb4ef8b62530dfc4e8dba673db21c589ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c492a9728cc2155eab453e2ee299f8baac675adc09a91da5f6f5a58e4cb0949a
MD5 ad85c7394df8b897a995ae310426817c
BLAKE2b-256 0daf37acb6b93b5749c5b9fde0f7c20c0958684017ade9d04ccc9b647068ef46

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 11f909fe8e952a124497054fb1eb67354497a54d0b9a2d5c23a841465b05030a
MD5 af486d7a2506c383ec083aef358c37ca
BLAKE2b-256 4863ab471e9226ed041d222eba32ffdb9453014d6f06fd80b2aed63f7179dfec

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fac1849d866444f025e929c7ea7d959fb95555ece7581cbf3f3550c85974b641
MD5 215f5972c1204af92a6b9f21af6a1f59
BLAKE2b-256 0b29c9fc11bb373cccbc5e7abd0ee2b58b4bb2dbca2e36d6939e91a2ef299c68

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2b940befb0f7c1d59fb800998868af774b7d0debc2ea5e91e282dbcf7c898390
MD5 252c8f9fd84880d8c029d48e509919b6
BLAKE2b-256 6b42e52d5dd8a80bd8718585b3dc6c5d54cccc4432909b075a3f9f162e6bcf5c

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 76dbaa003172d82fbd4fce1e9a6fab6942065280ed65c415260fa25429f0364e
MD5 c3d77ec6a2e518ff2e176ef8ff5ef718
BLAKE2b-256 1d165037b267a1b031ddf171a52bbf500e9d01dd94791704cc867f42ae9c4352

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c300afc41ced79a960afa4097550e86e1806354c42f93adbce0b0739c3aaee46
MD5 d91a473ea4b61dddbe3a6da978b344ce
BLAKE2b-256 94ae7a94afec546cc51c5276f54c9169c1d718d6de5f2028c5eb977a432271fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp314-cp314-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f3da4bbc1ef4bc15e89229111f2fbbac498f295a4ac0ddd4085224f5ab6d6a6b
MD5 3cba84397c329614a6f31c0ec6ce067d
BLAKE2b-256 f1b186e2e11e4cd8d2060950707cb56fc5045297530a6585e690b0ffb6ed74ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f84f663da66dfa544af378b77073aadd3c207c48db41b7c3fc82a6f521c274cd
MD5 811590477adb4b8208851e2d45a0fc28
BLAKE2b-256 83a8060e305eca16ea922d2a43b32bede6b8e411712ddbaa144862916873a6cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 39ba0a205d869cf8177f8db89c585cc31ad9664c67f020e18f55a8640ab0bf35
MD5 35ec69777b2da54be897cf0e28d68037
BLAKE2b-256 297378e70b10a3b5416c36ccb48f0a8701c85d65731b28920993ba4eb4638832

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2ac78965e4f4c57ca221e7f4b9b0502318c26689788223f8a229913fa4987a61
MD5 3e05c4f986a9b6330d0854d114e45994
BLAKE2b-256 7c11998e970bd8774c4153e081b1183d5e965b93cac327218163ca189f05fe22

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cd493548d4d7ce09ee0558e90e7b5455399a131f852da21565c4e58518da584e
MD5 a98bc767ba654460bed39fcf805fd14d
BLAKE2b-256 76974a6c3a4d582b2bf17a3c85691e2669ccd962151d22719d9bb469beac49bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b1f16c97421b8655690d45e7379acbb58d2c68e707f70cd7f3197439ca242df1
MD5 f3d68f920c523217655ee84c4051486a
BLAKE2b-256 8b93e47f1013210d291c7a5f1855e0569268c6745e60af97df34689042088e0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6effb70a7a0de9e2cd778d7e30fb05afc1385198795bb22b13e14ed698a46965
MD5 828142b0d005f6e48c666b44078f3045
BLAKE2b-256 76f3ba93fc003d1567b507ac3b4a12eda230cb1e32127c9dfc6eff0a40a06bca

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 22f522d685cc79421d492fa6ff4d3810a310343aa89b972db4c18d59aeb7b4d1
MD5 0bd1fd39b841ef1bd26976ceade62946
BLAKE2b-256 3cc9a4379b83c5815ca227aec5dd2779545037f75a4370e1dae2c2de34982606

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6702cc1803d80ca9c31653b34af23ef948ef210e4b505785ae90e291d7706379
MD5 56197257b7851566f0632dacaf4c4089
BLAKE2b-256 13b8b1e552710a2e27c580ed75a4baffc303836728fd02ca8abc32213b88079b

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 423f59b800c0f38283a2eb7d561d64a1cb880f93d4a31b27b3e2c3925bf679b2
MD5 0991eb67f4564c7bc66af5f3b095c7ac
BLAKE2b-256 61f4923f8d672675cfa5a522d040d7f83b14b6bea6cedd4f2548ed769be8826a

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 25610d2da9161f2f77802a18fc1b52c7bf1e63494c84ea43bee5661ce9b72ddd
MD5 47278e32092eced9b6cb08d9304ffbe5
BLAKE2b-256 37bade7813699de9a59a15f308f02e1ab70a16ebfc0d40cba8083fcf1644a774

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2fe9d56f727d8c923da299a6b36f66e7a2d256cac907eaea7365a7526dbb0774
MD5 25aa16d0824eb94f86e6010d34648193
BLAKE2b-256 586142d37c3fcfe5abbe3d7808ad8831451fefa55ce3b4b28f4666d9b8b9e1eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 44fbb200a18181b3f2d128dfe890010bb7222ee636b6174825d8ad3f45270e5e
MD5 2b2249b861ba9ed2ea272a74136c4738
BLAKE2b-256 63e01046379e353bd8b1c5ce6743d993b15413a1e6fb5f9e9128dde97b2140fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1c2b2b54901f0fc2f195340c8b8177504f42945c4be0cb2175888302c3f3559c
MD5 7e326bc7fe2b1246d08b163350404824
BLAKE2b-256 d21591d3e40a6a5c23e802b596d7974fde91c5a30ddd588ae8fd0613d0de8e59

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9ccb84c835a75d604f388ead4c257dfdd37ef692f9e41f2d92f4913339f111ca
MD5 c58702382f2ed8204b75906f3172bc41
BLAKE2b-256 4cffdbb0f83b1080a6d83fe3fc67d73e35da615826ea1d9ec350cd07ceb3ec38

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7ecab287c4aa83e761ed9ced8cc8a0f93514231995e0451833b8e6d96b1b6c7d
MD5 a6753124a6b28b6501444c14e72f689f
BLAKE2b-256 32d6ec8a94bac17721a227d2b2ecbdb605948d95b987fe15b5a28e6d17da099c

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 99e7405b958f2c22da4d81bfa2828777c65820fac403052a13bf5c4567d5c318
MD5 b4a783eeb43fb04c8bc484bebdee97a9
BLAKE2b-256 813c9128708a540d78c26e114101adfe524388a30b411dac36aec1f58618d4b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 666da934f3b2cf05eef8049dc66faf679a0843e2d5c3430313673e1c964b42b5
MD5 9613a0d1732a46f71f7a8a2284a295a9
BLAKE2b-256 d4bfd76d1890960b3e69cf5cbb69e45f03b98404592e910b3d4a2b5636b0465d

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 56fcd3e2d96f389e76dd096d101a06b1ddde4e30ad47d73d7b87a0ed0db9e9d5
MD5 7e2fd74ed07ecbb01ddbd7c267db13ee
BLAKE2b-256 6e892647b4cceeecd223449fa04138486f55b7d556df34800568d9ddd293b038

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7f748bf91fb645acfe8feb06da52987d0655a71ee12d9cc87cc44396206e18e6
MD5 5ffad79e679a3dcd53831cb7a0e45dd7
BLAKE2b-256 33854745ed784d28b7fdef02d6b5329c30c10176b1007c45b6aee5680d50d705

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp310-cp310-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c3e1deab3128957ffabbdddcaf979fc842762c6003bce365dd6f596232c3498d
MD5 dca38bb43da304328b9e0b5b1c5fb96f
BLAKE2b-256 6f72081d88012e6562231720c7b124a98c1c399c42dd7ac708323afb022324e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3c89073d462337c5e4365ef093eb9a8a2f08c4f29dc49a520eef2a018d2c5344
MD5 812fd2025a0c59bfe61f9e66d74517fe
BLAKE2b-256 9b47462e1a118d27c8440546ece41f13bb694f3b38cbba6d6a9afba539fada9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b05364f3bc8c806d7a3bee509b82aabeef05cf8a3d071c66df3b2767d0a4ebf6
MD5 b81bb399f556017668c75ad0ad31d875
BLAKE2b-256 5efca84384f896b86dfe73a15e5c784ccbe1977adeafa1fa4e2d14ad32684a00

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f9f2f4e3107c7e15ccde10d4b8173fb2eb8c73115fa0ab329b01fc3cc93c9bb4
MD5 5f84cc0b4252a60edf2a4bd4bf0f8378
BLAKE2b-256 1af0ef858ee42954c5a3b2b36cdf89768ccb3718dcc8b7c68bb27199f848fabe

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e27419f153d2385f77b9f406c33fe8261a6e20bde7e31e2f9b923726f1bb47f7
MD5 9cbc82eb81c72dfd2c2da4a57b2d764a
BLAKE2b-256 8e1ccb410e5fc032317ff1689df5d8d3be473e981f8e67b1ebb87cd906c7d6d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp39-cp39-musllinux_1_2_aarch64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1f1c41f31c2832178ee38b7317c02b535ebd8811d3d9ec4bfdfe537065cbcf41
MD5 a388f4cde2e0f3f46b3f509857311249
BLAKE2b-256 d98cbe918c0d36a126444ea0a07c49a342357bd719de299b1a846571ee08ef17

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0adb89ca965954f7a96c4b8c46d14560a56bca2479e6ba1d752d1e74d8a4eff0
MD5 7cf05c245795c49cadb69d056f71e1d0
BLAKE2b-256 c09c1457c9345ad699f96aa39bcff5b1907d7843d51db760c69104ce6bc10f5e

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

File details

Details for the file nwgrad-0.2.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nwgrad-0.2.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5770682f6970c6332c63e684709076a23ba2c0d7264622aa27cbc7a89e2a2a1c
MD5 79d009854311cde4378e8b52deccbe4a
BLAKE2b-256 63ea44cb42caae1dc82725062eeb251ab5479805eb021f5fa1a5d9cfb2b34dfb

See more details on using hashes here.

Provenance

The following attestation bundles were made for nwgrad-0.2.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: wheels.yml on michalsta/nwgrad

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

Supported by

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