Skip to main content

Implementation of Optimal Sparse Regression Trees

Project description

OSRT Documentation

Implementation of Optimal Sparse Regression Tree (OSRT). This is implemented based on Generalized Optimal Sparse Decision Tree framework (GOSDT). If you need classification trees, please use GOSDT.

image

Table of Content


Installation

You may use the following commands to install OSRT along with its dependencies on macOS, Ubuntu and Windows.
You need Python 3.9 or later to use the module osrt in your project.

pip3 install attrs packaging editables pandas sklearn sortedcontainers gmpy2 matplotlib
pip3 install osrt

You need to install gmpy2==2.0.a1 if You are using Python 3.12

Compilation

Please refer to the manual to build the C++ command line interface and the Python extension module and run the experiment with example datasets on your machine.


Configuration

The configuration is a JSON object and has the following structure and default values:

{ 
  "regularization": 0.05,
  "depth_budget": 0,
  "k_cluster": true,

  "metric": "L2",
  "weights": [],

  "time_limit": 0,
  "uncertainty_tolerance": 0.0,
  "upperbound": 0.0,
  "worker_limit": 1,
  "stack_limit": 0,
  "precision_limit": 0,
  "model_limit": 1,

  "verbose": false,
  "diagnostics": false,
  "balance": false,
  "look_ahead": true,

  "model": "",
  "timing": "",
  "trace": "",
  "tree": "",
  "profile": ""
}

Key parameters

regularization

  • Values: Decimal within range [0,1]
  • Description: Used to penalize complexity. A complexity penalty is added to the risk in the following way.
    ComplexityPenalty = # Leaves x regularization
    
  • Default: 0.05
  • Note: We highly recommend setting the regularization to a value larger than 1/num_samples. A small regularization could lead to a longer training time and possible overfitting.

depth_budget

  • Values: Integers >= 1
  • Description: Used to set the maximum tree depth for solutions, counting a tree with just the root node as depth 1. 0 means unlimited.
  • Default: 0

k_cluster

  • Values: true or false
  • Description: Enables the kmeans lower bound
  • Default: true

metric

  • Values: L1 or L2
  • Description: The metric used in loss function. Mean squared error if L2, mean absolute error if L1.
  • Default: L2

weights

  • Values: Vector of real numbers
  • Description: Weights assigned to each sample in training dataset. Empty vector means samples are unweighted.
  • Default: []

More parameters

Flag

look_ahead

  • Values: true or false
  • Description: Enables the one-step look-ahead bound implemented via scopes
  • Default: true

diagnostics

  • Values: true or false
  • Description: Enables printing of diagnostic trace when an error is encountered to standard output
  • Default: false

verbose

  • Values: true or false
  • Description: Enables printing of configuration, progress, and results to standard output
  • Default: false

Tuners

uncertainty_tolerance

  • Values: Decimal within range [0,1]
  • Description: Used to allow early termination of the algorithm. Any models produced as a result are guaranteed to score within the lowerbound and upperbound at the time of termination. However, the algorithm does not guarantee that the optimal model is within the produced model unless the uncertainty value has reached 0.
  • Default: 0.0

upperbound

  • Values: Decimal within range [0,1]
  • Description: Used to limit the risk of model search space. This can be used to ensure that no models are produced if even the optimal model exceeds a desired maximum risk. This also accelerates learning if the upperbound is taken from the risk of a nearly optimal model.
  • Special Cases: When set to 0, the bound is not activated.
  • Default: 0.0

Limits

time_limit

  • Values: Decimal greater than or equal to 0
  • Description: A time limit upon which the algorithm will terminate. If the time limit is reached, the algorithm will terminate with an error.
  • Special Cases: When set to 0, no time limit is imposed.
  • Default: 0

model_limit

  • Values: Decimal greater than or equal to 0
  • Description: The maximum number of models that will be extracted into the output.
  • Special Cases: When set to 0, no output is produced.
  • Default: 1

precision_limit

  • Values: Decimal greater than or equal to 0
  • Description: The maximum number of significant figures considered when converting ordinal features into binary features.
  • Special Cases: When set to 0, no limit is imposed.
  • Default: 0

