Skip to main content

Python wrapper for luban.

Project description

luban

Why Need?

The feature-processing module is used in different scenarios, such as: model training and model inference. Usually, we use Python to train models, and feature-processing is also done in Python. However, in model inference, the shorter the inference run time, the better. So we usually use C++/java/golang or other languages to do model inference. If feature-process module is written in many different languages, they may be inconsistencies. So, we decide to develop such a module in C++, which can be used by other different languages. In addition, we use a json configuration for feature processing, so that it will be easier to use.

Supported libraries and tools

  1. c/c++ lib: libluban
  2. python lib: pyluban

Configuration

{
    "user_features": [
        {
            "name": "U1",
            "expr": "A*B",
            "type": 1,
            "hash": false,
            "padding": 0,
            "dim": 1
        },
        {
            "name": "U2",
            "expr": "C[int64]+D[int64]",
            "type": 0,
            "hash": false,
            "padding": 0,
            "dim": 1
        }
    ],
    "item_features": [
        {
            "name": "I1",
            "expr": "F[int64]+G[int64]",
            "type": 0,
            "hash": false,
            "padding": 0,
            "dim": 1
        },
        {
            "name": "I2",
            "expr": "concat(H[string],\"TEST\")",
            "type": 0,
            "hash": true,
            "padding": 0,
            "dim": 1
        }
    ],
    "groups": [
        [
            "U1"
        ],
        [
            "U2"
        ],
        [
            "I1",
            "I2"
        ]
    ]
}

features

Configure the relevant properties for each feature.

Properties Type Empty Default Description
name string N - name of feature
expr string Y "" how to process feature
type int N - 0: int64,
1: float3,
2: string
3: vector<int64>
4: vector<float>
5: vector<string>
hash bool Y false hash or not
padding int64/float32 Y 0/0.0 fill value
dim int Y 1 dim of result

groups

After processing, different features may be placed in different groups. Because the downstream user is pytorch, different types of data are inconvenient to put in a tensor. The final output order of the features is the same as the order configured in the group. All features configured in groups need to be configured in the features above.

Parse Expression

After installing the Python tool, the luban_parser tool is installed by default in /usr/local/bin. This tool is used to parse the above JSON configuration and generate the configuration using the JSON format used by C++. The expressions here are similar to Python's syntax. Originally, we wanted to use antlr to customize the DSL, but after thinking about it, we thought that it could be as simple as possible. As a result, it was finally decided to parse expressions using Python's built-in ast.

Operators

  1. opr: +, -, *, /, %, **
  2. math function: round, floor, ceil, floorf, ceilf, log, exp, log10, log2, sqrt, abs, sin, sinh, asin,asinh, cos, cosh, acos, acosh, tan, tanh, atan, atanh, sigmoid
  3. aggravate function: min, max, variance, stddev, average, norm
  4. time function: year, month, day, hour, minute, second, date, now, date_diff, date_add, date_sub, from_unixtime, unix_timestamp
  5. string function: concat, substr, lower, upper, cross, reverse
  6. topk function: topki, topkf, topks
  7. other function: min_max, z_score, binarize, bucketize, box_cox, normalize
// The following is a list of supported operations
// If it is a template type, you can add the type feature when configuring the function name
// e.g.: _add<int64_t>, _add<float>
// If you do not add type information, the float type is defaulted
// In practice, the tool does some built-in implicit data type conversions

