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 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.

flashlight_text-0.0.6.dev303-pp310-pypy310_pp73-macosx_11_0_arm64.whl (910.6 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

flashlight_text-0.0.6.dev303-pp39-pypy39_pp73-macosx_11_0_arm64.whl (910.6 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

flashlight_text-0.0.6.dev303-pp38-pypy38_pp73-macosx_11_0_arm64.whl (910.6 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

flashlight_text-0.0.6.dev303-cp312-cp312-musllinux_1_1_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ ARM64

flashlight_text-0.0.6.dev303-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

flashlight_text-0.0.6.dev303-cp312-cp312-macosx_11_0_arm64.whl (914.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

flashlight_text-0.0.6.dev303-cp311-cp311-musllinux_1_1_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ ARM64

flashlight_text-0.0.6.dev303-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

flashlight_text-0.0.6.dev303-cp311-cp311-macosx_11_0_arm64.whl (910.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

flashlight_text-0.0.6.dev303-cp310-cp310-musllinux_1_1_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

flashlight_text-0.0.6.dev303-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

flashlight_text-0.0.6.dev303-cp310-cp310-macosx_11_0_arm64.whl (910.9 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

flashlight_text-0.0.6.dev303-cp39-cp39-musllinux_1_1_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

flashlight_text-0.0.6.dev303-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

flashlight_text-0.0.6.dev303-cp39-cp39-macosx_11_0_arm64.whl (911.1 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

flashlight_text-0.0.6.dev303-cp38-cp38-musllinux_1_1_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ ARM64

flashlight_text-0.0.6.dev303-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

flashlight_text-0.0.6.dev303-cp38-cp38-macosx_11_0_arm64.whl (910.3 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

flashlight_text-0.0.6.dev303-cp37-cp37m-musllinux_1_1_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ ARM64

flashlight_text-0.0.6.dev303-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

flashlight_text-0.0.6.dev303-cp36-cp36m-musllinux_1_1_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ ARM64

flashlight_text-0.0.6.dev303-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ ARM64

File details

Details for the file flashlight_text-0.0.6.dev303-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d80fb15cb47bd5705c388e71b829044af9a21d32c8a64a0f89068c36f8fb25d7
MD5 a137ca491578d5c3b87538793c5f1bcb
BLAKE2b-256 bba220e5619aa452375f6930c059cc08b2f01ad6a30c1567d35de2d8595442ec

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8470232b519d0eb88f2bd50dec2cab4f06e9b75b35f9193a1e9da713553c042e
MD5 9e463d93983a5ee966107b04553f8f58
BLAKE2b-256 f3e655844303ef59deb03b0559f69ba34a174b6adcf815124149949deaaa0b0c

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d8eedee7b1d1e3c75072af98a7553e127d89ac7a69a7080baf62771684b5b706
MD5 effd19f1b12e3be775786ffddfd9f4d3
BLAKE2b-256 a9ce468675480ed8fc71955a1c77a1ba5ecd3d94358434f0e2a30472c6b9ef87

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-pp39-pypy39_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b6c6c71b44f2f72d2ea017ff734bbb19e53b472cc2118eaf6f6dd930ff941048
MD5 82e9eb4472fe271a71a73fea52669763
BLAKE2b-256 4ff2c9ab8fe35292fc2011cf502a5dad348e7418d327543a11e2b0515405cabc

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4e788df30ab9c094088afe9013591dd0d58bcd713fca6cb86332792296d04f62
MD5 95726bc021362f36d1f36380383bad78
BLAKE2b-256 0ba6678d6d177e67003f4a70330851830ce5855567a01439630c112014981fe1

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-pp38-pypy38_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-pp38-pypy38_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b1a42213e08588010e8a847045059047e491cbb342f7ced83cb64425776309e7
MD5 a4964ee4370b488e9704ef459bb9bd6f
BLAKE2b-256 c007bc1fa048fd0e5ca041e9983ed82d6fff771ea729f07217a8d859d8c42547

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f66e65410a02332e0a3f5305774cae8f10284dcd63129b1933db841cbfcdb7c7
MD5 ec3cae075f0cfa1506118aa99e4b15b8
BLAKE2b-256 c05156aab925a975ff47c30c5b18e8b4470234a898ee08da899898a4e8f3cff7

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp312-cp312-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 3b616ac309d66647270cf8c114cc939d719e23bc60f5740046af469aa3250673
MD5 a034d01cd16cd32eea1064c2a3e6301f
BLAKE2b-256 c190229f83e25ebd55e6f1880ebd97f5ac91a272dd64099059a4658e2583ecd3

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cf2a6dd7c6c25cb1188249d8dea6b50341f1771d260d56fbcb539da8012048e3
MD5 627c1947a8f0f4c595f4d37e0c887771
BLAKE2b-256 74367f3d75ace8b7ba2eee1113938dd08e9f4722e8ec2a40b40422e6aea37543

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 120334e52897c75ca901d66764325f769452d82f4afb0a7473d472c6f67dc476
MD5 124e1d7993c026b806efb4a580306663
BLAKE2b-256 00dc2ed2e6e5f310e0045497d94257a2a08827201fe4f8027a890c725e98824a

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp311-cp311-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 b74403551687986fb0f1970a78665602f8856ba33c781646ce436584f757b296
MD5 b44c17c909af97f9c50df75dd11911e5
BLAKE2b-256 cab1b58ca17e5ef5bef879c92e183440e5229d3082f4d7f06c4e33102c78adb3

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c3daff9ecaca3ab2de7e4ccd83b62a33801224775b9e2345cbf6140053caef57
MD5 0d243bca267e6d4aa690993119ed43cb
BLAKE2b-256 08ec4d54fb5ee2d187629269137321a433704a451608b62f7ded8d29ed5e94f5

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 be2719684fc8e4a0079a55a4630ca20779f3502ea4b91b147c6a80e364bcc64f
MD5 4e0648cbda80e8b3423462fbdad256f2
BLAKE2b-256 22beb0793e174dfd3d8b756776ddf03f80b2204385e28f15c8907bd164222cbd

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp310-cp310-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 3e7c9820f4a90440e5b958deea5f8a27251cee8d6aa9264d0ad60adc60479181
MD5 a0daa272937bed32fc6c0790f36cef83
BLAKE2b-256 c500f6bc5670ea4263d5115240735382baef994bb443b34f338c82ee839764bd

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fa7ef8d366368c9dca428e91d9a0bb56b85a0198bd4da54cd07b44154fa7aa0c
MD5 f66f7dfccb8a7f697ee51002f6080b34
BLAKE2b-256 12177319116e1fb56adb244e89d996c0a35a432de35e7eb840c51e24dfbc83e1

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 94b47ed1c2b4d6a6f2c0d7dbf1cdc675f2cac2ca3527d28dd47809d300c64f74
MD5 ec8f89963497c1067d114c9d4886b8ae
BLAKE2b-256 e49e7dc5d851e04ab98c4387d7848a303ab6a1ca3b254820d2b31d6bebd28aea

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp39-cp39-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 8199f4bbc199c8d3b6fbb3a08986e1a036c54597701208dc2f1c3c26a884e08d
MD5 d7b2dfadcf6a76b3f1f1ed5eefe936d2
BLAKE2b-256 6959b11e6cb8246238dc30b5259015d771dffcf53d397dc4b6843b8f87ace94c

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e59a7425e73127e1039df1d4244e0b564be15829b30f6967a9a1b01a6dbfd38a
MD5 fc093b6af25026009e6acd1c53f5bd3f
BLAKE2b-256 4eb44556797d9cfe991985c1444df49f6e23245ee46e67b3074bbab9c5a03eac

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 47eccd9dcc8def6a366cc65e88373e391ec882c96beba7216536fca1e61a8788
MD5 b4236a0fa654d2501329091ce464661c
BLAKE2b-256 38be98028575376ed8723c742059f5e4d84482a386e6b33fc237cbb297a83866

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp38-cp38-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 094cd1e6d9a8b9676c152fe75f04d5bc78f76daf3b58dfe4e06dda6c0b2369dd
MD5 06ab1aa35310d21c6bdc9ac430e7018f
BLAKE2b-256 170e79e52783f3c088a5fdb2432b17ead5dc9c58d6708321b14c3e6d27c75a71

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7551207d3a1a5bfe139f0c3464e18b1e8a8e706bef47db99bec64748eac93716
MD5 793350f66f2fb7c10ff09efa6eb330f1
BLAKE2b-256 a228f9e06e47d46755b6ed0e33e71e8a893a99fbe214d1e3cc9fe48199c9b70a

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b8bebe7a09c73f105915fc68a93c0619c724439948868cebbd660a89f8b94c31
MD5 ff0c830092b31c713bf285454ce637b5
BLAKE2b-256 812ad9931732eaf93df20b03f9fff1e9efa25bb8e48b5a074ec3ac5fcd94e9d3

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp37-cp37m-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp37-cp37m-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 9c10b7bc183714ec545a864c26d8d6581c3645bc72f113472cd1e159124949fe
MD5 96fcd50b146a70615426aeb686ebd1bd
BLAKE2b-256 b0aabb20cfd8b371730a8923bbf85b8a0e6d2a6476ff0e5bf17869a8bf92e9e3

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a2b841f21fab5bff292a1b9d5bfbfc37e08e6f98abbfd845424fcd79b6ae8821
MD5 67bcb2bbeea8c3343bd5b45d4f4b20f9
BLAKE2b-256 290b680f3d868d184714c50a3d7b10798c8b06f612820f440c7eb063640493e1

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp36-cp36m-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp36-cp36m-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 bed02cd7ed0553bea368ce078ae50bb2ac3407111bb2b198adc78a7f61810247
MD5 68410014765641c08bb3eb015b552eaa
BLAKE2b-256 a86e15545fac3d5ef7a94853071698ce57265471f875e397e578ca649434d66a

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.6.dev303-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.6.dev303-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1a726d986345c99874d2421fadadfe33b87d2333d6df70df0823419a4dd612c8
MD5 cb9343df5e2733514dce0ab3e67509c1
BLAKE2b-256 2cc7a0f6d411af77ce0aac7db3184cc8f96d2aec9152de5592b55caf330cbaa9

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