stack_limit

  • Values: Decimal greater than or equal to 0
  • Description: The maximum number of bytes considered for use when allocating local buffers for worker threads.
  • Special Cases: When set to 0, all local buffers will be allocated from the heap.
  • Default: 0

worker_limit

  • Values: Decimal greater than or equal to 1
  • Description: The maximum number of threads allocated to executing th algorithm.
  • Special Cases: When set to 0, a single thread is created for each core detected on the machine.
  • Default: 1

Files

model

  • Values: string representing a path to a file.
  • Description: The output models will be written to this file.
  • Special Case: When set to empty string, no model will be stored.
  • Default: Empty string

profile

  • Values: string representing a path to a file.
  • Description: Various analytics will be logged to this file.
  • Special Case: When set to empty string, no analytics will be stored.
  • Default: Empty string

timing

  • Values: string representing a path to a file.
  • Description: The training time will be appended to this file.
  • Special Case: When set to empty string, no training time will be stored.
  • Default: Empty string

trace

  • Values: string representing a path to a directory.
  • Description: snapshots used for trace visualization will be stored in this directory
  • Special Case: When set to empty string, no snapshots are stored.
  • Default: Empty string

tree

  • Values: string representing a path to a directory.
  • Description: snapshots used for trace-tree visualization will be stored in this directory
  • Special Case: When set to empty string, no snapshots are stored.
  • Default: Empty string

Example

Example code to run GOSDT with threshold guessing, lower bound guessing, and depth limit. The example python file is available in gosdt/example.py. A tutorial ipython notebook is available in gosdt/tutorial.ipynb.

import pandas as pd
import numpy as np
import time
from model.osrt import OSRT

# read the dataset
# preprocess your data otherwise OSRT will binarize continuous feature using all threshold values.
df = pd.read_csv("experiments/datasets/airfoil/airfoil.csv")
X, y = df.iloc[:,:-1].values, df.iloc[:,-1].values
h = df.columns[:-1]
X = pd.DataFrame(X, columns=h)
X_train = X
y_train = pd.DataFrame(y)
print("X:", X.shape)
print("y:",y.shape)

# train OSRT model
config = {
    "regularization": 0.007,
    "depth_budget": 6,
    "model_limit": 100,

    "metric": "L2",
    "weights": [],

    "verbose": False,
    "diagnostics": True,
    }

model = OSRT(config)

model.fit(X_train, y_train)

print("evaluate the model, extracting tree and scores", flush=True)

# get the results
train_acc = model.score(X_train, y_train)
n_leaves = model.leaves()
n_nodes = model.nodes()
time = model.time

print("Model training time: {}".format(time))
print("Training score: {}".format(train_acc))
print("# of leaves: {}".format(n_leaves))
print(model.tree)

Output

X: (1503, 17)
y: (1503,)
osrt reported successful execution
training completed. 4.664 seconds.
bounds: [0.743839..0.743839] (0.000000) normalized loss=0.631839, iterations=46272
evaluate the model, extracting tree and scores
Model training time: 4.664000034332275
Training score: 30.060801844008466
# of leaves: 16
if feature_1_1 = 1 and feature_2_2 = 1 then:
    predicted class: 112.945831
    normalized loss penalty: 0.01
    complexity penalty: 0.007

else if feature_1_1 != 1 and feature_2_2 = 1 and feature_5_3 = 1 then:
    predicted class: 116.111771
    normalized loss penalty: 0.028
    complexity penalty: 0.007

else if feature_1_1 != 1 and feature_2_2 = 1 and feature_4_71.3 = 1 and feature_5_3 != 1 then:
    predicted class: 128.063248
    normalized loss penalty: 0.034
    complexity penalty: 0.007

else if feature_1_1 != 1 and feature_2_2 = 1 and feature_3_0.1016 = 1 and feature_4_71.3 != 1 and feature_5_3 != 1 then:
    predicted class: 120.686447
    normalized loss penalty: 0.037
    complexity penalty: 0.007

