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.6.tar.gz (5.0 MB view details)

Uploaded Source

Built Distributions

osrt-0.1.6-cp312-abi3-win_amd64.whl (801.3 kB view details)

Uploaded CPython 3.12+ Windows x86-64

osrt-0.1.6-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (529.4 kB view details)

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

osrt-0.1.6-cp312-abi3-macosx_14_0_arm64.whl (574.4 kB view details)

Uploaded CPython 3.12+ macOS 14.0+ ARM64

osrt-0.1.6-cp312-abi3-macosx_13_0_x86_64.whl (666.5 kB view details)

Uploaded CPython 3.12+ macOS 13.0+ x86-64

osrt-0.1.6-cp312-abi3-macosx_12_0_x86_64.whl (655.5 kB view details)

Uploaded CPython 3.12+ macOS 12.0+ x86-64

osrt-0.1.6-cp311-abi3-win_amd64.whl (801.3 kB view details)

Uploaded CPython 3.11+ Windows x86-64

osrt-0.1.6-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (529.4 kB view details)

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

osrt-0.1.6-cp311-abi3-macosx_14_0_arm64.whl (574.4 kB view details)

Uploaded CPython 3.11+ macOS 14.0+ ARM64

osrt-0.1.6-cp311-abi3-macosx_13_0_x86_64.whl (666.5 kB view details)

Uploaded CPython 3.11+ macOS 13.0+ x86-64

osrt-0.1.6-cp311-abi3-macosx_12_0_x86_64.whl (655.5 kB view details)

Uploaded CPython 3.11+ macOS 12.0+ x86-64

osrt-0.1.6-cp310-abi3-win_amd64.whl (801.3 kB view details)

Uploaded CPython 3.10+ Windows x86-64

osrt-0.1.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (529.4 kB view details)

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

osrt-0.1.6-cp310-abi3-macosx_14_0_arm64.whl (574.4 kB view details)

Uploaded CPython 3.10+ macOS 14.0+ ARM64

osrt-0.1.6-cp310-abi3-macosx_13_0_x86_64.whl (666.5 kB view details)

Uploaded CPython 3.10+ macOS 13.0+ x86-64

osrt-0.1.6-cp310-abi3-macosx_12_0_x86_64.whl (655.5 kB view details)

Uploaded CPython 3.10+ macOS 12.0+ x86-64

osrt-0.1.6-cp39-abi3-win_amd64.whl (801.9 kB view details)

Uploaded CPython 3.9+ Windows x86-64

osrt-0.1.6-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (529.4 kB view details)

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

osrt-0.1.6-cp39-abi3-macosx_14_0_arm64.whl (574.4 kB view details)

Uploaded CPython 3.9+ macOS 14.0+ ARM64

osrt-0.1.6-cp39-abi3-macosx_13_0_x86_64.whl (666.5 kB view details)

Uploaded CPython 3.9+ macOS 13.0+ x86-64

osrt-0.1.6-cp39-abi3-macosx_12_0_x86_64.whl (655.5 kB view details)

Uploaded CPython 3.9+ macOS 12.0+ x86-64

File details

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

File metadata

  • Download URL: osrt-0.1.6.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.6.tar.gz
Algorithm Hash digest
SHA256 a921fef1e0877bd31c3954fabfe8403cfb2ab6723b391c7f7af92607f8ac81fd
MD5 232e1e2e05cf6cb3311630c64310a8e8
BLAKE2b-256 55adee53adda997aaa88ba6ec058642c6c0a6d53ba3d230d906666967901eaae

See more details on using hashes here.

File details

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

File metadata

  • Download URL: osrt-0.1.6-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 801.3 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.6-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 cf238933808dd9ef669365de2b23c6890572a593d5188b9ce0bc5315b9edae8e
MD5 7293faf3dee98bbbb591f67cb91f018d
BLAKE2b-256 323c2f21818f9dc13c7205c5f87a6365fb8ce1536ecbabf308783b3e91a35357

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.6-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3129cd08b71f7bcc50ae81534ab86b56dcc600ee190f674cffd0882bb73a67cf
MD5 ebd40bae680e0d2a78dcea1fc9733afc
BLAKE2b-256 a8c681e9a54c8754f1e071a2bc508b448782bf94f774353ecbf23554bafd5957

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.6-cp312-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b9e87d0db278ae904a62a6e1c7b1d03579615334a50cc8d69abdc715844e706b
MD5 9e7831edbf6c0bc38fc80185b7c27a7a
BLAKE2b-256 0a065f0e9d6a7a8714635f139d4269a2c5fead6e1938cd09bc26cde0edd32d94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.6-cp312-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 4feeab1efdbcdd278f5b66fb49e083df21a536eef3a28b6bccbe7ff71dd5e759
MD5 f6386f68c2203862e89159b7786d8933
BLAKE2b-256 84e0e44f5ef532b576030f38df49127ba35e795a420823d0b5a31f88a8a6e407

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.6-cp312-abi3-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 63a825880cef87149b37a9c8acc7af457e5534c77fdbfebb6999db32baf225aa
MD5 b803acb755a25fa7b3c891a95038e2fa
BLAKE2b-256 ebb0e536813f9f7f641fc8ae2dbd966e1480829a7c6b004b4d4df916e4093a52

