Skip to main content

Fast and customizable text tokenization library with BPE and SentencePiece support

Project description

pyonmttok

pyonmttok is the Python wrapper for OpenNMT/Tokenizer, a fast and customizable text tokenization library with BPE and SentencePiece support.

Installation:

pip install pyonmttok

Requirements:

  • OS: Linux, macOS, Windows
  • Python version: >= 3.6
  • pip version: >= 19.3

Table of contents

  1. Tokenization
  2. Subword learning
  3. Vocabulary
  4. Token API
  5. Utilities

Tokenization

Example

>>> import pyonmtok
>>> tokenizer = pyonmttok.Tokenizer("aggressive", joiner_annotate=True)
>>> tokens = tokenizer("Hello World!")
>>> tokens
['Hello', 'World', '■!']
>>> tokenizer.detokenize(tokens)
'Hello World!'

Interface

Constructor

tokenizer = pyonmttok.Tokenizer(
    mode: str,
    *,
    lang: Optional[str] = None,
    bpe_model_path: Optional[str] = None,
    bpe_dropout: float = 0,
    vocabulary: Optional[List[str]] = None,
    vocabulary_path: Optional[str] = None,
    vocabulary_threshold: int = 0,
    sp_model_path: Optional[str] = None,
    sp_nbest_size: int = 0,
    sp_alpha: float = 0.1,
    joiner: str = "■",
    joiner_annotate: bool = False,
    joiner_new: bool = False,
    support_prior_joiners: bool = False,
    spacer_annotate: bool = False,
    spacer_new: bool = False,
    case_feature: bool = False,
    case_markup: bool = False,
    soft_case_regions: bool = False,
    no_substitution: bool = False,
    with_separators: bool = False,
    preserve_placeholders: bool = False,
    preserve_segmented_tokens: bool = False,
    segment_case: bool = False,
    segment_numbers: bool = False,
    segment_alphabet_change: bool = False,
    segment_alphabet: Optional[List[str]] = None,
)

# SentencePiece-compatible tokenizer.
tokenizer = pyonmttok.SentencePieceTokenizer(
    model_path: str,
    vocabulary_path: Optional[str] = None,
    vocabulary_threshold: int = 0,
    nbest_size: int = 0,
    alpha: float = 0.1,
)

# Copy constructor.
tokenizer = pyonmttok.Tokenizer(tokenizer: pyonmttok.Tokenizer)

# Return the tokenization options (excluding options related to subword).
tokenizer.options

See the documentation for a description of each tokenization option.

Tokenization

# Tokenize a text.
# When training=False, subword regularization such as BPE dropout is disabled.
tokenizer.__call__(text: str, training: bool = True) -> List[str]

# Tokenize a text and return optional features.
# When as_token_objects=True, the method returns Token objects (see below).
tokenizer.tokenize(
    text: str,
    as_token_objects: bool = False,
    training: bool = True,
) -> Union[Tuple[List[str], Optional[List[List[str]]]], List[pyonmttok.Token]]

# Tokenize a batch of text.
tokenizer.tokenize_batch(
    batch_text: List[str],
    as_token_objects: bool = False,
    training: bool = True,
) -> Union[Tuple[List[List[str]], List[Optional[List[List[str]]]]], List[List[pyonmttok.Token]]]

# Tokenize a file.
tokenizer.tokenize_file(
    input_path: str,
    output_path: str,
    num_threads: int = 1,
    verbose: bool = False,
    training: bool = True,
    tokens_delimiter: str = " ",
)

Detokenization

# The detokenize method converts a list of tokens back to a string.
tokenizer.detokenize(
    tokens: List[str],
    features: Optional[List[List[str]]] = None,
) -> str
tokenizer.detokenize(tokens: List[pyonmttok.Token]) -> str

