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

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

osrt-0.2.2-cp312-abi3-win_amd64.whl (797.5 kB view details)

Uploaded CPython 3.12+Windows x86-64

osrt-0.2.2-cp312-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (550.2 kB view details)

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

osrt-0.2.2-cp312-abi3-macosx_15_0_arm64.whl (578.4 kB view details)

Uploaded CPython 3.12+macOS 15.0+ ARM64

osrt-0.2.2-cp312-abi3-macosx_14_0_arm64.whl (582.9 kB view details)

Uploaded CPython 3.12+macOS 14.0+ ARM64

osrt-0.2.2-cp312-abi3-macosx_13_0_x86_64.whl (673.0 kB view details)

Uploaded CPython 3.12+macOS 13.0+ x86-64

osrt-0.2.2-cp311-abi3-win_amd64.whl (797.3 kB view details)

Uploaded CPython 3.11+Windows x86-64

osrt-0.2.2-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (550.2 kB view details)

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

osrt-0.2.2-cp311-abi3-macosx_15_0_arm64.whl (578.2 kB view details)

Uploaded CPython 3.11+macOS 15.0+ ARM64

osrt-0.2.2-cp311-abi3-macosx_14_0_arm64.whl (582.6 kB view details)

Uploaded CPython 3.11+macOS 14.0+ ARM64

osrt-0.2.2-cp311-abi3-macosx_13_0_x86_64.whl (672.8 kB view details)

Uploaded CPython 3.11+macOS 13.0+ x86-64

osrt-0.2.2-cp310-abi3-win_amd64.whl (797.3 kB view details)

Uploaded CPython 3.10+Windows x86-64

osrt-0.2.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (550.2 kB view details)

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

osrt-0.2.2-cp310-abi3-macosx_15_0_arm64.whl (578.2 kB view details)

Uploaded CPython 3.10+macOS 15.0+ ARM64

osrt-0.2.2-cp310-abi3-macosx_14_0_arm64.whl (582.6 kB view details)

Uploaded CPython 3.10+macOS 14.0+ ARM64

osrt-0.2.2-cp310-abi3-macosx_13_0_x86_64.whl (672.8 kB view details)

Uploaded CPython 3.10+macOS 13.0+ x86-64

osrt-0.2.2-cp39-abi3-win_amd64.whl (798.0 kB view details)

Uploaded CPython 3.9+Windows x86-64

osrt-0.2.2-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (550.2 kB view details)

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

osrt-0.2.2-cp39-abi3-macosx_15_0_arm64.whl (578.2 kB view details)

Uploaded CPython 3.9+macOS 15.0+ ARM64

osrt-0.2.2-cp39-abi3-macosx_14_0_arm64.whl (582.6 kB view details)

Uploaded CPython 3.9+macOS 14.0+ ARM64

osrt-0.2.2-cp39-abi3-macosx_13_0_x86_64.whl (672.8 kB view details)

Uploaded CPython 3.9+macOS 13.0+ x86-64

File details

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

File metadata

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

File hashes

Hashes for osrt-0.2.2.tar.gz
Algorithm Hash digest
SHA256 c5495f21cfa91d93bb95210ef52bcb50027b38c5266a97284ec5280a4d142c18
MD5 45341ec7370bac4e6eb47229d9096f98
BLAKE2b-256 e9cf7d8077e518c1a67d53d900a010359b241d7625b78b1b910a6bfc39f3548d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for osrt-0.2.2-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1b2053710de065e112b7d7a44fd12973b193ac88f826453972f64bc26781b281
MD5 2e1fe9a55b83ed594f2ba312255317c9
BLAKE2b-256 e3c33197273ffa38c3ba8eb9630f857a6ef184f04eb7da691bdfc682f68e32c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.2.2-cp312-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 59353a94e5d150db2acb90adb1782169560758ef0fe60660116f52d9d717f43a
MD5 5ac837296a9eab121430f9bc7e04ac87
BLAKE2b-256 b512bc8ced92dda1d4985640aa25f6897add164b991752df923e506f808f6fc6

See more details on using hashes here.

File details

Details for the file osrt-0.2.2-cp312-abi3-macosx_15_0_arm64.whl.

File metadata

  • Download URL: osrt-0.2.2-cp312-abi3-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 578.4 kB
  • Tags: CPython 3.12+, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for osrt-0.2.2-cp312-abi3-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 c0631c579f1555fd1a181fe4935991a4bcab9e8063869f6949e6d3bd4904a387
