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

Uploaded Source

Built Distributions

osrt-0.1.8-cp312-abi3-win_amd64.whl (801.6 kB view details)

Uploaded CPython 3.12+ Windows x86-64

osrt-0.1.8-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.8-cp312-abi3-macosx_14_0_arm64.whl (574.4 kB view details)

Uploaded CPython 3.12+ macOS 14.0+ ARM64

osrt-0.1.8-cp312-abi3-macosx_13_0_x86_64.whl (666.6 kB view details)

Uploaded CPython 3.12+ macOS 13.0+ x86-64

osrt-0.1.8-cp312-abi3-macosx_12_0_x86_64.whl (655.6 kB view details)

Uploaded CPython 3.12+ macOS 12.0+ x86-64

osrt-0.1.8-cp311-abi3-win_amd64.whl (801.6 kB view details)

Uploaded CPython 3.11+ Windows x86-64

osrt-0.1.8-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.8-cp311-abi3-macosx_14_0_arm64.whl (574.4 kB view details)

Uploaded CPython 3.11+ macOS 14.0+ ARM64

osrt-0.1.8-cp311-abi3-macosx_13_0_x86_64.whl (666.6 kB view details)

Uploaded CPython 3.11+ macOS 13.0+ x86-64

osrt-0.1.8-cp311-abi3-macosx_12_0_x86_64.whl (655.6 kB view details)

Uploaded CPython 3.11+ macOS 12.0+ x86-64

osrt-0.1.8-cp310-abi3-win_amd64.whl (801.6 kB view details)

Uploaded CPython 3.10+ Windows x86-64

osrt-0.1.8-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.8-cp310-abi3-macosx_14_0_arm64.whl (574.4 kB view details)

Uploaded CPython 3.10+ macOS 14.0+ ARM64

osrt-0.1.8-cp310-abi3-macosx_13_0_x86_64.whl (666.6 kB view details)

Uploaded CPython 3.10+ macOS 13.0+ x86-64

osrt-0.1.8-cp310-abi3-macosx_12_0_x86_64.whl (655.6 kB view details)

Uploaded CPython 3.10+ macOS 12.0+ x86-64

osrt-0.1.8-cp39-abi3-win_amd64.whl (802.3 kB view details)

Uploaded CPython 3.9+ Windows x86-64

osrt-0.1.8-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.8-cp39-abi3-macosx_14_0_arm64.whl (574.4 kB view details)

Uploaded CPython 3.9+ macOS 14.0+ ARM64

osrt-0.1.8-cp39-abi3-macosx_13_0_x86_64.whl (666.6 kB view details)

Uploaded CPython 3.9+ macOS 13.0+ x86-64

osrt-0.1.8-cp39-abi3-macosx_12_0_x86_64.whl (655.6 kB view details)

Uploaded CPython 3.9+ macOS 12.0+ x86-64

File details

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

File metadata

  • Download URL: osrt-0.1.8.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.8.tar.gz
Algorithm Hash digest
SHA256 23a1a3f1ef9bd0fd136a28f09f088b71756ff9f91a771074271b62de19d43f54
MD5 f49524d5bd53ff7fb40c0ea08dbcb966
BLAKE2b-256 4870b654ed18ddc9e3cea11082c06da554626cc7840aa44d51bb9ca8bdc01341

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for osrt-0.1.8-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 03e0d0bb0bcaeb37f45450346e16bfa3cbfa726a3f43366ec702aa099bfbd4db
MD5 266de437300452dac184f3b2d2380656
BLAKE2b-256 fa2a726170dfdaa25bff63bde999403164f732fcfff8fb452a7b2a01c497134f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.8-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cec0da6dfba50e734738f8d7779781d4579eb079be23a9fc789733ee30bfe920
MD5 142fb972080f4ea0558e7e083204cd37
BLAKE2b-256 e69f11940b57985ace06e7b756ace5aa7e4306aa05d58f68b7cd86455785cde8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.8-cp312-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 39f9b1490e9715393ccad4db0aa4fce25b81194e658177bdafb7a3366d671671
MD5 462bb3881448a5e234ed7654ce264ef6
BLAKE2b-256 edc4a2c14ff0cd51d0ff041bd7727223e95b14e7d502df6fd274553ccce82773

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.8-cp312-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 ee39f6aa733a7f09d24bf7a2ebcdd24c56765fc44cf3c493af1d1c8fbbcfebda
MD5 fdcccdac43a84d218e089984f356711c
BLAKE2b-256 2095ffa8d849ed9fe3d0e8b676f64c764946068980ca11e38a42738486ead182

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.8-cp312-abi3-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 d8c4e3ae15ec3f8738f28b79a82e9d718dec49004b802cfaea8916a61a8f913b
MD5 3a3cbec3401e7b630c65c50b23d5b9c5
BLAKE2b-256 4275bde3b2d5890328694753c4d40b0eeac110e0d72d8d598196b46445d529cd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: osrt-0.1.8-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 801.6 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.8-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 0db9b3010266adae70cefd9e07de9443d4e725f964daf0453244fc5b0c2c2d82
MD5 a17563ad7c63dc97372c92ba10660184
BLAKE2b-256 5356dec22b56372a6d434d2d4d9b4c09503f576a5434aee5e00bdba42e919617

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.8-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 18800e5971eb329af1aafa782f8e8b37d99652527caac48d429af83af84a861d
MD5 239e1585528dc11979748d94b96ae480
BLAKE2b-256 f4918d9930ce3f7d8ec8c1963b5dacdb1d2c0fc21064e359148b1b5703a07bc6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.8-cp311-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0798977294863c481a319118012a3fba6c802981b44bdc69f1f20eeb7cae72d0
MD5 2bbac18bac874b846e1a817fc1554524
BLAKE2b-256 b3f4b4caeb28eb6ee3b07278cb78b01f40c0c6d39178055e3689aec4cb156a0f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.8-cp311-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 53faefa049bf1a1de123b14a85cc21568b6db4b5cd6af6878c0487e6ae26522f
MD5 280a083d49a1cbc31a7d5f043903aea2
BLAKE2b-256 14436fbb2a4684c9a07ce5b9326a43cda9d3711fd6bb034b53c06beb9409c3f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.8-cp311-abi3-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 b500880ca6de64faab2350cd920cf4164a68c86e0f80acc66de4cdb6d6146f78
MD5 89903b5265421e0b1b223f89684b974e
BLAKE2b-256 e2258eb9ca54ab1f873668f8162b00cf6e8c5cae5db04f8315c20b7ff2232a43