else if feature_1_1 != 1 and feature_2_2 = 1 and feature_3_0.1016 != 1 and feature_4_71.3 != 1 and feature_5_3 != 1 then:
    predicted class: 125.050087
    normalized loss penalty: 0.021
    complexity penalty: 0.007

else if feature_1_2 = 1 and feature_2_2 != 1 and feature_3_0.3048 = 1 then:
    predicted class: 109.278999
    normalized loss penalty: 0.0
    complexity penalty: 0.007

else if feature_1_2 != 1 and feature_1_3 = 1 and feature_2_2 != 1 and feature_3_0.3048 = 1 then:
    predicted class: 107.651497
    normalized loss penalty: 0.0
    complexity penalty: 0.007

else if feature_1_1 = 1 and feature_1_2 != 1 and feature_1_3 != 1 and feature_2_2 != 1 and feature_3_0.3048 = 1 then:
    predicted class: 113.869255
    normalized loss penalty: 0.003
    complexity penalty: 0.007

else if feature_1_1 != 1 and feature_1_2 != 1 and feature_1_3 != 1 and feature_2_2 != 1 and feature_3_0.3048 = 1 then:
    predicted class: 124.200935
    normalized loss penalty: 0.038
    complexity penalty: 0.007

else if feature_1_1 = 1 and feature_2_2 != 1 and feature_3_0.2286 = 1 and feature_3_0.3048 != 1 then:
    predicted class: 115.355225
    normalized loss penalty: 0.004
    complexity penalty: 0.007

else if feature_1_1 != 1 and feature_1_3 = 1 and feature_2_2 != 1 and feature_3_0.2286 = 1 and feature_3_0.3048 != 1 then:
    predicted class: 112.966003
    normalized loss penalty: 0.0
    complexity penalty: 0.007

else if feature_1_1 != 1 and feature_1_3 != 1 and feature_2_2 != 1 and feature_3_0.2286 = 1 and feature_3_0.3048 != 1 then:
    predicted class: 125.296906
    normalized loss penalty: 0.096
    complexity penalty: 0.007

else if feature_1_1 = 1 and feature_2_2 != 1 and feature_3_0.1524 = 1 and feature_3_0.2286 != 1 and feature_3_0.3048 != 1 then:
    predicted class: 116.648323
    normalized loss penalty: 0.009
    complexity penalty: 0.007

else if feature_1_1 != 1 and feature_2_2 != 1 and feature_3_0.1524 = 1 and feature_3_0.2286 != 1 and feature_3_0.3048 != 1 then:
    predicted class: 125.097855
    normalized loss penalty: 0.112
    complexity penalty: 0.007

else if feature_2_2 != 1 and feature_2_3 = 1 and feature_3_0.1524 != 1 and feature_3_0.2286 != 1 and feature_3_0.3048 != 1 then:
    predicted class: 122.649429
    normalized loss penalty: 0.067
    complexity penalty: 0.007

else if feature_2_2 != 1 and feature_2_3 != 1 and feature_3_0.1524 != 1 and feature_3_0.2286 != 1 and feature_3_0.3048 != 1 then:
    predicted class: 128.906433
    normalized loss penalty: 0.173
    complexity penalty: 0.007

Structure

This repository contains the following directories and files:

  • .github: Configurations for GitHub action runners.
  • doc: Documentation
  • experiments: Datasets and their configurations to run experiments
  • osrt: Python implementation and wrappers around C++ implementation
  • include: Required 3rd-party header-only libraries
  • log: Log files
  • src: Source files for C++ implementation and Python binding
  • test: Source files for unit tests
  • build.py: Python script that builds the project automatically
  • CMakeLists.txt: Configuration file for the CMake build system
  • pyproject.toml: Configuration file for the SciKit build system
  • setup.py: Python script that builds the wheel file

Structure