# The detokenize_with_ranges method also returns a dictionary mapping a token
# index to a range in the detokenized text.
# Set merge_ranges=True to merge consecutive ranges, e.g. subwords of the same
# token in case of subword tokenization.
# Set unicode_ranges=True to return ranges over Unicode characters instead of bytes.
tokenizer.detokenize_with_ranges(
    tokens: Union[List[str], List[pyonmttok.Token]],
    merge_ranges: bool = False,
    unicode_ranges: bool = False,
) -> Tuple[str, Dict[int, Tuple[int, int]]]

# Detokenize a file.
tokenizer.detokenize_file(
    input_path: str,
    output_path: str,
    tokens_delimiter: str = " ",
)

Subword learning

Example

The Python wrapper supports BPE and SentencePiece subword learning through a common interface:

1. Create the subword learner with the tokenization you want to apply, e.g.:

# BPE is trained and applied on the tokenization output before joiner (or spacer) annotations.
tokenizer = pyonmttok.Tokenizer("aggressive", joiner_annotate=True, segment_numbers=True)
learner = pyonmttok.BPELearner(tokenizer=tokenizer, symbols=32000)

# SentencePiece can learn from raw sentences so a tokenizer in not required.
learner = pyonmttok.SentencePieceLearner(vocab_size=32000, character_coverage=0.98)

2. Feed some raw data:

# Feed detokenized sentences:
learner.ingest("Hello world!")
learner.ingest("How are you?")

# or detokenized text files:
learner.ingest_file("/data/train1.en")
learner.ingest_file("/data/train2.en")

3. Start the learning process:

tokenizer = learner.learn("/data/model-32k")

The returned tokenizer instance can be used to apply subword tokenization on new data.

Interface

# See https://github.com/rsennrich/subword-nmt/blob/master/subword_nmt/learn_bpe.py
# for argument documentation.
learner = pyonmttok.BPELearner(
    tokenizer: Optional[pyonmttok.Tokenizer] = None,  # Defaults to tokenization mode "space".
    symbols: int = 10000,
    min_frequency: int = 2,
    total_symbols: bool = False,
)

# See https://github.com/google/sentencepiece/blob/master/src/spm_train_main.cc
# for available training options.
learner = pyonmttok.SentencePieceLearner(
    tokenizer: Optional[pyonmttok.Tokenizer] = None,  # Defaults to tokenization mode "none".
    keep_vocab: bool = False,  # Keep the generated vocabulary (model_path will act like model_prefix in spm_train)
    **training_options,
)

learner.ingest(text: str)
learner.ingest_file(path: str)
learner.ingest_token(token: Union[str, pyonmttok.Token])

learner.learn(model_path: str, verbose: bool = False) -> pyonmttok.Tokenizer

Vocabulary

Example

tokenizer = pyonmttok.Tokenizer("aggressive", joiner_annotate=True)

with open("train.txt") as train_file:
    vocab = pyonmttok.build_vocab_from_lines(
        train_file,
        tokenizer=tokenizer,
        maximum_size=32000,
        special_tokens=["<blank>", "<unk>", "<s>", "</s>"],
    )

with open("vocab.txt", "w") as vocab_file:
    for token in vocab.ids_to_tokens:
        vocab_file.write("%s\n" % token)

Interface

# Special tokens are added with ids 0, 1, etc., and are never removed by a resize.
vocab = pyonmttok.Vocab(special_tokens: Optional[List[str]] = None)

# Read-only properties.
vocab.tokens_to_ids -> Dict[str, int]
vocab.ids_to_tokens -> List[str]
vocab.counters -> List[int]

# Get or set the ID returned for out-of-vocabulary tokens.
# By default, it is the ID of the token <unk> if present in the vocabulary, len(vocab) otherwise.
vocab.default_id -> int

vocab.lookup_token(token: str) -> int
vocab.lookup_index(index: int) -> str

# Calls lookup_token on a batch of tokens.
vocab.__call__(tokens: List[str]) -> List[int]

vocab.__len__() -> int                  # Implements: len(vocab)
vocab.__contains__(token: str) -> bool  # Implements: "hello" in vocab
vocab.__getitem__(token: str) -> int    # Implements: vocab["hello"]

