Skip to main content

Python binding to Omikuji, an efficient implementation of Partioned Label Trees and its variations for extreme multi-label classification

Project description

Omikuji

Build Status Crate version PyPI version

An efficient implementation of Partitioned Label Trees (Prabhu et al., 2018) and its variations for extreme multi-label classification, written in Rust🦀 with love💖.

Features & Performance

Omikuji has has been tested on datasets from the Extreme Classification Repository. All tests below are run on a quad-core Intel® Core™ i7-6700 CPU, and we allowed as many cores to be utilized as possible. We measured training time, and calculated precisions at 1, 3, and 5. (Note that, due to randomness, results might vary from run to run, especially for smaller datasets.)

Parabel, better parallelized

Omikuji provides a more parallelized implementation of Parabel (Prabhu et al., 2018) that trains faster when more CPU cores are available. Compared to the original implementation written in C++, which can only utilize the same number of CPU cores as the number of trees (3 by default), Omikuji maintains the same level of precision but trains 1.3x to 1.7x faster on our quad-core machine. Further speed-up is possible if more CPU cores are available.

Dataset Metric Parabel Omikuji
(balanced,
cluster.k=2)
EURLex-4K P@1 82.2 82.1
P@3 68.8 68.8
P@5 57.6 57.7
Train Time 18s 14s
Amazon-670K P@1 44.9 44.8
P@3 39.8 39.8
P@5 36.0 36.0
Train Time 404s 234s
WikiLSHTC-325K P@1 65.0 64.8
P@3 43.2 43.1
P@5 32.0 32.1
Train Time 959s 659s

Regular k-means for shallow trees

Following Bonsai (Khandagale et al., 2019), Omikuji supports using regular k-means instead of balanced 2-means clustering for tree construction, which results in wider, shallower and unbalanced trees that train slower but have better precision. Comparing to the original Bonsai implementation, Omikuji also achieves the same precisions while training 2.6x to 4.6x faster on our quad-core machine. (Similarly, further speed-up is possible if more CPU cores are available.)

Dataset Metric Bonsai Omikuji
(unbalanced,
cluster.k=100,
max_depth=3)
EURLex-4K P@1 82.8 83.0
P@3 69.4 69.5
P@5 58.1 58.3
Train Time 87s 19s
Amazon-670K P@1 45.5* 45.6
P@3 40.3* 40.4
P@5 36.5* 36.6
Train Time 5,759s 1,753s
WikiLSHTC-325K P@1 66.6* 66.6
P@3 44.5* 44.4
P@5 33.0* 33.0
Train Time 11,156s 4,259s

*Precision numbers as reported in the paper; our machine doesn't have enough memory to run the full prediction with their implementation.

Balanced k-means for balanced shallow trees

Sometimes it's desirable to have shallow and wide trees that are also balanced, in which case Omikuji supports the balanced k-means algorithm used by HOMER (Tsoumakas et al., 2008) for clustering as well.

Dataset Metric Omikuji
(balanced,
cluster.k=100)
EURLex-4K P@1 82.1
P@3 69.4
P@5 58.1
Train Time 19s
Amazon-670K P@1 45.4
P@3 40.3
P@5 36.5
Train Time 1,153s
WikiLSHTC-325K P@1 65.6
P@3 43.6
P@5 32.5
Train Time 3,028s

Layer collapsing for balanced shallow trees

An alternative way for building balanced, shallow and wide trees is to collapse adjacent layers, similar to the tree compression step used in AttentionXML (You et al., 2019): intermediate layers are removed, and their children replace them as the children of their parents. For example, with balanced 2-means clustering, if we collapse 5 layers after each layer, we can increase the tree arity from 2 to 2⁵⁺¹ = 64.

Dataset Metric Omikuji
(balanced,
cluster.k=2,
collapse 5 layers)
EURLex-4K P@1 82.4
P@3 69.3
P@5 58.0
Train Time 16s
Amazon-670K P@1 45.3
P@3 40.2
P@5 36.4
Train Time 460s
WikiLSHTC-325K P@1 64.9
P@3 43.3
P@5 32.3
Train Time 1,649s

Build & Install

Omikuji can be easily built & installed with Cargo as a CLI app:

cargo install omikuji --features cli

Or install from the latest source:

cargo install --git https://github.com/tomtung/omikuji.git --features cli

The CLI app will be available as omikuji. For example, to reproduce the results on the EURLex-4K dataset:

omikuji train eurlex_train.txt --model_path ./model
omikuji test ./model eurlex_test.txt --out_path predictions.txt

Python Binding

A simple Python binding is also available for training and prediction. It can be install via pip:

pip install omikuji

Note that you might still need to install Cargo should compilation become necessary.

You can also install from the latest source:

pip install git+https://github.com/tomtung/omikuji.git -v

The following script demonstrates how to use the Python binding to train a model and make predictions:

