Skip to main content

fasttext Python bindings

Project description

fastText CircleCI

fastText is a library for efficient learning of word representations and sentence classification.

In this document we present how to use fastText in python.

Table of contents

Requirements

fastText builds on modern Mac OS and Linux distributions. Since it uses C++11 features, it requires a compiler with good C++11 support. You will need Python (version 2.7 or ≥ 3.4), NumPy & SciPy and pybind11.

Installation

To install the latest release, you can do :

$ pip install fasttext-community

or, to get the latest development version of fasttext, you can install from our github repository :

$ git clone https://github.com/munlicode/fasttext-community.git
$ cd fastText
$ sudo pip install .
$ # or :
$ sudo python setup.py install

Usage overview

Word representation model

In order to learn word vectors, as described here, we can use fasttext.train_unsupervised function like this:

import fasttext

# Skipgram model :
model = fasttext.train_unsupervised('data.txt', model='skipgram')

# or, cbow model :
model = fasttext.train_unsupervised('data.txt', model='cbow')

where data.txt is a training file containing utf-8 encoded text.

The returned model object represents your learned model, and you can use it to retrieve information.

print(model.words)   # list of words in dictionary
print(model['king']) # get the vector of the word 'king'

Saving and loading a model object

You can save your trained model object by calling the function save_model.

model.save_model("model_filename.bin")

and retrieve it later thanks to the function load_model :

model = fasttext.load_model("model_filename.bin")

For more information about word representation usage of fasttext, you can refer to our word representations tutorial.

Text classification model

In order to train a text classifier using the method described here, we can use fasttext.train_supervised function like this:

import fasttext

model = fasttext.train_supervised('data.train.txt')

where data.train.txt is a text file containing a training sentence per line along with the labels. By default, we assume that labels are words that are prefixed by the string __label__

Once the model is trained, we can retrieve the list of words and labels:

print(model.words)
print(model.labels)

To evaluate our model by computing the precision at 1 (P@1) and the recall on a test set, we use the test function:

def print_results(N, p, r):
    print("N\t" + str(N))
    print("P@{}\t{:.3f}".format(1, p))
    print("R@{}\t{:.3f}".format(1, r))

print_results(*model.test('test.txt'))

We can also predict labels for a specific text :

model.predict("Which baking dish is best to bake a banana bread ?")

By default, predict returns only one label : the one with the highest probability. You can also predict more than one label by specifying the parameter k:

model.predict("Which baking dish is best to bake a banana bread ?", k=3)

If you want to predict more than one sentence you can pass an array of strings :

model.predict(["Which baking dish is best to bake a banana bread ?", "Why not put knives in the dishwasher?"], k=3)

Of course, you can also save and load a model to/from a file as in the word representation usage.

For more information about text classification usage of fasttext, you can refer to our text classification tutorial.

Compress model files with quantization

When you want to save a supervised model file, fastText can compress it in order to have a much smaller model file by sacrificing only a little bit performance.

# with the previously trained `model` object, call :
model.quantize(input='data.train.txt', retrain=True)

# then display results and save the new model :
print_results(*model.test(valid_data))
model.save_model("model_filename.ftz")

model_filename.ftz will have a much smaller size than model_filename.bin.

For further reading on quantization, you can refer to this paragraph from our blog post.

IMPORTANT: Preprocessing data / encoding conventions

In general it is important to properly preprocess your data. In particular our example scripts in the root folder do this.

fastText assumes UTF-8 encoded text. All text must be unicode for Python2 and str for Python3. The passed text will be encoded as UTF-8 by pybind11 before passed to the fastText C++ library. This means it is important to use UTF-8 encoded text when building a model. On Unix-like systems you can convert text using iconv.

fastText will tokenize (split text into pieces) based on the following ASCII characters (bytes). In particular, it is not aware of UTF-8 whitespace. We advice the user to convert UTF-8 whitespace / word boundaries into one of the following symbols as appropiate.

  • space

  • tab

  • vertical tab

  • carriage return

  • formfeed

  • the null character

The newline character is used to delimit lines of text. In particular, the EOS token is appended to a line of text if a newline character is encountered. The only exception is if the number of tokens exceeds the MAX_LINE_SIZE constant as defined in the Dictionary header. This means if you have text that is not separate by newlines, such as the fil9 dataset, it will be broken into chunks with MAX_LINE_SIZE of tokens and the EOS token is not appended.