T _add(T &a, T &b);
T _sub(T &a, T &b);
T _mul(T &a, T &b);
T _div(T &a, T &b);
int64_t _mod(int64_t &a, int64_t &b);
float _pow(float &a, float &b);
int64_t _round(float &x);
int64_t _floor(float &x);
int64_t _ceil(float &x);
float _log(float &x);
float _exp(float &x);
float _log10(float &x);
float _log2(float &x);
float _sqrt(float &x);
float _abs(float &x);
float _sin(float &x);
float _asin(float &x);
float _sinh(float &x);
float _asinh(float &x);
float _cos(float &x);
float _acos(float &x);
float _cosh(float &x);
float _acosh(float &x);
float _tan(float &x);
float _atan(float &x);
float _tanh(float &x);
float _atanh(float &x);
float _sigmoid(float &x);
T min(std::vector<float> &src);
T max(std::vector<T> &src);
float average(std::vector<T> &src);
float variance(std::vector<T> &src);
float stddev(std::vector<T> &src);
float norm(std::vector<T> &src, float &n);
std::string year();
std::string month();
std::string day();
std::string date();
std::string hour();
std::string minute();
std::string second();
int64_t now();
std::string from_unixtime(int64_t &ts, std::string &format);
int64_t unix_timestamp(std::string &t, std::string &format);
std::string date_add(std::string &s, int64_t &n);
std::string date_sub(std::string &s, int64_t &n);
int64_t date_diff(std::string &d1, std::string &d2);
std::string reverse(std::string &s);
std::string upper(std::string &s);
std::string lower(std::string &s);
std::string substr(std::string &s, int64_t &start, int64_t &len);
std::string concat(std::string &a, std::string &b);
float min_max(T &v, T &min, T &max);
float z_score(float &v, float &mean, float &stdv);
int64_t binarize(T &v, T &threshold);
int64_t bucketize(T &v, std::vector<T> &boundaries);
float box_cox(float &v, float &lambda);
std::vector<float> normalize(std::vector<T> &src, float &norm);
std::vector<T> topk(std::vector<T> &src, int64_t &k);
std::vector<std::string> cross(std::vector<std::string> &srcA,
                               std::vector<std::string> &srcB);

Usage

  1. Follow the installation prompts in the next section to compile and install the tool

  2. Include header files and add libluban to dynamic link paths

  3. Steps:

    1. step1: Configure the JSON file
    2. use luban_parser to process JSON configuration files and generate configuration files in JSON format
    3. Use the configuration file in JSON format as a configuration input for C/C++/Golang/Python

Install

install On MacOS ARM

pip install pyluban

Unix Like

python setup.py install --install-scripts=/usr/local/bin

pip install pyluban

Examples

Features & FeaturesList

The structure of the features is as follows:

// json format
{
    "A": {                        // key is the name of feature
        "type": 0,                // type listed above
        "value": 10               // certain value
    },
    "B": {
        "type": 1,                
        "value": 10.9                
    },
    ...
}

how to parse features in python

import json
import pyluban
feas = {"A": {"type": 0,"value": 10},...}

feas_str = json.dumps(feas)

# arg is str
features = pyluban.Features(feas_str)

# arg is str list
features = pyluban.Features([feas_str1, feas_str2, feas_str3])

# arg is nil
features = pyluban.Features()

# create a featureslist
l = pyluban.FeatuersList()

# add a value
l.append(features)

print(l[0])
print(l)

l[0] = features

Function

This is the configuration of function processing, usually, users generally do not use, will be used when doing unit tests, and are also explained here.

{
    "func":"_add<int64_t>",
    "name":"X",
    "flag":3,
    "args": [],
    "vars": ["A","B"]
}
Properties Type Description
func string function name
name string name of generated feature
flag int64 Flag bits for each parameter: In the binary bit of flag, the ith bit is 1 to indicate that the input is a variable; Otherwise, it is constant
args list of dict same structure of features
vars list of str variable name list

Toolkit

By configuring the class for feature processing entry, the consumer mainly uses this class to process features.

import pyluban
import luban_parser
# this is the original config file
"""
{
    "features": [
        {
            "name": "A",
            "expr": "(B+C)*F",
            "type": 0,
            "hash": false,
            "padding": 0,
            "dim": 1
        },
        {
            "name": "B",
            "type": 0,
            "padding": 0,
            "dim": 1
        },
        {
            "name": "C",
            "type": 0,
            "padding": 0,
            "dim": 1
        },
        {
            "name": "D",
            "expr": "concat(\"prefix-\", E)",
            "type": 0,
            "hash": true,
            "padding": 0,
            "dim": 3
        }
    ],
    "groups": [
        [
            "A",
            "B"
        ],
        [
            "D"
        ]
    ]
}
"""

luban_parser.parser(input_file: str, output_file: str)

# this is the output file of luban_parser