This repository contains the following directories and files:

  • .github: Configurations for GitHub action runners.
  • doc: Documentation
  • experiments: Datasets and their configurations to run experiments
  • osrt: Jupyter notebook, Python implementation and wrappers around C++ implementation
  • include: Required 3rd-party header-only libraries
  • log: Log files
  • src: Source files for C++ implementation and Python binding
  • test: Source files for unit tests
  • build.py: Python script that builds the project automatically
  • CMakeLists.txt: Configuration file for the CMake build system
  • pyproject.toml: Configuration file for the SciKit build system
  • setup.py: Python script that builds the wheel file

FAQs

If you run into any issues when running OSRT, consult the FAQs first.


License

This software is licensed under a 3-clause BSD license (see the LICENSE file for details).


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

osrt-0.1.5.tar.gz (5.0 MB view details)

Uploaded Source

Built Distributions

osrt-0.1.5-cp312-abi3-win_amd64.whl (803.1 kB view details)

Uploaded CPython 3.12+ Windows x86-64

osrt-0.1.5-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (528.0 kB view details)

Uploaded CPython 3.12+ manylinux: glibc 2.17+ x86-64

osrt-0.1.5-cp312-abi3-macosx_14_0_arm64.whl (572.1 kB view details)

Uploaded CPython 3.12+ macOS 14.0+ ARM64

osrt-0.1.5-cp312-abi3-macosx_13_0_x86_64.whl (666.4 kB view details)

Uploaded CPython 3.12+ macOS 13.0+ x86-64

osrt-0.1.5-cp312-abi3-macosx_12_0_x86_64.whl (655.1 kB view details)

Uploaded CPython 3.12+ macOS 12.0+ x86-64

osrt-0.1.5-cp311-abi3-win_amd64.whl (803.1 kB view details)

Uploaded CPython 3.11+ Windows x86-64

osrt-0.1.5-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (528.0 kB view details)

Uploaded CPython 3.11+ manylinux: glibc 2.17+ x86-64

osrt-0.1.5-cp311-abi3-macosx_14_0_arm64.whl (572.1 kB view details)

Uploaded CPython 3.11+ macOS 14.0+ ARM64

osrt-0.1.5-cp311-abi3-macosx_13_0_x86_64.whl (666.4 kB view details)

Uploaded CPython 3.11+ macOS 13.0+ x86-64

osrt-0.1.5-cp311-abi3-macosx_12_0_x86_64.whl (655.1 kB view details)

Uploaded CPython 3.11+ macOS 12.0+ x86-64

osrt-0.1.5-cp310-abi3-win_amd64.whl (803.1 kB view details)

Uploaded CPython 3.10+ Windows x86-64

osrt-0.1.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (528.0 kB view details)

Uploaded CPython 3.10+ manylinux: glibc 2.17+ x86-64

osrt-0.1.5-cp310-abi3-macosx_14_0_arm64.whl (572.1 kB view details)

Uploaded CPython 3.10+ macOS 14.0+ ARM64

osrt-0.1.5-cp310-abi3-macosx_13_0_x86_64.whl (666.4 kB view details)

Uploaded CPython 3.10+ macOS 13.0+ x86-64

osrt-0.1.5-cp310-abi3-macosx_12_0_x86_64.whl (655.1 kB view details)

Uploaded CPython 3.10+ macOS 12.0+ x86-64

osrt-0.1.5-cp39-abi3-win_amd64.whl (803.7 kB view details)

Uploaded CPython 3.9+ Windows x86-64

osrt-0.1.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (528.0 kB view details)

Uploaded CPython 3.9+ manylinux: glibc 2.17+ x86-64

osrt-0.1.5-cp39-abi3-macosx_14_0_arm64.whl (572.2 kB view details)

Uploaded CPython 3.9+ macOS 14.0+ ARM64

osrt-0.1.5-cp39-abi3-macosx_13_0_x86_64.whl (666.4 kB view details)

Uploaded CPython 3.9+ macOS 13.0+ x86-64

osrt-0.1.5-cp39-abi3-macosx_12_0_x86_64.whl (655.1 kB view details)

Uploaded CPython 3.9+ macOS 12.0+ x86-64

File details

Details for the file osrt-0.1.5.tar.gz.

File metadata

  • Download URL: osrt-0.1.5.tar.gz
  • Upload date:
  • Size: 5.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for osrt-0.1.5.tar.gz