import omikuji

# Train
hyper_param = omikuji.Model.default_hyper_param()
# Adjust hyper-parameters as needed
hyper_param.n_trees = 5
model = omikuji.Model.train_on_data("./eurlex_train.txt", hyper_param)

# Serialize & de-serialize
model.save("./model")
model = omikuji.Model.load("./model")
# Optionally densify model weights to trade off between prediction speed and memory usage
model.densify_weights(0.05)

# Predict
feature_value_pairs = [
    (0, 0.101468),
    (1, 0.554374),
    (2, 0.235760),
    (3, 0.065255),
    (8, 0.152305),
    (10, 0.155051),
    # ...
]
label_score_pairs =  model.predict(feature_value_pairs)

Usage

$ omikuji train --help
omikuji-train
Train a new model

USAGE:
    omikuji train [FLAGS] [OPTIONS] <TRAINING_DATA_PATH>

FLAGS:
        --cluster.unbalanced     Perform regular k-means clustering instead of balanced k-means clustering
    -h, --help                   Prints help information
        --tree_structure_only    Build the trees without training classifiers; useful when a downstream user needs the
                                 tree structures only
    -V, --version                Prints version information

OPTIONS:
        --centroid_threshold <THRESHOLD>         Threshold for pruning label centroid vectors [default: 0]
        --cluster.eps <EPS>                      Epsilon value for determining clustering convergence [default: 0.0001]
        --cluster.k <K>                          Number of clusters [default: 2]
        --cluster.min_size <SIZE>
            Labels in clusters with sizes smaller than this threshold are reassigned to other clusters instead [default:
            2]
        --collapse_every_n_layers <N>
            Number of adjacent layers to collapse, which increases tree arity and decreases tree depth [default: 0]

        --linear.c <C>                           Cost co-efficient for regularizing linear classifiers [default: 1]
        --linear.eps <EPS>
            Epsilon value for determining linear classifier convergence [default: 0.1]

        --linear.loss <LOSS>
            Loss function used by linear classifiers [default: hinge]  [possible values: hinge, log]

        --linear.max_iter <M>
            Max number of iterations for training each linear classifier [default: 20]

        --linear.weight_threshold <THRESHOLD>
            Threshold for pruning weight vectors of linear classifiers [default: 0.1]

        --max_depth <DEPTH>                      Maximum tree depth [default: 20]
        --min_branch_size <SIZE>
            Number of labels below which no further clustering & branching is done [default: 100]

        --model_path <PATH>
            Optional path of the directory where the trained model will be saved if provided; if an model with
            compatible settings is already saved in the given directory, the newly trained trees will be added to the
            existing model
        --n_threads <T>
            Number of worker threads. If 0, the number is selected automatically [default: 0]

        --n_trees <N>                            Number of trees [default: 3]

ARGS:
    <TRAINING_DATA_PATH>    Path to training dataset file (in the format of the Extreme Classification Repository)
$ omikuji test --help
omikuji-test
Test an existing model

USAGE:
    omikuji test [OPTIONS] <MODEL_PATH> <TEST_DATA_PATH>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
        --beam_size <beam_size>           Beam size for beam search [default: 10]
        --k_top <K>                       Number of top predictions to write out for each test example [default: 5]
        --max_sparse_density <DENSITY>    Density threshold above which sparse weight vectors are converted to dense
                                          format. Lower values speed up prediction at the cost of more memory usage
                                          [default: 0.1]
        --n_threads <T>                   Number of worker threads. If 0, the number is selected automatically [default:
                                          0]
        --out_path <PATH>                 Path to the which predictions will be written, if provided

ARGS:
    <MODEL_PATH>        Path of the directory where the trained model is saved
    <TEST_DATA_PATH>    Path to test dataset file (in the format of the Extreme Classification Repository)

Data format

Our implementation takes dataset files formatted as those provided in the Extreme Classification Repository. A data file starts with a header line with three space-separated integers: total number of examples, number of features, and number of labels. Following the header line, there is one line per each example, starting with comma-separated labels, followed by space-separated feature:value pairs:

label1,label2,...labelk ft1:ft1_val ft2:ft2_val ft3:ft3_val .. ftd:ftd_val

Trivia

The project name comes from o-mikuji (御神籤), which are predictions about one's future written on strips of paper (labels?) at jinjas and temples in Japan, often tied to branches of pine trees after they are read.

