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.8.dev313-pp310-pypy310_pp73-macosx_11_0_arm64.whl (910.7 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

flashlight_text-0.0.8.dev313-pp39-pypy39_pp73-macosx_11_0_arm64.whl (910.7 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

flashlight_text-0.0.8.dev313-pp38-pypy38_pp73-macosx_11_0_arm64.whl (910.7 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

flashlight_text-0.0.8.dev313-cp312-cp312-musllinux_1_1_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ ARM64

flashlight_text-0.0.8.dev313-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.8.dev313-cp312-cp312-macosx_11_0_arm64.whl (914.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

flashlight_text-0.0.8.dev313-cp311-cp311-musllinux_1_1_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ ARM64

flashlight_text-0.0.8.dev313-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.8.dev313-cp311-cp311-macosx_11_0_arm64.whl (910.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

flashlight_text-0.0.8.dev313-cp310-cp310-musllinux_1_1_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

flashlight_text-0.0.8.dev313-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.8.dev313-cp310-cp310-macosx_11_0_arm64.whl (911.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

flashlight_text-0.0.8.dev313-cp39-cp39-musllinux_1_1_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

flashlight_text-0.0.8.dev313-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.8.dev313-cp39-cp39-macosx_11_0_arm64.whl (911.2 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

flashlight_text-0.0.8.dev313-cp38-cp38-musllinux_1_1_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ ARM64

flashlight_text-0.0.8.dev313-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.8.dev313-cp38-cp38-macosx_11_0_arm64.whl (910.5 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

flashlight_text-0.0.8.dev313-cp37-cp37m-musllinux_1_1_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ ARM64

flashlight_text-0.0.8.dev313-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.8.dev313-cp36-cp36m-musllinux_1_1_aarch64.whl (1.6 MB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ ARM64

flashlight_text-0.0.8.dev313-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.8.dev313-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a7245a52169bdf90127a520d45d82a1622b11f8c45e2cee492f4f52da436a287
MD5 8ee39eb1631e408189f0c7692d0bfc68
BLAKE2b-256 e0bc5b468f7e9e8790563790b50dfc2990d570195efb3806ff2747bb9c94778f

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 887cb2ddc7d77090e76d3b92916a09e916a425204d7060924e29dc21de620959
MD5 3ad72713cc060d813e3e72204f4149aa
BLAKE2b-256 a48903d2bcf98721806d3cca41afdd3ebb19e23b61251d6e81ce61a9e599670e

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 19a0441c91b7ee352550bebc4ddae75b93544561c9f0516a282515c6c4642fbb
MD5 cb4eab701512732f9aec950ed36384b6
BLAKE2b-256 020d2a65d0bea2e942c6716c4a5b7c40b710bc481a944977d184c6fd676cce71

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-pp39-pypy39_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b00b0e1656bbc36b60a0f0e5fbe4f4f73be628185e5ad6bbe1dae826c53bd93f
MD5 45bf00540d468728375a22726ccc5eea
BLAKE2b-256 68b9c22d5d7bb02c99a6ffe6306cbc870c50e44dc10e42f89ec4001aa4f4e2ff

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e6c9091248794629556a1b495dddbe9ddf1dcf86ea4d9384cc1d7f519e76f492
MD5 cade28adbcabb1190e8c84506989990c
BLAKE2b-256 4cc462213ec11b5747f85025c7bcbf5c8a7dfc18550a8e172b2e57c1f36c89de

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-pp38-pypy38_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-pp38-pypy38_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e7973c069be2e9e35075436a094b74297b2e6e115695b312c49a68850330e1e7
MD5 c08269fa74b546de308dd0a008f13394
BLAKE2b-256 ebbb2cf5397c4d0475b2f1ad051dd968be36ea7fe7d5665f94c39c94b6b006d8

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 098c1698e3229cb48d188946bac03776cee5e0fb6ca4bc26574a904e54914d55
MD5 43ddb8cea0d7a60f45745cac7ce352ba
BLAKE2b-256 9813a9ea33777d1496a41ab8a3c08f4d48705324a257bb217b08359872a62e44

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp312-cp312-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 d902310a12490ed97a2f9e1b09ed264f310538eebc52941f1a63dd113b0f2619
MD5 8954117b123db044864fc6def1d433dc
BLAKE2b-256 ef779b16ee833abcc2cab094febdd7968269f16cdbaf6f9b8ad4c72d7ee4b6e4

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4c774d6f768c54c379df2e2897abf9b4c33be624259e7aaf1ec81a9ed5f11a62
MD5 145f8650e86c0e4c025b07c21f24dff4
BLAKE2b-256 9be5ba2b4fa10317318deb1e2e8a570304ee7947af548ea19e1ed46afefbbbd8

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0c5c1d60a919d16789e899e1750363dec8efa13eba6c01f927f661db61685092
MD5 5af6b489c729a3c8f1a6878946879e2d
BLAKE2b-256 b9854cfe524550784726701f559dc6bc64b7e29888c339cc3650d0734c82d708

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp311-cp311-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 4889ec0f86553b4b8e879cf749052a5086ee3b8beae8fa13a3834e47577f6a4f
MD5 98d800d063487f08bad4a1e96a9c3f6a
BLAKE2b-256 8513e8463d23403ed0dad055fbb56dfa8a46409f52c9a6cc7af223041da98fdd

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8633dda13bfba2f73d11d96a307b1b41edd085432227ce9901175893584e6a61
MD5 7f0f8f7b2c8778ed46f87a4c7a2fd243
BLAKE2b-256 832a719a22fcf33d94f9268bca123225fa4b1c299a4ec88b0dc2a80f16c835ca

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ec01cd4fac5ead13ebe4d654a5802cd614059c985002f03b8bd083e8426f39b3
MD5 960571f02308eb5a5538af10968e4aa0
BLAKE2b-256 7616362cbc0f88e6620d0cff8cde8ba01a09e89dc7bf02c2193c2a453a7a07af

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp310-cp310-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 f3a6293ec97c6b93195ca2db50108f4e493533692ac7df383d6a12f86bdc4af7
MD5 f09870c76cda3fc95dbb81337a11febf
BLAKE2b-256 632b1080a0ab23ca3778fd79bb3012a4157a8b515d5279442d6834f084d586b9

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7dce9ebc85895defb1dbbfaffea98aa084d5aa35e2605945bdca92be79a8cf03
MD5 575c7f2e76e087841b1243deb851d270
BLAKE2b-256 2934ced462ef2a04efafc0096a3eab9e0cc5e401c46881d8b08b5ac03283862c

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 93dfed651168e5113296d20f3d8a04d9b971993e8032afe1a87b97ef737b3c5a
MD5 09dc931dd5805d24068be1a556ebf9d1
BLAKE2b-256 fb6d164cc6eba10b95f50a895600da2e68eb520e19d32e941733b8721438b490

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp39-cp39-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 5a4246e70b50735a9ce24277edf746bf448bb3226609b244a94acb78f9b30109
MD5 b1dd9b04ff5b92f4f12deab1beac6911
BLAKE2b-256 615e07104f12af9b15b29661e3fba0f1513167948a3bfc0db3be2c2d7d34ac5b

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 032ca8a515ea7fb26817fd04102ad18c702ebab73206ed00f06bc17c5d8c6dd1
MD5 aa542cd9f4a1d3dd4c47182af9fdc355
BLAKE2b-256 03c61a9c6aca72bcd604858bb24d82c844fb39b1e5fd18bdd3f924762fc1206f

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5b1b42011f00bbb592426ed97529c3cb53a8106fc71955732551683adb887dec
MD5 9efbd6f69d33b7656f8c10f72cdab95e
BLAKE2b-256 75ca16fc23036a17203850ff63cfe5583d4cdf68952bcb4f223a7a084ff230b8

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp38-cp38-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 341aa2cc29086ffcd2b7315b24318d72f30f052f66c65fd385202a37acf69f25
MD5 7c68a6419bc610ca627a42ab9034ee51
BLAKE2b-256 f08598be5dad28f5d58fc49964faa601676112cb84a3929c5e42964232b6a080

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 03347fb3b58e3ac3a2b5f190fec02e6a7b0acd2395ad7837ac6f0fba28ffe4d2
MD5 31c562c0643fbead260a43d2951025e6
BLAKE2b-256 572073ce65e95da7d2164c9eb665c90c9c46d162006add155a4f745c18d70bfa

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b2820c8bcf7ec4492036563bda870536cac505d16d105086efd92788119e9abb
MD5 c7188b8c19a5ab076286c6cf568a2dc4
BLAKE2b-256 c39f51235983fe70950a2fdc85718731d4fc8141dce75da59c26bc06f09031fb

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp37-cp37m-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp37-cp37m-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 6bbb36360c95ef2c7dd783814240635693e8092844ca2a86751f9c46ef079b49
MD5 de525ca8def1e02144a58beeac28c7b9
BLAKE2b-256 211b3167b207164a83c465fbdbd88c9d04996a26d7a5c77e8e0f4b6069a9155f

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dc17c6055943cd107809a98124389661521301d6febda0bdc236608a01ae3b4e
MD5 8da632661664dd63db2163f29a960d9d
BLAKE2b-256 06d33ec9be043a7a0d609a93169f28b32c690851b1562e0b8388504a02b1d503

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp36-cp36m-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp36-cp36m-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 a0de330ce3a17f86738333cb352d26ef87db352c0c930da1d4d2f7d34322bbd8
MD5 10354c081f8e0fb3b99d52ce9f6af7b4
BLAKE2b-256 582d1ae74d281da0159a5364143a4c991ddc261565d526486bf44f22081d3245

See more details on using hashes here.

File details

Details for the file flashlight_text-0.0.8.dev313-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for flashlight_text-0.0.8.dev313-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d31fd9abd4206360ffbaf3c8a75926463b6219ad066cd76ac8afb5b7fbb17087
MD5 af1da7ec55c6d725d2c62688b36ba673
BLAKE2b-256 6f5d90ed968f27312b27045722afc14835ea30de308b9d0f6eb585f0128f044e

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