Skip to main content

String algorithms

Project description

PyPI version Downloads Test Build and upload codecov DOI

pydivsufsort: bindings to libdivsufsort

pydivsufsort prebuilds libdivsufsort as a shared library and includes it in a Python package with bindings. Wheels are built for Linux, macOS and Windows (32 and 64 bits) using cibuildwheel and GitHub Actions. Basically, you should be able to install it with pip install pydivsufsort on any system and it should work out of the box. If it doesn't, please create an issue.

Features:

  • bindings to divsufsort that return numpy arrays
  • handle string, bytes and almost any integer data type (e.g. int64) and not only char
  • algorithms work even for non char inputs
  • additional string algorithms coded in Cython

Installation

On Linux, macOS and Windows:

python -m pip install pydivsufsort

We provide precompiled wheels for common systems using cibuildwheel, and a source distribution for Unix systems. Manual compilation on Windows might require some tweaking, please create an issue.

Features

All methods support string, bytes and numpy array inputs, including datatypes greater than uint8_t (e.g. uint64_t). Below are the signatures of all methods exposed by pydivsufsort. To import a method, just do from pydivsufsort import method_name. All methods are documented in the docstrings. You can display them with help(method_name).

A nicer interface to reuse computations lazily is provided in WonderString but currently undocumented. Please create an issue if you are interested.

Methods exposed from libdivsufsort

  • divsufsort(string): suffix array
  • bw_transform(string): Burrows-Wheeler transform
  • inverse_bw_transform(idx, string): inverse Burrows-Wheeler transform
  • sa_search(string, suffix_array, pattern): search for a pattern in a suffix array

Additional string algorithms

  • kasai(string, suffix_array=None): LCP array computation (lazily computes the suffix array if not provided)
  • lcp_segtree(string, suffix_array=None, lcp=None): build a segment tree for LCP queries (lazily computes the suffix array and LCP array if not provided)
  • lcp_query(segtree, queries): query a segment tree for LCP queries. Queries are pairs of indices.
  • levenshtein(string1, string2): Levenshtein distance
  • most_frequent_substrings(lcp, length, limit=0, minimum_count=1): most frequent substrings. See the docstring for details.
  • common_substrings(string1, string2, limit=25): common substrings between two strings.
  • min_rotation(string): minimum rotation of a string

Example usage

from pydivsufsort import divsufsort, kasai

string_inp = "banana$"
string_suffix_array = divsufsort(string_inp)
string_lcp_array = kasai(string_inp, string_suffix_array)
print(string_suffix_array, string_lcp_array)
# [6 5 3 1 0 4 2] [0 1 3 0 0 2 0]

# You can also convert the string input to integers first

import numpy as np

int_inp = np.unique(np.array(list(string_inp)), return_inverse=True)[1]
int_suffix_array = divsufsort(int_inp)
int_lcp_array = kasai(int_inp, int_suffix_array)
print(int_suffix_array, int_lcp_array)
# [6 5 3 1 0 4 2] [0 1 3 0 0 2 0]

Development

You can install locally with

pip install -e .

A useful command to iterate quickly when changing Cython code is

python setup.py build_ext --inplace && pytest -s

Profiling

Profiling can be activated with the environment variable PROFILE:

PROFILE=1 python setup.py build_ext --inplace && pytest -s

Here is an example with line_profiler (requires pip install "line_profiler<4"):

import line_profiler
from pydivsufsort import common_substrings
from pydivsufsort.stringalg import (
    _common_substrings,
    repeated_substrings,
)

s1 = "banana" * 10000
s2 = "ananas" * 10000

func = common_substrings
profile = line_profiler.LineProfiler(func)
profile.add_function(_common_substrings)
profile.add_function(repeated_substrings)
profile.runcall(func, s1, s2, limit=15)
profile.print_stats()

Testing

pytest

Technical details (for performance tweaks)

libdivsufsort is compiled in both 32 and 64 bits, as the 32 bits version is faster. pydivsufsort automatically chooses to use the 32 bits version when possible (aka when the input size is less than 2**31-1).

For best performance, use contiguous arrays. If you have a sliced array, pydivsufsort converts it automatically with numpy.ascontiguousarray.

The precompiled libraries use OpenMP. You can disable it by setting the env variable OMP_NUM_THREADS=1, and it will yield the same performance as the version compiled without OpenMP

