Rust-accelerated Needleman-Wunsch global sequence alignment for precomputed score matrices.
Project description
pynw
pynw aligns two ordered sequences element-by-element using any pairwise
similarity matrix you supply. Think of it as a generalised diff for arbitrary
ordered collections: words, embeddings, tokens, or any objects where you define
how well each pair of elements matches.
Unlike string-distance or bioinformatics libraries that assume a fixed alphabet
and built-in scoring scheme, pynw delegates scoring entirely to the user, so
any pairwise metric works: cosine similarity of embeddings, model outputs,
learned distances, or domain-specific rules. The
Needleman-Wunsch
global sequence alignment algorithm provides the underpinning for pynw. It is
implemented in Rust with Python bindings built using PyO3.
import numpy as np
from pynw import needleman_wunsch
# Pairwise similarity matrix between your two sequences (source × target)
S = np.array([
[1.0, 0.1],
[0.1, 0.1],
[0.1, 1.0],
])
score, editops = needleman_wunsch(S, gap_penalty=-0.5)
# score: 1.5
# editops: [EditOp.Align, EditOp.Delete, EditOp.Align]
Features
- Fast: Alignment runs in $\mathcal{O}(nm)$ time; a $1000 \times 1000$ matrix takes <10 ms on modern CPUs.
- NumPy-first: Pass NumPy arrays directly, no conversion needed.
- Domain-agnostic: Operates on a user-supplied similarity matrix.
- Asymmetric gaps: Penalize inserts and deletes independently.
When to Use pynw
Reach for pynw when you need global alignment of two ordered sequences and
the notion of similarity is specific to your domain: aligning sentences from
two translations using embedding similarities, matching token streams emitted
by different tokenizers, comparing event logs with custom match rules, or any
case where precomputing scores in NumPy is natural.
If your problem fits a standard string metric (Levenshtein, Jaro-Winkler, and
friends), rapidfuzz is faster and more
featureful. If you are aligning biological sequences, use a bioinformatics
library such as
BioPython. If
ordering does not matter and you want optimal one-to-one assignment, see
scipy.optimize.linear_sum_assignment.
See Related Projects for more.
Installation
Prebuilt wheels for Linux, macOS, and Windows are published on PyPI:
pip install pynw
pynw requires Python 3.10+ and NumPy 1.22+. 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 cosine similarities of GloVe word embeddings, letting semantically related words align even without an exact match:
import numpy as np
from pynw import EditOp, 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)
source_indices, target_indices = alignment_indices(editops)
# Reconstruct aligned sequences; masked positions are gaps
aligned_source = np.ma.array(source).take(source_indices).filled("-")
aligned_target = np.ma.array(target).take(target_indices).filled("-")
LABELS = {EditOp.Align: "match", EditOp.Delete: "delete", EditOp.Insert: "insert"}
print(f"Score: {round(score, 2)}")
for op, s, t in zip(editops, aligned_source, aligned_target):
print(f" {s:10s} {t:10s} ({LABELS[op]})")
Output:
Score: 1.42
clever sly (match)
sneaky - (delete)
fox fox (match)
leaped jumped (match)
- across (insert)
User Guide
pynw exposes two alignment functions and a helper for interpreting results.
Use needleman_wunsch when you need the actual alignment, and
needleman_wunsch_score when you only need the score.
pynw takes a precomputed $n \times m$ similarity matrix rather than a scoring
callback. This allows the alignment to run entirely in native code and lets you
build scores using vectorized NumPy operations, at the cost of $\mathcal{O}(nm)$
memory for the matrix.
Score and alignment: needleman_wunsch
needleman_wunsch 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, gap_penalty=-1.0)
n_aligned = np.sum(editops == EditOp.Align)
n_inserted = np.sum(editops == EditOp.Insert)
n_deleted = np.sum(editops == EditOp.Delete)
When multiple alignments achieve the same optimal score, pynw breaks ties
deterministically: Align > Delete > Insert.
gap_penalty applies equally to insertions and deletions. Pass
insert_penalty and/or delete_penalty to penalize them independently, which
is useful when the cost of missing a source element differs from the cost of
introducing a spurious target element:
score, editops = needleman_wunsch(
similarity_matrix,
insert_penalty=-0.3,
delete_penalty=-0.5,
)
Reconstructing the alignment: alignment_indices
alignment_indices converts an editops array into two masked index arrays
(one per sequence) with one entry per alignment position. Gap positions are
masked, so take(...).filled("-") reconstructs aligned sequences with gap
markers:
from pynw import alignment_indices
source_indices, target_indices = alignment_indices(editops)
source = np.ma.array(["the", "quick", "fox"])
target = np.ma.array(["the", "slow", "red", "fox"])
aligned_source = source.take(source_indices).filled("-")
aligned_target = target.take(target_indices).filled("-")
# aligned_source: ['the', 'quick', '-', 'fox']
# aligned_target: ['the', 'slow', 'red', 'fox']
Iterating over a masked array yields
np.ma.masked
at gap positions, so you can branch on the editop without explicit mask checks:
for op, src, tgt in zip(editops, source_indices, target_indices):
if op == EditOp.Align:
print(f" {source[src]}")
elif op == EditOp.Delete:
print(f"- {source[src]}")
elif op == EditOp.Insert:
print(f"+ {target[tgt]}")
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 $\mathcal{O}(m)$ memory instead of $\mathcal{O}(nm)$:
from pynw import needleman_wunsch_score
score = needleman_wunsch_score(similarity_matrix, gap_penalty=-1.0)
Reproducing Classical Edit Distances
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.
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).
Contributing & Support
Open a GitHub issue for bug reports, questions, or feature requests. See CONTRIBUTING for guidelines on submitting changes.
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.5.0.tar.gz.
File metadata
- Download URL: pynw-0.5.0.tar.gz
- Upload date:
- Size: 66.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26fe26cf4a8eeebb222efbc577acda270e23bd0da5f89f5dc4e29b5b14f5c65b
|
|
| MD5 |
2a419bc42ad593c5b1b5f0c4c0b27e99
|
|
| BLAKE2b-256 |
bdefcf79c45b4a2c1b5fe1e82e1e670b815ad02c2e11cc3d031520a2a38ce91d
|
File details
Details for the file pynw-0.5.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 479.4 kB
- Tags: PyPy, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
68dff79ea4e403e6558eb49a22db5e9f295768ac8740fa0ed649c68a3f96f56d
|
|
| MD5 |
9ba65fa8425c9be4cb34add12c316f93
|
|
| BLAKE2b-256 |
62b3659dceaff332663f0219209d6be1ba1524f54a862e9f745836fa14954848
|
File details
Details for the file pynw-0.5.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pynw-0.5.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 443.3 kB
- Tags: PyPy, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d08db7973a4a3c55fe7c2eaa09c6268ff372bb40ffeb1873bfdee228c568cf2a
|
|
| MD5 |
885cd8b87293e977f8f8451ae8cf0f28
|
|
| BLAKE2b-256 |
8222373b9469a990895aa92e5b560bc1a203255df6cf630cf5daeb1b6f49b3c1
|
File details
Details for the file pynw-0.5.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 268.3 kB
- Tags: PyPy, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c63d17a9e61e6a94087d6522be6e8b1cad4ba7516c6d93b246b87792a320f620
|
|
| MD5 |
7e6171126d6de318f6eb86d0032a9583
|
|
| BLAKE2b-256 |
cf9409a43b40c859be5e3b0589298e357983522e8b2ff298f76f48769cc8028b
|
File details
Details for the file pynw-0.5.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: pynw-0.5.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 266.2 kB
- Tags: PyPy, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56544fd3f2d1a0e0d6743573867abe39edc1349b5ae43d7186af151c89160df0
|
|
| MD5 |
05401788d271918ee74cc51909e93ced
|
|
| BLAKE2b-256 |
80e5908dcdd9e323c5a7529f21c7aa01f1177acc5cdddde376a5c8204f1302b6
|
File details
Details for the file pynw-0.5.0-cp314-cp314t-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-cp314-cp314t-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 477.3 kB
- Tags: CPython 3.14t, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51887cca1aa517df081599e39eb56030c5b13912a7f1da879c40eeb06b9ac5da
|
|
| MD5 |
9037966e4466911fcdb67a010849a4d1
|
|
| BLAKE2b-256 |
516e6732b072b5206e09b3aaa8b9a5a9f5275d1437cd3f3351ff4233a0d0a9ef
|
File details
Details for the file pynw-0.5.0-cp314-cp314t-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pynw-0.5.0-cp314-cp314t-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 440.8 kB
- Tags: CPython 3.14t, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6529ccb840a5b710857e904683d69df566b6864b6eace0c16cc9263cb73e336c
|
|
| MD5 |
9f196d431f0293d0b979dd0bb80ac8ee
|
|
| BLAKE2b-256 |
7f361c9fe99eab93eccae03cf2c3fa3bce3291a760b9974e07a3161a91b507ed
|
File details
Details for the file pynw-0.5.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: pynw-0.5.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 264.1 kB
- Tags: CPython 3.14t, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e39975e1199c794d91cb3522bc97f487f263c5c8486da02fa1619814795e6df7
|
|
| MD5 |
7ac00e10c8f3bf081d70d64edc2f6a59
|
|
| BLAKE2b-256 |
3d557791dcf414d151bdf66c7c0fd2603f902ad04050a4c419eda3d7a186199d
|
File details
Details for the file pynw-0.5.0-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: pynw-0.5.0-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 147.7 kB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
119561104f94f0c552be25e2abb7d5b51c151012e367e954f4c657d16477dd27
|
|
| MD5 |
01b1beee3dd96e0d42b69db797ddae72
|
|
| BLAKE2b-256 |
8535893aa80b0f49f883fd3928ee9bd0fc214549f0d2d1f6585bb680321b0dc1
|
File details
Details for the file pynw-0.5.0-cp314-cp314-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-cp314-cp314-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 478.9 kB
- Tags: CPython 3.14, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bcdf64d2801ab124c0e185b0c07a42772cdbe5e155ee74cb5d64a0aa79c676ee
|
|
| MD5 |
8ba71d7e0899b1ef69e00acd9b09d8aa
|
|
| BLAKE2b-256 |
6a0226e635e29db0cf7ac60c25bdcce1ca620af6e9c36347c31c309a2b83fcd0
|
File details
Details for the file pynw-0.5.0-cp314-cp314-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pynw-0.5.0-cp314-cp314-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 443.0 kB
- Tags: CPython 3.14, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b7aabc7b59f45a1622f88c096e9fe0bfd90483122ae44d494ebb451039b483f
|
|
| MD5 |
944cde014c779365911ea581b38684ea
|
|
| BLAKE2b-256 |
ce8097756a2538407f16387ea4f4b902cb16beb024ad47fb51c428038796e987
|
File details
Details for the file pynw-0.5.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 267.9 kB
- Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04219fb616fb77e07cd1f290b6e159b31df69b312167ce3ebb7bd79cf51c9c32
|
|
| MD5 |
1c78bc448705082c2ce45516f54ba2b2
|
|
| BLAKE2b-256 |
6924dc0f31c3fb30d727eefd981245e7c9df52a3294a02bb4324e5da5b0a57ab
|
File details
Details for the file pynw-0.5.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: pynw-0.5.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 265.9 kB
- Tags: CPython 3.14, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33d3ac5bd0f5426f2a0a7e856c7956969b5bd1262bdd2f2973864d3e9f551951
|
|
| MD5 |
2096bdb07af74909888788265c6c043c
|
|
| BLAKE2b-256 |
da9b2bc9c3c4e04350632f9a19fa0f2e271f65c07c35ff3efb5905dfe652cd4f
|
File details
Details for the file pynw-0.5.0-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: pynw-0.5.0-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 241.7 kB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e30ca9e532919b2da962d00dc87e0eb06025ec369e05b5bde214d1179f78d9f6
|
|
| MD5 |
f6120c488a1eaff71cad9520e4625906
|
|
| BLAKE2b-256 |
4ad409477ade22ab447de2104fa4dbfe5d3c4afc6da8da81c9c33627b65c6f19
|
File details
Details for the file pynw-0.5.0-cp314-cp314-macosx_10_12_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-cp314-cp314-macosx_10_12_x86_64.whl
- Upload date:
- Size: 252.1 kB
- Tags: CPython 3.14, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5fd7d1d94d3d38477a5fd656fe1078555882ff98d627780983704f8f4e846e03
|
|
| MD5 |
0e221aa2c2602833e4aff6fe2624484a
|
|
| BLAKE2b-256 |
0c9667515842d56128db6b7d6cd9bc8a7694ba6d1109c88f69f54ce1651f9f37
|
File details
Details for the file pynw-0.5.0-cp313-cp313t-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-cp313-cp313t-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 477.3 kB
- Tags: CPython 3.13t, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd8886822999d0a3de7f65cb8705dc5390bf01b1b25a2040530395026704c24b
|
|
| MD5 |
1d60fb786ce38ec11b1ae8990f5bb4e2
|
|
| BLAKE2b-256 |
d6eebe06cebc85e1a931cc54a0c8a365c73a0a4658d7db04bf0e03050df13acf
|
File details
Details for the file pynw-0.5.0-cp313-cp313t-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pynw-0.5.0-cp313-cp313t-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 440.9 kB
- Tags: CPython 3.13t, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed8fac436a5d63c9fa30a52055737b309236ee4f5f73c10b8f01e80ad64f11c0
|
|
| MD5 |
cca3eb0ac99f5fe81643fcc3d123f477
|
|
| BLAKE2b-256 |
69a7a177a9a0cfa6b6311936c04100ff8ddb576619fd85f130def60dcf6361ac
|
File details
Details for the file pynw-0.5.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: pynw-0.5.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 264.2 kB
- Tags: CPython 3.13t, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f94e704dea9e8bcc4e9d13c061852ccf31439553733644528ffe12411b884a0
|
|
| MD5 |
4c278acd949bdd3b2537b9a1acab12ed
|
|
| BLAKE2b-256 |
db4bffdddb1846cb8fe4555c52e82a4d9f0804752fe300f279c75d665bdb1bb8
|
File details
Details for the file pynw-0.5.0-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: pynw-0.5.0-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 147.8 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1941b45aa19288f6ef3a3b6b897f40b8389d9a796f7b1831ed278d31b03e3e18
|
|
| MD5 |
090aa8a8d7981fa6ad80e9c3a0bd57c7
|
|
| BLAKE2b-256 |
0a24c7e47248c236e301f304c3d78539ae724ed8d4a60ca9fbda09d49e1433a0
|
File details
Details for the file pynw-0.5.0-cp313-cp313-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-cp313-cp313-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 479.1 kB
- Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e29c0a26b72ab3c5bb358b0ff00a7474a03d8d01fca8e34cb2a87ece6779a968
|
|
| MD5 |
fbb2ee46c95adebfadaa6969a63aef1c
|
|
| BLAKE2b-256 |
8ec0a915e34613488341730a5f08b8c7a986f44cd6a043c53bb01f9e009933c9
|
File details
Details for the file pynw-0.5.0-cp313-cp313-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pynw-0.5.0-cp313-cp313-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 443.1 kB
- Tags: CPython 3.13, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
649a790dada5fb881bc4d3e76c71c571e2a1001d7fb2501ede87b418e042094a
|
|
| MD5 |
f0a4214582bb493bddd5a910a93ed5bc
|
|
| BLAKE2b-256 |
f4af698bccb14a24e5de6c6d7429cbc52c88ecfaf5da6aae3655f4202a78fa1d
|
File details
Details for the file pynw-0.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 268.1 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5e3627a18e765fa52558c0d162aaa8f61c75de4c16915ec8254b6a2894269ef
|
|
| MD5 |
2b16f23e069bf1904079b98a9e6845e1
|
|
| BLAKE2b-256 |
6fb125e2225ff37c71275a20091964e80c9ba67a478b6045e1fb533b428d8d32
|
File details
Details for the file pynw-0.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: pynw-0.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 266.0 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
247d6cc5ac51d2057e9712af9bdc210522c5eee5e0e3398551ab3562db5257e3
|
|
| MD5 |
6c79c89cc495cf146835749f99f29cb8
|
|
| BLAKE2b-256 |
719fa78c436add1fd8ba2db1531146230554f0193156325317de0366613bdcb1
|
File details
Details for the file pynw-0.5.0-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: pynw-0.5.0-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 241.9 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d77c8a4d3bb2d4fcbe31d051951a082a75218564ce73cb1eaa7492ee792454a
|
|
| MD5 |
f1425495fd7100313270509da5aa3ff4
|
|
| BLAKE2b-256 |
44513b822ff3d1927c92b380e69e3de08abba8d0909e276cd0b729a188af1f4f
|
File details
Details for the file pynw-0.5.0-cp313-cp313-macosx_10_12_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-cp313-cp313-macosx_10_12_x86_64.whl
- Upload date:
- Size: 252.1 kB
- Tags: CPython 3.13, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d45b381217979fbc0213be174285e0dcd9eef2758759cbfd960c7f4a4eddcf3f
|
|
| MD5 |
ea956ef635f8a8eb754924f20a6d4e1f
|
|
| BLAKE2b-256 |
1e3fdacf67ee13c50c0fcf3f16178d9d6d487a6c2a788c81593b0d9007486383
|
File details
Details for the file pynw-0.5.0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: pynw-0.5.0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 147.5 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
917ac658db047c519fd9989381ba2f5e1d8f075e3f6fca3d68de7163eb5f3415
|
|
| MD5 |
070a4440876354fd5554ba288f1c5014
|
|
| BLAKE2b-256 |
69a4e3cb8a46a93b5fe6aeaee9be65bb6ace8a5aa006fa4a813b21ad35996bc3
|
File details
Details for the file pynw-0.5.0-cp312-cp312-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-cp312-cp312-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 478.8 kB
- Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46166a7226b07ee3e5b8fb3d7f2708c7d43967500b45aa0f79115c2e642a1c71
|
|
| MD5 |
a19953899e6aac0510be7d216acb37f7
|
|
| BLAKE2b-256 |
8427ec0257c4e4fba7631a3ad27da0ddcd14cc754d1baee58cb8ed26631341a9
|
File details
Details for the file pynw-0.5.0-cp312-cp312-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pynw-0.5.0-cp312-cp312-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 442.8 kB
- Tags: CPython 3.12, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb124c219c4ffa417f99ea3c317b9597d2093d02f1ea22f734e5f86edfb43030
|
|
| MD5 |
535c6e162ad10cf45022cba2497e4346
|
|
| BLAKE2b-256 |
415470ebcfea88e3e9a4e649da0b687274f8afc9e1a20dfdfffc05c2dca1ecb9
|
File details
Details for the file pynw-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 267.7 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2404f520b91e104aefd8e2af032d4973dfd2e9c7b490c2eb549b9003abcb3612
|
|
| MD5 |
603fdd72e40a0d855d00e0aef7a1aca2
|
|
| BLAKE2b-256 |
65a0f9e16c8a25edb8753d94ecd25e7485c478289e63d1164563f23fd69bde99
|
File details
Details for the file pynw-0.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: pynw-0.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 265.8 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dbba62ef5ab026b61b83bac8cc72f9141a0802b9dd6832a4497bd49f596815c8
|
|
| MD5 |
85a856e3d5d03cac2da810452c6ec1f9
|
|
| BLAKE2b-256 |
6b880bca56ba1a136af736b364d5fc905cd202a72579da2366a6648d34cbc3e6
|
File details
Details for the file pynw-0.5.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: pynw-0.5.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 241.7 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c88f0462b1fe4efa7cc057c71aa4a65b8f45e59411c936e0538697a5b184425
|
|
| MD5 |
347fa4a377c00b2315a8999f7a31bf91
|
|
| BLAKE2b-256 |
28bd9c7d751876927deda7e2bbd7bfa520ab38eedcb2c2f931d564fd7dff0740
|
File details
Details for the file pynw-0.5.0-cp312-cp312-macosx_10_12_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-cp312-cp312-macosx_10_12_x86_64.whl
- Upload date:
- Size: 251.9 kB
- Tags: CPython 3.12, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b816b760f0ba3219729bae28a4477ef838b7fb0744800b790529c68ed2a952dd
|
|
| MD5 |
2d9f5d35adaf55436e4a014b4dd2499c
|
|
| BLAKE2b-256 |
fd4a3ace00b89de0438a13d0a16b14062194a0c1892cd5bb0cf549a74066269a
|
File details
Details for the file pynw-0.5.0-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: pynw-0.5.0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 149.2 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f89c24e18950e1caf353f5ffcd458dae1555378e8f2ffccb7319b89f082fed7
|
|
| MD5 |
01fa3fac7c7e2e46e153090134f50c35
|
|
| BLAKE2b-256 |
91b4f8344782dfa99c51c8f31bce49aea759bea8aa8b6a76b3033a8b9a620e26
|
File details
Details for the file pynw-0.5.0-cp311-cp311-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-cp311-cp311-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 479.0 kB
- Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b259607fe92620685feea7873c28cc03ba20d72d99fc1fc2063abdfbf3ed80df
|
|
| MD5 |
29440bbb2ff8eee25f23a0534ac1804c
|
|
| BLAKE2b-256 |
d8261f384042fecd8911d34d1b5d57a6992f342ab860fed13c2c7414b279a39f
|
File details
Details for the file pynw-0.5.0-cp311-cp311-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pynw-0.5.0-cp311-cp311-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 443.2 kB
- Tags: CPython 3.11, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6384034ad557228f90bfb9515b83b5c3cee3a5826fa41f0cb5b5ae74b7972d4
|
|
| MD5 |
005f8d811b256db023d68c0919322fa1
|
|
| BLAKE2b-256 |
658660fb07837efc4f10dc59f07062a0b2dbed93f23f231cd50a166fa8544fa9
|
File details
Details for the file pynw-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 267.9 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d3fa8697924809e798dcb875cb16a03237ffce881aa84094c82712962482a64
|
|
| MD5 |
88fe7bb406ac0e6b8e0cb62776e6c353
|
|
| BLAKE2b-256 |
523d075e3d435f93b1dcb2474efcd7faf544d6fe7bd14fed10e4d9bd34d29ee7
|
File details
Details for the file pynw-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: pynw-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 266.2 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4de9320a628c7b349547190dc5034fd1690f3372801d80e24f0b70bac74027e
|
|
| MD5 |
cb1b648aaff7d281e1a7dbdbe8538587
|
|
| BLAKE2b-256 |
868f56f659fdddcd077439bdabcd56585e3993cbe791dcea4057c7bd21c8425a
|
File details
Details for the file pynw-0.5.0-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: pynw-0.5.0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 242.4 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69c1cbc2b3664a2cdd92aaba28517c0ec203f36221d4353ed997cba22245ae49
|
|
| MD5 |
edb374546b7a46e6530789f8626d1f12
|
|
| BLAKE2b-256 |
7ef8eb1e36d5ecf098e72a4b2206d06cb68a7512f3decd40867562496f2e1cf2
|
File details
Details for the file pynw-0.5.0-cp311-cp311-macosx_10_12_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-cp311-cp311-macosx_10_12_x86_64.whl
- Upload date:
- Size: 252.6 kB
- Tags: CPython 3.11, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8af203f08169b9d38fe41bef56ca92bb809323198b9c5abdcaa85772e1e1056
|
|
| MD5 |
b1de529e48c3e32c640e381d941fae4e
|
|
| BLAKE2b-256 |
b02e6c9645d25d13f0d999f87403f506806ef26890b3635a95a35dfc99bffd27
|
File details
Details for the file pynw-0.5.0-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: pynw-0.5.0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 149.4 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98ce80f789ac38f59d966221a7993eb2f482a7e8bbcccf616ce6ede372512c8d
|
|
| MD5 |
6eb5f824207287f852bd497e9dddb1d8
|
|
| BLAKE2b-256 |
e5500ad809fd6eb1ec269188aa0abb66d75439e91a64197c7fb37e63c434cbcb
|
File details
Details for the file pynw-0.5.0-cp310-cp310-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-cp310-cp310-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 479.1 kB
- Tags: CPython 3.10, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d513ab601e2ae515dc392619c8142246d71fb70c70701ac577cdf9f152b1085d
|
|
| MD5 |
4605a5d863d9d23b4cd887d93ef11c5c
|
|
| BLAKE2b-256 |
0111dc7368e7cb0396b46b8b67632ef9455512344bb54f21bbeff3a5f558b58f
|
File details
Details for the file pynw-0.5.0-cp310-cp310-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pynw-0.5.0-cp310-cp310-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 443.5 kB
- Tags: CPython 3.10, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0bb445ca744f7f7c01939ba280b981300cb2c18cac6de3a3fbef595da4c57b4d
|
|
| MD5 |
d3bbbc2e057a8b394c6b8b2338d5adcb
|
|
| BLAKE2b-256 |
cbf5b3f41b3c411a3d7a36253b2cc735fee66d585a47f82a587dcdb248d7fc91
|
File details
Details for the file pynw-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: pynw-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 268.1 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
10f9a6574765408cd83b5b3efdea19797497beaf07dbc444a285aafd3b945571
|
|
| MD5 |
24975bb959804fb2979cf6da6b860a74
|
|
| BLAKE2b-256 |
986ab690f9a0f453d6af9d64cad5b6680e09250ba9176ed911e27999290d3c4e
|
File details
Details for the file pynw-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: pynw-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 266.4 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3bb6f2d87f79a1d9c2d477ba6257b738a4751cf8a9e6d26426238c2df03dcc96
|
|
| MD5 |
08b77606f48118b332344938f0f66fd1
|
|
| BLAKE2b-256 |
c4841674c01f72e0c0a34bdebf4cf0c0904d6966256d6f54bd3af438fb7056f2
|