MD5 79a7ec9a988ece81f0c8072555b8a09e
BLAKE2b-256 5b897206892ca01c467fa1096daa06a2820600cb3ced08f2c6ea43de83fbabf9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: osrt-0.2.2-cp312-abi3-macosx_14_0_arm64.whl
  • Upload date:
  • Size: 582.9 kB
  • Tags: CPython 3.12+, macOS 14.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for osrt-0.2.2-cp312-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 37ba1616c53e0f8e1b6a53a7153342c079a22e2072d7b2dd6f147c090b3d51af
MD5 d6b4ca1dbc2b0539f0da66ffb1cb0204
BLAKE2b-256 514405fa30a722e140bd6c63fa7ccbf4208c5ed74bb02fc09ae9a1484ee42673

See more details on using hashes here.

File details

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

File metadata

  • Download URL: osrt-0.2.2-cp312-abi3-macosx_13_0_x86_64.whl
  • Upload date:
  • Size: 673.0 kB
  • Tags: CPython 3.12+, macOS 13.0+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for osrt-0.2.2-cp312-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 10e8330afda8e581129885b0bd7e9ea37271db55356a57307f20ca79209a327d
MD5 b8fb6eef3eb4f8f04a04388769793b7f
BLAKE2b-256 5993d4a92d2ddb517ed1c67db1457255db75ab7e14190644724632db612d7b22

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for osrt-0.2.2-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2363bbedaa86858bcf3f5a82522b6ddef70be8f444448a99eaf1577f73924994
MD5 03c2f5226e5aa14ad36189f942cfc771
BLAKE2b-256 b017429a3543a7d9a2b39b0614dc166c0796e96bfa61481b9ab813f2716868e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.2.2-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 be9be8e8037c4b192a28031b2dde9a039ece065fc10b3589c025c9682e90eb45
MD5 1a5993c809f8f3dbb314305159a3dbf3
BLAKE2b-256 ba399ba709a4fede96474673e9ade1992bcd10291d6658a7cba506faa13a9a0e

See more details on using hashes here.

File details

Details for the file osrt-0.2.2-cp311-abi3-macosx_15_0_arm64.whl.

File metadata

  • Download URL: osrt-0.2.2-cp311-abi3-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 578.2 kB
  • Tags: CPython 3.11+, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for osrt-0.2.2-cp311-abi3-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 65952942582ff51113581e060bab3808a665785624e1f5853e3b836f1b857e60
MD5 4bda3dd4f8e6a34e280c60f02457d967
BLAKE2b-256 5797adb8d39cdd7dd1e4155d4643f3eb5cc07fa7492024d122f591f2639bd78d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: osrt-0.2.2-cp311-abi3-macosx_14_0_arm64.whl
  • Upload date:
  • Size: 582.6 kB
  • Tags: CPython 3.11+, macOS 14.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for osrt-0.2.2-cp311-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 ca38529edeccb05c277b2e9533bab4097d4fd6510bd2bf27e84596e1ab279d4b
MD5 f600876c90d73d0da0e429ee7e1c48b1
BLAKE2b-256 04c08ead750fc85b2254062ed3cf1d8c4250908964f9ad1e0844eca7ea1bed09

See more details on using hashes here.

File details

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

File metadata

  • Download URL: osrt-0.2.2-cp311-abi3-macosx_13_0_x86_64.whl
  • Upload date:
  • Size: 672.8 kB
  • Tags: CPython 3.11+, macOS 13.0+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for osrt-0.2.2-cp311-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 5ce919aa23e1d92ac59ecb32e6d8e6933b1a690f9336a311154f5802e6d40571
MD5 4f5fec7f3f8ae405f4114c5c0d24162e
BLAKE2b-256 28c2dc03020fd6b777d27462538f45b0bb2b0717194bd42f73b854496dcf88f9

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for osrt-0.2.2-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 0fdad386fe4459c9419e90439c221ffd2ff48ea75d6c6b66d15a891a3ed9fa0e
MD5 a5c3af9ddb6fcec7937d7b609941b1e8
BLAKE2b-256 4b54d9f0c30995d2e9e1b1f62074d0f11f34f709ef8f6d458e8a4ac3de49d755

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.2.2-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 abe3538f1531b0aef889f14395961a18ddc5d5bf7f3149f92f4107d0984cb5dd
MD5 5a8fa4d9258e7da477e0c744b09b8083
BLAKE2b-256 2514623364cb51c97b09f12614a04fee2ff233b41823774cd35f36d2b0870eed

