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 viapip 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
Built Distributions
Hashes for flashlight-text-0.0.5.dev301.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b9bb903c9bab54009eb89343442f0e3667fc632a9e1c857be0bb1ef2d0ecf40 |
|
MD5 | ab972b816a5faf8c8c202ebe86574dd1 |
|
BLAKE2b-256 | a7ae523d4c4dbd8d6b4516591bb87cda4fc89213791c197448f4d0c5d1cae0d0 |
Hashes for flashlight_text-0.0.5.dev301-pp310-pypy310_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9d6fb52f88cefcca5a8184f3fc71e8d6e93bfb6a964cab5e96bb3fadeec33f3 |
|
MD5 | 4935c588091cc58264e78a7c18d717cc |
|
BLAKE2b-256 | 882fab574b93210d359fa6b5b2d5bae37ba73fa2161b66dedf76d96b88659a0a |
Hashes for flashlight_text-0.0.5.dev301-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37ac8ef81c1b04823df34afbd0a1cb7f97e9cc3c0d636510ffeb1c26313f7d80 |
|
MD5 | 2f566fc31788fe3137b9a64f5d34f61d |
|
BLAKE2b-256 | e533047a5206e76a3c4e85ca820022ce35b63a589faf7912ea7806f72e16ca06 |
Hashes for flashlight_text-0.0.5.dev301-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d5eb0353762201d89c4f428e125dc2bfa229661609b0e4f874cf8d3fc4a0ab4 |
|
MD5 | 0079d40ed34f6d20d8caf60e2f468858 |
|
BLAKE2b-256 | 99a661a779fc1cf9247283ac1855cd61958ba586341cb490406d330b113c5aaa |
Hashes for flashlight_text-0.0.5.dev301-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b0a9d1a7a89f574aad5671152523a8f4780bcde5474fe1fec46a12fda467515 |
|
MD5 | 72773cdacfb9b362fa009a889b5ed891 |
|
BLAKE2b-256 | a2e72cce381fbd332cd7ed90f9a5a1f69792e4a8de1c77deb81baccb8504aba4 |
Hashes for flashlight_text-0.0.5.dev301-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 947c2cfe7fa8491dc30e955464b95b9b1c907a8d70a6d45fddda5e4b440f570b |
|
MD5 | fdad9f15132d5c9853d96f870ba0dd90 |
|
BLAKE2b-256 | 9368f41ca6a8672c8c4cb7b2cc7f5ee647397913e393aa2454ba3502ecd13a6f |
Hashes for flashlight_text-0.0.5.dev301-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a321d64fa3a83a857d4340ff06f791c9c10f107dc42b334c42de4189cbd1f806 |
|
MD5 | 2498d694e2028c5767c205c5e3033b49 |
|
BLAKE2b-256 | 844b1e3eccb3c859cb84bb6004986b0b95c23b5275a71430f800b93f6ddf5615 |
Hashes for flashlight_text-0.0.5.dev301-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b75a4fd1ff5df2b68b770d7486b28aeea0e86dbc24c857a6c6a00b148d29f78 |
|
MD5 | 48101873a0d58ac811eeb2242284b01e |
|
BLAKE2b-256 | 6b3403b61571268ee9d0a07452820e6734d6f13ba3ad34acaf49d353a9c12102 |
Hashes for flashlight_text-0.0.5.dev301-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b5dcfb78ba092230761b98f9548d36a6e0c7f66be43ea2a5b4f78c84600fa7bd |
|
MD5 | c2ff9025032d07a4e7a4ec20c6ac1efe |
|
BLAKE2b-256 | f6547ed99cffce368f34d848e3fa8e5cf2414b1e0f53d73879af89adc1bdc9e2 |
Hashes for flashlight_text-0.0.5.dev301-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | addb29cb438ee5eb4e10770476ee939bbfed55a9986f96bb55882991d7a5f3ab |
|
MD5 | df6dd6f89839df1ebd5ce217f3a2b256 |
|
BLAKE2b-256 | dcd695ba508dbc927bdd8ed0e5ae3538bbb17fc2087d8044662e21d8a8bf049e |
Hashes for flashlight_text-0.0.5.dev301-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 082107c92c69d42254db1749b6a0fcc6e51c067293e7184ff218dbd0808ba523 |
|
MD5 | dccc1a86ef3765a9759fabbf1095ba47 |
|
BLAKE2b-256 | 7fbd33f4628aef23adf97736dd089523bbcc66948eef5988c242261875a064d6 |
Hashes for flashlight_text-0.0.5.dev301-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ec69817407fe51fb31f5e5976c5b199fc8b40d4ad7803abff2a936032ec6861 |
|
MD5 | 0653b3e652e0ca76855ae4bfba44b98d |
|
BLAKE2b-256 | 27721583479bdea300f4256abe2b80f3a8eb99e779b35a238f39174acb1b940e |
Hashes for flashlight_text-0.0.5.dev301-pp38-pypy38_pp73-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2246375b534a305be38083f80a6fe9793b5071318ae69bc582c361341d4218f |
|
MD5 | f64c3d1267974cec1f25433935028d80 |
|
BLAKE2b-256 | b4b8c6e377f28c29d964369a5725acdb101cf6c0aaae226f97227b97b67f1b46 |
Hashes for flashlight_text-0.0.5.dev301-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e8ecc6c894ce32dc45500c625ba97142c8db28f26a30da75e48857f39ce7f28 |
|
MD5 | ba6799e499f72e36d80a098954d9033d |
|
BLAKE2b-256 | 7579365bb6299c49bf530238245429e8e9796a9f9124b5a30f63f11d970eb48d |
Hashes for flashlight_text-0.0.5.dev301-pp37-pypy37_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b68ff00ec77a7d5e52041108f824e78192fbb39d0cba2b1d051ba168f71352d |
|
MD5 | 655a4615b58a3ac708daa0ca1915d19e |
|
BLAKE2b-256 | cec5b8a33c7207c8d859e0b78eff2b0751440d607c74cb1fbd7c46320c7bbcab |
Hashes for flashlight_text-0.0.5.dev301-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee2a5d8cab783ff641ae5d5ec3217dee230fb7bb3873a2c6b89f775981bfb7e1 |
|
MD5 | 22159c6572aa05e3665cad855df6736f |
|
BLAKE2b-256 | 4b34db36a2dace4d537bed447046a9a1f1551cc4393a62a3c767b2bd0bedb391 |
Hashes for flashlight_text-0.0.5.dev301-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1fcf9ab70cf8a650e4415a336f7aca9baf1476bbf0ec7911124fabb30832571f |
|
MD5 | 2cb43b6ed6a74de9409e8a4f97d4c66c |
|
BLAKE2b-256 | 4a487181c3bf9ffd69345839ac63f93dad312a06b6119ef6f770a148cd34ab49 |
Hashes for flashlight_text-0.0.5.dev301-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1e16a6932e414f1c4ef47d18c50017401d780794350a8ca4d7e4482710a3f4d3 |
|
MD5 | 42defad6a4309748afac01e46c8443ec |
|
BLAKE2b-256 | 8ec3099463e16d6f093316754edfa9b9199b3e42241c313313eb5d60f3276495 |
Hashes for flashlight_text-0.0.5.dev301-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 006373d41e7274c9aaaa0abd8c2510159972b5ea974c0bf9b4717a449cf81764 |
|
MD5 | 8015c05e1225d5473701a8bb95221b90 |
|
BLAKE2b-256 | d2adf6e51744af2fd996dea326657bb1a721614f71a6a99b496a71ab3e5b8862 |
Hashes for flashlight_text-0.0.5.dev301-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 646b2f9df6951762bb518048aeb22b5572ad870561576d638177c5744f0c8be9 |
|
MD5 | bf1c093658d3221dba18fc4b7296361f |
|
BLAKE2b-256 | 4d5564151c8a6465f646b07bb2953a69bdae376d1bc350ff09ea16540fac9002 |
Hashes for flashlight_text-0.0.5.dev301-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb4a4e64ebdf974a77c75c397d38570224a2ee31366900510a057db882a19fff |
|
MD5 | d6c39c6f3c08fcd465840711a8636449 |
|
BLAKE2b-256 | b6cbaa0da8f69e24ada71d7085727c6014311a26b032e81aab11017d24f4ab2c |
Hashes for flashlight_text-0.0.5.dev301-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a787441b596a1dbba99c340a4ec3eb15fc71c1f3500021e53c33059582322bc |
|
MD5 | 57de1f327c3529b8d0488d305510f99e |
|
BLAKE2b-256 | ffb27a7a75d2a76a7d4a254d4d12ff39616d20f7979be071b73d27c4cd29f080 |
Hashes for flashlight_text-0.0.5.dev301-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6359c1e375851337f13a8530cdd1a68b33ff1b0331c8bddd102a0cddedb2c426 |
|
MD5 | 8378b5d380bb99e2bd9f4ef9a06fc508 |
|
BLAKE2b-256 | df3a8a0907c7141af614b185fd3a7b4d24d34a28ba6107c4e9a05c0b2808534d |
Hashes for flashlight_text-0.0.5.dev301-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e478a033c5f5286812f75b3c2e1cae9ca30b200174ce40fbadb4a11185533ab7 |
|
MD5 | da00bc7c845d1fde232928cb3bc7fa4c |
|
BLAKE2b-256 | 6130ac853ef55a34c6003a91701bb8e8e7398170fb9111b468ec0ea65772225f |
Hashes for flashlight_text-0.0.5.dev301-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 476136a09b39c9c4ad74df2933116d9d5a971c029c95272e881596bb2055cc25 |
|
MD5 | ecf3ae400194e31c1e9b4cd63b897446 |
|
BLAKE2b-256 | 554558419d84feebd6e85846f278bcf80ba64470bcf23fde42099a4fd0281ec2 |
Hashes for flashlight_text-0.0.5.dev301-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6f80fe7bfae885b8b32162e21266568f7a6272d9ac3ac247357b8c598a81d40 |
|
MD5 | a4891e96fa3fcfaddaba3767ce3106bd |
|
BLAKE2b-256 | 10dfcf329ce25544ddca6ef85e89e5841db5ef515535903bd39a1b9831f599f7 |
Hashes for flashlight_text-0.0.5.dev301-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c76e5841ceb4b51dc7ce1817786897be0e3d4d9fa8fbbf1f20aa64345396a6fe |
|
MD5 | 3151033d46db8f63e3fc04faea535d64 |
|
BLAKE2b-256 | 036da13a281bd26c91120c579d93d9d30f44da8f0c6a112bba5ba9f0c111ceec |
Hashes for flashlight_text-0.0.5.dev301-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 48ebe9e590b347526178cfa69a1f39c4101f2e4af352c7db6e648bbd7a2ee7e3 |
|
MD5 | ad4e5b4a9d10baff0b5d7c7fd3326523 |
|
BLAKE2b-256 | e3f199e4daa072f90660a65c27da936702fbc256e1f218bb65577410b9d4cbe5 |
Hashes for flashlight_text-0.0.5.dev301-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b699e2863b9a6149583c34a7749a7dfd883da0604653f34732053d97b94eeab |
|
MD5 | 404ea5b033ab690c5f60711b85d6e116 |
|
BLAKE2b-256 | 4f28f8dfafc3be36a7f79689e438088da68b4fc928d50324f4a6b802f13a0b49 |
Hashes for flashlight_text-0.0.5.dev301-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37ce7afb4029531c968295a0defa0ad9b223ed0f0b643791e3e726e095f0e39b |
|
MD5 | 7fd661ca313ec93dbc7b46b3587c0867 |
|
BLAKE2b-256 | 50171e34a85602c54ec23c3a83b07a01199a2d956722be582791296ed2053ad2 |
Hashes for flashlight_text-0.0.5.dev301-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3c53abf6d0c1ea57326e4c913b7b819a7d41a23114fb5610ca3a89d2b874d79b |
|
MD5 | e61f04d85f2b9745ead4890336de6914 |
|
BLAKE2b-256 | da945b3e859499b0e75c9aa04753ef923b864394694be9837df4fcd6830067e9 |
Hashes for flashlight_text-0.0.5.dev301-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b5a07f4555ac1d6b8f108a88981562cbcc4c4f62fc870a5962df64652087d9b3 |
|
MD5 | a9b5fec6a523af28159faa886e953438 |
|
BLAKE2b-256 | f2afb4c688a6b5365dc94b3e35a7bbbe60aec8dd6173677b04cf1e1775cefa93 |
Hashes for flashlight_text-0.0.5.dev301-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83b92d4886cbff6d4c4fc75d2e96e77fcb933b4c2c14589dd1e48d3b80c3ac77 |
|
MD5 | a365e348aad7f7aeacb9f202db37cab4 |
|
BLAKE2b-256 | 0b8a2e07f23d1800759bd317f0f04f548369246209f2e5cc369cf13c632108d3 |
Hashes for flashlight_text-0.0.5.dev301-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8fbaf75ac89ec6082d3b0cf17a4690de3f6b974a591f2df2cc23fdc0bdda32e3 |
|
MD5 | 334a1534c0305cd6e160ea87051488d7 |
|
BLAKE2b-256 | 941242372c1f851335b835f1d122c011d211a28139e8026817de880cb1f4dc0a |
Hashes for flashlight_text-0.0.5.dev301-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b3ff0fb2acf5aa5ccfaed73011c0abf8d06e81b3c3c6a51a9f8647ebc693bd3 |
|
MD5 | 1c0159daea5d37174af4e7e1bba07d2f |
|
BLAKE2b-256 | 16ee24d82443763d238d97dc57837391df86c190e98e06754224df2131027ed9 |
Hashes for flashlight_text-0.0.5.dev301-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08373fe6bc62267e5510b4422ec80a6b84229436bda4aef1dbeb1437677c79ca |
|
MD5 | e77afbfc096c698bb11e01fc3f987917 |
|
BLAKE2b-256 | 8d34467359195fa25785b2567ca3ebefb892e9e73c744fee18a0cdc2c8f4454a |
Hashes for flashlight_text-0.0.5.dev301-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d78801934098c85e78aa8e4ca4ffec6ff4cec361226e3c56df81b36029bbfcdf |
|
MD5 | 43ae4de9dc3baba0c63c3d4d28a1f02a |
|
BLAKE2b-256 | 5bf00a403369d05d9e28b73e361b51842ab171bd0f125ec0bcdeb0593988b177 |
Hashes for flashlight_text-0.0.5.dev301-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce90ce93e69cc29a76db08764695a51ec3abf7502a447cb751d312ad39683b80 |
|
MD5 | 3e04a795f4afc70edf6467ba0f7d1c09 |
|
BLAKE2b-256 | ea654c7acf586a57e1b22d3c80cfdaa2a2ffa62408778ab59bfe150986894970 |
Hashes for flashlight_text-0.0.5.dev301-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | efe5c4e9dd1d16d5bdddf13b8d5c29294c3568f9d6d6314dde30e1f0b6cbd477 |
|
MD5 | 5274975532e22a832eaf25101f6e6d93 |
|
BLAKE2b-256 | 9403535c0aad5d6e99b81028ad9a549d9aff52ac16dd2a042ab0ed67b96a8534 |
Hashes for flashlight_text-0.0.5.dev301-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2de28fbfdbd78b494a7dddfe5cc88349599820b942f24343a51705c963ef6fdb |
|
MD5 | d25013618841b8e9877336e44a27e456 |
|
BLAKE2b-256 | 5f0716347f3644a6b13206f683352dfa32c20d995d9347f4e4d38222e1e1da11 |
Hashes for flashlight_text-0.0.5.dev301-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3a29a54d78c773d55b1e5fce18365a7b59b5d88008712773c2ab4abe73631ac |
|
MD5 | 33b6906df17f4170c2a7f6a0b8ff1dc4 |
|
BLAKE2b-256 | fd05bab2f95e82d2b53d7022055ee3fa3122ec862807f8400b92cb583663e6f1 |
Hashes for flashlight_text-0.0.5.dev301-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0405f36f618c112d6a997b8895ff74faee68bb7b676df3fe1041c42237e6248 |
|
MD5 | 420af549dfb79eb631a6e0be357c4de3 |
|
BLAKE2b-256 | 0ded568f7fb6630e64a4a87db573d311a24e58edf7b02710d2060eaf30828640 |
Hashes for flashlight_text-0.0.5.dev301-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a258571eadb0611152f05e97000cee7e719fc0715ecbb33c6994c9fec86e7f7c |
|
MD5 | cd612950549f3aae4fc2abb545d7f692 |
|
BLAKE2b-256 | 3a8faeb66f248264ca0bca1d0cff1ae16c01ef2c9282fdfbaa76e757c249fe88 |
Hashes for flashlight_text-0.0.5.dev301-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2709133c79d0eaee4acdd34e91e68eb64977c93ee889a808fd5add901e7e7d0d |
|
MD5 | 23110050e44052b76b17f2c8e0966753 |
|
BLAKE2b-256 | fa8e62c129fa43f48b3ffea0ac7d56bf6ca71a4ce843fa6dcbf51d0d509933a7 |
Hashes for flashlight_text-0.0.5.dev301-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 067368246edb11923a3f741935a1845d31f4abde88b76975237996f5837ce76a |
|
MD5 | f91a9758cab9c5bcb73c4190a6d3a9ba |
|
BLAKE2b-256 | d88f29510a7ad7d6e3a80752b96ff7d10917fb50cc699beffd0ba716a2e38f72 |
Hashes for flashlight_text-0.0.5.dev301-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2e4ccdbe283338a41c661838da733a6d5072db608f1f0d1cd3c2c983fdf5afa7 |
|
MD5 | f5aaf05338c987497fd3711863380eb2 |
|
BLAKE2b-256 | e66249370c929472a41cda618eb63132c3984095a991f15c99e8c12dd7b49f26 |
Hashes for flashlight_text-0.0.5.dev301-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5398d658d394065529813c0e68e3bf8667f1cc58017b56f6f950e4eef216d5c7 |
|
MD5 | e37e9ed330a7c630d6592983049e0589 |
|
BLAKE2b-256 | 4cb55ea4d533b2c5320b1e8be7ebcdc93c18f989bd2433970b1f264f4fb23267 |
Hashes for flashlight_text-0.0.5.dev301-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d32c54a39652c478e5366d98428759bf7fca2dc31aca0830ffe7467a5ded3fb6 |
|
MD5 | 6d3320be34c40228f498b3c8ade01a1f |
|
BLAKE2b-256 | c5ad64e2e0f2be86484d928a3e7f9337601f03943892eb2307b68c789b749a16 |
Hashes for flashlight_text-0.0.5.dev301-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 413ef477afb2a057e015b3a2971fc40e48bbbf3e7703921797d3fd3db5005a6c |
|
MD5 | 9887a6a2c84c5dfaf2c6a8b49031d6e8 |
|
BLAKE2b-256 | 606b8653475a9b89744e86f44fef6b2248e862298563d94fb5b518ce52d9033f |
Hashes for flashlight_text-0.0.5.dev301-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 187eb6815d38f82b95ad120cb42285389164b7385f6accfc37428a4f1c24e6e5 |
|
MD5 | 5551a10514436a485d3ff78e0604d3bb |
|
BLAKE2b-256 | 5e0b3bbbd8c6295ff0889753d30f02a7e16f244b272a76d98d25e366fd562cc6 |
Hashes for flashlight_text-0.0.5.dev301-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 19b13e77b31d5a9226e72022aaae9ec64af1f33b3cc02d9e39915f8e2dd85c6f |
|
MD5 | cf121cda008fae7599daebc32d46e9cb |
|
BLAKE2b-256 | eec080e40adfa197ce14a9ccb0e8dd3bf2c23e4c86364b92cfa2927846e22006 |
Hashes for flashlight_text-0.0.5.dev301-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c95a427f61f6003aa57fe455e873cfcd30c22e48004cbbab8a86e588fa8f3aa |
|
MD5 | f46ca1126968e860a0d6c1eb0e4b496a |
|
BLAKE2b-256 | d2917136d86cdc63c15e17010991e242c8328130d4b06e093e749141c6ef9346 |
Hashes for flashlight_text-0.0.5.dev301-cp37-cp37m-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0cf070c9e2fbab66dab05e2d4292cba6194bc46e54b9459306ad813f77e57eee |
|
MD5 | 1544626e4bd4c7750179afa997c9e2cb |
|
BLAKE2b-256 | 6edcd6b3dcd1d2b2111682dec31b1681b485b548fcef9e7abf58bf65e2180681 |
Hashes for flashlight_text-0.0.5.dev301-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c59e9686954869df89a1f7a262b7b2256b0e3d494cfc01bf7909d32a277de5c9 |
|
MD5 | 8e566ca44132784673a5fd59f1663d3f |
|
BLAKE2b-256 | 07093e2f81714d1f23cfbf5829f425e325ba109385007414505e7604440cc499 |
Hashes for flashlight_text-0.0.5.dev301-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ea1556faf9ed717deaa551f16f280afb9739d77394297d8ee5c8b89bd46d803 |
|
MD5 | ceafab9c2c602593a1352a9736dc2e80 |
|
BLAKE2b-256 | 4a408fb77cad8e11719cd9ef594a1419610ae974f6d232b34ba39ac7878d0e58 |
Hashes for flashlight_text-0.0.5.dev301-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b10bb075823e36478eaa416dffdbb67eac1b314822972d0b35904fc2d8df3b5c |
|
MD5 | fdc46833db749e395185b43bc0a709b7 |
|
BLAKE2b-256 | 7f087c91209d3b99105e27b7f023777ec979b512e27f0a910dcb55aab4299d29 |
Hashes for flashlight_text-0.0.5.dev301-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50660a832152ca24c6cd5889fab31bf0f8bb9ff60c3df97c6bcbbac01767b80f |
|
MD5 | 19621adfd6e1113dbbb385d39da9c2aa |
|
BLAKE2b-256 | 05c00c09c3e3b352f2dfc4d0de527d45518d9755a0c6bdbae499c66ec37063ae |
Hashes for flashlight_text-0.0.5.dev301-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 088a6cd9bb534d279cb443ff0e68f3b293e7c4a70d5e8fbfed5b7563f1c2f61c |
|
MD5 | fefd6abd2be81f2acee01cfa7e9ad5ae |
|
BLAKE2b-256 | 61cb676660ca9f8a86f34b8a52c76d681e5d8dfe745a72be4793b236ae937a60 |
Hashes for flashlight_text-0.0.5.dev301-cp36-cp36m-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b0f7277e45282d4b6588eaecf86eaf909d61d89ed6cb8b500c477ee854e4695 |
|
MD5 | 9a2b7c77559a3a4a1fd6414c6f4b674e |
|
BLAKE2b-256 | 1e7732d9624e9fb7a4bfffc38d60744d9b885b4a17e3afdc8fa86a722e0506f5 |
Hashes for flashlight_text-0.0.5.dev301-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ecf2fceefbff0c8809fdcdd19ecc0c2fdcd4e76e975261c2f9397481cb897c7 |
|
MD5 | 7d75dedcb4fadbc8e31347beb902804e |
|
BLAKE2b-256 | 1f501b880b7e5679a42d054943629609f6fdfb2812d5cbc0a7a9baef39d2befc |
Hashes for flashlight_text-0.0.5.dev301-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dfe6b6d5d39910bcdacad2efabb61abfdb9ae2b111c615db86942d4dcb5a7ffc |
|
MD5 | 72ec58b6566260c7782ded8599027964 |
|
BLAKE2b-256 | 44783405d781cf1dc80c892bc438b00a984dbdaf248fe79437d33e7a0d035d98 |
Hashes for flashlight_text-0.0.5.dev301-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 76c73da439c35de63dbfbb7da6d4cbb0e1fa8e4abd6cbe2e60bf1e30a3a715f7 |
|
MD5 | 9299f57bdd243628f1d58fb87b850379 |
|
BLAKE2b-256 | bfd3ea777b973d9919f2afe4f24dcdbec502bdec9de1872c929720448089b107 |