Rust-accelerated Needleman-Wunsch global sequence alignment for precomputed score matrices.
Project description
pynw
Rust-accelerated Needleman-Wunsch global sequence alignment for user-supplied similarity matrices. Python bindings are built with PyO3.
Align two ordered sequences given any precomputed pairwise similarity matrix.
Unlike string-distance or bioinformatics libraries, which are designed around
specific alphabets and scoring rules, pynw accepts whatever scores you
provide: cosine similarity of embeddings, model outputs, or distance metrics.
Features
- Fast: Alignment runs in $O(nm)$ time; a
1000×1000matrix takes <10 ms on modern CPUs. - NumPy-first: Pass NumPy arrays directly, no conversion needed.
- Domain-agnostic: Operates on a precomputed similarity matrix; the scoring function is up to you.
- Asymmetric gaps: Penalize inserts and deletes independently.
Installation
Requires Python 3.10+ and NumPy 1.21+. Prebuilt wheels for Linux, macOS, and Windows are published on PyPI.
pip install pynw
On platforms without a prebuilt wheel, pip will build from the source distribution. This requires a Rust toolchain (1.85+).
Quick start
Using pynw involves three steps:
- Build a similarity matrix. Compute pairwise scores between every element of your two sequences using any scoring function.
- Run the alignment. Pass the matrix and a gap penalty to
needleman_wunsch. The gap penalty controls when leaving an element unmatched is preferable to a low-scoring match. - Interpret the results. The returned edit operations tell you which elements were aligned, inserted, or deleted.
The example below aligns two word sequences. The similarity matrix is built from GloVe cosine similarities, letting semantically related words align even without an exact match:
import numpy as np
from pynw import needleman_wunsch, alignment_indices
source = np.array(
["clever", "sneaky", "fox", "leaped"]
)
target = np.array(
["sly", "fox", "jumped", "across"]
)
# Cosine similarity from GloVe (glove-wiki-gigaword-50)
similarity_matrix = np.array([
# sly fox jumped across
[ 0.65, 0.25, 0.06, 0.20], # clever
[ 0.57, 0.06, -0.14, -0.05], # sneaky
[ 0.26, 1.00, 0.30, 0.41], # fox
[-0.00, 0.07, 0.77, 0.35], # leaped
])
# Each gap deducts 0.5 from the total score; increase the penalty to force
# more alignments, decrease it to allow more gaps
score, editops = needleman_wunsch(similarity_matrix, gap_penalty=-0.5)
src_idx, tgt_idx = alignment_indices(editops)
# Reconstruct aligned sequences; masked positions are gaps
aligned_src = np.ma.array(source).take(src_idx).filled("-")
aligned_tgt = np.ma.array(target).take(tgt_idx).filled("-")
print(f"Score: {round(score, 2)}")
for s, t in zip(aligned_src, aligned_tgt):
print(f" {s:10s} {t}")
# Score: 1.42
# clever sly (semantic match)
# sneaky - (deleted)
# fox fox (exact match)
# leaped jumped (semantic match)
# - across (inserted)
User Guide
pynw exposes two alignment functions and a helper for interpreting results.
Which function you need depends on whether you need just the score or the full
alignment.
Score only: needleman_wunsch_score
Use needleman_wunsch_score when you only need the alignment score, for
example when ranking or filtering many sequence pairs. It skips the traceback
entirely, using O(m) memory instead of O(nm):
from pynw import needleman_wunsch_score
score = needleman_wunsch_score(similarity_matrix)
Score and alignment: needleman_wunsch
Use needleman_wunsch when you need to know how the sequences were aligned.
It returns the optimal score along with an array of edit operations (editops).
Each element in the editops array is one of three EditOp values:
EditOp.Align: a source element is matched with a target element.EditOp.Delete: a source element is consumed with no matching target element (gap in target).EditOp.Insert: a target element is consumed with no matching source element (gap in source).
The editops array alone is enough for aggregate statistics:
from pynw import EditOp, needleman_wunsch
score, editops = needleman_wunsch(similarity_matrix)
n_aligned = np.sum(editops == EditOp.Align)
n_inserted = np.sum(editops == EditOp.Insert)
n_deleted = np.sum(editops == EditOp.Delete)
Reconstructing the alignment: alignment_indices
Use alignment_indices when you need to map alignment positions back to the
original sequences. It converts the editops array into two masked index arrays: one
for the source, one for the target. Each array has one entry per alignment
position. Positions where the corresponding sequence has a gap are masked.
from pynw import alignment_indices
src_idx, tgt_idx = alignment_indices(editops)
Because the indices are masked arrays, take propagates the mask and filled
substitutes a value at gap positions. This makes it easy to reconstruct aligned
sequences with gap markers:
source = np.ma.array(["the", "quick", "fox"])
target = np.ma.array(["the", "slow", "red", "fox"])
aligned_src = source.take(src_idx).filled("-")
aligned_tgt = target.take(tgt_idx).filled("-")
# aligned_src: ['the', 'quick', '-', 'fox']
# aligned_tgt: ['the', 'slow', 'red', 'fox']
When iterating over a masked array, masked positions yield the np.ma.masked
sentinel instead of an integer. This means you can iterate over editops and the
index arrays together without checking masks explicitly. In the diff example
below, s is masked at Insert positions and t is masked at Delete positions,
so only the valid index is used in each branch:
for op, s, t in zip(editops, src_idx, tgt_idx):
if op == EditOp.Align:
print(f" {source[s]}")
elif op == EditOp.Delete:
print(f"- {source[s]}")
elif op == EditOp.Insert:
print(f"+ {target[t]}")
Asymmetric gap penalties
By default, gap_penalty applies equally to insertions and deletions. To
penalize them independently, pass insert_penalty and/or delete_penalty:
score, editops = needleman_wunsch(
similarity_matrix,
insert_penalty=-0.3,
delete_penalty=-0.7,
)
When set, these override gap_penalty for the corresponding direction. This is
useful when the cost of missing a source element differs from the cost of
introducing a spurious target element.
Details
Precomputed similarity matrix
pynw takes a precomputed (n, m) similarity matrix rather than a scoring
function. This means the entire alignment runs in compiled Rust code with no
Python callbacks, and you can build scores with vectorized NumPy operations
rather than element-wise Python loops.
The trade-off is that you must allocate the full matrix up front, which uses $O(nm)$ memory even when the scoring rule could be expressed more compactly.
Scoring
The total alignment score is the sum of similarity-matrix entries for matched
positions and gap penalties for insertions/deletions. Gap penalties are
typically negative. By default a single gap_penalty applies to both
directions; set insert_penalty and/or delete_penalty to penalise them
independently.
When multiple alignments achieve the same optimal score, pynw breaks ties
deterministically: Align > Delete > Insert.
Edit-distance parameterizations
Needleman-Wunsch can reproduce common metrics with the right similarity-matrix values and gap penalty:
| Metric | S[i,j] match |
S[i,j] mismatch |
gap_penalty |
NW score equals |
|---|---|---|---|---|
| Levenshtein distance | 0 | -1 | -1 | -distance |
| Indel distance | 0 | -2 | -1 | -distance |
| LCS length | 1 | 0 | 0 | lcs_length |
| Hamming distance | 0 | -1 | -(n+1) |
-distance |
For Hamming distance, strings must have equal length.
API
Full API documentation is available at chrisdeutsch.github.io/pynw. To browse locally:
pixi run docs # generate static HTML in site/
pixi run docs-serve # serve live docs in the browser
Development
This repository uses pixi for development:
pixi install
pixi run build # build the Rust extension
pixi run test # run deterministic tests
pixi run lint # run all pre-commit checks (ruff, cargo fmt, prettier, markdownlint, taplo, actionlint)
pixi run check # run all pre-push checks (cargo clippy, mypy)
pixi run docs # generate API docs in site/
pixi run docs-serve # serve API docs in the browser
Linting and formatting are managed by lefthook and run automatically as git hooks.
Related projects
- rapidfuzz: Highly optimized string distances (Levenshtein, Jaro-Winkler, etc.) with scoring, edit operations, and alignment. The better choice when you only need standard string metrics.
- sequence-align: Rust-accelerated Needleman-Wunsch and Hirschberg for token sequences with built-in match/mismatch scoring.
scipy.optimize.linear_sum_assignment: Solves unconstrained bipartite matching ($O(N^3)$) where order does not matter.- BioPython
Bio.Align.PairwiseAligner: Needleman-Wunsch/Smith-Waterman for biological sequences with alphabet-based substitution matrices (built-in and custom).
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pynw-0.4.0.tar.gz.
File metadata
- Download URL: pynw-0.4.0.tar.gz
- Upload date:
- Size: 75.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dab734a525899601fd11725b2b5991ea77c0e50e7f9e96f685133ddb2df27f8
|
|
| MD5 |
add70669387bfa007c6ea35d8f904a29
|
|
| BLAKE2b-256 |
83e0fd8c8274cf2f99a98006a665aa581a9b919a4abe36d7b6fd87f9c75b4cc0
|
File details
Details for the file pynw-0.4.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 480.0 kB
- Tags: PyPy, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9701e4f296af6054114cf212fa2015a4bbd2dd0fa9156420a3ebfbda3546a6a7
|
|
| MD5 |
e029d30ceb7212a578116f039c7f83b3
|
|
| BLAKE2b-256 |
eae650043764894132ac6751406a088804c7026c41f46371bba60312bc46ddbc
|
File details
Details for the file pynw-0.4.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pynw-0.4.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 443.5 kB
- Tags: PyPy, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f7851303bdfce685a6c0cb50f1d97bc8c2e93719f985f441ce1a39f34e24d61
|
|
| MD5 |
5c5e90a537ae73d3f2d8e95644af1b15
|
|
| BLAKE2b-256 |
3263ca2aa8065c266e7889657514b7055fba010842ec798665b9d739e70eb05b
|
File details
Details for the file pynw-0.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 268.9 kB
- Tags: PyPy, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8965593d704dd290c9465384c68552833b20d841446f6a75a6de0923789b93d
|
|
| MD5 |
da51cc5c930761f11ee8c13e8121a2c2
|
|
| BLAKE2b-256 |
191722736d40b9ba9c6d7de673c798f3a988b7f8bb2e13681af67f7ed6d85cc6
|
File details
Details for the file pynw-0.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: pynw-0.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 266.4 kB
- Tags: PyPy, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
303d87cc27dfed3b4831966512a2a3cb69535a69952e33bbafcf57b43094f876
|
|
| MD5 |
07d177774bc6b34b85f24858595b48ae
|
|
| BLAKE2b-256 |
40a6941e36cefda97ea151aa6245c7d0f18a0aca08389407f01068757e2c2069
|
File details
Details for the file pynw-0.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 477.7 kB
- Tags: CPython 3.14t, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03dce537476ac7b36bbbfe6b3d0edc7bd3546d2e740e42cd2517e366f7305d2a
|
|
| MD5 |
b5de71b6fb4da94466b0e5ceaa42b1ad
|
|
| BLAKE2b-256 |
2f5548d02a16218d7a16f94b842d818b3a5cf6d71431d5b3ab6662ecc8240b97
|
File details
Details for the file pynw-0.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pynw-0.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 441.1 kB
- Tags: CPython 3.14t, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5a36fc54305c82f559e8527ebbc92dd442c0fb7a84232e9f1a3088df0827dc9
|
|
| MD5 |
426527571d29be4f3e58b58b7d61479d
|
|
| BLAKE2b-256 |
fee0dd77e14ec80fd827c53831163ed797f540840096dac9750f25e46cd87846
|
File details
Details for the file pynw-0.4.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: pynw-0.4.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 264.3 kB
- Tags: CPython 3.14t, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44afa86c0c8547790393b71e6c69f5c769ca9b11e214c82b5a62ad14a1c5cf03
|
|
| MD5 |
d442cb96110618a9eef0a2b951fe8c4d
|
|
| BLAKE2b-256 |
4a0c0b775cedc9b283461133549b02f67bfedefbea9b4f3d718f426c47ceb4ab
|
File details
Details for the file pynw-0.4.0-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: pynw-0.4.0-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 148.2 kB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e90aac965b65be40ae43d622bb7906ef6c6385a9b30fa809196c211fe87f0e62
|
|
| MD5 |
a68892e17c4c10597c3fb1ee986e797b
|
|
| BLAKE2b-256 |
2900645cf5839b32627cc938fcaab6fb7e4fe38ed14d8b0488d269d4c6f69a96
|
File details
Details for the file pynw-0.4.0-cp314-cp314-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-cp314-cp314-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 479.4 kB
- Tags: CPython 3.14, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7490e6ed1a42e6496b95808149d4a64fdd9611c394ac1e10b0d9d7129a91db4
|
|
| MD5 |
8f3de0ac8e030febb48a61ffe92bce40
|
|
| BLAKE2b-256 |
7d9f1a382aa2af54cc5896f682e42b1585e1ead685944068b1bf1c61261c94da
|
File details
Details for the file pynw-0.4.0-cp314-cp314-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pynw-0.4.0-cp314-cp314-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 443.1 kB
- Tags: CPython 3.14, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f5cae5b98771e2b3fee91823c48920a3b4b3dcfe5605a31b9acc252336cb55d
|
|
| MD5 |
c95873218c08c3505adc156e04c1a60a
|
|
| BLAKE2b-256 |
5d5db2039b6d6e4d6f3fd1857fc29d1ce6e26d79d370939703ffe535a98e1c2e
|
File details
Details for the file pynw-0.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 268.5 kB
- Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6350fbfbe7b0d43a94072df11e0f8ce3f303d965fbd3164070b0622a3e21d46b
|
|
| MD5 |
fce2fcade36f7472103a7ab7ad226fc7
|
|
| BLAKE2b-256 |
2c92beec42df24db477e0f3252ae0a2c2813479e1101f6c89a18db4c7e9be9f3
|
File details
Details for the file pynw-0.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: pynw-0.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 266.1 kB
- Tags: CPython 3.14, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf04578aff11c0d4595c0a6ba3848ba0d6823c79c537dbcaa67ddde4af2750d9
|
|
| MD5 |
d29379750c32753aaf3c2202b71b36ca
|
|
| BLAKE2b-256 |
19277fe5719c7df20c70f30b04e3b73be21dba38f4907c5bbce106b190b5b414
|
File details
Details for the file pynw-0.4.0-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: pynw-0.4.0-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 242.1 kB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bcd85dfb27ebfd03e3c556a4fa5794f8bd485b492d1a2a857ff2c612bfa23c68
|
|
| MD5 |
6a8ee36a0faf9963c31d72e2b266d4d4
|
|
| BLAKE2b-256 |
a8c03c42f2a23d62fd9b400e7fd33ca75a3e720f2d749512a32b9a45e102acb3
|
File details
Details for the file pynw-0.4.0-cp314-cp314-macosx_10_12_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-cp314-cp314-macosx_10_12_x86_64.whl
- Upload date:
- Size: 252.7 kB
- Tags: CPython 3.14, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ab38e7470a6f6de6c3f0c106d9baa025f5c8a5949e78548c4df8ffdfd3dba3a
|
|
| MD5 |
e3bd5113c578a239e2b5a6c65118df2b
|
|
| BLAKE2b-256 |
9fbee6d7a6998603c6fea3e99952a0a2d37de1d174563b7b21963d784dd12dde
|
File details
Details for the file pynw-0.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 477.8 kB
- Tags: CPython 3.13t, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72724c8e4bed0ef3af51f08033c669de9e52365867a0b6074d5bbb0d0f7ceb01
|
|
| MD5 |
ed15b165cea941102d8f6e32b8e63125
|
|
| BLAKE2b-256 |
a3e4a7270633473244fb342db50a434ca20e9b710d107b0869869c3ca60520d6
|
File details
Details for the file pynw-0.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pynw-0.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 441.2 kB
- Tags: CPython 3.13t, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8d56912417719152a6307e876f356ecdb1b5763bc73693868cfe3c8c5dc793a
|
|
| MD5 |
d3f731e02d10b5aac43003671adba660
|
|
| BLAKE2b-256 |
f1769dd8789804a7905fba044c49327ac87e931817406a11d154cb56cb96aca2
|
File details
Details for the file pynw-0.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: pynw-0.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 264.5 kB
- Tags: CPython 3.13t, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37c5f30131e37c7d5791ecb379ff12b5455352d827a6dc92a9307b78e50bb806
|
|
| MD5 |
8cd37734658bb77c05494eff7d620ac2
|
|
| BLAKE2b-256 |
d18e38ba6faf0965bda48c46fe8c0432587306117013e19d77897e3190bef131
|
File details
Details for the file pynw-0.4.0-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: pynw-0.4.0-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 148.3 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86ca3b0d83df5c557c78952d9a9225b3a0db2ca1441c5bb6cb8f8656cd69558e
|
|
| MD5 |
170cd1a38363ef3e7f6019d21daba64f
|
|
| BLAKE2b-256 |
d52598219b97efc26fdc7249b27c160a280a39ad0499fce0b2d402730ad9764e
|
File details
Details for the file pynw-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 479.7 kB
- Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
310d28ef5e2a20cb4a52ba726de5257f0982bb1b62091d74af520b3ec00169dd
|
|
| MD5 |
9e98110c95e7d892aa611267a52e65a7
|
|
| BLAKE2b-256 |
699a447e06dc42988cbadba782f9c32a46e99ffede1a0bb6dfbbbb8860a27e6c
|
File details
Details for the file pynw-0.4.0-cp313-cp313-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pynw-0.4.0-cp313-cp313-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 443.2 kB
- Tags: CPython 3.13, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07477bb56d8a5839a6db17a4d8b0f8821038901209fc3326579d2b8e8402cfaa
|
|
| MD5 |
05544e04f742cf8f0173bde5a8f7c8f5
|
|
| BLAKE2b-256 |
46191c30242a89b994e56c0c1b2bd5dcdb495706640a7c374e2eb14d28eb266f
|
File details
Details for the file pynw-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 268.6 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
00c074f147815dc150d522613dd2674b058de3d2c629532da249e88e6d604fab
|
|
| MD5 |
18703efbfd91ffea3782aaa8ea424cc5
|
|
| BLAKE2b-256 |
30fb8571a5f84c3163562c42ff6ecdd5546caf18a74e743584907b84a4f883f8
|
File details
Details for the file pynw-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: pynw-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 266.3 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96f57e6fc7ce3ad56da67aa180a6089e30b51ac9a79e56556a913f3f13442d48
|
|
| MD5 |
62f624c7ed752ef802678803efb5f07d
|
|
| BLAKE2b-256 |
c2c74fea4df64abe725dcb30ee92f96c05561e9a599ec8736e951b24f8b8eb90
|
File details
Details for the file pynw-0.4.0-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: pynw-0.4.0-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 242.2 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0044207c094b23bd8e01f4297307860b7ca31fb4ddd3200e498187f2292c877
|
|
| MD5 |
c6f7db28af6af81c86bd80ab007d9e76
|
|
| BLAKE2b-256 |
ef52a65c63800d12d36b8a7ee0a300584050eaab1a8ea5b652d0b7734613d2f9
|
File details
Details for the file pynw-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl
- Upload date:
- Size: 252.7 kB
- Tags: CPython 3.13, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c10bac26e8d04cb79a70b1ae095ff49ccbcbae93f55c3dbe84cb87b62452072c
|
|
| MD5 |
e052f3903613d72abaf3d11fe50d34b6
|
|
| BLAKE2b-256 |
169ccf3f6b5e17156c12a153293746809c9052a1749749e34eda7a1f27e48340
|
File details
Details for the file pynw-0.4.0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: pynw-0.4.0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 148.1 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86a0b8d021b1130eadebb873ae552a24b202b896193cd588b33991ad37a0a5a9
|
|
| MD5 |
883cd0d3023445489c6298353c9f0240
|
|
| BLAKE2b-256 |
763bb8a8c99561aa5f500ffb1074b958725fa5c2c53d346bce10a069a13328d1
|
File details
Details for the file pynw-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 479.3 kB
- Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47c8e535302eace5eb28f8de48232f125cb60d3e9fc3b61e197526e078f347d4
|
|
| MD5 |
f5497105ac89b62ea6727ffe26393e86
|
|
| BLAKE2b-256 |
b512f44341ebb787b7b07a39e86c39670d7869651a0a51f191e412f057933317
|
File details
Details for the file pynw-0.4.0-cp312-cp312-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pynw-0.4.0-cp312-cp312-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 442.9 kB
- Tags: CPython 3.12, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6f5a31bce8f5c8674edaadb0606dd27c0383e3b8a2e407abfc12b81bd85864b
|
|
| MD5 |
00cd2f2852ddf10c43e7c62002c525ab
|
|
| BLAKE2b-256 |
86dab8d6aebfb03e4c95be94da7c77a8bff068b17dd66c27a14bbfcad56f7953
|
File details
Details for the file pynw-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 268.4 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
243ef93821c0c1ebff0af99a30c9c0eeec55e513ace2dc877e8b808cb9fa4a5c
|
|
| MD5 |
21aab2567744e38d13dc905253a12643
|
|
| BLAKE2b-256 |
1d8c7f248cc91f8eaaeccf168c8167b345c148149dc09ac971ea202c514cf402
|
File details
Details for the file pynw-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: pynw-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 266.0 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d6e7bb39b9b755396603ad474a1ccc5856fb5d2f054186629fc810c3410d6e4
|
|
| MD5 |
a92b59984b510d384f0dad638f67ef1e
|
|
| BLAKE2b-256 |
7bcc2a0683d9651b7bb202eda93a85dab6be90948ad48b9ff139463fd9bfdff5
|
File details
Details for the file pynw-0.4.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: pynw-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 242.0 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1fbd435c9edc21b329c10e5f61520c15fe902d47a064869ff5d33051b322ac29
|
|
| MD5 |
edc515032a5e55c891d7887d2b2c6f06
|
|
| BLAKE2b-256 |
2e92f09807c843eb54af4c316892847906b05c8b96141bac8fc16e06179fdf0e
|
File details
Details for the file pynw-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl
- Upload date:
- Size: 252.5 kB
- Tags: CPython 3.12, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6e91d9ce7d3e396519f2d5511061effcf36fc32ba1d935d85b23ae79390b093
|
|
| MD5 |
704140e1c17f115e78d62635f3953cb6
|
|
| BLAKE2b-256 |
16efebadb0d1757f7fcf2b0c633311ec503acaf20db0653c60a5b3fb61a8e117
|
File details
Details for the file pynw-0.4.0-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: pynw-0.4.0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 149.7 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1aa0cd9da464405b102964976400a9802b714abac1501fe0d49e7b482cecee93
|
|
| MD5 |
a11020207ee56976e2e50483297d9a08
|
|
| BLAKE2b-256 |
dd420bfbf7ebf3da8965de864b91e032fd9c5da2deff56aa1e46d3cd8c375805
|
File details
Details for the file pynw-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 479.6 kB
- Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66268a01a15e5067632f82cea1057acab3526a2c2464281614d27e3184edd0cd
|
|
| MD5 |
24a69958a29ec11a69c62efc0e4cdaf5
|
|
| BLAKE2b-256 |
aaadc9566ad598d5997f4d52af3cf3c52e550a1d804f17792cf441d6c16b7317
|
File details
Details for the file pynw-0.4.0-cp311-cp311-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pynw-0.4.0-cp311-cp311-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 443.4 kB
- Tags: CPython 3.11, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7e35725bdecee94064353e987fc9807e827b6b5491abd8a514acbf764731d1c
|
|
| MD5 |
2a430625aa4e9201620b29b9ff005e62
|
|
| BLAKE2b-256 |
75959b4943b5744c99e5e009a309f435063d4b56f8772f1cbfdbdebeb023e14c
|
File details
Details for the file pynw-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 268.6 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e56b9280dccbd22ac678577cd492aa30b86947c772979b60c070509b6a8acb05
|
|
| MD5 |
57a7b333601720401b76f8a89b47f122
|
|
| BLAKE2b-256 |
4b1c456c730f37c4db0afde53af3342865fd9a26394b2cfb3adf8938d8f12248
|
File details
Details for the file pynw-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: pynw-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 266.4 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f6ff6f59bfe8335261eee2641eb245c98031d6e288d5d204f2acdc9e4857b48
|
|
| MD5 |
4b9a73ba5d8647005ea9a7475d4020b3
|
|
| BLAKE2b-256 |
a70a92f7f4848505db35f080efec6ebd9d0e8433462b273ec9391c9b28470f09
|
File details
Details for the file pynw-0.4.0-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: pynw-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 242.3 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbf92a6b646ef00bea0d3717d47aa1ff2a7880d74761f7d1d2cd146d9d111e59
|
|
| MD5 |
2221b2ad7b7e72604ee4e8cdb1637a8f
|
|
| BLAKE2b-256 |
3085e2104682e60b458ae6a3a03f632e4e5cbd03efd3c1a0f01b40a9bafa36af
|
File details
Details for the file pynw-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl
- Upload date:
- Size: 253.2 kB
- Tags: CPython 3.11, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d243d5064ab8b14acbb81f62cc2b46427bd8892d688df7180baf1d26a6bfa99
|
|
| MD5 |
01359a75d63c5a5e56064b08d95e8398
|
|
| BLAKE2b-256 |
8ce675e4a6789cc1372a808ea75f31d1a302d3cbf16b5dbc5dff135f768a4ca6
|
File details
Details for the file pynw-0.4.0-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: pynw-0.4.0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 149.9 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9653730a73787693c54c6db50ac71757e2bae883ddbae04fb42607f49e1ea6e
|
|
| MD5 |
4109485b61f223d6a2531b40eedcd9d4
|
|
| BLAKE2b-256 |
66763a16ba946cb3706820fd11d939b72b268b794f5b775908aa96096d56ffe0
|
File details
Details for the file pynw-0.4.0-cp310-cp310-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-cp310-cp310-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 480.0 kB
- Tags: CPython 3.10, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
091413dbb49cffce28e4ddfcfd1b665c58542d7194cdce041bf3c2c6b0d5198b
|
|
| MD5 |
e0f6619c26ed2aa348e6535001e603a3
|
|
| BLAKE2b-256 |
5e91bb2104b8b18c620d3e6c57d25fd6a77bf5ddb50ed3fbffe5e5a35bccccf4
|
File details
Details for the file pynw-0.4.0-cp310-cp310-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pynw-0.4.0-cp310-cp310-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 443.7 kB
- Tags: CPython 3.10, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
646310548b0ba5563c93970bd6b218a3fe59b1e1c9440ec3cb9638a33eea1c07
|
|
| MD5 |
c51351752a1af4a4d31b4e51e6544e5f
|
|
| BLAKE2b-256 |
91705c9b1b88393cf66ad65a62df7cf4917f2674a08e09c8bf2eed38e0a717a3
|
File details
Details for the file pynw-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pynw-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 268.9 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30239ef3046addfa43f27d9fb6e7dea64dadf5ece3a71732af1129c5c995fa52
|
|
| MD5 |
761e634508fa530019adca3992a1da8d
|
|
| BLAKE2b-256 |
c0dc15876b0f7ba7a9e0aa73bbab6a168189c563f1e9e6388c91e38681a6d305
|
File details
Details for the file pynw-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: pynw-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 266.6 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf7366f49a497d528e06524c6d396f02ba2996c8a0c2c8e11f48cffb6827d908
|
|
| MD5 |
1e1ec52d1198d2a90434d4783783b520
|
|
| BLAKE2b-256 |
f2c6b2b5414c51be85ba2e940e2ebe5fd04869d99e5918415fba1d8ee52b653c
|