# Add tokens to the vocabulary after tokenization.
# If a tokenizer is not set, the text is split on spaces.
vocab.add_from_text(text: str, tokenizer: Optional[pyonmttok.Tokenizer] = None) -> None
vocab.add_from_file(path: str, tokenizer: Optional[pyonmttok.Tokenizer] = None) -> None
vocab.add_token(token: str, count: int = 1) -> None

vocab.resize(maximum_size: int = 0, minimum_frequency: int = 1) -> None


# Build a vocabulary from an iterator of lines.
# If a tokenizer is not set, the lines are split on spaces.
pyonmttok.build_vocab_from_lines(
    lines: Iterable[str],
    tokenizer: Optional[pyonmttok.Tokenizer] = None,
    maximum_size: int = 0,
    minimum_frequency: int = 1,
    special_tokens: Optional[List[str]] = None,
) -> pyonmttok.Vocab

# Build a vocabulary from an iterator of tokens.
pyonmttok.build_vocab_from_tokens(
    tokens: Iterable[str],
    maximum_size: int = 0,
    minimum_frequency: int = 1,
    special_tokens: Optional[List[str]] = None,
) -> pyonmttok.Vocab

Token API

The Token API allows to tokenize text into pyonmttok.Token objects. This API can be useful to apply some logics at the token level but still retain enough information to write the tokenization on disk or detokenize.

Example

>>> tokenizer = pyonmttok.Tokenizer("aggressive", joiner_annotate=True)
>>> tokens = tokenizer.tokenize("Hello World!", as_token_objects=True)
>>> tokens
[Token('Hello'), Token('World'), Token('!', join_left=True)]
>>> tokens[-1].surface
'!'
>>> tokenizer.serialize_tokens(tokens)[0]
['Hello', 'World', '■!']
>>> tokens[-1].surface = '.'
>>> tokenizer.serialize_tokens(tokens)[0]
['Hello', 'World', '■.']
>>> tokenizer.detokenize(tokens)
'Hello World.'

Interface

The pyonmttok.Token class has the following attributes:

  • surface: a string, the token value
  • type: a pyonmttok.TokenType value, the type of the token
  • join_left: a boolean, whether the token should be joined to the token on the left or not
  • join_right: a boolean, whether the token should be joined to the token on the right or not
  • preserve: a boolean, whether joiners and spacers can be attached to this token or not
  • features: a list of string, the features attached to the token
  • spacer: a boolean, whether the token is prefixed by a SentencePiece spacer or not (only set when using SentencePiece)
  • casing: a pyonmttok.Casing value, the casing of the token (only set when tokenizing with case_feature or case_markup)

The pyonmttok.TokenType enumeration is used to identify tokens that were split by a subword tokenization. The enumeration has the following values:

  • TokenType.WORD
  • TokenType.LEADING_SUBWORD
  • TokenType.TRAILING_SUBWORD

The pyonmttok.Casing enumeration is used to identify the original casing of a token that was lowercased by the case_feature or case_markup tokenization options. The enumeration has the following values:

  • Casing.LOWERCASE
  • Casing.UPPERCASE
  • Casing.MIXED
  • Casing.CAPITALIZED
  • Casing.NONE

The Tokenizer instances provide methods to serialize or deserialize Token objects:

# Serialize Token objects to strings that can be saved on disk.
tokenizer.serialize_tokens(
    tokens: List[pyonmttok.Token],
) -> Tuple[List[str], Optional[List[List[str]]]]

# Deserialize strings into Token objects.
tokenizer.deserialize_tokens(
    tokens: List[str],
    features: Optional[List[List[str]]] = None,
) -> List[pyonmttok.Token]

Utilities

Interface

# Returns True if the string has the placeholder format.
pyonmttok.is_placeholder(token: str)

# Sets the random seed for reproducible tokenization.
pyonmttok.set_random_seed(seed: int)

# Checks if the language code is valid.
pyonmttok.is_valid_language(lang: str).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