Algorithm Hash digest
SHA256 19da5c741452cfd0f46220f31d0915f8422b25f18b7868f1f53e895cb4eba578
MD5 63a946cfe283626d1c753f18bacd4762
BLAKE2b-256 693708e9402bdf0708842cdc6bc20b3e94acc45069babed66f09ff80666ee898

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp312-abi3-win_amd64.whl.

File metadata

  • Download URL: osrt-0.1.5-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 803.1 kB
  • Tags: CPython 3.12+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for osrt-0.1.5-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 33332fc30dbb09fb777bfe1ea71868c9c0aee32b8736bb5e30b56bedbb10e013
MD5 df527ac02fdceed0af4fb408226b958e
BLAKE2b-256 82bed0d73bb43579a0dc320b31ce475d10371665e91fe492f8857cc1d1753f60

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for osrt-0.1.5-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 644fb99e8d4f990dc0746966127ec70079ecf929f53681b1971e26818b418a42
MD5 fd0427640e3ef7bb2939d0f0d3a187dd
BLAKE2b-256 d761b340b4c82274a37f0c9f3f6048d984e9654d7efa5697faa114b38aeec5ef

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp312-abi3-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for osrt-0.1.5-cp312-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 634b3b42590eac07e671d30f81c0c3bc296881f2e8bf0434f85957a6c615871c
MD5 d7bd665fd34ccf333e130a1418a24576
BLAKE2b-256 702a965b325d2483d071b22f1495f39e39fda89d769577cdeef0f906b137c033

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp312-abi3-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for osrt-0.1.5-cp312-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 add254e792589962974648924a65b65a73181f9d6a3717984cdfbeaa82548a22
MD5 56a9e9209db1de197ae105c639db0ce9
BLAKE2b-256 f82783a09f156e4cb84b94c8d2aecb4edf204cef5498f15827158f102d25486d

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp312-abi3-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for osrt-0.1.5-cp312-abi3-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 3b3a376e609d53afb82de4b6d179662b54570c5e9bc7fd20f50683b97b75bb1e
MD5 5dfba48a6d058e765687b458160a480e
BLAKE2b-256 90559bbdaa6fd50c6c76b3e54c88257edea9fe2332a7908d5e164b2bb3da2525

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp311-abi3-win_amd64.whl.

File metadata

  • Download URL: osrt-0.1.5-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 803.1 kB
  • Tags: CPython 3.11+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for osrt-0.1.5-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 ab873d030b85cbe0fe4680f8e1e2d5723854aa83d2b2450534fedf4a2df81118
MD5 06656638f0b508b92e15a18b666c259b
BLAKE2b-256 8f40caf75a63f537132879af5141ade2305486ed1d95a8af870372f651c1a7a6

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for osrt-0.1.5-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 76fb36b01806a19c4c5e88cf6f259e0063a4663dc3e29f40b71991090ef8f83a
MD5 24fdd0db68339920e46c71a0a1b93b1c
BLAKE2b-256 e04e09a73d8efded7e13c52dd167d7e82e74b20eceb5e0f24e6b93ab0ea0c48b

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp311-abi3-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for osrt-0.1.5-cp311-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 477422493a3fa5ca4954bfe8f0de8e8fbc389c93915423e3d68d41d15cee0d45
MD5 8f7928c283a9b24ecfdd3b45e33bfe3f
BLAKE2b-256 a20126a7fcc27a122bacb7b9f81fb5b9a475e651e7558f682a595b5e8a819e9b

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp311-abi3-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for osrt-0.1.5-cp311-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 2a69a5287e6c65e4e91aa05a3ec35e30b59717f4961ed022f729763a808b1531
MD5 a48b325a89dc846a2ae17509d152618a
BLAKE2b-256 7d14624ced872de747e9a4b443fb916b097fb48933db311026789c2808745e08

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp311-abi3-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for osrt-0.1.5-cp311-abi3-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 5aeed65185148a43419ab002997af85021bd4c090abbf400d627abf0b115130c
MD5 b91beb9df08a042f177ad0e5a6bfbb98
BLAKE2b-256 4207934a425983560b0632755a384f9d9d09a48d3048cea2cf92b875bf5f2951

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: osrt-0.1.5-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 803.1 kB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.11