References

  • Y. Prabhu, A. Kag, S. Harsola, R. Agrawal, and M. Varma, “Parabel: Partitioned Label Trees for Extreme Classification with Application to Dynamic Search Advertising,” in Proceedings of the 2018 World Wide Web Conference, 2018, pp. 993–1002.
  • S. Khandagale, H. Xiao, and R. Babbar, “Bonsai - Diverse and Shallow Trees for Extreme Multi-label Classification,” Apr. 2019.
  • G. Tsoumakas, I. Katakis, and I. Vlahavas, “Effective and efficient multilabel classification in domains with large number of labels,” ECML, 2008.
  • R. You, S. Dai, Z. Zhang, H. Mamitsuka, and S. Zhu, “AttentionXML: Extreme Multi-Label Text Classification with Multi-Label Attention Based Recurrent Neural Networks,” Jun. 2019.

License

Omikuji is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

omikuji-0.3.1.tar.gz (48.3 kB view details)

Uploaded Source

Built Distributions

omikuji-0.3.1-cp38-cp38-manylinux2010_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

omikuji-0.3.1-cp38-cp38-manylinux1_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.8

omikuji-0.3.1-cp38-cp38-macosx_10_9_x86_64.whl (459.6 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

omikuji-0.3.1-cp37-cp37m-manylinux2010_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

omikuji-0.3.1-cp37-cp37m-manylinux1_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.7m

omikuji-0.3.1-cp37-cp37m-macosx_10_9_x86_64.whl (458.7 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

omikuji-0.3.1-cp36-cp36m-win_amd64.whl (387.1 kB view details)

Uploaded CPython 3.6m Windows x86-64

omikuji-0.3.1-cp36-cp36m-manylinux2010_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64

omikuji-0.3.1-cp36-cp36m-manylinux1_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.6m

omikuji-0.3.1-cp36-cp36m-macosx_10_9_x86_64.whl (462.2 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

omikuji-0.3.1-cp35-cp35m-win_amd64.whl (387.2 kB view details)

Uploaded CPython 3.5m Windows x86-64

omikuji-0.3.1-cp35-cp35m-manylinux2010_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.5m manylinux: glibc 2.12+ x86-64

omikuji-0.3.1-cp35-cp35m-manylinux1_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.5m

omikuji-0.3.1-cp35-cp35m-macosx_10_6_intel.whl (461.3 kB view details)

Uploaded CPython 3.5m macOS 10.6+ intel

File details

Details for the file omikuji-0.3.1.tar.gz.

File metadata

  • Download URL: omikuji-0.3.1.tar.gz
  • Upload date:
  • Size: 48.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for omikuji-0.3.1.tar.gz
Algorithm Hash digest
SHA256 0b53b14ac8cec398eb8641fc749ea03f050f4ceca34a2ef936d40a7f9adf6200
MD5 c7cdad6704d5992575c6df46f59b1b9c
BLAKE2b-256 9038dadb083bf9e087bee5a9071db1372c9c5ecb464b019203c717e6f4563aef

See more details on using hashes here.

File details

Details for the file omikuji-0.3.1-cp38-cp38-manylinux2010_x86_64.whl.

File metadata

  • Download URL: omikuji-0.3.1-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for omikuji-0.3.1-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 633e1f85dc09e20e3fb647a4686f79690153e94c09253a59b8cb2ef85dfee5de
MD5 4f1da1ff144383792d309bc23b5979e2
BLAKE2b-256 007bbb2d414453c8b71465eef1b8ecfacaeaf4422d7dc675d7b03d206f7dace0

See more details on using hashes here.

File details

Details for the file omikuji-0.3.1-cp38-cp38-manylinux1_x86_64.whl.

File metadata

  • Download URL: omikuji-0.3.1-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for omikuji-0.3.1-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 3bff8c5cad6446b00526e95ff3085f5be2e32d169ff02bc1fcc85fdc4655f2c5
MD5 8b1b791232e9b42da33b2b4fecd02e02
BLAKE2b-256 f61faf2f0636b4e9da800170a172332bfa0ef998317e256d0adf9abab9f2485c

See more details on using hashes here.

File details

Details for the file omikuji-0.3.1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: omikuji-0.3.1-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 459.6 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for omikuji-0.3.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a4d4fb8492d51691432cf3945506a202769675d067abc06e1c053be104f95953
MD5 767df775655afd07c88d2e35db771c8f
BLAKE2b-256 9827fd3248e0daf022279ec5bb8d8c71700f4a8dc25a7a1a0485687444905b9b

See more details on using hashes here.

File details

Details for the file omikuji-0.3.1-cp37-cp37m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: omikuji-0.3.1-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for omikuji-0.3.1-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 3e618265ee9bd1c661fb81c83409bff66a3e39309d9c61662439766e11de8710
MD5 26088ff6f30f7a9ae74ea8d62c96f917
BLAKE2b-256 39974825218bc8561ff37e3c670e307546514052073476ccf7aa027e3644f6aa

See more details on using hashes here.

File details

Details for the file omikuji-0.3.1-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: omikuji-0.3.1-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for omikuji-0.3.1-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 83ae19f85d5abc15556b12cc6a2e99f65ae366177d340b04c2f2e05feded4ec2
MD5 8b2e0ff3b6c0be262c0ea53c7c246672
BLAKE2b-256 3447a694f5abdbb7d52780e22585713ce35713d66879e485f03c7d784373cb8b

See more details on using hashes here.

File details

Details for the file omikuji-0.3.1-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: omikuji-0.3.1-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 458.7 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for omikuji-0.3.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e6272af8fa84cf8d01183ee4582f6b485c0c19bd7449b99fe8261dbdbaac0fbd
MD5 007a4f2691b038a5ec9f9067b8dd01fe
BLAKE2b-256 b9732bef55d833235f19d99223f5e30e5b4aaeb49d4d625230bee70363e07015

See more details on using hashes here.

File details

Details for the file omikuji-0.3.1-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: omikuji-0.3.1-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 387.1 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for omikuji-0.3.1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 e69982c3dbf8b734cf62c26fc608f75380b7d006f1cb7944d1b52aea138cccdc
MD5 0928e5e51cdefe662ffd5109697bb4bc
BLAKE2b-256 83882acf9ca62e5872e2f0ade330020f3d4351dc555c78c8610bb89cd52f4ca2

See more details on using hashes here.

File details

Details for the file omikuji-0.3.1-cp36-cp36m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: omikuji-0.3.1-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for omikuji-0.3.1-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 820270585a9aeeba92c870092a7b7b4729665e7db62da747fcec0bb497edb5b1
MD5 6b4fdaa8bd460e3c1edfbdab12e49a9c
BLAKE2b-256 5c085df652e8ce5c67e604d1bdfcb7403b1b8a8402b19d880fbf1fd35aa8ac38

See more details on using hashes here.

File details

Details for the file omikuji-0.3.1-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: omikuji-0.3.1-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for omikuji-0.3.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 364501287b295d9c4794e00806c56b769593e0c1363ed3c9b41e8307994f6936
MD5 7276f6022d5611d372d60785e3e85d50
BLAKE2b-256 6b0d3a7080ea49bf5ac1eed7d623ea7876679b2aabb8c9653d291b2bff2a1fe6

See more details on using hashes here.

File details

Details for the file omikuji-0.3.1-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: omikuji-0.3.1-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 462.2 kB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for omikuji-0.3.1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 dce03a93f4ecc59f4f45a35e8cb5d50c27f4ea7ffb1b28cdd097e4f546ffa373
MD5 de80ac92ac4ffee06ee73fe273956a43
BLAKE2b-256 a2f06247f82c76531f48ed5b829af2d94333f8a299c9bca04a3f5eb084070693

See more details on using hashes here.

File details

Details for the file omikuji-0.3.1-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: omikuji-0.3.1-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 387.2 kB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for omikuji-0.3.1-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 33a3929e302d6fe15044f0d42a0d0556ffa2f1e29ec622c1bf62b2470f4acc31
MD5 3ceaf6b6da69c9170eeccbbdfe935d3d
BLAKE2b-256 2fcc050d6f16868a8ba02a79993ef92fc9502a826d712bd056480ddf81bf00c3

See more details on using hashes here.

File details

Details for the file omikuji-0.3.1-cp35-cp35m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: omikuji-0.3.1-cp35-cp35m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.5m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for omikuji-0.3.1-cp35-cp35m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 84789cbb0c3f231ba720f363936d014a0d32c3e19a8428a720997cf3307eb633
MD5 b1e8be3e04ba3bb460861fce5641463a
BLAKE2b-256 00cc3f9d222bf1e493685e2f18cf5ecec376c7dd990907ee1b722bbfb6da7fef

See more details on using hashes here.

File details

Details for the file omikuji-0.3.1-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: omikuji-0.3.1-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for omikuji-0.3.1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f3c86f8561ad2c875ee7dffec19b3c921298f8fa0e6c5996fcc1b51280c89993
MD5 afb7cd5541d64a9cd776f160201bb5f4
BLAKE2b-256 a3ec4852fb113ba6532ff42adc57b42e01815abcd9a1c74f8ea04ae5a3c9ec60

See more details on using hashes here.

File details

Details for the file omikuji-0.3.1-cp35-cp35m-macosx_10_6_intel.whl.

File metadata

  • Download URL: omikuji-0.3.1-cp35-cp35m-macosx_10_6_intel.whl
  • Upload date:
  • Size: 461.3 kB
  • Tags: CPython 3.5m, macOS 10.6+ intel
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.6.8

File hashes

Hashes for omikuji-0.3.1-cp35-cp35m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 806d7d5ede8e0abdfcf2a319ea08d94a038e0f5802d592c3ffdd140924f469d5
MD5 a6a5073763819391ad96bcc1fb055990
BLAKE2b-256 dc7ed1220d1cf38e7d4ce0cb1cf79771cf3a802a58fb386a32719f0e73c863ce

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page