"""
{
    "transforms": [
        {
            "func": "_add<int64_t>",
            "name": "anonymous_0",
            "flag": 3,
            "args": [],
            "vars": [
                "B",
                "C"
            ]
        },
        {
            "func": "_mul<int64_t>",
            "name": "A",
            "flag": 3,
            "args": [],
            "vars": [
                "anonymous_0",
                "F"
            ]
        },
        {
            "func": "concat",
            "name": "D",
            "flag": 2,
            "args": [
                {
                    "type": 2,
                    "value": "prefix-"
                }
            ],
            "vars": [
                "E"
            ]
        }
    ],
    "groups": [
        {
            "id": 0,
            "width": 2,
            "type": 0
        },
        {
            "id": 1,
            "width": 3,
            "type": 0
        }
    ],
    "features": [
        {
            "name": "A",
            "type": 0,
            "padding": 0,
            "group": 0,
            "offset": 0,
            "hash": false,
            "dim": 1
        },
        {
            "name": "B",
            "type": 0,
            "padding": 0,
            "group": 0,
            "offset": 1,
            "hash": false,
            "dim": 1
        },
        {
            "name": "D",
            "type": 0,
            "padding": 0,
            "group": 1,
            "offset": 0,
            "hash": true,
            "dim": 3
        }
    ]
}
"""
# config.json is the file after configuration processing, 
# and the above is an example of the file content of the configuration
toolkit = pyluban.Toolkit("config.json")

Rows

In the case of only one feature, Rows is a list object with a length of the number of groups configured above, which can be accessed via subscripts and then converted into numpy structures.

# r pyluban:Rows type
r = toolkit.process(features: pyluban.Features)


for i in range(len(r)):
    print(np.asarray(r[i]))

Matrices

Matrices is a list object with a length of the number of groups configured above, which can be accessed by subscripts and then converted into a numpy structure.

l = pyluban.FeaturesList()
l.append(features: pyluban.Features)

m = self.toolkit.process(l)

for i in range(len(m)):
    print(np.asarray(m[i]))

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

pyluban-1.1.6.tar.gz (188.1 kB view details)

Uploaded Source

Built Distributions