The length of a token is the number of UTF-8 characters by considering the leading two bits of a byte to identify subsequent bytes of a multi-byte sequence. Knowing this is especially important when choosing the minimum and maximum length of subwords. Further, the EOS token (as specified in the Dictionary header) is considered a character and will not be broken into subwords.

More examples

In order to have a better knowledge of fastText models, please consider the main README and in particular the tutorials on our website.

You can find further python examples in the doc folder.

As with any package you can get help on any Python function using the help function.

For example

+>>> import fasttext
+>>> help(fasttext.FastText)

Help on module fasttext.FastText in fasttext:

NAME
    fasttext.FastText

DESCRIPTION
    # Copyright (c) 2017-present, Facebook, Inc.
    # All rights reserved.
    #
    # This source code is licensed under the MIT license found in the
    # LICENSE file in the root directory of this source tree.

FUNCTIONS
    load_model(path)
        Load a model given a filepath and return a model object.

    tokenize(text)
        Given a string of text, tokenize it and return a list of tokens
[...]

API

train_unsupervised parameters

input             # training file path (required)
model             # unsupervised fasttext model {cbow, skipgram} [skipgram]
lr                # learning rate [0.05]
dim               # size of word vectors [100]
ws                # size of the context window [5]
epoch             # number of epochs [5]
minCount          # minimal number of word occurences [5]
minn              # min length of char ngram [3]
maxn              # max length of char ngram [6]
neg               # number of negatives sampled [5]
wordNgrams        # max length of word ngram [1]
loss              # loss function {ns, hs, softmax, ova} [ns]
bucket            # number of buckets [2000000]
thread            # number of threads [number of cpus]
lrUpdateRate      # change the rate of updates for the learning rate [100]
t                 # sampling threshold [0.0001]
verbose           # verbose [2]

train_supervised parameters

input             # training file path (required)
lr                # learning rate [0.1]
dim               # size of word vectors [100]
ws                # size of the context window [5]
epoch             # number of epochs [5]
minCount          # minimal number of word occurences [1]
minCountLabel     # minimal number of label occurences [1]
minn              # min length of char ngram [0]
maxn              # max length of char ngram [0]
neg               # number of negatives sampled [5]
wordNgrams        # max length of word ngram [1]
loss              # loss function {ns, hs, softmax, ova} [softmax]
bucket            # number of buckets [2000000]
thread            # number of threads [number of cpus]
lrUpdateRate      # change the rate of updates for the learning rate [100]
t                 # sampling threshold [0.0001]
label             # label prefix ['__label__']
verbose           # verbose [2]
pretrainedVectors # pretrained word vectors (.vec file) for supervised learning []

model object

train_supervised, train_unsupervised and load_model functions return an instance of _FastText class, that we generaly name model object.

This object exposes those training arguments as properties : lr, dim, ws, epoch, minCount, minCountLabel, minn, maxn, neg, wordNgrams, loss, bucket, thread, lrUpdateRate, t, label, verbose, pretrainedVectors. So model.wordNgrams will give you the max length of word ngram used for training this model.

In addition, the object exposes several functions :

get_dimension           # Get the dimension (size) of a lookup vector (hidden layer).
                        # This is equivalent to `dim` property.
get_input_vector        # Given an index, get the corresponding vector of the Input Matrix.
get_input_matrix        # Get a copy of the full input matrix of a Model.
get_labels              # Get the entire list of labels of the dictionary
                        # This is equivalent to `labels` property.
get_line                # Split a line of text into words and labels.
get_output_matrix       # Get a copy of the full output matrix of a Model.
get_sentence_vector     # Given a string, get a single vector represenation. This function
                        # assumes to be given a single line of text. We split words on
                        # whitespace (space, newline, tab, vertical tab) and the control
                        # characters carriage return, formfeed and the null character.
get_subword_id          # Given a subword, return the index (within input matrix) it hashes to.
get_subwords            # Given a word, get the subwords and their indicies.
get_word_id             # Given a word, get the word id within the dictionary.
get_word_vector         # Get the vector representation of word.
get_words               # Get the entire list of words of the dictionary
                        # This is equivalent to `words` property.
is_quantized            # whether the model has been quantized
predict                 # Given a string, get a list of labels and a list of corresponding probabilities.
quantize                # Quantize the model reducing the size of the model and it's memory footprint.
save_model              # Save the model to the given path
test                    # Evaluate supervised model using file given by path
test_label              # Return the precision and recall score for each label.

