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.
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
Built Distributions
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | a921fef1e0877bd31c3954fabfe8403cfb2ab6723b391c7f7af92607f8ac81fd |
|
MD5 | 232e1e2e05cf6cb3311630c64310a8e8 |
|
BLAKE2b-256 | 55adee53adda997aaa88ba6ec058642c6c0a6d53ba3d230d906666967901eaae |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | cf238933808dd9ef669365de2b23c6890572a593d5188b9ce0bc5315b9edae8e |
|
MD5 | 7293faf3dee98bbbb591f67cb91f018d |
|
BLAKE2b-256 | 323c2f21818f9dc13c7205c5f87a6365fb8ce1536ecbabf308783b3e91a35357 |
File details
Details for the file osrt-0.1.6-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: osrt-0.1.6-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 529.4 kB
- Tags: CPython 3.12+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3129cd08b71f7bcc50ae81534ab86b56dcc600ee190f674cffd0882bb73a67cf |
|
MD5 | ebd40bae680e0d2a78dcea1fc9733afc |
|
BLAKE2b-256 | a8c681e9a54c8754f1e071a2bc508b448782bf94f774353ecbf23554bafd5957 |
File details
Details for the file osrt-0.1.6-cp312-abi3-macosx_14_0_arm64.whl
.
File metadata
- Download URL: osrt-0.1.6-cp312-abi3-macosx_14_0_arm64.whl
- Upload date:
- Size: 574.4 kB
- Tags: CPython 3.12+, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b9e87d0db278ae904a62a6e1c7b1d03579615334a50cc8d69abdc715844e706b |
|
MD5 | 9e7831edbf6c0bc38fc80185b7c27a7a |
|
BLAKE2b-256 | 0a065f0e9d6a7a8714635f139d4269a2c5fead6e1938cd09bc26cde0edd32d94 |
File details
Details for the file osrt-0.1.6-cp312-abi3-macosx_13_0_x86_64.whl
.
File metadata
- Download URL: osrt-0.1.6-cp312-abi3-macosx_13_0_x86_64.whl
- Upload date:
- Size: 666.5 kB
- Tags: CPython 3.12+, macOS 13.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4feeab1efdbcdd278f5b66fb49e083df21a536eef3a28b6bccbe7ff71dd5e759 |
|
MD5 | f6386f68c2203862e89159b7786d8933 |
|
BLAKE2b-256 | 84e0e44f5ef532b576030f38df49127ba35e795a420823d0b5a31f88a8a6e407 |
File details
Details for the file osrt-0.1.6-cp312-abi3-macosx_12_0_x86_64.whl
.
File metadata
- Download URL: osrt-0.1.6-cp312-abi3-macosx_12_0_x86_64.whl
- Upload date:
- Size: 655.5 kB
- Tags: CPython 3.12+, macOS 12.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63a825880cef87149b37a9c8acc7af457e5534c77fdbfebb6999db32baf225aa |
|
MD5 | b803acb755a25fa7b3c891a95038e2fa |
|
BLAKE2b-256 | ebb0e536813f9f7f641fc8ae2dbd966e1480829a7c6b004b4d4df916e4093a52 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 409ccced1351b8901008ae10457005fcc78bb1e5e8965141f5b1132bfd39e0e4 |
|
MD5 | 00889b0960924b01d929b3f2e6fa151c |
|
BLAKE2b-256 | ec292a0f77229f4996e8e24fda88b665f037e59437b4ef9ef36e4ff7a3b1a309 |
File details
Details for the file osrt-0.1.6-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: osrt-0.1.6-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 529.4 kB
- Tags: CPython 3.11+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 827eb8f1a8ba6e5a561a76ee978fa312d0565e7177897254dc63265080d6fbd8 |
|
MD5 | 33d610da23af563451f4917f60c2f5c2 |
|
BLAKE2b-256 | 2ffbbeef17f0a751ad7a3b467822849b84ec4629d0d0f5155aa1ed952357b0f4 |
File details
Details for the file osrt-0.1.6-cp311-abi3-macosx_14_0_arm64.whl
.
File metadata
- Download URL: osrt-0.1.6-cp311-abi3-macosx_14_0_arm64.whl
- Upload date:
- Size: 574.4 kB
- Tags: CPython 3.11+, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 692561e3c07aa23e6dd8b647a713f10d920d2b4ebdde079db404f24d2400fef0 |
|
MD5 | 3e1ce7bc06f1f1e8603745f156c05172 |
|
BLAKE2b-256 | 956a05ba67316470daeb9a97dc5ec0062f81e2fd96c88825e82db7bb8bc511de |
File details
Details for the file osrt-0.1.6-cp311-abi3-macosx_13_0_x86_64.whl
.
File metadata
- Download URL: osrt-0.1.6-cp311-abi3-macosx_13_0_x86_64.whl
- Upload date:
- Size: 666.5 kB
- Tags: CPython 3.11+, macOS 13.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 21e264e199d0611c5dd8e63810f87ec8143a09feee37d9493e4478598750fdb5 |
|
MD5 | 72dbce32862b156efa61c9d32a117555 |
|
BLAKE2b-256 | 581ec354e3ff7b5b894db27b3c0987bc131636e91aec56456bf8231012651a7e |
File details
Details for the file osrt-0.1.6-cp311-abi3-macosx_12_0_x86_64.whl
.
File metadata
- Download URL: osrt-0.1.6-cp311-abi3-macosx_12_0_x86_64.whl
- Upload date:
- Size: 655.5 kB
- Tags: CPython 3.11+, macOS 12.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ed24d5f7438f59d85898e7cf441d7d1a3aa870cc856de5750ffbe33375d6539 |
|
MD5 | 3d18d4cfa6f4add69472f48f0fac20e1 |
|
BLAKE2b-256 | ba65a649aaaf6b4118664866eff002a77e4e405cc3193c4da8d852070dbc1870 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2da77db157934b73919c3a1fbeb2bba9c4be34f8ffe42e1082d703079477f86d |
|
MD5 | 3baeba02d75850e0f8833fee30d8085d |
|
BLAKE2b-256 | 68037353ad8e270ba40aa251856385d4a0b4454b27fbbe6256d66b5f680ed90e |
File details
Details for the file osrt-0.1.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: osrt-0.1.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 529.4 kB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0eec961f3cd0aa31787fa35b40d34b5b15901ff9a507b23a378f01884af0757f |
|
MD5 | 6f806077af21fede4b20bc21286bd49f |
|
BLAKE2b-256 | edf87420a73413d3ddf1a9e167d214bf337c3746067bf291177072d83b82417a |
File details
Details for the file osrt-0.1.6-cp310-abi3-macosx_14_0_arm64.whl
.
File metadata
- Download URL: osrt-0.1.6-cp310-abi3-macosx_14_0_arm64.whl
- Upload date:
- Size: 574.4 kB
- Tags: CPython 3.10+, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a1a8533a845f204c81e7ad3df9e8ea3cb03a254d9846d2d06d5df8d0fc0d2b4 |
|
MD5 | a0457572e59e829985e02a975b2ffd23 |
|
BLAKE2b-256 | c2e995bf6b5c140332dc3ad6eaba9ed48106231a5277ed5e4491da2580ad7131 |
File details
Details for the file osrt-0.1.6-cp310-abi3-macosx_13_0_x86_64.whl
.
File metadata
- Download URL: osrt-0.1.6-cp310-abi3-macosx_13_0_x86_64.whl
- Upload date:
- Size: 666.5 kB
- Tags: CPython 3.10+, macOS 13.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 09453cf6cf747bd1db48c1c249ea472ad7513467c0fc1d6fbc9400c2e56c07fc |
|
MD5 | 0d58e724c1c3109d34cd3f348647d406 |
|
BLAKE2b-256 | 4c0a9e66b78c987f8ac16faeae4fb51a7a5e2b32cdc3847676356772dcd2c7af |
File details
Details for the file osrt-0.1.6-cp310-abi3-macosx_12_0_x86_64.whl
.
File metadata
- Download URL: osrt-0.1.6-cp310-abi3-macosx_12_0_x86_64.whl
- Upload date:
- Size: 655.5 kB
- Tags: CPython 3.10+, macOS 12.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 20a68551aada0586b19d89b9e13edcb52f8643246fc8760d19fc3c0187386b13 |
|
MD5 | a9398be0646cc6a4572ead651a32a912 |
|
BLAKE2b-256 | 55f402aed715c28f0505e2f8d9afbc6a55f44954e99a4c90fd9265f36695e30b |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3351f605f224e823535f6761bf145cc2cdf4e9771b4949335f4ef91b42e54650 |
|
MD5 | 01ea26b7ebabc26051e729af29d25730 |
|
BLAKE2b-256 | 8a8a01a5509d58416b496dad222afae704e0df80f5ee487d57288f039aee6e9a |
File details
Details for the file osrt-0.1.6-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: osrt-0.1.6-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 529.4 kB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50379c3b49400a666646271445807a37b15b8519a2584ca2d1c146965792f3d6 |
|
MD5 | 96b33f4054bbefc07349f4d12e0f7509 |
|
BLAKE2b-256 | 68ceb61c1620bf712f36bb9f66c567f13d8537fe1bd399f373c4f825c7b678aa |
File details
Details for the file osrt-0.1.6-cp39-abi3-macosx_14_0_arm64.whl
.
File metadata
- Download URL: osrt-0.1.6-cp39-abi3-macosx_14_0_arm64.whl
- Upload date:
- Size: 574.4 kB
- Tags: CPython 3.9+, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c4bed206f76b0dd80df1f80d991889d8b22c2b5a1cd2ab0532db5c2d9404562 |
|
MD5 | 2184b6418b10d9897d33a88cbd5090c6 |
|
BLAKE2b-256 | 83c2bb5fe4ca913b43ddbce08a9c055914b1367547959cde67bcd6fb11d466aa |
File details
Details for the file osrt-0.1.6-cp39-abi3-macosx_13_0_x86_64.whl
.
File metadata
- Download URL: osrt-0.1.6-cp39-abi3-macosx_13_0_x86_64.whl
- Upload date:
- Size: 666.5 kB
- Tags: CPython 3.9+, macOS 13.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ad347afa8946743b40c1ed5a0bd52ca38cf9e91771d5e2bfda7ffeb9f0ac3126 |
|
MD5 | d9521911f589c49829f915c0f41c4225 |
|
BLAKE2b-256 | 71d7f32d8437e403b57a1ee21d82706a66d46bf568e12ee930402a6af2ac0d93 |
File details
Details for the file osrt-0.1.6-cp39-abi3-macosx_12_0_x86_64.whl
.
File metadata
- Download URL: osrt-0.1.6-cp39-abi3-macosx_12_0_x86_64.whl
- Upload date:
- Size: 655.5 kB
- Tags: CPython 3.9+, macOS 12.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f3e2aaf35bfb8493b956b34db09f0e4f841ba05bff0f34aeebf7b0eff163254 |
|
MD5 | 236905ba76e94b8044c9822bffc58982 |
|
BLAKE2b-256 | e46123afe6df14a29d445694a1707599e3585906f56f058d141f35f7ca045caa |