See more details on using hashes here.

File details

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

File metadata

  • Download URL: osrt-0.1.6-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 801.3 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.6-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 409ccced1351b8901008ae10457005fcc78bb1e5e8965141f5b1132bfd39e0e4
MD5 00889b0960924b01d929b3f2e6fa151c
BLAKE2b-256 ec292a0f77229f4996e8e24fda88b665f037e59437b4ef9ef36e4ff7a3b1a309

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.6-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 827eb8f1a8ba6e5a561a76ee978fa312d0565e7177897254dc63265080d6fbd8
MD5 33d610da23af563451f4917f60c2f5c2
BLAKE2b-256 2ffbbeef17f0a751ad7a3b467822849b84ec4629d0d0f5155aa1ed952357b0f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.6-cp311-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 692561e3c07aa23e6dd8b647a713f10d920d2b4ebdde079db404f24d2400fef0
MD5 3e1ce7bc06f1f1e8603745f156c05172
BLAKE2b-256 956a05ba67316470daeb9a97dc5ec0062f81e2fd96c88825e82db7bb8bc511de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.6-cp311-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 21e264e199d0611c5dd8e63810f87ec8143a09feee37d9493e4478598750fdb5
MD5 72dbce32862b156efa61c9d32a117555
BLAKE2b-256 581ec354e3ff7b5b894db27b3c0987bc131636e91aec56456bf8231012651a7e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.6-cp311-abi3-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 3ed24d5f7438f59d85898e7cf441d7d1a3aa870cc856de5750ffbe33375d6539
MD5 3d18d4cfa6f4add69472f48f0fac20e1
BLAKE2b-256 ba65a649aaaf6b4118664866eff002a77e4e405cc3193c4da8d852070dbc1870

See more details on using hashes here.

File details

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

File metadata

  • Download URL: osrt-0.1.6-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 801.3 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.6-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2da77db157934b73919c3a1fbeb2bba9c4be34f8ffe42e1082d703079477f86d
MD5 3baeba02d75850e0f8833fee30d8085d
BLAKE2b-256 68037353ad8e270ba40aa251856385d4a0b4454b27fbbe6256d66b5f680ed90e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0eec961f3cd0aa31787fa35b40d34b5b15901ff9a507b23a378f01884af0757f
MD5 6f806077af21fede4b20bc21286bd49f
BLAKE2b-256 edf87420a73413d3ddf1a9e167d214bf337c3746067bf291177072d83b82417a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.6-cp310-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 8a1a8533a845f204c81e7ad3df9e8ea3cb03a254d9846d2d06d5df8d0fc0d2b4
MD5 a0457572e59e829985e02a975b2ffd23
BLAKE2b-256 c2e995bf6b5c140332dc3ad6eaba9ed48106231a5277ed5e4491da2580ad7131

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.6-cp310-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 09453cf6cf747bd1db48c1c249ea472ad7513467c0fc1d6fbc9400c2e56c07fc
MD5 0d58e724c1c3109d34cd3f348647d406
BLAKE2b-256 4c0a9e66b78c987f8ac16faeae4fb51a7a5e2b32cdc3847676356772dcd2c7af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.6-cp310-abi3-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 20a68551aada0586b19d89b9e13edcb52f8643246fc8760d19fc3c0187386b13
MD5 a9398be0646cc6a4572ead651a32a912
BLAKE2b-256 55f402aed715c28f0505e2f8d9afbc6a55f44954e99a4c90fd9265f36695e30b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: osrt-0.1.6-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 801.9 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.6-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 3351f605f224e823535f6761bf145cc2cdf4e9771b4949335f4ef91b42e54650
MD5 01ea26b7ebabc26051e729af29d25730
BLAKE2b-256 8a8a01a5509d58416b496dad222afae704e0df80f5ee487d57288f039aee6e9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.6-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 50379c3b49400a666646271445807a37b15b8519a2584ca2d1c146965792f3d6
MD5 96b33f4054bbefc07349f4d12e0f7509
BLAKE2b-256 68ceb61c1620bf712f36bb9f66c567f13d8537fe1bd399f373c4f825c7b678aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.6-cp39-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7c4bed206f76b0dd80df1f80d991889d8b22c2b5a1cd2ab0532db5c2d9404562
MD5 2184b6418b10d9897d33a88cbd5090c6
BLAKE2b-256 83c2bb5fe4ca913b43ddbce08a9c055914b1367547959cde67bcd6fb11d466aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.6-cp39-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 ad347afa8946743b40c1ed5a0bd52ca38cf9e91771d5e2bfda7ffeb9f0ac3126
MD5 d9521911f589c49829f915c0f41c4225
BLAKE2b-256 71d7f32d8437e403b57a1ee21d82706a66d46bf568e12ee930402a6af2ac0d93

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.6-cp39-abi3-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 8f3e2aaf35bfb8493b956b34db09f0e4f841ba05bff0f34aeebf7b0eff163254
MD5 236905ba76e94b8044c9822bffc58982
BLAKE2b-256 e46123afe6df14a29d445694a1707599e3585906f56f058d141f35f7ca045caa

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