The original libdivsufsort only supports char as the base type. pydivsufsort can handle arrays of any integer type (even signed), by encoding each element as multiple chars, which makes the computation slower. If your values use an integer type that is bigger than required, but they span over a small contiguous range, pydivsufsort will automatically change their type (see #6).

Acknowledgements

Citing

If you have used this software in a scientific publication, please cite it using the following BibLaTeX code:

@software{pydivsufsort,
  author       = {Louis Abraham},
  title        = {pydivsufsort},
  year         = 2023,
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.7932458},
  url          = {https://github.com/louisabraham/pydivsufsort}
}

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

pydivsufsort-0.0.11.tar.gz (245.3 kB view details)

Uploaded Source

Built Distributions

pydivsufsort-0.0.11-cp311-cp311-win_amd64.whl (232.6 kB view details)

Uploaded CPython 3.11 Windows x86-64

pydivsufsort-0.0.11-cp311-cp311-win32.whl (193.8 kB view details)

Uploaded CPython 3.11 Windows x86

pydivsufsort-0.0.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pydivsufsort-0.0.11-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (1.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

pydivsufsort-0.0.11-cp311-cp311-macosx_10_9_x86_64.whl (282.2 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

pydivsufsort-0.0.11-cp310-cp310-win_amd64.whl (229.9 kB view details)

Uploaded CPython 3.10 Windows x86-64

pydivsufsort-0.0.11-cp310-cp310-win32.whl (194.3 kB view details)

Uploaded CPython 3.10 Windows x86

pydivsufsort-0.0.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pydivsufsort-0.0.11-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (1.7 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

pydivsufsort-0.0.11-cp310-cp310-macosx_10_9_x86_64.whl (284.1 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

pydivsufsort-0.0.11-cp39-cp39-win_amd64.whl (231.3 kB view details)

Uploaded CPython 3.9 Windows x86-64

pydivsufsort-0.0.11-cp39-cp39-win32.whl (195.4 kB view details)

Uploaded CPython 3.9 Windows x86

pydivsufsort-0.0.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pydivsufsort-0.0.11-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (1.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

pydivsufsort-0.0.11-cp39-cp39-macosx_10_9_x86_64.whl (285.4 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

pydivsufsort-0.0.11-cp38-cp38-win_amd64.whl (231.9 kB view details)

Uploaded CPython 3.8 Windows x86-64

pydivsufsort-0.0.11-cp38-cp38-win32.whl (195.4 kB view details)

Uploaded CPython 3.8 Windows x86

pydivsufsort-0.0.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pydivsufsort-0.0.11-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (1.7 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

pydivsufsort-0.0.11-cp38-cp38-macosx_10_9_x86_64.whl (282.2 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

pydivsufsort-0.0.11-cp37-cp37m-win_amd64.whl (228.0 kB view details)

Uploaded CPython 3.7m Windows x86-64

pydivsufsort-0.0.11-cp37-cp37m-win32.whl (193.8 kB view details)

Uploaded CPython 3.7m Windows x86

pydivsufsort-0.0.11-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

pydivsufsort-0.0.11-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (1.5 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

pydivsufsort-0.0.11-cp37-cp37m-macosx_10_9_x86_64.whl (278.8 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

pydivsufsort-0.0.11-cp36-cp36m-win_amd64.whl (238.9 kB view details)

Uploaded CPython 3.6m Windows x86-64

pydivsufsort-0.0.11-cp36-cp36m-win32.whl (203.2 kB view details)

Uploaded CPython 3.6m Windows x86

pydivsufsort-0.0.11-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

pydivsufsort-0.0.11-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl (1.5 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686

pydivsufsort-0.0.11-cp36-cp36m-macosx_10_9_x86_64.whl (278.5 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

Details for the file pydivsufsort-0.0.11.tar.gz.

File metadata

  • Download URL: pydivsufsort-0.0.11.tar.gz
  • Upload date:
  • Size: 245.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for pydivsufsort-0.0.11.tar.gz
Algorithm Hash digest
SHA256 cd6cb98c93b8538fb49f6c468a45126825747e5d0e4a694e1c9e22ed0568b377
MD5 6e9b0d1da5b9c883d00987ea1587eee5
BLAKE2b-256 29530be288764de76ab77b5df558e9822be5591da916acc1fab4283196697380

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 45064e475ab926df4897bcc6ab48b6399c454637f1ea31bb0758416fdc0f9c65
MD5 ffbd47d8fad395daa62ebec2e1faa53d
BLAKE2b-256 eb4592e53f28431ad31d2f3fa06cfb11d40d964083d2ac58551f9239aeae5f01

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp311-cp311-win32.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 d3b590193c1c6caf6bb400bf3d68a33d8c3698f17be6678f267e9d79e27b9ba2
MD5 d10274a039adfbea80da9956c02ed25b
BLAKE2b-256 89cb98419a8081db761114d5d065ae49ab0ac238cebd178cf50c853ecb679288

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e0687d1239207a4f0ad23bd89c2e7034ee0762cdc3b314e0cbb5d77438c5587c
MD5 aaa6a55c814e25e4f5ebd704b7d43de1
BLAKE2b-256 39519efcd9408703bed8be40d3daff4bf991f25f0b6fbec261b91e87f0aa0294

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 059e1aba39997aeb55199982fa1423ae46de59f286ee3f5c3da72aa9e85fcd6f
MD5 02f628834622467294195836a3762ae2
BLAKE2b-256 b6e69f5b12c47c540c02550eb21552552f3122061af8b2192567327920fa19f3

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e4df25c4004d829dce2d4b43a47c0f89fa45e0edd0d30eeef40e3eaa51acf0e0
MD5 2802a49d86de6b0800c84e3da8e0a604
BLAKE2b-256 65c010a08dca31d177bbb534261d841f088b6ac396c1c175654fd8ccc29caef1

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 49db706d8105531b9cbf44a897a625553dd1ba89b1f405801fd0c5270c37966c
MD5 f48e9b3d58253377375be4dd6d1e2ba9
BLAKE2b-256 2fcb5b409d750b6eb259c8d5cd9e3cf88607c8d6919b2a98031de931fff48c2d

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp310-cp310-win32.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 a069fb305431d12f612383ac05aec925b500041055f53b146152c45a81f6954c
MD5 33000ca00e2a7016b63a0e2b6904a089
BLAKE2b-256 e0aedf4268f7af7611b266573a88023f14b991e7a6265929ce6e30f06acde029

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1aec18ebd1f12896baf73977a09e7bc108776b5a8b387240f6d15d1b86346f3d
MD5 1b286b72df0361ac0544cc8e8ff9932b
BLAKE2b-256 475918327dfb228818d7b6f8c09eebdfdd645b50002649d4d2bb765b4332f5e0

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a466e75b07f37cb61e7b39e8299bdbf51ca31d26ff3f55b7d9b0854d02759f0c
MD5 c94baa9f1f83f943dea46d753a7fc739
BLAKE2b-256 12a8ea292d4044c855d8bce5397c6cf4c5e9ca7cce463bac2bb9d214000ed2d2

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4639466431b8932b1d0b2ad80e88577332921d1b09052b726cdc6ee29758344c
MD5 ee71f523118526495ebcc2839728b515
BLAKE2b-256 1b87c9276c334cd66f89eb9712664f15d8fd9bfba6d38bea8226172aff25bf38

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 4d9c6f414df8cfb9b884572d3c78d85ef02b377dfb623c0104610d47b8ae90e9
MD5 86040d06d61627540c2041b20e5042bd
BLAKE2b-256 cb8385eb977d3fac6ec17772e3bfb3b4c73fcb1d5807c5404adcc67629150942

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp39-cp39-win32.whl.

File metadata

  • Download URL: pydivsufsort-0.0.11-cp39-cp39-win32.whl
  • Upload date:
  • Size: 195.4 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for pydivsufsort-0.0.11-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 a5f143f01d3b22f1abd3ca61cd71ad00210997d7a9110078b70bcbdb5e20d03d
MD5 12278832af5a1adc8b393b80143aec3d
BLAKE2b-256 67a9016af5e6d840752af5ff9571382ce8e6101a555c0b893ed8e938840a6f48

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9c9180900cac8ee3080445b9e34518e61199b5a507cb86e8b3c7aea420893b44
MD5 de3ba1de6de62f36de698e3dd89b25fa
BLAKE2b-256 a536ca1ced044040b3039ec818c1c707f0c307061ba92fc20b637d9d6fe8bfaf

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 60b4d1100a41a4ac23da1b9f0d5af68d1d3b51f26b2816c14af1b5de61aeccff
MD5 6a7f1121bb7915c39c5b3fcfcfe110a8
BLAKE2b-256 a058ea653003a7b52ed314e529d038f6f055c4248086dc67e102404ca27a4395

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a24fd3c111dc78ec214836a6b1ab378b525b0675674b6e1455b2ba4a1e9f199b
MD5 248737b607161d88de4ddf8f9cb4d19f
BLAKE2b-256 62516e6704f68aa4a554c0bcecc600deb080245f7a67865f52f716c137095352

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 3813a675b4baa3db8911be47dfc47068ee54acc48277b87203a7a9b31f1cb31c
MD5 449c16a8907a4cecc06640d523c1e3fe
BLAKE2b-256 e773d1d8a687b74e124e10ee9119b8dc4ddefcca3c8c26d00a47a436f6edbc37

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp38-cp38-win32.whl.

File metadata

  • Download URL: pydivsufsort-0.0.11-cp38-cp38-win32.whl
  • Upload date:
  • Size: 195.4 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for pydivsufsort-0.0.11-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 69310e85d0106aceac114d22ece5cb9fe722dfda191ae2c79d74161e405c30c6
MD5 509f7024a2757c2d706a6e1e8bfee3cf
BLAKE2b-256 c8ad33fa051e9ce26eeb14289ef9b1c31d298d61438c63c9669bdd578033bda1

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3517ea3b12a6e224bec8cd9e284c76d56456327425f1c39ca16dd8c54994c207
MD5 fa524935fcc11c29a7f8fe3ef0ee3652
BLAKE2b-256 af3c3e02b062e487da6c6aea5b39c5b271174ca850ce3acb40b26ae333553a96

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e607b67c620baba9f5cd8b8b44998890c56d2e5916968f20d8b6bedb52e10551
MD5 d11775f06f21f35b5d1dc1ae545d0b60
BLAKE2b-256 998f81ba1a1e4bd0a18d86150a7a00d2c431ab30cf75c36a13692c75962d03a5

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 da08f1dbee5f9f04ee606934e86369e34d32c753d7121af740b929cf7b558496
MD5 f03416aa5f63822cb5b51620cb0fa9aa
BLAKE2b-256 f2623409129e1cff67431e46f3d56c4b07f56b9ff6f0b056daa7391aa9ccd895

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 2a06fcb6f26187b8f1c6cd4ecd3fd9a64c73a94c207e3ce0b5c791d7c90f5146
MD5 19f0ef88149d6af056d99c6de096cd8f
BLAKE2b-256 8c90f7dd3ac98de4a07fd25a243b02f6517c340e09c4345ab9165759ca58e3d0

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp37-cp37m-win32.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 a39e11850ff19028dc85635311b76f42cbd693755de1179fddcddc673c90b9b2
MD5 9095c635f9445c85d40e6f0300d60319
BLAKE2b-256 13f794be1e705644282a1a3967c44c2c9bf9d97f06b27cae2fd28af15b5ae60f

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c9320d14a6878f902d361f5a56e8b9ef6849e4fd2360d6b369ca8bd418be8f2d
MD5 fcc3b8640c71d58cd7f434ec24f10339
BLAKE2b-256 874e2b35bad1910862ae9c287fc59dbc311aae4fb7d5ec57a687b0aa15c26968

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8b0fd3269104f81ca150e23baec713fc7c7ed2dd02754429b9c8524ececdb83f
MD5 b64a74e3c3e51e87ea277ba32739f9d4
BLAKE2b-256 0183d90b3fe46000ad84f5748bf310d6c9e8975ce0ee7580a6f5cdb267fadf5e

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 de44d437a30c94980464de0c62904d30956e0eab74e4f5de9951931592d7629e
MD5 1ee9dd0eee4b8bde4667fd9308520595
BLAKE2b-256 841e4e765fa951c7c6df898486f43dec468706a6d327dd5aa2f73e0f9e821705

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 f2941b00780469e2a9f239a88f3fb1c73f953a721c245b4b9f1a2f5a1d34189a
MD5 7254ed8cb94836a54d4b054184f0e7c1
BLAKE2b-256 b74123d6587227c94567487ecf1dc1eef3a61a42c12593efce4eade2564ab7fb

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp36-cp36m-win32.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 b34c4e7052520cafb9e1f9cce621361d141f8955f7a6c3002a3b6c7652bd972d
MD5 fa6a991426616cdc9af41705e5749808
BLAKE2b-256 6833094b6a82e81573ca2aa52558dc817d93bb904595aa05818b50b968bab702

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9d73b6542cade982e77c7ea7fddb1e1ec77b8f6f1732819ef49dd9a7129cab55
MD5 f5e9fc4c8daf41f07b325666eff9ec62
BLAKE2b-256 d819e8ce0983c413b50eec2f90b3c15e135a5917f10d2a172e8335e51695247a

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 951c3fd651b65b2295965c331c21812f29a973ed2eb89a21ae1f74829f581879
MD5 dd8b6a41806763c69270fa9f5c53d781
BLAKE2b-256 07a2e9583682cb76f0323e809661280d9928ae9ced84df5303b4c52197beeec9

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.11-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.11-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e4f523f87e4566d58140ea8606dbb890543d85bb03460fde7855ba424511bd17
MD5 357b7de294dd323a347de7537c9111d7
BLAKE2b-256 d0772c2f381994211973c1dd2403751a23394eb0bcde21a56676767e6e40a8f7

See more details on using hashes here.

Supported by

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