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.dev278.tar.gz (60.1 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.dev278-pp39-pypy39_pp73-win_amd64.whl (578.1 kB view details)

Uploaded PyPyWindows x86-64

flashlight_text-0.0.3.dev278-pp39-pypy39_pp73-macosx_11_0_arm64.whl (894.5 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

flashlight_text-0.0.3.dev278-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.dev278-pp38-pypy38_pp73-win_amd64.whl (578.0 kB view details)

Uploaded PyPyWindows x86-64

flashlight_text-0.0.3.dev278-pp38-pypy38_pp73-macosx_11_0_arm64.whl (894.5 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

flashlight_text-0.0.3.dev278-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.dev278-pp37-pypy37_pp73-win_amd64.whl (577.3 kB view details)

Uploaded PyPyWindows x86-64

flashlight_text-0.0.3.dev278-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.dev278-cp311-cp311-win_amd64.whl (579.8 kB view details)

Uploaded CPython 3.11Windows x86-64

flashlight_text-0.0.3.dev278-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.dev278-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.dev278-cp311-cp311-macosx_11_0_arm64.whl (894.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

flashlight_text-0.0.3.dev278-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.dev278-cp310-cp310-win_amd64.whl (579.5 kB view details)

Uploaded CPython 3.10Windows x86-64

flashlight_text-0.0.3.dev278-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.dev278-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.dev278-cp310-cp310-macosx_11_0_arm64.whl (894.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

flashlight_text-0.0.3.dev278-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.dev278-cp39-cp39-win_amd64.whl (579.7 kB view details)

Uploaded CPython 3.9Windows x86-64

flashlight_text-0.0.3.dev278-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.dev278-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.dev278-cp39-cp39-macosx_11_0_arm64.whl (894.9 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

flashlight_text-0.0.3.dev278-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.dev278-cp38-cp38-win_amd64.whl (579.2 kB view details)

Uploaded CPython 3.8Windows x86-64

flashlight_text-0.0.3.dev278-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.dev278-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.dev278-cp38-cp38-macosx_11_0_arm64.whl (894.3 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

flashlight_text-0.0.3.dev278-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.dev278-cp37-cp37m-win_amd64.whl (578.8 kB view details)

Uploaded CPython 3.7mWindows x86-64

flashlight_text-0.0.3.dev278-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.dev278-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.dev278-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.dev278-cp36-cp36m-win_amd64.whl (578.7 kB view details)

Uploaded CPython 3.6mWindows x86-64

flashlight_text-0.0.3.dev278-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.dev278-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.dev278-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.dev278.tar.gz.

File metadata

  • Download URL: flashlight-text-0.0.3.dev278.tar.gz
  • Upload date:
  • Size: 60.1 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.dev278.tar.gz
Algorithm Hash digest
SHA256 676329c3dfb8caf55854269f76046ecc65e4830464f4bd9fad9c8601feb6dd6c
MD5 7dbfca2399670ac952f4150aac66ec32
BLAKE2b-256 3af4c21084bb14fd92791a0823996b1d3c27e0abce70212bfdd77e9f90362c05

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 bcce08af3be8986aa7aff0b72605225e5c8690f0e647caf838e93928eed125cf
MD5 6105c7edee9c3a8a7d5a634c696fb136
BLAKE2b-256 3f5ca17f241408224536697fc1d5e475c5358d5a3817b8223a961c0126fafc68

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ef6ce6dd232e3a7fb26c0c7121d09aa9538deb61d34a842261b73f078e88239d
MD5 36a640f85fdc5a2c190340660aa52b7c
BLAKE2b-256 4c96e56a5baaf369d7d10fd48ac68ad162c535576afc7489cfa56399703ae910

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 09d5583343e93565d95b1407c8d000f28a0979e8843dab9e0009ebec283106fe
MD5 915d2c1ea7c126ed71adc8d04f3cd40a
BLAKE2b-256 4858e75331c22fb51d4db2913d9f8dadfad3b241192da1d76a63132a75ca15c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3078ce89367f31b26cc8ef7e1a26d295b4f80e590e0ec328f7ab1d04e1c33d39
MD5 92a50867b5206b6fe14e15cd6032b049
BLAKE2b-256 82b8aa48a2bc0bcb61170d3c71c5b05994aedfeb87bdca90958a5a32a2ade776

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 1803874661e15a862e2a077a731ad9ec9711b24e29a16cfe791aa4250069908c
MD5 51da80d8fae458db17c7b06a779a0fa4
BLAKE2b-256 c8fc2339a7ea7e14c1faf9173ffcaffe653f1788e82f1c3aaf3d3e8219e7eb4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3d30ff7629401611df526a8af71fb169498b7f177e1e0bc8ce98b1dbe22d98cf
MD5 a3c3a735601d9d3fbcf90c4d58f987b1
BLAKE2b-256 1ad1ed839ca5493972a0302bcdf32eccde9144a3ef5f5b73c32bf6ef2cfbe3f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-pp38-pypy38_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 80682471f845bb05b6eb418bff673430b27f750d4b095bc5886a3b72c44a498e
MD5 705fa9025c6828525ec2c102b25d569a
BLAKE2b-256 55e786aaf1de04a369182b024d62c4a4135141821af229b074d40cb9f82c6968

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a55edb0bc7cff216df5401e75bb940bcf8195f39f6fce4194fb6defea0f27731
MD5 a526a0f05044e857d7e4905a1ca1abeb
BLAKE2b-256 8e025b8ca7e191070bf55c489c1ea34d741fd8477609f8b9b73e556b659002ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-pp37-pypy37_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 566a556a6895126a39af2c507d72e902aa938e0563199144a5c9827ab3763823
MD5 51cffd5b013933f49f6cca739fe0127e
BLAKE2b-256 a9d4c7059a8219480abff1d7dff0336f32952e35430bfa9797b5aa03827a34ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 30d27b7d00893d298581ef06233e4c8b89b0260e7492c703b37b016984035f63
MD5 2cf7c5822e49736b75c1298de4b0b616
BLAKE2b-256 bf599903218a2eb0d62990744288cc04ba47688a15b063aec98dfa541250401f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 98aef024d276b6c622fe9d839749e0c2bead70644fe5c6ece86096bd7571a2f7
MD5 ef5738cbb658a9ea8bfdcd2f0d8ea864
BLAKE2b-256 c8c083c2d6f0fe88a572b6e29fbc1914cf9ab335daa9a3bad70631a761b5c811

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 878296558abf0c6a3cb142a0277410c1c6c04a6283b4b612db9fb78e5fdfca0a
MD5 e5f77868cb2ed32d203f452ccc7e3e38
BLAKE2b-256 60ffbd717dba02c1e152abbfc148995d24e8c7b533bbee80be45f8b914eb78cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ecd27297284be6bb12bb2b4b54535e626d47f1faaee538922dd5710ad7d70a87
MD5 9bd60c0e91fd875cf8dc77ef9673fb30
BLAKE2b-256 1d195fdad98dd465aed6fc0b75fd20ae764f132b7d2b3cf7050a3ebb9a42d1d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 af7a3f274781512239056dc7467b3634d56070ea3f9d5269747413893d609799
MD5 aabd275f48df43a62a796b1abb20db2c
BLAKE2b-256 4af77d5ca1f5af422fcb320e0c99f477ea46b88080df167c03b53ae9e35a6668

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a0723c2a21a5ab3589201cf8e4e2b4eb6959e1b81ec5b94393fc40c7f65cfef3
MD5 e9ad349399609d10c6a000441b926e49
BLAKE2b-256 a227449df7d1bcae666ee8ea4c3c28a8a7bff07cedfb366547cd6f056b7d25f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2b32cee567058b1526667088151d92694f1771b5a8d4d84c415173ededff120a
MD5 101d8ffb4c793fd15059bd39048712db
BLAKE2b-256 60d9c7e57b0188d2090faf812799fa8f69912a5efa4e1c3331391f8784796f7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 912f58810f65c712526836ece613e9e5c19a518ddee6478cf577f46490fe9cef
MD5 f23b50e2312d238f5cf54e42d6b2fd02
BLAKE2b-256 ff30bf77b9e4d49757159dedd5b99ed72445ea2cddb32fde6e221bd4f209b201

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 8ecfccb81ee319d5a816dc78866b9f81f48b66ae8c7036751483bdeed0783c50
MD5 c6111669fba0836ded8efc1b2d7a38bf
BLAKE2b-256 fc1f0842d85097d2834c51a1443a9457e626c5084deaf56a06f2907aac4696eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ca35f3e4bb09da6827fe11b63a9deb2b6577784fab90aae7843f0c2229132f27
MD5 e3bc2f87caa0efbd389a032d6fcfef06
BLAKE2b-256 9c2874eb11fda7817e1b0c8a0d8f549b67b2da9d6696dfb80ab2087755c3ac38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 758a4c6128d31b8cfeb3e8471012ab579683455414b3727542a1c5eb6fe3477d
MD5 a972d7b7ab26597ed8a406ab5d5ab229
BLAKE2b-256 96018179caa54d5dc4bcbad1714cecc33b93ee8b5400f812906b4bf8a7cd27d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6ba962183e54e29f4c2a8a42afa11e93a2ec801899129ab79bdfd95fe988ed4f
MD5 85b322742e3f9fb6e255f7a73f240600
BLAKE2b-256 cf5a3ef3122d32b253411249cdbde5bc9f3819c6d9d992129f214cb44245728b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 3c25546ebd871e69095a17e0456e618cb3867803982f513217bbed7b527cb5d3
MD5 599c57406d3f9fb5e128f017cc258243
BLAKE2b-256 0fa0e3a1a24322b79fa65e3c98c1970ff8bc1b628f695bb51087576f995bc84a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 130fd2da1cb755f1bb1ad67bb221bf1a15839ea11614f41ee520939253f664cd
MD5 31b530a28265ce1806a4fcd414ac41c7
BLAKE2b-256 8bac894d50b9734b597f48ed5e5064f12dde0b51a02e9bac5ba8cc8463630dcc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2646c63478e8f534790d5e565f4347249f6a803c7c335ed50c631c9d5371c3d7
MD5 1921a381c2f7979289208f656bd45edf
BLAKE2b-256 7c734f3e9cc53858a3c28feaebf4060cc678fe5d3ab5766812dfac95f49c5463

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d54189d841a7789b1b9e32a00d0f378776ee34b9a2d8056cf0aaf32ddffb3a5a
MD5 428f19ece03282d3d02075b3767a48d1
BLAKE2b-256 d718f4585c977462c06cade971a162e88f93c4d7ba2fae3cfddadfba70fdbd45

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f4a2166ab5d9a5b6343ce3df365296330455852ec6c102aeb69cc0adb50fe21b
MD5 d57937129a098ffa7fe00e5407eb93a4
BLAKE2b-256 f2459fb5fc0c2566bb90ff8298b5e14b16fb22769beff8842f98fd30e045a004

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 8a48ad6eeec3abd5626a7318ede5841e6f916c5254cd5aaf2fab331c41c89214
MD5 8cba4f5d62a9c10778900f76ccea7901
BLAKE2b-256 c12d29652e1f675c45c572169f17ccb2635533af24cf2c176ddd2a84aa06570e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 0f510fe7402d64171736e2243ff7eae7b336ed62848c064b7abe22e8238af94f
MD5 85fd3c7f155a52edd0629bef24c526f6
BLAKE2b-256 10071732ad1fcd1603cbb413a61947e8714bcd2b68e9ac414e46b706e5ff3217

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2218b0802a03572b8ed0a3eda85182e42eef7b3fa1dda1cbc864b2c4ddfcf4a4
MD5 2c790cf3b0d08a6500e5688afe625b37
BLAKE2b-256 3acbed79d8db5697fa11e3f44d52a56fa517d124902f3008113b313bb4187a29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af9441af185d17a38b6fdf76ddf671ff8888fac1d1db18dee94a6ba7d573f822
MD5 b6ccc9da9ddbd256f4099ddee4baf85c
BLAKE2b-256 9bf5b887e3992e3a0cebeb2a02d94546161395721d3a5db79f1aac7bc645c4a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2fb0e376b4fe516d725d62d6388c4ba050587196a8b5fb2ee641b78fbb020287
MD5 05965e7081b9a269cbb88ae307e3b600
BLAKE2b-256 94936e83940502cc8a7cfb3c1bed6acc33486d226f211e44d6b053a23d4ba791

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 1642569f0955c8e010c8f0ae4d4f67ea2baef0fb8bcbc78d84308e173f69c5a1
MD5 867795fef1a4c052e3dbe823a62a1cb4
BLAKE2b-256 564976903d5df2d01cc33d15255c957800243ad89ce55fb76c81ceea8aa5358d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 22d8d943c40096acd4e7c08eb2071253665c3b334040f59d6a6b0abd29f15c91
MD5 2f905e01c92424eb2d8811aab7babb52
BLAKE2b-256 0eb2de92b7891741d21cf761588a18cee52b2fd85e4ce5166a7e7377b7dbb2d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b8b4b5e2f0880ff33b9bdbfa6d33cd909f78f34172bc8eb0fe066cff335a3c77
MD5 215451fc0e3029853c0d917910aa88c9
BLAKE2b-256 097629150e3217f6ccb9f175b49034772cf232de9fe827161bc83c864f9dae17

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 23a92062541e27b925edd301c7644180bdc5eced870734c07f106fb20372b115
MD5 b69c7146e3f10e90ef102716b1a49338
BLAKE2b-256 94ee63bb600c5fe2a7195227cc76758aeaf05e0d5b4a5b1c611dad3f1268bbf8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 741fa460e527658109065170acbfa54217b0c25e916dac1e639bbd9c0c2d9c0c
MD5 8d7602294ed1f7586ee06598367f44de
BLAKE2b-256 90f303e60879786dfc1ac3b2ede310a74f2a66ffb4bc8cab3e316cc16c38a376

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 5eb64e07d4af161ada078beac9d0ef0d8254b68ed96b9a80f9720cd00eaab274
MD5 cf3840001bf91bd6250b0dbd7dadfc9a
BLAKE2b-256 b380046fc8bd15f278d67b02e52e8258bee0c01dff4af6e935fdf8509322f5a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8060bd37413de4ad4efdeef84abe65b1eb237e895e2942be684667974ea360be
MD5 4c8deea6ef8920ea904c149b4d22a1a1
BLAKE2b-256 0e90d29f2d2c30367b305dc6af5a0780d9bceb100478e0ed01c2e67d5f77373d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flashlight_text-0.0.3.dev278-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 34586ccb1e46348cb895be80d31e896b21a5b880ee4d0c822e5d98d4c2d9e7ae
MD5 8ffbc29edfed14770504ca5d1186cac4
BLAKE2b-256 fd71f8071a3e59d4c21e8fdd298958aa678460c399e60204716c87d1b748282d

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