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, 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

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.5.2.tar.gz (66.2 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.5.2-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl (474.7 kB view details)

Uploaded PyPymusllinux: musl 1.2+ x86-64

pynw-0.5.2-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl (439.6 kB view details)

Uploaded PyPymusllinux: musl 1.2+ ARM64

pynw-0.5.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (263.3 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

pynw-0.5.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (262.9 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

pynw-0.5.2-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (260.3 kB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64

pynw-0.5.2-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (261.5 kB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

pynw-0.5.2-cp314-cp314t-musllinux_1_2_x86_64.whl (471.5 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

pynw-0.5.2-cp314-cp314t-musllinux_1_2_aarch64.whl (436.5 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

pynw-0.5.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (260.6 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

pynw-0.5.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (260.1 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

pynw-0.5.2-cp314-cp314-win_amd64.whl (145.8 kB view details)

Uploaded CPython 3.14Windows x86-64

pynw-0.5.2-cp314-cp314-musllinux_1_2_x86_64.whl (472.7 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

pynw-0.5.2-cp314-cp314-musllinux_1_2_aarch64.whl (437.8 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

pynw-0.5.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (261.6 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

pynw-0.5.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (261.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

pynw-0.5.2-cp314-cp314-macosx_11_0_arm64.whl (240.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pynw-0.5.2-cp314-cp314-macosx_10_12_x86_64.whl (250.0 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

pynw-0.5.2-cp313-cp313-win_amd64.whl (146.4 kB view details)

Uploaded CPython 3.13Windows x86-64

pynw-0.5.2-cp313-cp313-musllinux_1_2_x86_64.whl (472.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pynw-0.5.2-cp313-cp313-musllinux_1_2_aarch64.whl (437.8 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pynw-0.5.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (261.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pynw-0.5.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (261.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pynw-0.5.2-cp313-cp313-macosx_11_0_arm64.whl (240.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pynw-0.5.2-cp313-cp313-macosx_10_12_x86_64.whl (249.9 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

pynw-0.5.2-cp312-cp312-win_amd64.whl (146.2 kB view details)

Uploaded CPython 3.12Windows x86-64

pynw-0.5.2-cp312-cp312-musllinux_1_2_x86_64.whl (472.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pynw-0.5.2-cp312-cp312-musllinux_1_2_aarch64.whl (437.6 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pynw-0.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (261.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pynw-0.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (261.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pynw-0.5.2-cp312-cp312-macosx_11_0_arm64.whl (240.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pynw-0.5.2-cp312-cp312-macosx_10_12_x86_64.whl (249.6 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

pynw-0.5.2-cp311-cp311-win_amd64.whl (148.6 kB view details)

Uploaded CPython 3.11Windows x86-64

pynw-0.5.2-cp311-cp311-musllinux_1_2_x86_64.whl (474.0 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pynw-0.5.2-cp311-cp311-musllinux_1_2_aarch64.whl (439.2 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pynw-0.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (263.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pynw-0.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (262.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pynw-0.5.2-cp311-cp311-macosx_11_0_arm64.whl (242.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pynw-0.5.2-cp311-cp311-macosx_10_12_x86_64.whl (249.1 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

pynw-0.5.2-cp310-cp310-win_amd64.whl (148.8 kB view details)

Uploaded CPython 3.10Windows x86-64

pynw-0.5.2-cp310-cp310-musllinux_1_2_x86_64.whl (474.3 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pynw-0.5.2-cp310-cp310-musllinux_1_2_aarch64.whl (439.5 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pynw-0.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (263.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pynw-0.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (263.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

File details

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

File metadata

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

File hashes

Hashes for pynw-0.5.2.tar.gz
Algorithm Hash digest
SHA256 ea7a373426ea9c3e718bb0bf8e9fe4be70e7bffd50de2e62c8a959041a3da176
MD5 7abd64652ca71c2969cc1a0f3ff6dbc0
BLAKE2b-256 1b2ed25aa5fe530534b83a1cbc677a9b15804fa35ec1f3107ebc3013556153d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b3b411699ec77675d482703d74bc05545ad6b351d1b4807dd8b57e30b3a92a74
MD5 d5db5007c7674b035bf2f4260f669dd7
BLAKE2b-256 179e60fec31efd7cc2c50c5e2dfcd980edf68ebbf479dac44b7037495be3078a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4198c9e2a3e67b0fced16c6bbd1988865b1b2b1ffc0d40894af6d2fc22236053
MD5 d5e104512d091a35d1fa11c71ac49d96
BLAKE2b-256 912a45d48db29e0ba46bedf8181df032733ebadf1d6dad4efa38d09c1aa3952f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 86a891bed2844d043e655cfcfd828ab790052a40a403714c9b8c733ea9229045
MD5 0cc53baf0ef66782a96221329c773b5d
BLAKE2b-256 cfa570a63690021edce7263525b402af8b56f2f075f4d90a173dc0527fba73b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 833eb40f46f8dc506182eec5ec3196457a011d26850c628c7f75afd32083f2bd
MD5 38e137d20c84f16e9b70ef4b23f3f1f0
BLAKE2b-256 83054c7c96a81fff44b71e675dccf11c6af914e7acc556a4c6a290c3a5d56dcf

See more details on using hashes here.

File details

Details for the file pynw-0.5.2-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.5.2-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9a6ebddcc698617de2df9541ae4b0fb1aec7f74526d8eed11dc976e28fa34833
MD5 6e20a85e0f6874e47600adb58a209ce1
BLAKE2b-256 85153f2448ecd9eaea4ffef30faf2be61a7a9c05d116aea70ea462b8f5b13f5e

See more details on using hashes here.

File details

Details for the file pynw-0.5.2-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.5.2-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b7824a6bb64122708e45c03931d1db8720e062804e5f734a4c93d3dd554edc1e
MD5 37ff4c29f460541f037fe3ffa44a57f7
BLAKE2b-256 f6128ccf5870817e90221c96966d29d98516c7dad0480bc23137276424aa1a32

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 26d4fe4ba9ff914d2e9c9f7d697b2ab0160c643de7610e1751567f6805f9005a
MD5 d603999f8c717d6812621be5cc81969a
BLAKE2b-256 791ff8c2aebeaf21d730ff3cc43dc8ac34eb0c8bdb7514861bc8202db0e631b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 596398a84f82ab5d194c110fa43242f5b9601798e3adf841c7737d2405355825
MD5 42b010936d28ad689ea6bab21871ebd5
BLAKE2b-256 df17b95c0837c9292e76490053e35090d34b8ff8d36c94bfa970cc69b8a59029

See more details on using hashes here.

File details

Details for the file pynw-0.5.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynw-0.5.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1725a00cafd21c49f7c10330cdce83469dc5716bfc525201b7c32f40d1d4213d
MD5 80b64adf95ed7801637087becb53f580
BLAKE2b-256 67eb1b4f1e09616a5309f9701a7202bf104e7a7d91f4b015057e8572ceb2c74c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 554d8343e1e413981655a10efa528d2bda804ddbba7fbfc6f9ee06c51e82d7ad
MD5 412fabba2f4581586b978c7414d53939
BLAKE2b-256 47fac60474088e4ff309bbfb17dbb13949e6a61df8bf5ca7746b2d26a3902e3f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pynw-0.5.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 145.8 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for pynw-0.5.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 cbe8bbecc5c92e6150483e21e7e98832f0bd2f164f706b5b5f1ea0681aef38ea
MD5 de31fa351a179d8377bfc0863e5c777e
BLAKE2b-256 2fdedb49b628442dd75dc27b4e2921820696095a75c2e8cb76673f60104784dd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b83193af52c8c535fafe4b115f0511908885a41e880997c646e82eb538373562
MD5 468ab8c174a8e6e1cd699d4d46aec455
BLAKE2b-256 a9767555a977d0bb3046039a7137f83d2307dea1e2ec1426e2837804b256dbed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 94afa4650783ad1b2c3cd9d52a17630d1096159f4d50b7ad6d707e14b4558f4f
MD5 4314fea882ec2400ed8feb4abbf00117
BLAKE2b-256 7c78292f4f3233b824ac85fe39ae635bdf14c5853cab34f414d2ee7fc48783f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1a4628031dba0fed7202e0ae332d287cceca2d47493039bfc79bcffb260ca475
MD5 cdf8af06ef62a96aa418e0bd779dbfef
BLAKE2b-256 382e3764d55bd1f159fc662e92d1a2a1e5b583bdb3176c3a9ebbdf3e1bf86b92

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 614fff187d3a8a7fca1a65b64db730569bf104ba3f0646bdd3413479d1640849
MD5 06eccadddb41cd1d201cfe18b7ea689e
BLAKE2b-256 729952c962d6488d968e9923a09aeb7f355082d6d5e159e129a0e069b7e9168f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 858db0e8dd23f11e7a584857ea76ddb8f5d7e7abfecb56de7a8e58f39dbce9f9
MD5 922b3ba6dafa412514ac56ad8c4e4009
BLAKE2b-256 edd3cfbc6727f4145a702112b843001fef280ec63cee0e7c344dba950acc0f66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 64c7b79ab56b665328920c973c404dbce9f34c5e688f444aa45be89d8a3c2491
MD5 67e0a31a8e6c97ef0a5f5d1efd93be41
BLAKE2b-256 e3fdd566fe01343bbe01181b57f26b93f1fce41f3940695600c40bd8e1a6d92b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pynw-0.5.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1568531bb9c0fd4182c3eb321ea688b876149a661a0b4e829009281da1c7aa49
MD5 351a53afd4ce3d91ec7e03c62e9984ba
BLAKE2b-256 24fac671e87691bead3dd90da4f420b7632340a2058b261dbd2de4a968b75d41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ed571079a9499176c3f35c1c901c9f13333d33008ed1bb04a878346863b5af25
MD5 fef0174e0e122f6eaed3f4ca9da43574
BLAKE2b-256 4d5bd3a9c72dab6d749df0bc24e2bf17fc3813cf7c94c6c0f1a6c15b350fd14b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a08b5186c4489fc43283b4b536f61b32d90260f8e20c694e8dce0a20057bc274
MD5 ef86d1235dec4fd61d481de06030aec1
BLAKE2b-256 54fa2e9ae2be9914fccfcbf52e7f2d16f809df93ae92c09cf57c9fa26a1ad9ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1b8267f3fe7cb037faae7c80e707056bffa0dbe968342dc166fe16228160217c
MD5 5c21aa13370b51ebadaa5a4e32529afa
BLAKE2b-256 9e8d3e142275bbb62cc09fc1c61eb7c1d4baad2d9ff3cd8a76887f1d8e4e1f5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0196a7e0683c0dc4779591f90c719888186b7f6e6a0f6b29db7c5f30293d0df5
MD5 97572178a107f062c38205f8bf1aac21
BLAKE2b-256 07579843ba3061ff63a8814e4a9c4cd431fa78a7cf0692db75f3be2bc62fc4fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a51d37a275655797ca85e840a631100f0a8717c082079be1fa9eba87008923fe
MD5 db150cb281cf9b67c2c695869b287439
BLAKE2b-256 6eca8994d74db50be9584150c5bdf6551d3af4c2a31ee3285926374445edb3bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dede471b42e7c7a7314250aca7c95816e3df7f8ff633749340721e14c24bf6d8
MD5 cb33c1d947298924670e3706a3f811b5
BLAKE2b-256 35f526f20e12aa7c8a67b5394c3357716aeebbd07b38d97687ad72c91d45a591

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pynw-0.5.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 67506bb54e03d080ad9659e513519b6f7a94864770cab24519e2f9e3c86c1955
MD5 cc7d98542278cf093df63c8730d4de02
BLAKE2b-256 32a10783d2d97bf9c36178d1510e87610826c7414ad43b4ee8b504b61a14491b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a681b1323b54952926298291e6af5dfe0e747acae7196b7595bb8825dca8164f
MD5 c46065645df13ee44cffe14d7061cdf0
BLAKE2b-256 15ef541fb61b944c2e5c67880db99a4c82e944ad5b0e21bc34eb094ebc900725

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0be5b9e5e29cfe56caac56f532ff0f50fcbc2c14201d831e0853ce87f22a94f4
MD5 bab5e244027caf9aa2be6cfd7a007c69
BLAKE2b-256 a1f9642c51c4e419abef2b9b4ae58bdd10e9f162e15edfc2dd34f2b40a3c1509

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 712869ca3fb66612dd7fa471bf21022a7afbe1866d8808656660cb5cc5dc71a2
MD5 dd74cd182507e4decd9c2fde16ec1e39
BLAKE2b-256 9159804eb9efdc7994f7ba1b31442fcefb6124507cafa78f0d045eea3b6f6def

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2a6d28c5a5bcd32f38d4b6ae3b73e0ce58d496ab0476e1d89f787d689148fd5e
MD5 9a16cea2f1e9c9746fcfd3fe1eb1a85f
BLAKE2b-256 03bb73b8c296e3abe6267c1d58facd518898b012baec0796a83cdc7b26a3b89d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e321c61119ef7030a434ba784d3a14b243efff29e53537eedd8fcebe7c1a5f58
MD5 49e82c576dc6eb4b4cd9157a17338662
BLAKE2b-256 b068b3af2f0b6bcaef2edd152ff9f2947ae8b32fca086a3aeedb6d2e809d2ff7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8f202f577180e37f3658874e544d03d61381458abeb6889e14e752f39bf97564
MD5 a14ea752a2a7e3aa03c40ec3a4f58f2a
BLAKE2b-256 8ffc38873648843ae20890b641aef8816b7644b3a47ed37f07eed53fcf1e966b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pynw-0.5.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 700c823af6f27274167f91e5ba496328a58a935a80f76b12c0049a30d5b399a2
MD5 44e762db9846c836c8ec915ecdfaf314
BLAKE2b-256 cc41f7e66c72602609fb8106a1e4a13bdaf620422ca2808bf86cf4dc86e7a818

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bebb54c2a89c439bb753e5d914c1e2f51b0d0004ff563de3feb5dda3c946d0b7
MD5 ae8dad34d1c29c6514a94ac0903386a0
BLAKE2b-256 40a67be3d6f820ceb372c93c2f433a957fc4a97c5409b7cb36d8921880bed21c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3edc845c5620893909315361dd73a1cd5ac052f407c4dd07fd5aeba9c9e57170
MD5 f87d1118c26178185a2d1c0c65116b8b
BLAKE2b-256 29ab4a6899a921f06fbf98b89305a3702d55ce35ef09244000016cf5e3ebdf6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e4ddd715fb765a783845a4c0bfaa2732d9e1f252a7765dda1de6df776ad9ef6f
MD5 a096a203a9bbe4a9438ad2a89c3ccbe3
BLAKE2b-256 0b551de7d625daf0f52a5ad32f18028c16659e2809e4affc51df083d5e16761c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 327cc8be1c91702e56ce9b8fa70af0ad21d077138fc5b765cc01b82183b6e950
MD5 dc0770de1a90297d9cb070a90d07be90
BLAKE2b-256 68823fb9925754d14e24e49eff5a6abf82b3500d84ed8940dc13a97bc2a87b31

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 63a3864451805e580e36b90ca9b9e198734ba8a8489c1cdfbe6b2deb753c2cf5
MD5 87df23cab7e469fee041c1cb54bd2122
BLAKE2b-256 619ea820f4934fbf0e4e2c440f2ce0cd42467df072f9c69fa3d3b617e7262873

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0f4ad4e19f915aed72d0a5651f4662f1f3b3bd363fedc712e386413240e2d353
MD5 06c3f61949012a9bbef78fb4ec2b3f01
BLAKE2b-256 f2bde76c10c2e938c2d596e8a4554b9a1a9d97876e126f44022af954528352e5

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pynw-0.5.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 9f54d539f588fff7ac51718b893200614f05491b775e0290cc51a82f6911ed92
MD5 40085c17eec8e7b1093d9b12ce1a914e
BLAKE2b-256 9fa0cd46ec9ce2c17d2ccafcef0ababf91e461c4e088dec050b90e52d46f912e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0fcfd1f6d72af87a86cbacc4627d34de42e914e9e0ca9f7636122e8a05c452bb
MD5 c7455ff41be3de8efd3e79de83b4af3e
BLAKE2b-256 cbbf5ba6205d0ef2ade08112ab1720f6bf47c38c8b4236b1c5eeb0f7a1d72554

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 07addf9397a17d996bae5c2213fd024d6bc37c17994ec8351f9353eb6f4af60d
MD5 1923355ca56d000468f88a4b59ea81ed
BLAKE2b-256 afe3380acd0ef61e8b8a5b20b573eed7a2d75ea2d34c5c1085db56da27fbb839

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cc04c92aed78cec4fd7f46d4045cbc4f729f50ea1bd617ed55d3f655bbe14236
MD5 2fdd2fc6369f3b450fe657ad1f9bd685
BLAKE2b-256 bc7d497918ff3c926de9f60092328cea92d39af2bad3a6154eab797b624eb317

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pynw-0.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d9892007191c5d77bb6ceb85187af9ce9ae530c0ed4e5e46b7d77800648e5a63
MD5 dfe145020eecb68fd2e24c0695733ffc
BLAKE2b-256 1ef515d06aa442bc77d1355af6c8e2d4b823ed672e613192f7b45b4a263d15b1

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