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
  • longest_previous_factor(string, suffix_array=None, lcp=None): longest previous factor array (used in the Lempel-Ziv factorization)
  • lempel_ziv_factorization(lpf, complexity: bool = False): Lempel-Ziv factorization
  • lempel_ziv_complexity(string, suffix_array=None, lcp=None): Lempel-Ziv complexity
  • kmp_censor_stream(censor, string): Censor a stream (like a generator of string) using the KMP algorithm

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.18.tar.gz (360.1 kB view details)

Uploaded Source

Built Distributions

pydivsufsort-0.0.18-cp313-cp313-win_amd64.whl (346.5 kB view details)

Uploaded CPython 3.13 Windows x86-64

pydivsufsort-0.0.18-cp313-cp313-win32.whl (283.0 kB view details)

Uploaded CPython 3.13 Windows x86

pydivsufsort-0.0.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

pydivsufsort-0.0.18-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

pydivsufsort-0.0.18-cp313-cp313-macosx_11_0_arm64.whl (356.8 kB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

pydivsufsort-0.0.18-cp313-cp313-macosx_10_13_x86_64.whl (395.9 kB view details)

Uploaded CPython 3.13 macOS 10.13+ x86-64

pydivsufsort-0.0.18-cp312-cp312-win_amd64.whl (344.6 kB view details)

Uploaded CPython 3.12 Windows x86-64

pydivsufsort-0.0.18-cp312-cp312-win32.whl (285.0 kB view details)

Uploaded CPython 3.12 Windows x86

pydivsufsort-0.0.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pydivsufsort-0.0.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

pydivsufsort-0.0.18-cp312-cp312-macosx_11_0_arm64.whl (359.2 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

pydivsufsort-0.0.18-cp312-cp312-macosx_10_13_x86_64.whl (399.3 kB view details)

Uploaded CPython 3.12 macOS 10.13+ x86-64

pydivsufsort-0.0.18-cp311-cp311-win_amd64.whl (354.3 kB view details)

Uploaded CPython 3.11 Windows x86-64

pydivsufsort-0.0.18-cp311-cp311-win32.whl (293.8 kB view details)

Uploaded CPython 3.11 Windows x86

pydivsufsort-0.0.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pydivsufsort-0.0.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

pydivsufsort-0.0.18-cp311-cp311-macosx_11_0_arm64.whl (355.4 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pydivsufsort-0.0.18-cp311-cp311-macosx_10_9_x86_64.whl (397.8 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

pydivsufsort-0.0.18-cp310-cp310-win_amd64.whl (351.9 kB view details)

Uploaded CPython 3.10 Windows x86-64

pydivsufsort-0.0.18-cp310-cp310-win32.whl (293.8 kB view details)

Uploaded CPython 3.10 Windows x86

pydivsufsort-0.0.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pydivsufsort-0.0.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

pydivsufsort-0.0.18-cp310-cp310-macosx_11_0_arm64.whl (355.6 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pydivsufsort-0.0.18-cp310-cp310-macosx_10_9_x86_64.whl (397.2 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

pydivsufsort-0.0.18-cp39-cp39-win_amd64.whl (351.7 kB view details)

Uploaded CPython 3.9 Windows x86-64

pydivsufsort-0.0.18-cp39-cp39-win32.whl (293.9 kB view details)

Uploaded CPython 3.9 Windows x86

pydivsufsort-0.0.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pydivsufsort-0.0.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

pydivsufsort-0.0.18-cp39-cp39-macosx_11_0_arm64.whl (355.8 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pydivsufsort-0.0.18-cp39-cp39-macosx_10_9_x86_64.whl (397.4 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: pydivsufsort-0.0.18.tar.gz
  • Upload date:
  • Size: 360.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pydivsufsort-0.0.18.tar.gz
Algorithm Hash digest
SHA256 e23ff06abbd8e34e812c66a38cb6c853f55a3f15fccaa001e339752f34865e77
MD5 c37865d4d6c19207733b9a549971a825
BLAKE2b-256 ceaaa4168a2077288071dc9183768e14fb35893606231eebbf1b156663c95df2

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3341a023a6a0d27b0c944f48ee9e1f980e3bbfdca7f1cd9494cfd400ff8e631a
MD5 590a1f1c8dc0132380e53437beed966c
BLAKE2b-256 9e7965908503eeb34c44cc0dd70f14b6c59809af9f9696b397e8a6a76b785a91

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp313-cp313-win32.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 3d0db2bdca91c8f4645d2e6a9e5515001dea19223afef15adde5f752b74e95ff
MD5 f7381755f397ded8a56221b8cca0ae36
BLAKE2b-256 5721d4b721f3219f12e518d0e5b665f0fee69cd2161b474535babb6464783eb9

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 907383c28615d2d563f76fd2f75dc978fccc1f9150fd82fb2d9f0e44ff8dae59
MD5 01fe862ca81fa2cf8a809c95fe1e691e
BLAKE2b-256 1934e733fbf731ac384116a5cfa6c7370aa86ab5cade43ff0ea335caabd13980

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0f05a12a412030de8a6912966a0e492eae90e8cfec79060e7211ef39fd1813f8
MD5 af5a3521e67966f93acba286ab44a5fb
BLAKE2b-256 f32ad19203b926d3b1a13ce9dd580a1708abaa82ff0a3b3ead697c37389534fe

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 702970e4b8601d7a2f0e46deaea4313913ec0aa145c949aca35cfe3d6b7727cd
MD5 9ac1472a972b1cca6e086bee1a0edc72
BLAKE2b-256 91e12673fa17b7e20f32207ea492f433363760a1d4c960cf241857a17beb4b88

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 8951fa16d4ac757409ec69d7edca867719b1b25462602f351c95e67f218a5cb5
MD5 129650d293214caabae78ddc1de571dc
BLAKE2b-256 34e4e8348caf813eaffc0619356453290c8b3f27298b16d59f0bd2b2b62b1de6

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5f7678c020b24eda861ec9771b7239b24551c17bb21a55a350ecafc36b733780
MD5 1ec3881bb3cbcfb5edaa1cf0f5acb932
BLAKE2b-256 0199b93c3318c9a08888c81e427e05e9b3a31010299988e15999b07d76465189

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp312-cp312-win32.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 c0d8ccab13628e2d09e1fe314bc95746817de78b902d5a5fc0da445d5427c1d2
MD5 a4321d8aac51fc7fed88d23860062570
BLAKE2b-256 2f70e921d50c766356a929b1c663d608916fc4c015698c03c81e90db51242f84

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 87364bf7d70876dc7f8d92c61c2c3fe025be520a666b9714d808ecd9eb42ec99
MD5 2074da02e74be4b0522b90389d3ea9d2
BLAKE2b-256 b0dc8afbc81320a5185cc76e07fc4102f171854db44fc499c39751dbb36fabb1

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2a5e7437408ab94c4829a39a3d1dd826de4ebfde4ddc5a9accf4718519d1e453
MD5 6968ef3cef15be930fe35ef9c036548b
BLAKE2b-256 a4ae6acb3a8a4c239e2cf5029631a597920217cf1f279fe1066003dfb8cd90c2

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 754c665aab78793b329b7d94ed82e03b50d0166f733e26236eeb0410dd328520
MD5 4801dde72d54977e7669fa28d986f2ca
BLAKE2b-256 9bb14a626bb8aced9aee973eaebb1bac814c53d81983cee54eaa1c549af18b21

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 31ec5e6f8aa64500c81b27e6c750d06412a1fc7c506413923f67e8d9241492d0
MD5 cb2c9ca09f13d6b871e121ad3a33a7b8
BLAKE2b-256 5eba765da9cf9d053a1c815dca6ce34f9d47f61725264fe7689d32208e7106a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 acd3bfe375706f4cba391340e6ad947fc470447de777acd34b1d3a448eb07977
MD5 269968a19d3e61b790e2f8c6ea2bef0f
BLAKE2b-256 9a3e9d49200f8ddaaebd5e126cd923af516de6c000b18c57962bd3afb1c4626b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 63b01c2cf6c8d91f0820f153332fa911be564bd2e54cff510cd5a7d3d4a124e8
MD5 7f96ff8410e639bb514fa9e852fc88e5
BLAKE2b-256 edee9630fd2b36e0c966ab4e528d8c9b5ef5c9c8f9ff492b1b17e43d3198f1ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ce5731dfea69dadc17b91420251a5a060c6ab21e166ec2bb2d3fe3ad9cb80a3f
MD5 920948b0f692e217c62c486cc125e6a3
BLAKE2b-256 ede06b3b61780fccb02a5d8a74a37768f44c3fab9a3dd866928ebfb165327435

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a862ae27f527c5fadcf181bc486901d080a28af21e764d36519ade205c2b4af7
MD5 03ebb28ddf7b8085b846cedcbea1aebf
BLAKE2b-256 8a2399f62a0f90653d70ad122bcbe304c8b7362587f1f2c59745230d0853d0f8

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4c301ba012b185a0ad0dcbafa6d405b94b3b3d2c9b04d686633bb8d436ef08a2
MD5 f5648cfee26ea164830cca63ce280bd0
BLAKE2b-256 72f12c40c95bbe78059d632fd59cc75e40b82f03d33c7868fc27972ec2e5d1c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2cd51b1c5cfe2ab88a7628d4f26f5a5d843bf563aa9865cdaca5ad364fbd59f3
MD5 b167f179754d9ba43fa951bb4311597d
BLAKE2b-256 f2f134a9648719ea1a5697ad45731bad4f3f7e06872695b4bb8966271455bde8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2f7f013edaa94fa07891619977dcf0a363fa4b7b0d00ed953c4bb58d8c5232ab
MD5 e6f42b86e571e2ed4871ac13c4c38057
BLAKE2b-256 ce7c4aded88173aa7026d02b24253394a3722aa38f7c7b40d0e6fa0a6de10df6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 19a6c06e73f89402e3cf3c882c19b847536be9168e2bab102053be8e74439e5e
MD5 e5483ddb5715858dbada14798439a2a6
BLAKE2b-256 c114ef9e23be0e3b6b8babb67161e4bd13bd6eb39a1154b01a12a159af3bff27

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a370a2807833f8dc53f3a457ba5ad247ae948a4aa629ec6d3edc44a62e8546bd
MD5 60fbfbe82146ca134e5bf7c7eb13a329
BLAKE2b-256 abea13f8177a13bccd61b9305b13462a0163d43d10d40d93fec2e526d648f94c

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7bb76f97f1a6143b0c54b1fcf771977b0a0c8f16b85dcde295ddce20a0f7535a
MD5 09c00d370e53dccb0260d87eaac8510f
BLAKE2b-256 ff9c2113375bef83d3b30f631fa7d5feea45fb6d22440a99e0e0f37492ecb30b

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 37c660abe0f126111e8e251391a8efc88dcbb726342e18ac230c0ba79f81c1c2
MD5 82483634f0384d932602348cbc34788e
BLAKE2b-256 0a260daff9c93f1543e1ebfbeeb10ee6b3bd21694af8fa72b060789b303c18de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 40474ee2f071fb16b33082596b35638c2c17eb37d9c0efced8b31394d6e0cacd
MD5 746973f38148cbd0ff8f93b25b250335
BLAKE2b-256 f974ffb311f8d5f157d5b2048d84ac3a3a5127001a7bb94f759b6f69520ab819

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 782f3800c905525c93abbc4635831cc815c5e78f4fe58f5011c1cda7ffbb6694
MD5 563692baae2b12005faccc2de3b84732
BLAKE2b-256 1d89795fceb4042f9cbf4ff2527e359b0535cfa69d4b03d2c7db353b482db886

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pydivsufsort-0.0.18-cp39-cp39-win32.whl
  • Upload date:
  • Size: 293.9 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pydivsufsort-0.0.18-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 2304c6c4ba9b4c18257dd945cad0b50fc4f56b3c0aeb96ba7fa628f247458351
MD5 9fe187c5f9875bfeab2c998f075080c2
BLAKE2b-256 b9c58dc3777db95d1f10d7584705d917714825b79292351f74f24f5ba75fbdff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a99950bceae8b56379c8c85fb0b6b8eebf9f7b67a613ff88fe751bfd54a32e93
MD5 16537ca0c66fdfd25c801820a654bf9d
BLAKE2b-256 398b235f82a725d756b71ae3d1bbe815cca787afe1a80162e26ad44f2e56bf86

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4dea097a48a3157a4750ef696eed4d24c8b02109071f7971aa8613467e591827
MD5 e195aac747f95b910e2f9ff32deab375
BLAKE2b-256 0b9a6071477cf4b468c428d9c9d2ed6a74b5d03f84607a814c725df7d2caa135

See more details on using hashes here.

File details

Details for the file pydivsufsort-0.0.18-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cf657a1807076dbe9ea7769626de12690f764cde29febe139bc00eafb44e6b43
MD5 a95d1486885834e5743132e0843b8465
BLAKE2b-256 fa8960ab739f105c9fc59dbec6652ad16fbd47b94afcecc4d08d830518043733

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pydivsufsort-0.0.18-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b7499e2a9360a877da158628777292a3a6ce6f3a3d1bfc7b5d8c64a52d0e6439
MD5 f938723d9bfe030c81a5e4b8917f327d
BLAKE2b-256 069a03460d12866bfb6d27a422a4f0cf5663546096ca27bdd95d77983acbb084

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