File hashes

Hashes for osrt-0.1.5-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 7c8b4ef14f631f1e6145dbced5071453f16ddd789ab7c49495fd77f1017f7bc7
MD5 2535e979f0069f12d8b4d2eeb0054a9c
BLAKE2b-256 d0953a6573e491a1cd21ccd25b1ec85932a3de6d60a313521d47b2bc7d0eb0ee

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for osrt-0.1.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bba0e7bfd0137a76d9fa7ea0400f38c3b98d05af81792af2191f3f353969f3d9
MD5 51ab9a24089d9867812d134bb6b6ad0c
BLAKE2b-256 765f0e9566b1d9d0e89669ae428a932127d9b4dc6f97f47f1a54a93ef73353a5

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp310-abi3-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for osrt-0.1.5-cp310-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 1f628ae376da1e1b2f4b872f66e6a1d368f45d0862e06163ac918083654f7054
MD5 65ce9f490b61720ccd50a3b508bd6bbb
BLAKE2b-256 bc1b0a52808313de1c09a3f64830c0509dca3129dcb8bd1ec5a66a48bd475df0

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp310-abi3-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for osrt-0.1.5-cp310-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 960b24f1424264868c8c932a1f0e06970c8e92fa12f34d88ec07ee1db41897b0
MD5 3e7d926e4075e5e9e011d1685c2b6348
BLAKE2b-256 72ab1de970acf15ee02d7463109f54c68399c7a9f40259c65224a9d9e8643886

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp310-abi3-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for osrt-0.1.5-cp310-abi3-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 54db1933d6d8f754a1e27b67e881ecad42487c6379b380315b8ccea72f08b262
MD5 d926fbf916760f933065f2f2db9e57a6
BLAKE2b-256 352f909cc3d42cac9f0a6135778eb9308a85c58e95fb3c208cd81415aba89c75

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: osrt-0.1.5-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 803.7 kB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.13

File hashes

Hashes for osrt-0.1.5-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 85821c1c2d3d8cfab1c4899d6d745280aeee7b063908537081a9ca9c9ae2bd8b
MD5 34b4f36046c0c1839ac6e0d2350759f6
BLAKE2b-256 3ea66e22998f8847ee95f9b66ecb003f83f88e8bde7f8416087e73b94b6c9be0

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for osrt-0.1.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dac2cc35e6eea071f3b6de78ca8ed8ee1c937d55c6184fd3492c2a1cc7696119
MD5 dc68e7fa44b7aa435260be0957722008
BLAKE2b-256 fbab6dbd6b1cd5956a871ba38d739311ff791ec87695e9f9e1768b008281971f

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp39-abi3-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for osrt-0.1.5-cp39-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 333a1b560c521ebfe5cc8138a743134b508485dd6257e599ea14894c3943ce02
MD5 9cbc16ca524c1bddf1db5694ae77db9a
BLAKE2b-256 951fc4927767e6128d14c77c2bcd5d42ac22b21d9efa965387fb256c0b790f34

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp39-abi3-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for osrt-0.1.5-cp39-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 4deaf9ba39ceab46150886e8e03dd42ac615661ed117e3fc6ffb8f9f4e259cb4
MD5 28c1892563d2ac2a025b5580b62fbfb4
BLAKE2b-256 eca59e7f62d79f21cdafefe0a339f854ed29fdb35fd187b7ddc7d7a8f14b3f2e

See more details on using hashes here.

File details

Details for the file osrt-0.1.5-cp39-abi3-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for osrt-0.1.5-cp39-abi3-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 67abc59d8b83e9d52b7b179414af09e0b669bbfcec9d442cee021394eeb60cea
MD5 220ae01fee9128b40b1c871b36a2c34f
BLAKE2b-256 f25d77c1eb6c78e663771a3295d0e0d3366cffd769097336e85d4a57a0007335

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