See more details on using hashes here.

File details

Details for the file osrt-0.2.2-cp310-abi3-macosx_15_0_arm64.whl.

File metadata

  • Download URL: osrt-0.2.2-cp310-abi3-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 578.2 kB
  • Tags: CPython 3.10+, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.11

File hashes

Hashes for osrt-0.2.2-cp310-abi3-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 464c4267dcf16ab8791b7ccc6b8c0a425a83bbf21920b0409fa2b5a3af4b4be4
MD5 ef4e3333091063706e7581e7de4f230b
BLAKE2b-256 8bc3f40998e40802a12ae9372a1c6279ede502307c240e984eff6da296a07cb9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: osrt-0.2.2-cp310-abi3-macosx_14_0_arm64.whl
  • Upload date:
  • Size: 582.6 kB
  • Tags: CPython 3.10+, macOS 14.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.11

File hashes

Hashes for osrt-0.2.2-cp310-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 47042d0c5e26a5296ed57f1ecceb935b1c42cea01712261c6cbb3066cc6a8b0e
MD5 10377a819d23b578acb370a324dddac9
BLAKE2b-256 19106871046c0ed1e8c562fb4be70d8007ba5f09e789d4e8a9e94c57b4e8fb3e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: osrt-0.2.2-cp310-abi3-macosx_13_0_x86_64.whl
  • Upload date:
  • Size: 672.8 kB
  • Tags: CPython 3.10+, macOS 13.0+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.18

File hashes

Hashes for osrt-0.2.2-cp310-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 3cfe7d363d789c81acfdd572bcb1ffca3f898bf58ba06e21284f45c925463205
MD5 35ae3fa2aae3aa4c9fb4c9882974202a
BLAKE2b-256 029012e41579f601f75fdce8d9e5a56ed7d76f0fb4c428777a4e5f92d1b9ab3e

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for osrt-0.2.2-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 4955e33bc965b55da7cad97c0a6b525c0c3919367438c5d35ce0739403381251
MD5 2961bb9e2529a5c9f8d993aa5ca191ed
BLAKE2b-256 e1458ef18ae8170524452da2cfe1764b7c41b31c62ecbe0f2918f232ac0a7da8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.2.2-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 6d1d517c3c0744f1a9b675c1c17a7896fafb323c7778a15e030234c6c515c285
MD5 6289df9bfddd39a16ae28cedb7c9518f
BLAKE2b-256 9006b02a55ae6af99136e096e83ab6728d98c1087e225f9ce79de7515a6a6e06

See more details on using hashes here.

File details

Details for the file osrt-0.2.2-cp39-abi3-macosx_15_0_arm64.whl.

File metadata

  • Download URL: osrt-0.2.2-cp39-abi3-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 578.2 kB
  • Tags: CPython 3.9+, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.13

File hashes

Hashes for osrt-0.2.2-cp39-abi3-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 3087e41f74ad6ac0a1f335d26b17d2805c191ad213332ffa52f7c5b7308e91df
MD5 8e30e96ce1cfd84a041c203736a2f36b
BLAKE2b-256 0beb516eb3c6e4e88602aa30803d50ad1c63865a14ecb13ca9c1fe791c716ab3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: osrt-0.2.2-cp39-abi3-macosx_14_0_arm64.whl
  • Upload date:
  • Size: 582.6 kB
  • Tags: CPython 3.9+, macOS 14.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.13

File hashes

Hashes for osrt-0.2.2-cp39-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7b453111995d51e673f7cf1aab28a1da9e4f34f8f80c6675c516263c5ead8bbb
MD5 c6f0d9b38c84476b95b94ce5c1d420e1
BLAKE2b-256 4b674b56cd7ca0480ac2e27e1412f3ed40ea8217479793c88c29a5ade22f2694

See more details on using hashes here.

File details

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

File metadata

  • Download URL: osrt-0.2.2-cp39-abi3-macosx_13_0_x86_64.whl
  • Upload date:
  • Size: 672.8 kB
  • Tags: CPython 3.9+, macOS 13.0+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for osrt-0.2.2-cp39-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 d10322db57146e5f5788b81f980a756c42419cc639ba3f896091da88c32bb54a
MD5 5f993216cba919f38eb33f1c0fd17244
BLAKE2b-256 4014796cd95eb781b92d96423f304c3a6113161ba36c0134a96bf65fbe00e823

See more details on using hashes here.

Supported by

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