See more details on using hashes here.

File details

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

File metadata

  • Download URL: osrt-0.1.8-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 801.6 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.8-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 5cdd2e56caa6d8b56c2245ebdf2e4b78329e3547526ed00a4448e22d1f3eef46
MD5 5692729b2ea901823b9ff79f5e0667c5
BLAKE2b-256 a16c439e8f45c3704a37076b3e16378bf0db70ed1a82de77827de8aac668be7c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 299ae0dacf4a6df588a666bf2202dd0fedb1f660738024a129387f97b9681a5d
MD5 bc9274e78c9ef7fe08bd93d33548bd2a
BLAKE2b-256 804bae5734de4d8beb81d308d0b6ce951d403e47286b49faca9453a50f1cccf2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.8-cp310-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 2603114c683848c35a2c6803fc801e315853e6cbbc073ed2c6d6cbc8f214b295
MD5 8d8f8ec801c949005c85ecbb9bf5f6ba
BLAKE2b-256 6be191c3a5cc199b1fdaa887fe90ce516531919073d194562d4705c799dfca4e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.8-cp310-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 cccb0c11fe2a1108303bdbccbd0e114667825bbc015c423f98e6dc50e177c1ac
MD5 9ad5265e395b1d582c544a8889363485
BLAKE2b-256 13f34185f351bc66841f1953551848eca6fdb3f98a6e53167a4cb5a7e3e156c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.8-cp310-abi3-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 264b058476e1fc1610c38e0c1faa52957e54770dca0374ab4f0453460fd132dd
MD5 c70021b7311ab6037cb2bfa1223ead06
BLAKE2b-256 7e5a867123813cb39ca974bbb3998d6ae050f749d301b2d4faa0e0059a542e2d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: osrt-0.1.8-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 802.3 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.8-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1adaba8b0ed89162ce98ac63bfe17d789f9ee10b582f60b2f1377337b509fca6
MD5 ca3d3577cfc033f62e51ec68fc1af567
BLAKE2b-256 3bdd11c2e2b0fb21274a1a8a19fe991e6acc6f61a41a1f866ef1de3e8e92915f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0050dcd1180f5688aa0188d11ca5e578e60ae2e5b76982def14896890d426e88
MD5 0bce1d8a0acd93204f05323900af04cd
BLAKE2b-256 fe8934ff77fae28b75896f8d50dbcf1e6c1f9fda6d205b29cb8fb9eacf4f11bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.8-cp39-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e52eb18c99674e5035964fbad8b5213b52b0c2ac8c2c659ab928dfbbc7ef26e4
MD5 f807b5d30995be63afc3c7a5642239ed
BLAKE2b-256 7afe4e3b5de295e17b9cc35170b7f346a0eaed55106576f4153457df7dd6a016

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.8-cp39-abi3-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 f073f97b0c6750b03baff3c34109d6be2c0cbc4618e04017903c86cb8411e473
MD5 35e8290b0580d526cbb9fc64b1f5278e
BLAKE2b-256 1852620031a4e0f50379311f5be2d8087accd434cf1803f9e5a535e6cda77bed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for osrt-0.1.8-cp39-abi3-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 27c0db6322d169183ca53cf3464579e9c9c523b00eb277ea21105be38b4834c5
MD5 e24d58acc594ca9f1ca75cc417b46bbb
BLAKE2b-256 6fa5dcce36cb5395f4205d7933a03197fb920b67e14a9a49ea749a205c02d941

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