Skip to main content

Flashlight Text bindings for Python

Project description

Flashlight Text Python Bindings

Quickstart

The Flashlight Text Python package containing beam search decoder and Dictionary components is available on PyPI:

pip install flashlight-text

To enable optional KenLM support in Python with the decoder, KenLM must be installed via pip:

pip install git+https://github.com.kpu/kenlm.git

Contents

Installation

Dependencies

We require python >= 3.6 with the following packages installed:

  • cmake >= 3.18, and make (installable via pip install cmake)
  • KenLM (must be installed pip install git+https://github.com/kpu/kenlm.git)

Build Instructions

Once the dependencies are satisfied, from the project root, use:

pip install .

Using the environment variable USE_KENLM=0 removes the KenLM dependency but precludes using the decoder with a language model unless you write C++/pybind11 bindings for your own language model.

Install in editable mode for development:

pip install -e .

(pypi installation coming soon)

Note: if you encounter errors, you'll probably have to rm -rf build dist before retrying the install.

Python API Documentation

Beam Search Decoder

Bindings for the lexicon and lexicon-free beam search decoders are supported for CTC/ASG models only (no seq2seq model support). Out-of-the-box language model support includes KenLM; users can define custom a language model in Python and use it for decoding; see the documentation below.

To run decoder one first should define options:

    from flashlight.lib.text.decoder import LexiconDecoderOptions, LexiconFreeDecoderOptions

    # for lexicon-based decoder
    options = LexiconDecoderOptions(
        beam_size, # number of top hypothesis to preserve at each decoding step
        token_beam_size, # restrict number of tokens by top am scores (if you have a huge token set)
        beam_threshold, # preserve a hypothesis only if its score is not far away from the current best hypothesis score
        lm_weight, # language model weight for LM score
        word_score, # score for words appearance in the transcription
        unk_score, # score for unknown word appearance in the transcription
        sil_score, # score for silence appearance in the transcription
        log_add, # the way how to combine scores during hypotheses merging (log add operation, max)
        criterion_type # supports only CriterionType.ASG or CriterionType.CTC
    )
    # for lexicon free-based decoder
    options = LexiconFreeDecoderOptions(
        beam_size, # number of top hypothesis to preserve at each decoding step
        token_beam_size, # restrict number of tokens by top am scores (if you have a huge token set)
        beam_threshold, # preserve a hypothesis only if its score is not far away from the current best hypothesis score
        lm_weight, # language model weight for LM score
        sil_score, # score for silence appearance in the transcription
        log_add, # the way how to combine scores during hypotheses merging (log add operation, max)
        criterion_type # supports only CriterionType.ASG or CriterionType.CTC
    )

Now, prepare a tokens dictionary (tokens for which a model returns probability for each frame) and a lexicon (mapping between words and their spellings within a tokens set).

For further details on tokens and lexicon file formats, see the Data Preparation documentation in Flashlight.

from flashlight.lib.text.dictionary import Dictionary, load_words, create_word_dict

tokens_dict = Dictionary("path/tokens.txt")
# for ASG add used repetition symbols, for example
# token_dict.add_entry("1")
# token_dict.add_entry("2")

lexicon = load_words("path/lexicon.txt") # returns LexiconMap
word_dict = create_word_dict(lexicon) # returns Dictionary

To create a KenLM language model, use:

from flashlight.lib.text.decoder import KenLM
lm = KenLM("path/lm.arpa", word_dict) # or "path/lm.bin"

Get the unknown and silence token indices from the token and word dictionaries to pass to the decoder:

sil_idx = token_dict.get_index("|")
unk_idx = word_dict.get_index("<unk>")

Now, define the lexicon Trie to restrict the beam search decoder search:

from flashlight.lib.text.decoder import Trie, SmearingMode
from flashlight.lib.text.dictionary import pack_replabels

trie = Trie(token_dict.index_size(), sil_idx)
start_state = lm.start(False)

def tkn_to_idx(spelling: list, token_dict : Dictionary, maxReps : int = 0):
    result = []
    for token in spelling:
        result.append(token_dict.get_index(token))
    return pack_replabels(result, token_dict, maxReps)


for word, spellings in lexicon.items():
    usr_idx = word_dict.get_index(word)
    _, score = lm.score(start_state, usr_idx)
    for spelling in spellings:
        # convert spelling string into vector of indices
        spelling_idxs = tkn_to_idx(spelling, token_dict, 1)
        trie.insert(spelling_idxs, usr_idx, score)

    trie.smear(SmearingMode.MAX) # propagate word score to each spelling node to have some lm proxy score in each node.

Finally, we can run lexicon-based decoder:

import numpy
from flashlight.lib.text.decoder import LexiconDecoder


blank_idx = token_dict.get_index("#") # for CTC
transitions = numpy.zeros((token_dict.index_size(), token_dict.index_size()) # for ASG fill up with correct values
is_token_lm = False # we use word-level LM
decoder = LexiconDecoder(options, trie, lm, sil_idx, blank_idx, unk_idx, transitions, is_token_lm)
# emissions is numpy.array of emitting model predictions with shape [T, N], where T is time, N is number of tokens
results = decoder.decode(emissions.ctypes.data, T, N)
# results[i].tokens contains tokens sequence (with length T)
# results[i].score contains score of the hypothesis
# results is sorted array with the best hypothesis stored with index=0.

Decoding with your own language model

One can define custom language model in python and use it for beam search decoding.

To store language model state, derive from the LMState base class and define additional data corresponding to each state by creating dict(LMState, info) inside the language model class:

import numpy
from flashlight.lib.text.decoder import LM


class MyPyLM(LM):
    mapping_states = dict() # store simple additional int for each state

    def __init__(self):
        LM.__init__(self)

    def start(self, start_with_nothing):
        state = LMState()
        self.mapping_states[state] = 0
        return state

    def score(self, state : LMState, token_index : int):
        """
        Evaluate language model based on the current lm state and new word
        Parameters:
        -----------
        state: current lm state
        token_index: index of the word
                    (can be lexicon index then you should store inside LM the
                    mapping between indices of lexicon and lm, or lm index of a word)

        Returns:
        --------
        (LMState, float): pair of (new state, score for the current word)
        """
        outstate = state.child(token_index)
        if outstate not in self.mapping_states:
            self.mapping_states[outstate] = self.mapping_states[state] + 1
        return (outstate, -numpy.random.random())

    def finish(self, state: LMState):
        """
        Evaluate eos for language model based on the current lm state

        Returns:
        --------
        (LMState, float): pair of (new state, score for the current word)
        """
        outstate = state.child(-1)
        if outstate not in self.mapping_states:
            self.mapping_states[outstate] = self.mapping_states[state] + 1
        return (outstate, -1)

LMState is a C++ base class for language model state. Its compare method (for comparing one state with another) is used inside the beam search decoder. It also has a LMState child(int index) method which returns a state obtained by following the token with this index from current state.

All LM states are organized as a trie. We use the child method in python to properly create this trie (which will be used inside the decoder to compare states) and can store additional state data in mapping_states.

This language model can be used as follows. Here, we print the state and its additional stored info inside lm.mapping_states:

custom_lm = MyLM()

state = custom_lm.start(True)
print(state, custom_lm.mapping_states[state])

for i in range(5):
    state, score = custom_lm.score(state, i)
    print(state, custom_lm.mapping_states[state], score)

state, score = custom_lm.finish(state)
print(state, custom_lm.mapping_states[state], score)

and for the decoder:

decoder = LexiconDecoder(options, trie, custom_lm, sil_idx, blank_inx, unk_idx, transitions, False)

Tests and Examples

An integration test for Python decoder bindings can be found in bindings/python/test/test_decoder.py. To run, use:

cd bindings/python/test
python3 -m unittest discover -v .

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

flashlight-text-0.0.3.dev286.tar.gz (59.4 kB view details)

Uploaded Source

Built Distributions

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

flashlight_text-0.0.3.dev286-pp39-pypy39_pp73-win_amd64.whl (578.1 kB view details)

Uploaded PyPyWindows x86-64

flashlight_text-0.0.3.dev286-pp39-pypy39_pp73-macosx_11_0_arm64.whl (909.7 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

flashlight_text-0.0.3.dev286-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (1.0 MB view details)

Uploaded PyPymacOS 10.9+ x86-64

flashlight_text-0.0.3.dev286-pp38-pypy38_pp73-win_amd64.whl (578.0 kB view details)

Uploaded PyPyWindows x86-64

flashlight_text-0.0.3.dev286-pp38-pypy38_pp73-macosx_11_0_arm64.whl (909.7 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

flashlight_text-0.0.3.dev286-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (1.0 MB view details)

Uploaded PyPymacOS 10.9+ x86-64

flashlight_text-0.0.3.dev286-pp37-pypy37_pp73-win_amd64.whl (577.3 kB view details)

Uploaded PyPyWindows x86-64

flashlight_text-0.0.3.dev286-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (1.0 MB view details)

Uploaded PyPymacOS 10.9+ x86-64

flashlight_text-0.0.3.dev286-cp311-cp311-win_amd64.whl (579.8 kB view details)

Uploaded CPython 3.11Windows x86-64

flashlight_text-0.0.3.dev286-cp311-cp311-musllinux_1_1_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

flashlight_text-0.0.3.dev286-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

flashlight_text-0.0.3.dev286-cp311-cp311-macosx_11_0_arm64.whl (909.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

flashlight_text-0.0.3.dev286-cp311-cp311-macosx_10_9_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

flashlight_text-0.0.3.dev286-cp310-cp310-win_amd64.whl (579.4 kB view details)

Uploaded CPython 3.10Windows x86-64

flashlight_text-0.0.3.dev286-cp310-cp310-musllinux_1_1_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

flashlight_text-0.0.3.dev286-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

flashlight_text-0.0.3.dev286-cp310-cp310-macosx_11_0_arm64.whl (909.9 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

flashlight_text-0.0.3.dev286-cp310-cp310-macosx_10_9_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

flashlight_text-0.0.3.dev286-cp39-cp39-win_amd64.whl (579.7 kB view details)

Uploaded CPython 3.9Windows x86-64

flashlight_text-0.0.3.dev286-cp39-cp39-musllinux_1_1_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

flashlight_text-0.0.3.dev286-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

flashlight_text-0.0.3.dev286-cp39-cp39-macosx_11_0_arm64.whl (910.1 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

flashlight_text-0.0.3.dev286-cp39-cp39-macosx_10_9_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

flashlight_text-0.0.3.dev286-cp38-cp38-win_amd64.whl (579.2 kB view details)

Uploaded CPython 3.8Windows x86-64

flashlight_text-0.0.3.dev286-cp38-cp38-musllinux_1_1_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

flashlight_text-0.0.3.dev286-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

flashlight_text-0.0.3.dev286-cp38-cp38-macosx_11_0_arm64.whl (909.5 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

flashlight_text-0.0.3.dev286-cp38-cp38-macosx_10_9_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

flashlight_text-0.0.3.dev286-cp37-cp37m-win_amd64.whl (578.8 kB view details)

Uploaded CPython 3.7mWindows x86-64

flashlight_text-0.0.3.dev286-cp37-cp37m-musllinux_1_1_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ x86-64

flashlight_text-0.0.3.dev286-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

flashlight_text-0.0.3.dev286-cp37-cp37m-macosx_10_9_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

flashlight_text-0.0.3.dev286-cp36-cp36m-win_amd64.whl (578.7 kB view details)

Uploaded CPython 3.6mWindows x86-64

flashlight_text-0.0.3.dev286-cp36-cp36m-musllinux_1_1_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ x86-64

flashlight_text-0.0.3.dev286-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ x86-64

flashlight_text-0.0.3.dev286-cp36-cp36m-macosx_10_9_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

File details

Details for the file flashlight-text-0.0.3.dev286.tar.gz.

File metadata

  • Download URL: flashlight-text-0.0.3.dev286.tar.gz
  • Upload date:
  • Size: 59.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for flashlight-text-0.0.3.dev286.tar.gz
Algorithm Hash digest
SHA256 a58bed277311ec2502802b872a228bf5128cd001e9ec02657467036cfd304d3f
MD5 dd071437b29e8314cda90cbffc496cdc
BLAKE2b-256 5d85348344288e592482b8598b8966028dabf021f292862f8e4f7f0a629400aa

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-pp39-pypy39_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 210af1937ca4dc8b57d4a533bef6ae7b6b7f23f52268f315273e50c8d5a4e883
MD5 dd1a29a66af518499ba1914aa5f49052
BLAKE2b-256 cd8121936ff8001248dc4d2178c0fadaa77c313ef27a940d95b5fe9247ec9177

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4b234dc0336a19c543455e83242d8132f3b8e2c705f66e34d8c3cf1c00ba5709
MD5 eccc769f9811b1f75d5a7d6ee2f1de51
BLAKE2b-256 b47816d68c7f1a2d0259280fb5db37fa7b0c342e4092db5020ecd542787fc3ec

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-pp39-pypy39_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ff5ae6c0dd9371c44584fb67e2646065aa0b9331890c9237e4a0249a2eb9030d
MD5 1a03ce5d3d0f7fc4ad0600a41d4640e3
BLAKE2b-256 74407ab9bca881bbf9638758a8f322ede91b0eb8ef8c335b45017fad6bbfef36

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-pp39-pypy39_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 506e98add6dd601b26e5910faed4ff4c89bbd952efbcb0c5a9b8f921a02fdbaf
MD5 9bf280ac7079b016effb42557239eb21
BLAKE2b-256 94ad460d5ec99b97bd7e5f97bf7019262ec54bc7e139be740783f893ad12c5ff

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-pp38-pypy38_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 8930c14fab540685ca4178024cd2eec01086b470eb5fe648e92e1ceac82929d9
MD5 678df4e6a3bbb18b4f3da094ab875b8b
BLAKE2b-256 86ddf9cf2f00225c59402fb35a5e6e853fff44ea1f3977f90dc105e8edc82d46

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aed4d635c3df5aaeaf122bb9057c1d2ceb0f327ddf73dba093dc2d958ccc2a3d
MD5 f30a2f5555d717c7340d776de545fd50
BLAKE2b-256 eeceb1a69dd68527e3060c4fff79e814b4828629de932d52d8825fe713a02923

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-pp38-pypy38_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-pp38-pypy38_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8b68cccf1c7e547841be21585d98ab30837715ae7cf667b16dcafa9b082fc1be
MD5 c02dc20c22e00bc8b4b0f089fe0694a3
BLAKE2b-256 88f5de6fcd9f5300576098f7cf5e2c90cfdc30cb594ca1f8b21fc66ea5759cad

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-pp38-pypy38_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cee2d418407f1d41288b0c2021a3c726aa01ee56266a7b39b4457f192e55ca85
MD5 27882f7618fa7cf5c2ca2cb3a4ba6631
BLAKE2b-256 27342619832732cf266671ea7580ddf47a882ed340f4759aff32986403300280

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-pp37-pypy37_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-pp37-pypy37_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 5d9b548539612e48ab93b347f2dd0ca84189a218eed6272dca5f208675524452
MD5 933fe89e5c0afb8082e302ade9475bb8
BLAKE2b-256 794cd165667648991d97f853be3e5537b1ad9a6ff9296758d317ada5e6bcc04b

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b50b628e289737d277184c76298b49022d2e6f9d49dbaf146efe8a7dbf302bce
MD5 e6260e477e490277d9449848679c3b6e
BLAKE2b-256 2c8e702642d9fea991e1e42d30ac45e8880b18a4ff5817d362e8ef3e6577f76e

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-pp37-pypy37_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b4fe383b3e9158a76fa35afdcd4123e18e9ba0b76f1917ccd810d4306d3375d8
MD5 c975be8e18ccc2cba84a7158c2b69b1d
BLAKE2b-256 e205c3fda3f7657a0babc2667fdd162ecc3577e7cfbd2234aeb74b3403ecf94b

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 62a07bd352d150c189e2a10b3b5a290062f35fbe968d4e0bd310130a824a1019
MD5 607ae9d2c0e3ee477e50f5c3846e88ec
BLAKE2b-256 29bfa0e73dc299cb0d281de36d8d01b5f934b833afc85002753afaac6132903e

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 f5d419d71854aecacbfe36c93d0edee32c33bd3582cc48ff672ed00b0de964cd
MD5 6a24fe1a65cc1265b2f15bc57d404fc2
BLAKE2b-256 8a3091c0d4ea6eb079b6c457d81375529eb5c908aa2405f26688e5f942029273

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 28a547abd8bb875be19d03ca25f7c78b0e1f992c23966d9e22281d7f893e1b87
MD5 b5c9d1ba5e0a064384a32f37a35f8b44
BLAKE2b-256 077e3a318789ab7f82bdc7c052983d8d96edebd1d7c5055961bb1d1b22107f3f

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fd831bc599b3dcb45c82627471262fd4df1a0c23f75b5a49238b079e5c56b573
MD5 4cc464f80ce7a992dd5e7ea37b41b9b6
BLAKE2b-256 b9a8fd7b8499ba43d8edf6801f42eb7f4b07a60e534f694ad476e179379bfc62

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3c0bbfa977155d37e6b48b9c820756e7dd49d81cfd051e7c127a18f02672d45c
MD5 cbdc839c8efffb254a66e23136f8bbe6
BLAKE2b-256 a5d809f2ffc11ced1448ca9fd0bf4e70c83dae725ada60ca8d1354f91dc5d39d

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 bb877dc9b099d856dbee7caee719ac6619b369e64e799a6173eafed47c7e5d02
MD5 5b17fe5e8afc36875f3aef63edd671ac
BLAKE2b-256 4415f0e546ee50d930ca8bb03f55f19b4ef9a14ff24ef2d51c9ba065a4cebbae

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 8467d2d95dd3d304208a68969ae8b359b81c45f05411f48fd8d7f89b09f41e7e
MD5 0f52f91c0833983b29ec05dd964b8e9e
BLAKE2b-256 025fa2d3e3d5aa79c1ead5be39ad3f43b60d183fe138091f932e43d5859a44e4

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 126cda1be8f6f57e1b92b58ee58590ddd0ba683b8bed41e6d3c3bc930be9e238
MD5 54b1486bcc6681c30620c4475ceca7ee
BLAKE2b-256 c8ddf77284c6d1737fe61d19f5ed68176e23efafa4d300767747d0cb79b584da

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cd885544287c9e02d82b9882655aed77e080ead2b337b03c97b31d21b11b7a36
MD5 1984317403b1f4aa2620c13d80ea8cd3
BLAKE2b-256 b47a86fcf9d4d991efdeded447cccfbe0f47fe5ea0374210ecd15ba854d76abe

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9fb6daca5b63910b901c5fde5ccd2f8a64bdbc5f9c66f3e60643b9d0591937de
MD5 3d97c12f827acdfe883bd8043522cf5a
BLAKE2b-256 4aa9091c62eae4a231d1ed18b85198cfc73e0dec2d417d04cd89fbf548b4ee55

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d936e73b92837a544c76adc5fc838ebb8a13181686dd2851cf78832ce96546ea
MD5 3d0516c5dfdfa9ec27efd59e64901a55
BLAKE2b-256 ec10f0c86827517e7116221175539e5e27d125206f089b664ac9fc08efe52937

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 91d038ffa3ae701ef8ab2729be3e77a51a243988415504a62c71f4e8f16bd443
MD5 9dcca88e4721a29ff22feda71b4eae87
BLAKE2b-256 608be15ffe4d1ad73c82c6892822799cb1934d71b37eaa03c15f3d6d675c2ab5

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5024a70f7b6aaf8bbcb3b71eff9b9c588e1c41454e0bb5518df0a3c3ecfd7d91
MD5 4164ffac6bb4b0498c5e1d25e6f039f3
BLAKE2b-256 e55c84b730574490898b9919f8dd780f72a829fd6c43baa566c10452b8fccdd4

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ddda8dd7e04ce59a217cf682c5dc816e3d4b98bccfdf6ec759191c4964cd5749
MD5 5919fba09fce946541d78d471acf7c3d
BLAKE2b-256 d99b8b9501d4ba5f61978bdae233fb72edfafc9e6e3b05ab15048af01f2344d5

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2c10cb719503e642690fb77a5861cbf94d22cb447e7ddbdec08bb4cfcef58024
MD5 d29a52b51a1ed5bdfaf772df3b8a0c9d
BLAKE2b-256 55da15bd8855e23a51f412628ddb81139300d4fff9cfc4a4f4acc948926849ae

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 fca596321546274733324bba6b5c1b0b6f363083b2980b23960080524714b63a
MD5 f28eb134d8a1bf9ee139ea05e4af22ca
BLAKE2b-256 65f5dfd8a86bc29d0f3c1a6aac12bae5fd780df134e5d53c34871dfc69613c41

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 501c1eee16a549288c36faf037a54d2d27bb8d1ff117fc4800b667a66f3b3c62
MD5 da267fbd4ddcc81ae52a38fa3cb6656f
BLAKE2b-256 3cab3e8775e67e73945f4c53c8d6de1fcf54fc5437f4cbe6ba33ddb78c218707

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8ce3d2a10422ff064477f99afd38229791c7eb8dac441e47106f1c3e227283e0
MD5 11fcdc52f7e68a7ebf1d0c87726558a8
BLAKE2b-256 4841dc7cd58d01e3d8894926e6f3f1c27714054eec15ed7cd4ac33eac56ac181

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 61e8ea33ab391022729bc61d43d79bb9c9d9503ca793a469c2fc60c9d8dcb5b9
MD5 a645a106f8d5eb552f392269ef7734c0
BLAKE2b-256 9e0009f227ae3b15177350ee8dd37bb161f031da94bf080a00d0cdead2516829

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d26bc5b3809ec426af01a1bcacd35770085081756729eeab224f8f1e126af880
MD5 503c37304c6d95b5873ae6e3a0e63adb
BLAKE2b-256 818644c12cf96715b08ab5eb1934acd1559a2fa7550913bcd64b642891567ca3

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 386ec20a77151bd1511126162e90b9a555da039018f967d362e074ea6d8643c0
MD5 bce2dd4b866973a9332a253522cb6bc1
BLAKE2b-256 b5341fe4ae3183d220c8d8b8152d5f64437eeb7300f724f15d4755b3bc4ace16

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp37-cp37m-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 aa8cd066fee6e3d6de7a5a1d39638dc6bbef72e97e41fc7640d1ab3752ca6078
MD5 b2a603fd056f1cfd67e3714de8a4d434
BLAKE2b-256 454ccebe5a4befc545dda3de17e75c897d4c0b016a281f06cd710324446affaf

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5e67ce1e5c6ded40fa9c84e451eedeb9bd5ad2e77376959ec7a0d795a5d314af
MD5 a471e822243a76b6a6c3c333f4af6f59
BLAKE2b-256 656f010219a6d23d68986237d252bb0386473a533e2ed2dd59c74d609c14556d

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ab3f84263923b429a6bc74f930c98a5aee6d585cad0fddfed616abff03462f61
MD5 aa748981c7b68efbab0ab02ecfc12032
BLAKE2b-256 e4b05fe77b6f69c9d7794414cc599a1298040c668b1059917bd1b565ab7bfdbf

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 9514c0c0ec85bd91681c3277ca7043ba6ef19378937686a6bbb34e084adda0a3
MD5 3164fb22889a92b80fbcd6368ff9981e
BLAKE2b-256 df81f4742de1cb8b9d93933d61b7d4fe2c4da4b709a2dceb40771ed6945bdfb9

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp36-cp36m-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b3acb67def6a2225ed6d245e69583dcc018c6c728e17e6f2418a961d4c83f1a0
MD5 ffec5ea914d77b7d27bc3cfee6c5b56f
BLAKE2b-256 5ec2e7d3523e20c35bed2b6804d1071049682315a1e29044af0fcf127224eb95

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3e5aea629ef57a5717617b798f0b1b100bc8685339992b7f28fe40cf36c5e001
MD5 f79e4fb2504a374c3b4fd3463b89e3f0
BLAKE2b-256 cfab6c07e2f06ee949b33b7fe444947a41a98b0779ced9d2bb2e1031b058dd91

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.3.dev286-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev286-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f9aa1abacede0aadd94af4e0ba0472ac1e461e5a0ab76f1e3c5bfc5aba84c413
MD5 20b244bc18f72bfc8cd793b4d18f3936
BLAKE2b-256 6216bdfc1d143fbdd40a852243a288b436f83853ca6e57552f506156380b1893

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