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.0.tar.gz (48.1 kB view details)

Uploaded Source

Built Distributions

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

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

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

Uploaded CPython 3.8

omikuji-0.3.0-cp38-cp38-macosx_10_9_x86_64.whl (455.0 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

omikuji-0.3.0-cp37-cp37m-win_amd64.whl (381.3 kB view details)

Uploaded CPython 3.7m Windows x86-64

omikuji-0.3.0-cp37-cp37m-manylinux2010_x86_64.whl (1.0 MB view details)

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

omikuji-0.3.0-cp37-cp37m-manylinux1_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.7m

omikuji-0.3.0-cp37-cp37m-macosx_10_9_x86_64.whl (455.2 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

omikuji-0.3.0-cp36-cp36m-win_amd64.whl (379.9 kB view details)

Uploaded CPython 3.6m Windows x86-64

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

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

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

Uploaded CPython 3.6m

omikuji-0.3.0-cp36-cp36m-macosx_10_9_x86_64.whl (454.4 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

omikuji-0.3.0-cp35-cp35m-win_amd64.whl (381.0 kB view details)

Uploaded CPython 3.5m Windows x86-64

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

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

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

Uploaded CPython 3.5m

omikuji-0.3.0-cp35-cp35m-macosx_10_6_intel.whl (453.8 kB view details)

Uploaded CPython 3.5m macOS 10.6+ intel

File details

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

File metadata

  • Download URL: omikuji-0.3.0.tar.gz
  • Upload date:
  • Size: 48.1 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.0.tar.gz
Algorithm Hash digest
SHA256 e9793c160914ef65e7f5d5443f75c106e22e46f45c66595f793adcb31add0d77
MD5 b7c2e42351c6dd548e91fff5aa8363fd
BLAKE2b-256 a51edbd00fd352aac9bd3fe4b22e5bb0df074a81bec2e0aecaf9d94bb02df996

See more details on using hashes here.

File details

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

File metadata

  • Download URL: omikuji-0.3.0-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.0-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 cff02a637826a56b27fc832a67742724c96c928c2d409da8b006c1ad4635990a
MD5 47eeef5c6e8619c6f6b876e41a178be1
BLAKE2b-256 c887805f9675cdde7b7d80753016e5fa135f0ae138cc74d6db3185429bd01cbd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: omikuji-0.3.0-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.0-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 28c16184e73af9174416edc925ec92fed93b33b04de52069490adadc4b5c59c3
MD5 0ad7355959822591648ecd79501b0faf
BLAKE2b-256 2b17db1e8ad30c5f07fdf58da6df23db103996c0d0fe92425a840945e2f95314

See more details on using hashes here.

File details

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

File metadata

  • Download URL: omikuji-0.3.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 455.0 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.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7d4ee40ccb9eb123767254419975a7205e0353ae5de09f49a2c37a28746046d3
MD5 142b4136e458d1fddf9872f0e3a57a25
BLAKE2b-256 aab4f8647e811359616c0e4e7b8f2712bb115ab3deac643d52ef9aa884617363

See more details on using hashes here.

File details

Details for the file omikuji-0.3.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: omikuji-0.3.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 381.3 kB
  • Tags: CPython 3.7m, 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.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 5a6a1b63784477a059e8aff597e87acdcf6d9ab2241ebf769d33b815711ee7e0
MD5 bd18e79df62304273fde92766df737c0
BLAKE2b-256 606f7cd7ddcb9b6cc647ff34c71f6deb3bc11216de9e77868a61ffbace0d94b9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: omikuji-0.3.0-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 1.0 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.0-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 53940f87dd45853ddd4937a27d250bdb4dd327486e2d5f963a654f951606e6c3
MD5 d045d007488ab7761a6848019c1790bb
BLAKE2b-256 5a62fd327591b467b560aafb5d4a4c1e913c024725d5bc75df9b233cc543a9cf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: omikuji-0.3.0-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.0 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.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e3cb53ae58b5f557ce5ad15d6c00dda04448f1e60c1f40ce381781a813255087
MD5 1f39781e5def0be3a712cd21a8cfda76
BLAKE2b-256 a8b2523862ea98e5ba9d36f084d6bf28dd0874019c4e1d83f8f511777e9d4e15

See more details on using hashes here.

File details

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

File metadata

  • Download URL: omikuji-0.3.0-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 455.2 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.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 54e62ca290686b4ff7cfddf40c4c65571de247a728bb1c82ef792ad1d1a73940
MD5 428244e141f02dc554c72190d55cafcb
BLAKE2b-256 2a36fd20bd5428c71b60ba16804fff261d8feb8b5c8978df3138d001dafe5f46

See more details on using hashes here.

File details

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

File metadata

  • Download URL: omikuji-0.3.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 379.9 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.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 167ccb51902d29100329828bdf0f417edb6f69684deb0e0d2a40a1b856a7bd82
MD5 21cc3af6f9639d76fd8173bcad207448
BLAKE2b-256 4e98c29bb860cb20c4daa3a09c4773924ecf0d82bda19ebda3b1c72690024710

See more details on using hashes here.

File details

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

File metadata

  • Download URL: omikuji-0.3.0-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.0-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 4c747c661525ecceff49378af1d5ded3916512164eb86ac12ddd11cc58537fa7
MD5 1c563267e1600b455fe8edb765d11fd1
BLAKE2b-256 5d2a4fe52cdfdad22a52bbe74647d10d8c2b7b755f13b0b4743e2c43bab02248

See more details on using hashes here.

File details

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

File metadata

  • Download URL: omikuji-0.3.0-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.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 04b90286bc9d19e44b48c93a81eb6f160a84007ab4abf80f0aee59203e018b53
MD5 43bdbebf1dfe8d6c70954b49ca758dee
BLAKE2b-256 3aeb75bd2c85eadddd080e86f4901280777a60a3990d3adb08fd3a929a080873

See more details on using hashes here.

File details

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

File metadata

  • Download URL: omikuji-0.3.0-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 454.4 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.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4a6848eb9871c01ca4ae45b8e121acd7106af44e26ca53bd350708009f3589f4
MD5 d000c47ca79e6f29dbb32980f30d8d8c
BLAKE2b-256 05a6c69b7ae1c2ce51e580be9581d9d9459c98617648ad3d83602bae8a590040

See more details on using hashes here.

File details

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

File metadata

  • Download URL: omikuji-0.3.0-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 381.0 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.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 19b3c284df24c3615f9d6230dd395511cea60044942726b70a8e365b359eae43
MD5 874acb1af49cd76e3c0886996f298fe2
BLAKE2b-256 c78233e9fd7b497a0e6fa318b8fdf631a808b610bfa7e9be83f513b83c62dfbf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: omikuji-0.3.0-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.0-cp35-cp35m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 1228f6cf9c320baa2018328c765cdfc8302f69e800b816dc55d0590570fc2cc8
MD5 00b519a13faab29734282d3f30f36ef2
BLAKE2b-256 f51fec99eb510d9b55603928dece0f754996f9ed0864a5e817616dbdcb41c6c7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: omikuji-0.3.0-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.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 5bfe59710ef8331498a1d6006b5efc428629ccfcd3146202235ed8d5a0c59024
MD5 782c44378531526cd860fc98e27f7a84
BLAKE2b-256 5276ece2cff5d8d7265f3d1b51ccb100cca0916aa2e4b02f8dcdcaedfaa2dfc4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: omikuji-0.3.0-cp35-cp35m-macosx_10_6_intel.whl
  • Upload date:
  • Size: 453.8 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.0-cp35-cp35m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 b91386a177b51bb1f092214bab30886a1cab2eaf6164d888f71b0d36fd392065
MD5 df955f76c2f6e66c18682125b81eb96c
BLAKE2b-256 d17c55af198986a704c6544d42957feaf3c567d520aa46edc350c326db2ae42f

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