pyluban-1.1.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.5 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pyluban-1.1.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (264.9 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

pyluban-1.1.6-cp312-cp312-macosx_11_0_arm64.whl (202.0 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

pyluban-1.1.6-cp312-cp312-macosx_10_9_x86_64.whl (215.5 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

pyluban-1.1.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.7 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pyluban-1.1.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (264.1 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

pyluban-1.1.6-cp311-cp311-macosx_11_0_arm64.whl (203.2 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pyluban-1.1.6-cp311-cp311-macosx_10_9_x86_64.whl (216.0 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

pyluban-1.1.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.6 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pyluban-1.1.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (264.1 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

pyluban-1.1.6-cp310-cp310-macosx_11_0_arm64.whl (201.9 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pyluban-1.1.6-cp310-cp310-macosx_10_9_x86_64.whl (214.7 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

pyluban-1.1.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pyluban-1.1.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (264.2 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

pyluban-1.1.6-cp39-cp39-macosx_11_0_arm64.whl (202.0 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pyluban-1.1.6-cp39-cp39-macosx_10_9_x86_64.whl (214.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

pyluban-1.1.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.9 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pyluban-1.1.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (264.2 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

pyluban-1.1.6-cp38-cp38-macosx_11_0_arm64.whl (201.8 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

pyluban-1.1.6-cp38-cp38-macosx_10_9_x86_64.whl (214.7 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

pyluban-1.1.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.3 kB view details)

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

pyluban-1.1.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (265.3 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

pyluban-1.1.6-cp37-cp37m-macosx_10_9_x86_64.whl (214.1 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

pyluban-1.1.6-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.5 kB view details)

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

pyluban-1.1.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (265.4 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ ARM64

pyluban-1.1.6-cp36-cp36m-macosx_10_9_x86_64.whl (213.9 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

Details for the file pyluban-1.1.6.tar.gz.

File metadata

  • Download URL: pyluban-1.1.6.tar.gz
  • Upload date:
  • Size: 188.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for pyluban-1.1.6.tar.gz
Algorithm Hash digest
SHA256 51274483bd667ba3f11719a12a9cee52c7b139d845d638c9f7b78222548ffae8
MD5 7c24468ef361d4e553cace98b77ebfa9
BLAKE2b-256 8dc2fcb661bf329310c6d23937287a532c64cf1401939177acfe88192a89a90b

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5ddfc4b908c4f1e82c12d544cbc02d91578da86ab949712404a3060c10e0070d
MD5 c5f1c4205b7ad835e9d688c8bb532703
BLAKE2b-256 278d4d45da9a7a75135332ade7eb277fbc1bf57d00bd97aeed4bdaa5cc2fe283

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9eacf4ff4f3d66062e5046ba36f3859e5812e856782147b17cd6535300235a7f
MD5 8d58fff10b0d90ac4cc74988517c71f3
BLAKE2b-256 ce1b3026f9e2c9331001535d139ab842ba6a55e5447655523110a138a2cf482f

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 31d5d63427c4f65f57a518f16750a29eed4114259eb98d58fab7e8cdf8873164
MD5 03dc034249d4a1de17e62adbc195785d
BLAKE2b-256 dd977e2c76d822697be431b6c2a5ee184d79fd9b49e56716885e6ea641606ea8

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6a9996a90dadf3f3b1340e8f08bc2e6ff3a7e0d3da3138423b96bcbcf3391b55
MD5 fae982cc284cd166c0f4630ef88578df
BLAKE2b-256 771f001b8a5f03a274a1e365e954e5c84e9ed3836b528911a3c500d3f126308e

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7393a902b420e95509dbde93f3d56728ddec7fc86876421d7ec24cbce3d94bdc
MD5 d8a1d23bbb28a9467d87df068033dd27
BLAKE2b-256 41a047f0910c8628ffabe084fc40f1c709f39cc1254cd61257d15a03547f0788

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 002503a400283a812884120b9971043e3aadbf4d129f40e2b1b3a5470809bc88
MD5 5ecc42f8d2469ce541f8008e42ceabd3
BLAKE2b-256 6aa88468339331f3f094c776d7613ee645599cae811d1695d2181fabdc96f113

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 87e7f7f615b5d6652165fea25f50f688dd3d298fa4701409899485374cbad189
MD5 423e70de4582022f31e99f207d09f990
BLAKE2b-256 8e471590d0c1c22b8ac5d51e51135b5798754f58ab1aece60bd88d696f8cec3f

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ea4f39387f3bdfa5ab897af5524c87611802a45bbeec096c25bdb179b122ed8a
MD5 2f441a9449e8decf1076c0a9e0c8c58f
BLAKE2b-256 661bcddc43aeb1dd07d8f9bfa4741beea2680b9a0d22877db9183b25e9461d4c

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9b5d8a7f8177679dd91cd7afb0b098bbe9c386adc119e52b540c857e63e705a1
MD5 b5176d92111eca50e8f3a2cfdd504f91
BLAKE2b-256 df1cae28164c5b11a44ac06e57d866b951cf317852192eafcba029548d6d7db3

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 81c5eb6b221ead93130a2fec7c306ad8e4c981f3aa3c1432f6f3f0a27d5a1a8d
MD5 04c30536cbd79cd29eb27d0645e63244
BLAKE2b-256 038b697b1c7af1c3f6af784a97208f4baefee32ecdf9c630af41e4bdfabe96b5

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7777b0b0b591a2ed928822e6274803a95aba1c07140e0f2d6b9138f390132340
MD5 f2bd5a55aeb60069df23d3cf251d674a
BLAKE2b-256 f0237746f4444607b50998963f829aa120f8d3a1e8ad7bb882116149df00d7f8

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 80fac6c784e0fe400b41e68b36ea7298ea10d000ad3042f50e6aeca9c2307f44
MD5 4c37cf6e246ecd49bcbfa7b2c920a4e5
BLAKE2b-256 dc01a013bf36642eefe37922b2b8900c0e9c297ed8063fb4dfef8092b785e069

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ae6941821559b8615a979849150777d72b803ae447709032f9124f5bc771a8e9
MD5 5de8796597b0989784662e54eed58462
BLAKE2b-256 8cf38ea27a9f46218eac993d329d51e3dea678d6ef72a4a63956d448d9853aa7

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5fa7b21c0e2ae17e844c587c981dcda132a3c7f2724804ddf42e14b602f325ad
MD5 084f47ffaa71302b33272852adf12704
BLAKE2b-256 eed3246ead036f593531f0ce377718d7bc96d45e1063f7c2ee9e2c56d0c8903e

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cdbffa105a3361a22a27fda8af75ddf2c41ece3c70ad2c16bb6a6374e39ceebb
MD5 c17a1c749b447c9a3e338beff56cd13a
BLAKE2b-256 6e2932c749362b0e03cef950a9ab571648e6cc11ab30c3dec59c18eea62280f0

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8a753d00bec4df9e90530f76f6d1b17c4d845af1f23bba09f001282ac79febba
MD5 166b8c6912340e777e13a9bda515ac3d
BLAKE2b-256 f373d641bb60b90168244082b9630ed2b32a4f3cf64a36ed8c9c65440574a237

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a44794d57278d9c048103c20f66691ba66575f746c69169121641eadfba7f208
MD5 2d03f5a8be97336862109e568453a7c5
BLAKE2b-256 ea0ee68c858753ca8b4a87c7d31de175a12330d43059d07996580780d1c0401b

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9a7db75d8b6bd3d8cc90d86e6c5fdc227bf4fa8a5434be3ede6e25fdb5a5b5af
MD5 e8693461ae15a7b6c099cdf92c64deb4
BLAKE2b-256 484c22f897129085b5d546bcb356810aef0b90b877fab8a7bde160ef44a10b86

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 537c41e2e7a1da53995c4e975a71ae128d01f7e732d9bc1903da06802e7073cb
MD5 6d076bd18df0d6333090a0217239fd2f
BLAKE2b-256 404e4afd771a0a65905f5598ab0845e5915436391450c73d6428b26096f54d67

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a012e822ba949c7a7e11e29eba3e96448fe0db92a085a474984e617bc3f6f7d6
MD5 a838a5c8cc55069603741899f9ccfc99
BLAKE2b-256 08768c5fc76375f46ad2c353ecca6b0b9d942c0065be3069b9cb1afa1a1fe211

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5b77555f9121341253a12353a84c617ee56320fd693ccc0ea88d13aed8992a88
MD5 980cca427fe0d8c0ac3024d642aeba2b
BLAKE2b-256 db2085e9b0d5240804f55853b884473dd89f510aaff02b617e454a3ce6917e6e

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 90b7486aa83b44e4bae4d4a2651ed8e35a305011aa3f9867f6849f2d2c7a84ac
MD5 464ef7c6979568e1601f551deec90cb1
BLAKE2b-256 664a51b2ac4705aa32c2c4fe2c53acdda7ef72e2aafb0bea458790ae46b9c2df

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 53fa8b377efc9b4904da7a327deb81dab2342a353206a712d606b8080f2fa01b
MD5 f58ea44de84b83da9fc8ab5b5f5e8dc8
BLAKE2b-256 c3fe7ec43017c089bba07f0df9ef88d62b765eb328d93536ba9949786a0f6703

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ca26e3e819528e33d5cc09910437da039f01190c551ed9d2de85ba18b785e3d2
MD5 d138c5a91d2b5bf72c044dcd85bf0207
BLAKE2b-256 7fffbdf3451fd60acb1e811a796d65541cf87d9750a1ac1ccbfc4a6ef5a779af

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 faba14c14fd428687afc41026d5a20bbfee0fc7cd122401726bfc9a43a20fd2d
MD5 93f1b51e6bb7f82e00cff9bc1540c3e0
BLAKE2b-256 ee84710173f36ef2168c5608274048ad7876fda71a066c56007527b51f9b7edb

See more details on using hashes here.

File details

Details for the file pyluban-1.1.6-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyluban-1.1.6-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 69d807626db836f67f251eb88b7923b6f9bd9bbfd0b6883590d654ad6ac2fffe
MD5 5a9abcb0e273f55ec63a60100bc12a47
BLAKE2b-256 e45ed2245fc5b20c0bcb91441eabe94eb85703ca70b1fde315228693593c1fd2

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