The properties words, labels return the words and labels from the dictionary :

model.words         # equivalent to model.get_words()
model.labels        # equivalent to model.get_labels()

The object overrides __getitem__ and __contains__ functions in order to return the representation of a word and to check if a word is in the vocabulary.

model['king']       # equivalent to model.get_word_vector('king')
'king' in model     # equivalent to `'king' in model.get_words()`

Join the fastText community

Project details


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.

fasttext_community-0.11.5-cp313-cp313-win_amd64.whl (262.4 kB view details)

Uploaded CPython 3.13Windows x86-64

fasttext_community-0.11.5-cp313-cp313-musllinux_1_2_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

fasttext_community-0.11.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

fasttext_community-0.11.5-cp313-cp313-macosx_11_0_arm64.whl (349.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fasttext_community-0.11.5-cp312-cp312-win_amd64.whl (262.3 kB view details)

Uploaded CPython 3.12Windows x86-64

fasttext_community-0.11.5-cp312-cp312-musllinux_1_2_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

fasttext_community-0.11.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

fasttext_community-0.11.5-cp312-cp312-macosx_11_0_arm64.whl (349.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fasttext_community-0.11.5-cp311-cp311-win_amd64.whl (260.4 kB view details)

Uploaded CPython 3.11Windows x86-64

fasttext_community-0.11.5-cp311-cp311-musllinux_1_2_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

fasttext_community-0.11.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

fasttext_community-0.11.5-cp311-cp311-macosx_11_0_arm64.whl (346.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

fasttext_community-0.11.5-cp310-cp310-win_amd64.whl (259.7 kB view details)

Uploaded CPython 3.10Windows x86-64

fasttext_community-0.11.5-cp310-cp310-musllinux_1_2_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

fasttext_community-0.11.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

fasttext_community-0.11.5-cp310-cp310-macosx_11_0_arm64.whl (344.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

fasttext_community-0.11.5-cp39-cp39-win_amd64.whl (266.5 kB view details)

Uploaded CPython 3.9Windows x86-64

fasttext_community-0.11.5-cp39-cp39-musllinux_1_2_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

fasttext_community-0.11.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

fasttext_community-0.11.5-cp39-cp39-macosx_11_0_arm64.whl (344.6 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file fasttext_community-0.11.5-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 db0bcdc1889bf89a9e345b33bb505fecd6910c486628faaa57a14720d9705749
MD5 686cb55ad70e055b24d39054903ff8e7
BLAKE2b-256 a38bdd54a5c8ae3e77a3ac7acc979240b6de06018044a6c04e228ecd5667f12c

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 40846a65c15439291173a228f43ede76cfb1bb557ce138cf54693a7a7671ecb9
MD5 6cdb00e592fa68dca759a9132022d820
BLAKE2b-256 f5038016c23c878875d335603087b52883198ccaee2528dc09d319bceb71fa86

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 90708c0f1bd1c9745d1c1dc475d14442e50a032cb2c5e4622abb4ecabcce19ea
MD5 cf54ce2fef5b4c29de3f4ca66d28a152
BLAKE2b-256 6bc398493c6681b3ca68144d1963790f83e7331bc1048421da66e79e53534257

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b075283e16e816ea2cb0838f3ddde7436bb22df6a5f4ffa8c5d7befc2af7900f
MD5 82c2ffc995d1599950014e05ed254203
BLAKE2b-256 3e5611e69203a700c7ab482c174c8818cbe90359acb21d37df81b6a45df40322

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1202f8fee703757890a24d3af9e414fb615ba3788d884e5ef2f5e48a74254547
MD5 623636af418ec9dd30cf1ddb5c1ddaf1
BLAKE2b-256 ab5186ed1190eda3a59ccedb920af4c4ff2647db47f9890fcb4d2bde5a602ce8

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 35318942dec30f668f28bcf416b3d91e5062a91636221ceac1d3765496633328
MD5 5c762fd07c3eff659bbf6dda8406516f
BLAKE2b-256 2f433a775230fc74748ca965c745f0ca069da80f70d4508dd48a6467d6acae1b

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d7a9c0b124ca810632ea65d3ae354d70ed4debd7f72401b52f65500ef7bc3129
MD5 bfb44fa494a5de75598ded83897e685b
BLAKE2b-256 4ac0bdcb0a5cbc195a792a28520f8a45b386ae8d35528c1c4b81d2bc6c9c36c0

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ad447725030c21299ab3c3a72f8784ade4925c67aa06dad6bd842f16c4b9f557
MD5 ee4b2d3ae120cd46b88045999ce6a864
BLAKE2b-256 fe8d93509b6e70b25a77daedef663f0e161c25577ab5597c5e07b813f451452f

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b18b1f9614b46124d0b9d8f7bae74ea9f4f9cd1678e83505e994c044566fc8fa
MD5 0a866c72989f09e2f2ac4909902b01a3
BLAKE2b-256 3e62566a4a19cb83dd6033d624056135da1d96027cac4e6286cb48c6912bffc1

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 50a67a63c59f56441295634d1dee4fe3f7b9a02ae9ebb0e1a4dc78c6637cb45e
MD5 75dacbdd53fc9fcbaed8717c9ae078eb
BLAKE2b-256 c7b9a9fe0947ae00f7a036150e36a02e1366ed463b7d2bca1d2691b4293003ad

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f5d27570ecba54b1afd21a638d00fc9ae5c5ebbf2bd1d086c59e424d2f565978
MD5 365f2f290b6941b05bd77e92be025e6a
BLAKE2b-256 d6d8761e9b2c41a22700309fb0647a79fbb71f673a9293b5b24ee7cd7327cbbc

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b2441b6dd5eb213b6e8a03241534c3c5e8935313ab74032a4d1802fb6c615af2
MD5 34b4926dd8c4ae1bc203f15e336a4685
BLAKE2b-256 aad7eabf47009c03fa440e30aee5991dae4ba6756c68449b2e4e3ff61a16ce39

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b7efda117f4f8420d2ac4c32390976e53b5ea0b9155bdaa4209b136c4f7f492b
MD5 72b4c219e63ac22a0fd041ddb9b3d0ad
BLAKE2b-256 588dfa86decddf74aa2dc6eaee352bc47b1b76ef1acde64487ed21b59b1d5041

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 60ec8de7ba3cb6b5eeecfe9ac1d4879262073707a305dcf3b3f21591efff52da
MD5 6f111d9dd0e4fe4f5f1623eba8a7f77c
BLAKE2b-256 95acf6caa3d35c087f2694fc300eef491d71992dc50cbc1498b358187b665377

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 48a877b634c460f512cf6019828f0654aeb5e8d9781affd19e4d1adc6e77437d
MD5 480f0e69ac9f41d2c135f7c1fa78b955
BLAKE2b-256 9f967725dfad014f305c982fa91477f3c7c48a7ae997eb74b4c6191d2d9385ac

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 65e8634c02d34cd51f2de2fd86b756785568725ffad437454059aface4953151
MD5 5b707f4717eddee0ab25e237d9ed33db
BLAKE2b-256 99a1ad7e07a94b0d64f222fc2ae05de4bad2804ec385411e9dae2ac2387247bf

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 02f987f67ba879c4d9b6e72f5f39418c3510454ee8b5ba575de4b87330d5ab24
MD5 14d8092785e064af5f617fe801507415
BLAKE2b-256 4a91e7624f8cd3cc109c57eae07ccae4ab15f8c008851682a5c5e750d540998a

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5dc5c9174964c079bfbe57656094cf07190a16fd808628ea836e7d875c923411
MD5 8384b728a9a5ae9f7b752f4d78addbf2
BLAKE2b-256 bd591904ca8e495f3da1ea23c5e932b7ea3a094200e70e45df6842071b1ecf49

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 50bc66f159eeb22386fc4bb57c5423268be063bc3bcb997d7ff82851e135fa84
MD5 202e23acfb61cf1485a699c8a2e94870
BLAKE2b-256 15f67576a0380f513b5ff2ebf6c377e84d532cca3e005ee8cb6ee7db812f5f14

See more details on using hashes here.

File details

Details for the file fasttext_community-0.11.5-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fasttext_community-0.11.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ef6e5dd6f52fea559f34ea43a0852d78bce23774aff130d31fa0fc048692c3f1
MD5 1e5494c71f2a8b32f9244eef3ddadf03
BLAKE2b-256 0d41342154ac2ad9f148e21bf0c5273ecac1e1dc7c1070a8c6564f2595ce8cf6

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