Skip to main content

Rust-accelerated Needleman-Wunsch global sequence alignment for precomputed score matrices.

Project description

pynw

Check Build PyPI Python License: MIT

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:

  1. Build a similarity matrix. Compute pairwise scores between every element of your two sequences using any scoring function.
  2. 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.
  3. 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)

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.

By default, 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.7,
)

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)

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

MIT

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

pynw-0.4.2.tar.gz (66.0 kB view details)

Uploaded Source

Built Distributions

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

pynw-0.4.2-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl (480.0 kB view details)

Uploaded PyPymusllinux: musl 1.2+ x86-64

pynw-0.4.2-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl (443.4 kB view details)

Uploaded PyPymusllinux: musl 1.2+ ARM64

pynw-0.4.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (268.8 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

pynw-0.4.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (266.3 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

pynw-0.4.2-cp314-cp314t-musllinux_1_2_x86_64.whl (477.7 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

pynw-0.4.2-cp314-cp314t-musllinux_1_2_aarch64.whl (441.0 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

pynw-0.4.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (264.1 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

pynw-0.4.2-cp314-cp314-win_amd64.whl (148.2 kB view details)

Uploaded CPython 3.14Windows x86-64

pynw-0.4.2-cp314-cp314-musllinux_1_2_x86_64.whl (479.4 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

pynw-0.4.2-cp314-cp314-musllinux_1_2_aarch64.whl (443.0 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

pynw-0.4.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (268.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

pynw-0.4.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (266.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

pynw-0.4.2-cp314-cp314-macosx_11_0_arm64.whl (242.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pynw-0.4.2-cp314-cp314-macosx_10_12_x86_64.whl (252.6 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

pynw-0.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl (477.7 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

pynw-0.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl (441.1 kB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

pynw-0.4.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (264.4 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

pynw-0.4.2-cp313-cp313-win_amd64.whl (148.1 kB view details)

Uploaded CPython 3.13Windows x86-64

pynw-0.4.2-cp313-cp313-musllinux_1_2_x86_64.whl (479.6 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pynw-0.4.2-cp313-cp313-musllinux_1_2_aarch64.whl (443.1 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pynw-0.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (268.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pynw-0.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (266.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pynw-0.4.2-cp313-cp313-macosx_11_0_arm64.whl (242.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pynw-0.4.2-cp313-cp313-macosx_10_12_x86_64.whl (252.6 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

pynw-0.4.2-cp312-cp312-win_amd64.whl (147.9 kB view details)

Uploaded CPython 3.12Windows x86-64

pynw-0.4.2-cp312-cp312-musllinux_1_2_x86_64.whl (479.2 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pynw-0.4.2-cp312-cp312-musllinux_1_2_aarch64.whl (442.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pynw-0.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (268.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pynw-0.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (265.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pynw-0.4.2-cp312-cp312-macosx_11_0_arm64.whl (241.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pynw-0.4.2-cp312-cp312-macosx_10_12_x86_64.whl (252.4 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pynw-0.4.2-cp311-cp311-win_amd64.whl (149.6 kB view details)

Uploaded CPython 3.11Windows x86-64

pynw-0.4.2-cp311-cp311-musllinux_1_2_x86_64.whl (479.5 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pynw-0.4.2-cp311-cp311-musllinux_1_2_aarch64.whl (443.3 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pynw-0.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (268.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pynw-0.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (266.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pynw-0.4.2-cp311-cp311-macosx_11_0_arm64.whl (242.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pynw-0.4.2-cp311-cp311-macosx_10_12_x86_64.whl (253.1 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

pynw-0.4.2-cp310-cp310-win_amd64.whl (149.8 kB view details)

Uploaded CPython 3.10Windows x86-64

pynw-0.4.2-cp310-cp310-musllinux_1_2_x86_64.whl (479.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pynw-0.4.2-cp310-cp310-musllinux_1_2_aarch64.whl (443.6 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pynw-0.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (268.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pynw-0.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (266.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

File details

Details for the file pynw-0.4.2.tar.gz.

File metadata

  • Download URL: pynw-0.4.2.tar.gz
  • Upload date:
  • Size: 66.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for pynw-0.4.2.tar.gz
Algorithm Hash digest
SHA256 52a294dc5e1be3f29dd75af7b5661d8b8cfc677825fa0c8a39f415fa934a8707
MD5 4ca25bc781628bfcbfe48d21e9aa5524
BLAKE2b-256 2036cb0f7817385355cac8f828165727b940513617923525527c69cc10f76bb5

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 08cecbb85471ead96589489a2ff119935757ebbba61e8f6d6d5b2fe2bbeb3b15
MD5 85a776b982902136d3dca99499ce40b9
BLAKE2b-256 b88d7f1979c7610cc60b37d1310236938d61b31966d040b13ff965e1c217808b

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 941b88201cbb61796509f89e41721be1bf39286696bd3af680c6c53c35b1d03d
MD5 c9eaa152833e42e62192f642018b7ab3
BLAKE2b-256 4145408813bdf664d6c569be404ed65e2c16c16aeed09c97e7858a65ce41ff83

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a8fc6625fa6f5d9cc6710c79ed0771cacca0b15eaf33a01ba9d59fee20a4072a
MD5 310d19690ce3e2cf603673d90ce57908
BLAKE2b-256 46fa605bfc2a26e53dff9fca4d47d8538ec3c969d9d1a2ce37ec28f47d8e623f

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 baffc416ea1ca960536c485b6402e8fc42ddad87ecfcaf0406c0607864e17f00
MD5 e4cfadc5d6b0230b2ce7dbc7f22e8f9e
BLAKE2b-256 0aeba51a6957550f7262daeab3976efb7afc13c9a49e8fd7bccf749693d53adb

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c69426e02d00bebe2c659626cc1175193f2896fe6c95feb960bf5be1127e6dd7
MD5 30d55fd9fc553fb6a14e8a5a6ee4e7f7
BLAKE2b-256 8381bd47b998a6d4959deeed59b63300ef29af95cd1fef8d6dc9ba82c9060e90

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 469d6a8162002fb4119e0a397632489e8d91aa9b25dd1701f9d64d5b3887cafc
MD5 31c93336005d006f3ef127739b313ec9
BLAKE2b-256 02165962b0689c53b607093726b57cd49d02728fbfcba381eaf72fd8c730f619

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8a971906a775f0cab77348bdb10aea6cd0f3b4f79f5c7f522ea7bc490d561725
MD5 0416e0f9276c445bdb10e2ae1046369f
BLAKE2b-256 b2b51b56fc9b4b8005c69bcc624b56c81c89a00936ebb8181c4e0fd9951f1b12

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: pynw-0.4.2-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

Hashes for pynw-0.4.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e7bde7033327dafcc741ed934c51247e294b59f27fed351c811f2e2f5559b4b7
MD5 38db0839aadd175ced26e4491e753b5c
BLAKE2b-256 bcc1761252dd419c66c8ad4f372de26d83ae27f4264c6888ec2a56d0fc085123

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9545098abe60b74b9d3eca1e2c28962366ad4210f34e6dce82b05d814a2c54df
MD5 5371459688c792b9cf92790e45ea8d74
BLAKE2b-256 dd255c4ad3407e428a59103295bd7a72deddd1d74ea6390d9a28ecf9d4f06079

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b330aa6a19feddc71c19e71a532e353dc4ed0c28d7bc7083cfe68edbc5b6c0ee
MD5 2cd07b387521345fbeeeb21d50b11a02
BLAKE2b-256 eed219182d279bcbcda600a28b59110cecc0acc33c176ef34730e3375a9349cc

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f54403e7d6476578419231afc1c6c49229523ee3f87d69bf6cb457f717a36211
MD5 6396c2b1ecb4dd5340a7a6ee48e8b69d
BLAKE2b-256 d1c337a5e517a7b29b2d1b665f40558cd1caf07bf3a3c6fc0c130dda85fc3ba9

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fef00301ca46d655f55312da5475fddd84c3bbd3478f32b0560b565267f6d83d
MD5 bcea0357342172a38d25678a662ae9dd
BLAKE2b-256 0a4dbb7e116997790ebb97291cfcac1bd184371e074420d69f55f56a85551947

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7a55dc09e56ab27dbaa7ddd5b0337895f2319e76964be434a07744cf5261b59e
MD5 070ea9575ed984969ba8c39767972378
BLAKE2b-256 0e453be5a1fde189a67269418d6746ad0e97244a829e4eed951ea3977461b587

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8bdce6df69f0c84575165b754e67b1ae5cc5b9e3934d57c2098cb67b21d829ce
MD5 0a498767295cd75ffbf31fbec84bc2be
BLAKE2b-256 cceef440c5b7eb7d85c8157b7af374fb661a068554fca27c5048cbf648b9c464

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 126c8b8df75bdb9b79a266c385cba753e543f91bf574de9291e6ff254390e68b
MD5 6152f4421b1f41370d57d2ad68cb7166
BLAKE2b-256 2e6b8eabe2fcc005ac28955a32e34e76f248fc9bc93339f123f4aed6c02df053

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cca800f9169ab37753d39912c9793671c1b2f296c3ae92196218a7dfd08d04df
MD5 376607cbd4861e5854edc0b9a9ddc6d6
BLAKE2b-256 a8e695dfb9ad80e047757b9805b9543a182205bf0df97ac25b495680fa87f39a

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3c60c3ae9d0b250c90d0009a83a4fe2b51226d1b3585fc95ce409da818960a93
MD5 30080298ed504374957453b27e2478ef
BLAKE2b-256 d3899e5c8a7ea0505361b571f4640c7ece01424fce3e8ffe16bddfef31429be6

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pynw-0.4.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 148.1 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for pynw-0.4.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 84ddbda6bb4b8032e80890126f0efcaf4ed43e6662caf5b1bb9593b3bec80f2b
MD5 8dd1d71f86edf7b2261ea1d58736d033
BLAKE2b-256 97d5e5ef32001a2dcde18a092b65636b50322a014ceab7374175735640baf681

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 73306b3aa1d9c111b451d299e675e60e96697fa71d4ec4d4c887320bb3599a81
MD5 539a79d8750a38a565e6ce7a1e9afb3f
BLAKE2b-256 b7f86eec6dbab37f2ccc23ccfbd60c66667f647f86ddc31a4fab6d2ada407a9c

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6b1aec05ac0614c086bfac552f8ad66f144941e82f58ca83f87aaa2993590a81
MD5 26e7061529db133ce0407280b3fb5a96
BLAKE2b-256 dbf5c4297da894985ee4592cd0755f28a7ee756601e9499f60b8fd3c600e8a27

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e9ec95dd2f6666cd8aadeb030c2f582bee238e789841de30385ff90092276452
MD5 7e7504949cdcff93bace302665fb6c0d
BLAKE2b-256 8048cdf20a3abfe53e5379587069d00041710b85c9f9f130bea430fcf5374543

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a220bb793b75e5f184a783947d1faf1ee8b94b5dd24ff38e10424026391c4ec7
MD5 5c206dd148701702707b5379808548c8
BLAKE2b-256 782e3458ac3b1a7a1c4754841097606f7eee5b4c7ca1ee1fff0c0053df22d030

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eed9eea5da848376c8464c362b2eaaab4c9966d3112559f98d0a052a6cfc9d4e
MD5 ce927a776782813567ccbd504412a4b6
BLAKE2b-256 25e77061f6faece3ab682b365f6bcc63b7af7bbae881d7012167ec9e09857171

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3c3c6002f6a658f5bae082621f2298a0824ad871dcb6faa257b687dbf57af194
MD5 9c7344bf0fda807ffd70a4008bdae318
BLAKE2b-256 491096088a7b0f8188624ff238302bcc8e7a016201d0cada8cf9460480a5a4b6

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pynw-0.4.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 147.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for pynw-0.4.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bdde48a24d6196e9e7023cb0264802aabb6dda4a1ba668223d4bd9bbc666f0f9
MD5 4e7bffcd3f2cc7add7e4987306a9d7cc
BLAKE2b-256 4b45928a8926193c4fa549eb5e547000fc1fdc070108d7f93cd2fb6e1699acdd

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 301ead59502aac93900a64a67ffd70048f3a7602d74f9a70daf130da89a6cbd1
MD5 023f49c170047bcdc1a0380e72db8506
BLAKE2b-256 a475739222ebc2833f6c27a5b8f33c4ac8d1f093b58310f917576ab2adae0a8e

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ca542a8d967b9d0cc0d9566bfe3632793987f4c2e6b01e7e771a7b96535e7ad0
MD5 1aa977f78ae51c687bdd24bdb4f6a44c
BLAKE2b-256 b93f26e4cccd1a6170fa41d31c6265ac28258f4e84e195c6478099840682e599

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b973939716a57f0fa995a87992e7fdb4c23021612274865a66a08bd5b5b97d7d
MD5 f66e565eaac61207277b53fc1397c39f
BLAKE2b-256 7ecb35c86954b78008e2b6fe3ea660882d6cdb080c673b8dadd8a6d72c4eef3e

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3f76fca0190ae45af35ed195d05ae5a64c01047b489682ec8ee746de66cfd566
MD5 0818a17614cc22b1789b72e311b1d999
BLAKE2b-256 75d9332c2cb5e49e34dbb538c9b35c1fe5180ac890885a53e4c5bf78f3b3bce7

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c57e1cba796f076e42d783328485c09daafd41af6a7c7f623d633515300f832b
MD5 5c751f2a1a4b0051f687ecae0187cc78
BLAKE2b-256 e22f198e6a7cafd254d138ef3e7c31ca785f85d76ccc8be493efceafccd9a8f8

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7d21f09b815d9f8ca23b3a492b558588fc336db07a207deb5d4e40f6037580cd
MD5 d4e415df8972e1113426358f45bf703c
BLAKE2b-256 df1667ab6e2f2a628fdc37b3734a8f9539afcbd1ec0e6ef810de02012df67ceb

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pynw-0.4.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 149.6 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for pynw-0.4.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 aeb2d8f12f5daf2fb4fd73e4c602978f9c25435c48191b388e1f91f6a6b0af4c
MD5 a39a60ffb6f4c5412363fb8b29710283
BLAKE2b-256 f69ba749fb11cf7ecff6c060f58ac58915e62b59c431d91160c764726f215975

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6dd53eedd49a91a13412a7719caa360c5bb53fe11139bd1b942444b2b1d9a4d3
MD5 7af1d1e28665732f050678c1e17d870f
BLAKE2b-256 a1f1c554300b590a5f4e84230e7fe11aaa2841154f8db7fbb65950e35aaedd87

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 68def4f96c03bf0c59282b10f5df88376fb1eeb5ade24968204038d39f3dc0c6
MD5 71451e88d9ec55b607fc398eeaccde6a
BLAKE2b-256 49f6e3d9d3adf6c6c00ce9615f90b461d98d857165b7745c5d17714c3d9bcbaf

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dadf58127dbbf88feaa5033a19a449a9d4fe081a45eb2986d4452235fd44c82e
MD5 41d1e2d21fce994de66e545e5a53bb9a
BLAKE2b-256 3697ae192ec393842a0c15d36e4532d08a9c429c708629a85e710725c5ce5cb7

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9961f9f62baba5d7ecbca14e299634df52a77cfefbb9569917f6a04848b1be5f
MD5 da2d0b734fa69950581a3306c85ac940
BLAKE2b-256 38e8b7162e4354988b2c5118d53957941fb22b9e05c2cf3e91c2564fbffe3a97

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 63bab3bf34321f67e9b7c7da88a4556b0e78525700ec58e3cf543a3c4a798f94
MD5 47016711a45a82a9ec67bf38936e7866
BLAKE2b-256 04f1b968fb46f891db1565413df5e60690e159692c3d928008f620dc0b6b160a

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 42a3c8ead2992d5ba118709ad70b803e3214fcdcd43e5695b5b524fc4002136b
MD5 661afd83dcef3396f433fcf9618fc664
BLAKE2b-256 a8d1b51ed967bafdabbf8b036fa566c61b0dfae564e397f570a2c29d5845c792

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pynw-0.4.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 149.8 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for pynw-0.4.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ee00bbf20ef6502b38038b1c03695baa53c116ba15ead446b8078ff634f62a53
MD5 8e96c7758af07a79731588523eea23d2
BLAKE2b-256 4b5db6ad9da7070b0a3e29215c8f49e736ba7f033a2e744cf60721e80d27bbbe

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8588ec05bcbaf464d73521501322263114e639ff9e50a5ae52046560bd61c978
MD5 de27b74d72611e546fe723dea0dab357
BLAKE2b-256 6969b2d8bb6120c33ebc5ba8c7b730050d0e0420042804407fb402a4fe8f2c15

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5aec2ce01ddb6a0e2e8b91725989af1cea3a42cb1ce75a3111f214c38d26648f
MD5 eae83485eb06575e5ddb76222551b368
BLAKE2b-256 ba35a501f8a7a58f83e63fd39b1deed80973f0f09b6cd61d13a12a9ed3763273

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cf5e3ee617855dd7e0f27991a385f33140e317102c010cb56a10366bcbb90988
MD5 549eade1761be4bd416c961f2806cc39
BLAKE2b-256 ec373a6db39bd56fd5ee129625cd168627368afa1e2453bd0fd55716e33e2326

See more details on using hashes here.

File details

Details for the file pynw-0.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pynw-0.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 09e55bfdea533800562771309f0c0a4072f5258728c42ecb21ff3acad55a8444
MD5 4e5fd7cafb2fc617c0d9ed4fba89a130
BLAKE2b-256 17cffddf3b13b50b46b091f43f5093d48043e6901afe053196af363816fe1aea

See more details on using hashes here.

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