pyonmttok-1.36.0-cp311-cp311-win_amd64.whl (14.1 MB view details)

Uploaded CPython 3.11Windows x86-64

pyonmttok-1.36.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pyonmttok-1.36.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (16.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pyonmttok-1.36.0-cp311-cp311-macosx_11_0_arm64.whl (14.0 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyonmttok-1.36.0-cp311-cp311-macosx_10_9_x86_64.whl (14.4 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

pyonmttok-1.36.0-cp310-cp310-win_amd64.whl (14.1 MB view details)

Uploaded CPython 3.10Windows x86-64

pyonmttok-1.36.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pyonmttok-1.36.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (16.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

pyonmttok-1.36.0-cp310-cp310-macosx_11_0_arm64.whl (14.0 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pyonmttok-1.36.0-cp310-cp310-macosx_10_9_x86_64.whl (14.4 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

pyonmttok-1.36.0-cp39-cp39-win_amd64.whl (14.1 MB view details)

Uploaded CPython 3.9Windows x86-64

pyonmttok-1.36.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

pyonmttok-1.36.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (16.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

pyonmttok-1.36.0-cp39-cp39-macosx_11_0_arm64.whl (14.0 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pyonmttok-1.36.0-cp39-cp39-macosx_10_9_x86_64.whl (14.4 MB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

pyonmttok-1.36.0-cp38-cp38-win_amd64.whl (14.1 MB view details)

Uploaded CPython 3.8Windows x86-64

pyonmttok-1.36.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

pyonmttok-1.36.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (16.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

pyonmttok-1.36.0-cp38-cp38-macosx_11_0_arm64.whl (14.0 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

pyonmttok-1.36.0-cp38-cp38-macosx_10_9_x86_64.whl (14.4 MB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

pyonmttok-1.36.0-cp37-cp37m-win_amd64.whl (14.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

pyonmttok-1.36.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.9 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

pyonmttok-1.36.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (16.9 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

pyonmttok-1.36.0-cp37-cp37m-macosx_10_9_x86_64.whl (14.3 MB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

pyonmttok-1.36.0-cp36-cp36m-win_amd64.whl (14.1 MB view details)

Uploaded CPython 3.6mWindows x86-64

pyonmttok-1.36.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (16.9 MB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ x86-64

pyonmttok-1.36.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (16.9 MB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ ARM64

pyonmttok-1.36.0-cp36-cp36m-macosx_10_9_x86_64.whl (14.3 MB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

File details

Details for the file pyonmttok-1.36.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyonmttok-1.36.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 14.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.1

File hashes

Hashes for pyonmttok-1.36.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 897aec90d2ac52718951629d576da9571fa4ea2cdd8c20ae12eb679fd193c739
MD5 0a219a3c520512566c775e22e03f1506
BLAKE2b-256 d8119deb98c101df767d5c7e37a205fa61a2e4c91f95df02a16f2e059003ceaa

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c0c542b28cad05788a4bf48a10477ee2a4035d51e9738c1077bec2de969638a7
MD5 faf900cbce06d93e590310afd04fe51c
BLAKE2b-256 32eef8ab366bd730bd1b06239204b1d4388f92e1c27739bed107962a52425b3d

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5809048d68bad532c648e50be15e18e501fa1f1e1c521f2897b34ca7c06672b2
MD5 c87599800ab35ba57e714e05014548a9
BLAKE2b-256 c8f764d6fcfd40f0a6555a126399de26059ecaf15375bf15c0c86b3b84831b88

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 31f9ed03b1be18cfc0fbbb483f3087c572dec1ebbb9a6290777dd900b742640d
MD5 ba5c955b1c8d893c1e4f36a905f07dd7
BLAKE2b-256 90bc19349d1a6e36978a38d99f087c5b9d9f027dafca7119c753c821094ae632

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 09cb3cfa40d33cb73f0d0ec48581c9eb26cf94793bf40926b7ccdd375f729636
MD5 d13b810b3c397ce583ed6e7e749c9601
BLAKE2b-256 8a94d243529c9e9be4aa3e826fb65b9c88d622f15a68b50309ae79558f5c64c5

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyonmttok-1.36.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 14.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.1

File hashes

Hashes for pyonmttok-1.36.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d479c29240c7836496eefe15a8198dc03faa0a9e0781bc01ce384bfdc2744f27
MD5 75da3f8601ad6437e6d62bdc7b9d8685
BLAKE2b-256 3db43e6cd14593252d72c37e120d7b62623d82341ece8faf914170ebbd40f4ab

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 39dc36182dc614aeea69263104d40fe408e1ba6e092d5b42de22baa786457cdc
MD5 3a211a868dc391cc1b3b67cfdc35807c
BLAKE2b-256 5edc83abf6a10e159f7cc1ab6d251afaebe0ba18b8bb2a88fb378b0bce71df45

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d51ee235c8e12f29c2322e04eb171b559eb185ded265b8261325ad8592d47a55
MD5 19836d206245bcc89e86a4013ca6efb3
BLAKE2b-256 0974324e71946f830d24e77c9034679458c3f452e19fbd70e943ead6842b3068

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d12ff8faccff0a2023dd1253eddb20160f185cdd4c91a4fb3e73791928d52eee
MD5 4caf709da3c4b07c20420a3302de81f2
BLAKE2b-256 2fbc1f83574f9dfed42d8041a9682e2577f8ec24ee73eb40f72ec3512654ee8f

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 dd6ee135d8f9ce8e7d1b4debccf2c0304216fedd7541fd662ea279944ce48174
MD5 547d7e80d535a41288f99735fd429ca4
BLAKE2b-256 0ee4614c1a43905178659ceb63e316d26ff9b8ead054cfc2438c04f747f54c4f

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pyonmttok-1.36.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 14.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.1

File hashes

Hashes for pyonmttok-1.36.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 e4e1e60c6f755ae7e178c98d17ce6633825f7528e5dc11d3311f342c18ca5abf
MD5 4c174ba9bb509e778599eadb357f9363
BLAKE2b-256 863e9761395cd1fb9725a0734565daed7935f1c8f36907ed0f0fccd58bf5441a

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 267e38a4e536555847b0a77eb900ba3133902597c4de453cbfb51f50fa4d7a33
MD5 fdac7004ac09340791130936bc44f2e1
BLAKE2b-256 12fca05a3d1da44b92b56beda378dd17950344884472bdfc0da22b3a23c4bd59

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 723843c9ae46e025867d9972cdf57408760f42075b0497d54374181a5913c006
MD5 5f6ff0744d4f1437bcf9f635f3cba21f
BLAKE2b-256 dd446193b655c30664b8e82b2027136a729258b0d3761d054d9eda60cc8eace1

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c6f762f50d8c7313cbe1d6f50fb3ef5dda5d35b7a66e144fb80a8fab66e7c9e8
MD5 da3bc3e03bb50ad359c6b159d9ab2b6e
BLAKE2b-256 3a2745fb01f67f3bbf583d272724a62f4b28a04ad090d527bc0b5f15b60b2e6d

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a99513c72744b71ad7f8f7c06a2279073613a11c87b717bcb4a1d14c8ca5c39b
MD5 62e4db8957d535cd636fc10a862bb92a
BLAKE2b-256 e5d9623f9c863130c501e693b6c6f9308b2d7b579c0b7681da1e310011bf2a3d

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pyonmttok-1.36.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 14.1 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.1

File hashes

Hashes for pyonmttok-1.36.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 f1c8e8703b624fec17675e254c29c308dbf0c13697c0c7fe4bd46ee768753859
MD5 aa981d64715244904675c4aa3047149a
BLAKE2b-256 b23d27b8c2e5a09c7be3adbd210aa28c9600672ed5341e15f4d0a729dd02dda4

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c4cef7c073f143e6c6a45a9a4d95fb7e3c452c253ccca939fcf201a6d5367b24
MD5 689ef930fd0412d38f4ca17e8a5cb271
BLAKE2b-256 f2ed2c819f0fa9601ec0d8b7f1393399cdd8b73e7f5682f65c252cd6feac01fe

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a3ddb450a8e3631e3430a48587bccabfc5fa8eb6d62545309e03a421c12383e3
MD5 096b843edcb6c4fe6ae07c150d3b7742
BLAKE2b-256 ce7d6744a68ac4349fc0578f7ffc6b65d8472078bc0abc0f3d7f0f3ec718a354

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8010913929e4a7008fad1f6def3d08c695d7ecc0201a09bc356e9dac24925c4a
MD5 cc035eade9038102c1efa7743372f52c
BLAKE2b-256 4a8d87862795cd1c63d2d1bf8c977948dd557943a60146585750527ddb2c5779

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ef32a68a905a51e5dedbf704679d530b8e7af32d7a2603622875292c79da1cde
MD5 078641ef497b1c4209694beb3b3809de
BLAKE2b-256 ecd299c364bbf59541d7bbb56ce365205ddb68d9d6c3e4dee7b99d75ee478c6b

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: pyonmttok-1.36.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 14.1 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.1

File hashes

Hashes for pyonmttok-1.36.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 036904449139fbfcef1bc0d7c048d89e34305aacdf178d0d701598c5fe5043f0
MD5 638a30b33e8739c8ed575b7abd1f587b
BLAKE2b-256 911f10477bcb6a2f14e6fa01172dba1d601dea470bdbc3c991217d92798d21a3

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a4d1a89cbefdb4d0f6f34c68038147f6f249b31127154a141fd2010a066a557b
MD5 034e8065e60ac43bc9a55adf46de31bf
BLAKE2b-256 ed1193f22243237ec6b5554f2c4705c0722d650d83c7a9c9cec1f431a1047436

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 98a5683d6bdb1a8bcaef2ac6a72683e7547dc033bcb6eeb54aed5eb22da666b6
MD5 6204ce95be5edffd4707e06c8472fb2d
BLAKE2b-256 ce1f4608ce00c88ac42c617cde4229ee2e6d27ff5c6b645cc76f85f99cd7e46d

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b0d0fdf5b353e8826188a7f2ce3bd3df988af979f74dbb8b1e2fd08b973384b1
MD5 221b6d11965b2d093195a9d5ed70ac78
BLAKE2b-256 bbbb90ec5389ea883aff8903427694c1a138f80d736db11167ce0dc2d26f071d

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: pyonmttok-1.36.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 14.1 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.1

File hashes

Hashes for pyonmttok-1.36.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 3cf7f0518d67b37b1ee66bedfebc5e2441e40d4586c2761b2990bfe6ecf850d9
MD5 4ff02d31457a0f26d57512d59f1258ce
BLAKE2b-256 f1df14c463ee152be119a5e35860f3188abe2507d47744b637637da0dc6857a4

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 19f1e827dca6342072c23f6b55a5b4f9f67862802f97ebf295b1e1af90894f72
MD5 7409a8bdd0773641136907fa549eaf1e
BLAKE2b-256 15f10766152549486438e540df1c0897216594fdaddec6ebabf6b4506b436158

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d79bcd92ad736530658393fb225f94015da932baffdcf74fb7f94f21fb78c3cf
MD5 6a231665973913278d68f12dd7a02cf1
BLAKE2b-256 4c180f009acdfa2237dcbc638d93d5d5373d0ff7600889b761d695b9410abe48

See more details on using hashes here.

File details

Details for the file pyonmttok-1.36.0-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyonmttok-1.36.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3e7393ed9bc7b143edbe4b6a290e428b15e610e691d664cb6c909deb25750dcc
MD5 1dba8cb00c2fd7a9ec99712c28a475d5
BLAKE2b-256 5cebb17cbd26bbad0791d650c9823794ae8c2dd658ba55a1f809eac66111b11b

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