Skip to main content

CMake build Pip install

STreeD: Separable Trees with Dynamic programming

By: Jacobus G. M. van der Linden (e-mail) (website)

STreeD is a framework for optimal binary decision trees with separable optimization tasks. A separable optimization task is a task that can be optimized separately for the left and right subtree. The current STreeD Framework implements a broad set of such optimization tasks, from group fairness constraints to regression.

  • Classification (accuracy, accuracy with a sparsity cost, f1-score)
  • Cost-sensitive classication (feature costs, cost matrix, costs per instance)
  • Regression (constant leaf predictors, constant leaf predictors with a sparsity cost, (simple) linear regression in every leaf)
  • Survival analysis
  • Classification with a fairness constraint (demographic parity, equality-of-opportunity)
  • Prescriptive policy generation

For an explanation of each application, see below. For details on what tasks are separable and how the algoritm works, see our paper and the follow up papers on survival analysis, regression, and an extensive comparison with the traditional greedy approach CART:

  • Van der Linden, Jacobus G. M., Mathijs M. de Weerdt, and Emir Demirović. "Necessary and Sufficient Conditions for Optimal Decision Trees using Dynamic Programming." Advances in Neural Information Processing Systems (2023). pdf
  • Huisman, Tim, Jacobus G. M. van der Linden, and Emir Demirović. "Optimal Survival Trees: A Dynamic Programming Approach." Proceedings of AAAI-24 (2024). pdf
  • Van den Bos, Mim, Jacobus G. M. van der Linden, and Emir Demirović. "Piecewise Constant and Linear Regression Trees: An Optimal Dynamic Programming Approach." In Proceedings of ICML-24 (2024). pdf
  • Van der Linden, Jacobus G. M., Daniël Vos, Mathijs M. de Weerdt, Sicco Verwer, and Emir Demirović. "Optimal or Greedy Decision Trees? Revisiting their Objectives, Tuning, and Performance" Transactions of Machine Learning Research (2026). pdf

Python usage

Install from PyPi

The pystreed python package can be installed from PyPi using pip:

pip install pystreed

Install from source using pip

The pystreed python package can also be installed from source as follows:

git clone https://github.com/AlgTUDelft/pystreed.git
cd pystreed
pip install . 

Example usage

pystreed can be used, for example, as follows:

from pystreed import STreeDClassifier
from sklearn.metrics import accuracy_score
import pandas as pd

# Read data
df = pd.read_csv("data/classification/anneal.csv", sep=" ", header=None)
X = df[df.columns[1:]]
y = df[0]

# Fit the model
model = STreeDClassifier(max_depth = 3, max_num_nodes=5)
model.fit(X, y)

model.print_tree()

yhat = model.predict(X)

accuracy = accuracy_score(y, yhat)
print(f"Train Accuracy Score: {accuracy * 100}%")

See the examples folder for a number of example usages.

Note that some of the examples require the installation of extra python packages:

pip install matplotlib seaborn graphviz scikit-survival pydl8.5 pymurtree

Note that pymurtree is currently not available for pip install yet. It can be installed from source (install the develop branch)

Graphviz additionaly requires another instalation of a binary. See their website.

C++ usage

Compiling

The code can be compiled on Windows or Linux by using cmake. For Windows users, cmake support can be installed as an extension of Visual Studio and then this repository can be imported as a CMake project.

For Linux users, they can use the following commands:

mkdir build
cd build
cmake ..
cmake --build .

The compiler must support the C++17 standard

Running

After STreeD is built, the following command can be used (for example):

./STreeD -task accuracy -file ../data/cost-sensitive/car/car-train-1.csv -max-depth 3 -max-num-nodes 7

Run the program without any parameters to see a full list of the available parameters.

Docker

Alternatively, docker can be used to build and run STreeD:

docker build -t streed .
docker container run -it streed /STreeD/build/STREED -task accuracy -file /STreeD/data/cost-sensitive/car/car-train-1.csv -max-depth 3 -max-num-nodes 7

Applications

Currently, STreeD implements the following optimization tasks:

Classification

STreeDClassifier implements the following optimization tasks:

  • accuracy: Minimizes the misclassification score.

  • cost-complex-accuracy: Minimizes the misclassification score plus the cost for adding a branching node by the parameter cost_complexity.

  • f1-score: Maximizes the F1-score.

  • accuracy-flex: Minimizes a variety of classification objectives, which can be set through the accuracy_objective parameter:

    • misclassification-score: The number of misclassifications.
    • gini-index: The Gini impurity.
    • entropy: The entropy / information metric.
    • mdl-quinlan: The minimum description length based on the encoding by Quinlan and Rivest (1986).
    • mdl-mehta: The minimum description length based on the encoding by Mehta et al. (1995).
    • pessimistic-binomial: The objective used by C4.5 presented in Quinlan (1993). The confidence level can be set by the confidence_coefficient parameter.
    • bayes: A Bayesian likelihood objective based on a Beta distribution.
    • l-loss: A non-concave loss proposed by Noel et al. (2023).
    • m-loss: A non-concave loss proposed by Noel et al. (2023).
    • sqrt-gini: The square root of the Gini impurity.
    • min-error: The minimum error by Niblett (1987), which is equivalent to the missclassification score with a smoothing factor of one.

    Additionally, accuracy-flex supports a variety of hyperparameter tuning methods, which can be set through the tune_method parameter:

    • tree-size: Tunes the number of nodes and the depth.
    • cost-complexity: Tunes the cost of adding a node.
    • weighted-cost-complexity: Tunes the cost of adding a node, weighted by the number of training instances in that node.
    • min-leaf-node-size: Tunes the minimum number of instances required for a leaf node.
    • depth: Tunes the depth of the tree.
    • smoothing: Tunes the smoothing factor.

    The number of hyperparameter options that should be tried can be set by the num_hyper_params parameter.

    See our paper "Optimal or Greedy Decision Trees? Revisiting their Objectives, Tuning, and Performance" (pdf) for more information.

See examples/accuracy_example.py for an example.

Cost-Sensitive Classification

STreeDCostSensitiveClassifier implements a cost-sensitive classifier. Costs can both be attributed to features and misclassifications.

The costs can be specified with CostSpecifier object. This object is either initialized with a file name for the cost specification and the number of classes; or with the misclassification cost matrix, and the cost specifier per feature. When testing a feature in a branch node, the cost for that feature is paid for every instance that passes through it. When another feature from the same group was tested before, the discounted cost is paid. When another feature that is binarized from the same original feature is already tested, the cost is zero.

Note that currently STreeDCostSensitiveClassifier does not support automatic binarization.

See examples/cost_sensitive_example.py for an example.

Instance-Cost-Sensitive Classification

STreeDInstanceCostSensitiveClassifier implements an instance-cost-sensitive classifier. Each instance can have a different misclassification cost per label.

The costs can be specified with a CostVector object. For each instance, initialize a CostVector object with a list of the costs for each possible label.

See examples/instance_cost_sensitive_example.py for an example.

Classification under a Group Fairness constraint

STreeDGroupFairnessClassifier implements a classifier that satisfies a group fairness constraint. The maximum amount of discrimination on the training data can be specified by the discrimination-limit parameter, e.g., 0.01 for maximum of 1% discrimination.

Currently two fairness constraint optmization tasks are implemented:

  • group-fairness: This satisfies a demographic parity constraint. Demographic parity requires that the positive rates for both groups is equal.
  • equality-of-opportunity: This satisfies a equality of opportunity constraint. Equality of opportunity requires that the true positive rates for both groups is equal.

Note:

  1. STreeDGroupFairnessClassifier assumes binary classification (only two labels: positive = 1, negative = 0).
  2. STreeDGroupFairnessClassifier assumes that the first binary feature column is the discrimination-sensitive feature. Otherwise the sensitive feature can be specified with the sensitive_feature parameter.

See examples/group_fair_example.py for an example.

Regression

STreeDRegressor implements two variants of regression, as specified by the optimization task parameter

  • regression: Miminimizes the sum of squared errors.
  • cost-complex-regression: Minimizes the sum of squared errors plus the cost for adding a branching node by the parameter cost_complexity. For runtime improvement, custom lower bounds can be specified if use_task_lower_bound=True. The custom lower bound regression_bound can be set to either "equivalent" to use the equivalent-points bound or "kmeans" to use a k-means lower bound.

See examples/regression_example.py for an example.

If you use STreeD for regression, please cite our paper:

  • Van den Bos, M., Jacobus G. M. van der Linden, and Emir Demirović. "Piecewise Constant and Linear Regression Trees: An Optimal Dynamic Programming Approach." In Proceedings of ICML-24 (2024).

Piecewise Linear Regression

STreeDPiecewiseLinearRegressor implements a solver for optimizing piecewise linear regression trees, with a linear elastic net regression predictor in every leaf node. The lasso and ridge penalization can be set with the lasso_penalty and ridge_penalty and parameters. The addition of a new branching node is penalized by the cost_complexity parameter. Alternatively, STreeDPiecewiseLinearRegressor can learn a simple linear regression model in every leaf by setting simple = True. The simple linear regression model is penalized only with the ridge penalization.

STreeDPiecewiseLinearRegressor only uses the continuous features for fitting the linear lasso regression model in every leaf node. These continuous features can be automatically inferred from the data or explicitly specified using the continuous_columns parameter of the fit method.

To prevent fitting linear models on too little data, STreeDPiecewiseLinearRegressor by default sets the min_leaf_node_size parameter to at least 5 times the number of continuous features or to at least 5 when fitting a simple linear regression model.

See examples/piecewise_linear_regression_example.py for an example.

If you use STreeD for piecewise linear regression, please cite our paper:

  • Van den Bos, Mim, Jacobus G. M. van der Linden, and Emir Demirović. "Piecewise Constant and Linear Regression Trees: An Optimal Dynamic Programming Approach." In Proceedings of ICML-24, 2024. pdf

Prescriptive policy generation

STreeDPrescriptivePolicyGenerator implements a policy generation solver. Counterfactual scores need to be provided. The current implementation allows for three different teacher methods, as specified by the teacher_method parameter:

  • DM: the direct method or Regress & Compare method. This teacher specifies for every treatment (label) what the expected outcome is.
  • IPW: the inverse propensity weighting method. This teacher provides the propensity scores mu(x, k): the probability of treatment k happening for feature vector x.
  • DR: the doubly robust method: a combination of the direct methodand the inverse propensity weighting method.

The teacher data needs to be passed to the solver by initializing a PPGData object for every instance. The PPGData initializer expects the following parameters:

  • historic_treatment : int : the historic treatment label
  • historic_outcome : float : the historic outcome
  • propensity_score : float : the propensity score for the historic treatment
  • predicted_outcome : List[float] : the regress & compare prediction for each possible treatment Optional (for testing)
  • optimal_treatment : int : the optimal treatment
  • counterfactual_outcome : List[float] : the counterfactual outcome

Only the data which will be used by the teacher method needs to be specified, the rest can be initialized with zero's.

See examples/prescriptive_policy_example.py for an example.

Survival analysis

STreeDSurvivalAnalysis implements an optimal survival tree method, by optimizing the proportional hazard function of LeBlanc and Crowly, "Relative Risk for Censored Survival Data," Biometrics 48.2 (1992): 411-425. Each leaf node predicts a risk factor $\theta$ which is used to shift the base hazard model $\hat{\Lambda}(t)$. The Nelson-Aalen estimator is used as a stepwise survival function $\hat{S}(t) = e^{-\theta \hat{\Lambda}(t)}$.

Instead of a label, the input data expects a two-dimensional array with for each instance 1) a binary censoring indicator and 2) a time-of-event (death or censoring).

See examples/survival_analysis_example.py for an example.

If you use STreeD for survival analysis, please cite our paper:

  • Huisman, Tim, Jacobus G. M. van der Linden, and Emir Demirović. "Optimal Survival Trees: A Dynamic Programming Approach." Proceedings of AAAI-24 (2024). pdf

Parameters

STreeD can be configured by the following parameters:

  • max_depth : The maximum depth of the tree. Note that a tree of depth zero has a single leaf node. A tree of depth one has one branching node and two leaf nodes.
  • max_num_nodes : The maximum number of branching nodes in the tree.
  • min_leaf_node_size : The minimum number of samples required in each leaf node.
  • time_limit : The run time limit in seconds. If the time limit is exceeded a possibly non-optimal tree is returned.
  • feature_ordering : The order in which the features are considered for branching. Default is "gini" which sorts the features by gini-impurity decrease. The alternative (and default for regression and survival analysis) is "in-order" which considers the feature in order of appearance.
  • hyper_tune : Use STreeD's special hyper-tune method.
  • use_branch_caching : Enables or disables the use of branch caching.
  • use_dataset_caching : Enables or disables the use of dataset caching.
  • use_terminal_solver : Enables or disables the use of the special solver for trees of depth two.
  • use_similarity_lower_bound : Enables or disables the use of the similarity lower bound.
  • use_upper_bound : Enables or disables the use of upper bounds.
  • use_lower_bound : Enables or disables the use of lower bounds.
  • num_hyper_runs : The number of runs and splits during the hyperparameter tuning.
  • verbose : Enable or disable verbose output.
  • random_seed : The random seed.

Binarization

STreeD provides optimal decision trees for a given binarization. To help with the binarization, the pystreed package provides automatic binarization of categorical and continuous features.

Categorical features can be specified in the fit method by using the categorical_columns parameter. These features are binarized using one-hot encoding. The maximum number of categories per categorical feature is specified with the n_categories parameter. If the categorical feature exceeds this number, the n_categories - 1 most common categories are encoded with one binary feature each, and all other categories are encoded with an 'other' category.

Continuous features are automatically recognized by STreeD. Each continuous feature is binarized into a number of binary features as specified by the n_thresholds parameter. Each binary feature has the form x <= t, with x the continuous feature and t the threshold. Currently STreeD provides three ways of automatically binarizing continuous features, as specified by the continuous_binarize_strategy parameter:

  • uniform : Select thresholds uniformly from the interval [min(x), max(x)]
  • quantile : Select thresholds uniformly from the quantile distribution
  • tree : Train a CART tree using only one continuous feature with up to n_thresholds branching nodes, and select the thresholds from the branching nodes.

Note that STreeD provides an optimal decision tree for the given binarization. The binarization should therefore be chosen with care.

See examples/binarize_example.py for an example.

See also our latest paper on optimizing trees with continuous features:

  • Briţa, Cătălin E., Jacobus G. M. van der Linden, and Emir Demirović. "Optimal Classification Trees for Continuous Feature Data Using Dynamic Programming with Branch-and-Bound." In Proceedings of AAAI-25 (2025). pdf / source

Overfitting and tuning

To prevent overfitting the size of the tree can be tuned. This can be done in the standard way using scikit-learn methods, see examples/gridsearch_example.py.

For improving runtime performance, STreeD also provides a custom tuning method that in some cases can reuse the cache from previous runs. To use this, initialize the STreeD model with hyper_tune=True.

STreeD's default method of hypertuning directly tunes the depth and the number of branching nodes using five-fold cross validation. Some optimization tasks specify their custom tuning method, such as cost-complex-accuracy which tunes the cost_complexity parameter.

Miscellaneous

  • STreeD assumes classification labels are in the range 0 ... n_labels - 1. Not meeting this assumption may influence the algorithm's performance. Use sklearn's LabelEncoder to prevent this.

References

This work is a continuation of the following previous papers (with corresponding repositories)

  1. Demirović, Emir, et al. "Murtree: Optimal decision trees via dynamic programming and search." Journal of Machine Learning Research 23.26 (2022): 1-47. pdf / source
  2. Demirović, Emir, and Peter J. Stuckey. "Optimal decision trees for nonlinear metrics." Proceedings of the AAAI conference on artificial intelligence. Vol. 35. No. 5. 2021. pdf / source
  3. Van der Linden, Jacobus G. M., Mathijs M. de Weerdt, and Emir Demirović. "Fair and Optimal Decision Trees: A Dynamic Programming Approach." Advances in Neural Information Processing Systems. 2022. pdf / source

This work also incorporates ideas from the following papers (with their corresponding repositories)

  1. Hu, Xiyang, Cynthia Rudin, and Margo Seltzer. "Optimal sparse decision trees." Advances in Neural Information Processing Systems (2019). pdf / source
  2. Lin, Jimmy, et al. "Generalized and scalable optimal sparse decision trees." International Conference on Machine Learning (2020). pdf / source

Metadata

Release files for pystreed 1.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pystreed 1.4.0
File Size Uploaded
pystreed-1.4.0.tar.gz 160.4 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for pystreed 1.4.0
File
pystreed-1.4.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pystreed-1.4.0-cp312-cp312-win32.whl CPython 3.12 CPython 3.12 Windows x86-32 Details
pystreed-1.4.0-cp312-cp312-musllinux_1_1_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.1+ x86-64 Details
pystreed-1.4.0-cp312-cp312-musllinux_1_1_i686.whl CPython 3.12 CPython 3.12 Linux musl 1.1+ x86-32 Details
pystreed-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
pystreed-1.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-32 Details
pystreed-1.4.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
pystreed-1.4.0-cp312-cp312-macosx_10_9_universal2.whl CPython 3.12 CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64) Details
pystreed-1.4.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pystreed-1.4.0-cp311-cp311-win32.whl CPython 3.11 CPython 3.11 Windows x86-32 Details
pystreed-1.4.0-cp311-cp311-musllinux_1_1_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.1+ x86-64 Details
pystreed-1.4.0-cp311-cp311-musllinux_1_1_i686.whl CPython 3.11 CPython 3.11 Linux musl 1.1+ x86-32 Details
pystreed-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
pystreed-1.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-32 Details
pystreed-1.4.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
pystreed-1.4.0-cp311-cp311-macosx_10_9_universal2.whl CPython 3.11 CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64) Details
pystreed-1.4.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pystreed-1.4.0-cp310-cp310-win32.whl CPython 3.10 CPython 3.10 Windows x86-32 Details
pystreed-1.4.0-cp310-cp310-musllinux_1_1_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.1+ x86-64 Details
pystreed-1.4.0-cp310-cp310-musllinux_1_1_i686.whl CPython 3.10 CPython 3.10 Linux musl 1.1+ x86-32 Details
pystreed-1.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
pystreed-1.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-32 Details
pystreed-1.4.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
pystreed-1.4.0-cp310-cp310-macosx_10_9_universal2.whl CPython 3.10 CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64) Details

Total release size: 33.1 MB

Release files / pystreed-1.4.0.tar.gz

Download URL pystreed-1.4.0.tar.gz
Size 160.4 kB
Tags Source
SHA-256 checksum
How to use checksums
63ff09838c5838cff30bbbceca56994417b8b0c05f9b082a666ba7e8a632e113
BLAKE2b-256 checksum
How to use checksums
e1a989300a0041210a286a27f7d08e8eeb0fb8e94ceb94c696bfdf74bcbbca74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp312-cp312-win_amd64.whl

Download URL pystreed-1.4.0-cp312-cp312-win_amd64.whl
Size 836.5 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
cb43cb13a86d858315c8eb6f649adc467cd5acd1d030550b13a1f2826c188c2e
BLAKE2b-256 checksum
How to use checksums
93d607a2a7dca67eb4c435327abe5a2d23ee101904ab889a80fd56ca9894b900
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp312-cp312-win32.whl

Download URL pystreed-1.4.0-cp312-cp312-win32.whl
Size 606.2 kB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
0187cb1637b334717e1b92611b20e7bdc0128aab6b5dd0a208446ac4b46c7108
BLAKE2b-256 checksum
How to use checksums
26d21b344b5cad1eb8086bb2a24d4d31764e8703e6c5538415317e30fe54a37d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp312-cp312-musllinux_1_1_x86_64.whl

Download URL pystreed-1.4.0-cp312-cp312-musllinux_1_1_x86_64.whl
Size 1.7 MB
Tags CPython 3.12 Linux musl 1.1+ x86-64
SHA-256 checksum
How to use checksums
9c3e6426242883c58f3d4c3882234fbafb15fed4ebe70edb87d529fd19c066eb
BLAKE2b-256 checksum
How to use checksums
a272d0770869fd5a11e7e123de2cd2ab466d16f116616d774be641bdba6ffe8e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp312-cp312-musllinux_1_1_i686.whl

Download URL pystreed-1.4.0-cp312-cp312-musllinux_1_1_i686.whl
Size 1.8 MB
Tags CPython 3.12 Linux musl 1.1+ x86-32
SHA-256 checksum
How to use checksums
8887a22086a44789c2f230d28251c5c54fcb7234febabd5d6fa095bc9b81a8fb
BLAKE2b-256 checksum
How to use checksums
10774bd3f96eac8c7e76a5750a148b9574b6a2071a4ba492e06cde35af1e6d73
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pystreed-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.2 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
261067ced946bad38c3d805aec5da4b6b5b1f1ddd9fb2de6ee880efaf2ed79d6
BLAKE2b-256 checksum
How to use checksums
33bec6726e36fae8f204f3a5b111b3e44fdd47441192c95fb96bdfc90936f3c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL pystreed-1.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Size 1.3 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
49a1a4e4caca293e9279269e5d6adb6aa21a04dba7280a65e9e62861e0b45fe5
BLAKE2b-256 checksum
How to use checksums
ea27c9b867eed86bc259d0dd36d3719ca5adcaf5d451ad63b3073a282c3faf28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL pystreed-1.4.0-cp312-cp312-macosx_11_0_arm64.whl
Size 1.1 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f12520ed8e45fbc63312a9e0b5777228d219516fa05eb61af730950a42ebe2cf
BLAKE2b-256 checksum
How to use checksums
0be2ac790bc88925e51f06d51ea7a4c40b6b11819a7ebb849797665aa7f8276b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp312-cp312-macosx_10_9_universal2.whl

Download URL pystreed-1.4.0-cp312-cp312-macosx_10_9_universal2.whl
Size 2.3 MB
Tags CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
0c78b9c85b9c7574b35edfea4062faf330e4d0ae0b90789985cf9ba5df73e56e
BLAKE2b-256 checksum
How to use checksums
be73f6e8f9ed5b3151d5b1796499b75cac2b78839c574d5598cae4ebb8e882c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp311-cp311-win_amd64.whl

Download URL pystreed-1.4.0-cp311-cp311-win_amd64.whl
Size 830.7 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
d51d9009310994bd61c921a637e03619daf25c0e1dabd7270b8c63bd1de6e2a3
BLAKE2b-256 checksum
How to use checksums
b72e8b19774de4725cb3a593e4dfa1b20d43950ea160e420b2e45ece4888fb7d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp311-cp311-win32.whl

Download URL pystreed-1.4.0-cp311-cp311-win32.whl
Size 606.2 kB
Tags CPython 3.11 Windows x86-32
SHA-256 checksum
How to use checksums
1768f0e904c236838ffcb96b785f3098e27a9fd883ae68a5d6a8a28fe485d9e6
BLAKE2b-256 checksum
How to use checksums
8a84e167862a7b4832f2c4dcbf4ea8cc43443dae7736e83b6b1eddcdc92998f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp311-cp311-musllinux_1_1_x86_64.whl

Download URL pystreed-1.4.0-cp311-cp311-musllinux_1_1_x86_64.whl
Size 1.7 MB
Tags CPython 3.11 Linux musl 1.1+ x86-64
SHA-256 checksum
How to use checksums
0bf606c3e47765fbe9ca823e3a9bd7358a39bb0f72995f35be38e3e6daee8a46
BLAKE2b-256 checksum
How to use checksums
8d6c3f1aeafd566230e437b5a7ffe67320c79678822ae23857762fcca51be193
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp311-cp311-musllinux_1_1_i686.whl

Download URL pystreed-1.4.0-cp311-cp311-musllinux_1_1_i686.whl
Size 1.8 MB
Tags CPython 3.11 Linux musl 1.1+ x86-32
SHA-256 checksum
How to use checksums
00ac04db09eeeb07b89247198c59e18621dfab818fda4503ca40194a3ceb1f50
BLAKE2b-256 checksum
How to use checksums
8a87c31815ee308d124d0891f03c12b352be18d7690f346f45f57e7cb4f16b4a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pystreed-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.2 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
38cab93f82749a6fef21826a54b1d7058e74104fdb9d9f40d9561b33278ff02c
BLAKE2b-256 checksum
How to use checksums
d99570b512ef72c236060f838dac78332cd7e58ad9969520dd68315832b0f179
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL pystreed-1.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Size 1.3 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
75c76030f7e9a52bdc7ae48b8f3f521f6d0ef6a58a10c9beca8255aa08e65452
BLAKE2b-256 checksum
How to use checksums
cef9e9338f58c9f7c47c4533e1436e83d840b47d32afc9eec62a484eca465b47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL pystreed-1.4.0-cp311-cp311-macosx_11_0_arm64.whl
Size 1.1 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
49c5c006df03843e25bfc08b654fd6146f23f295018b62ede6051b1a599c08d2
BLAKE2b-256 checksum
How to use checksums
936d6eef6e1135a4653af54cc540378857e6990c6b54bf35d8184792c52c324e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp311-cp311-macosx_10_9_universal2.whl

Download URL pystreed-1.4.0-cp311-cp311-macosx_10_9_universal2.whl
Size 2.3 MB
Tags CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
e22c8bcabae3605dfcd75391d027a707bdbebbebae60e9c958f3729f19c9841e
BLAKE2b-256 checksum
How to use checksums
833c8b4a496678348d8d60bc7e00f96f5afe00ddcafb40cbe75d65b190044b91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp310-cp310-win_amd64.whl

Download URL pystreed-1.4.0-cp310-cp310-win_amd64.whl
Size 830.0 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
8413c2a1f7dd2fa4212e437da112a6bcc3c514af80915c390d873ff7f6ded2dd
BLAKE2b-256 checksum
How to use checksums
d3aa4a896f020e0765c248301f607e56b01a856edd76257d5275c64471b36930
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp310-cp310-win32.whl

Download URL pystreed-1.4.0-cp310-cp310-win32.whl
Size 604.9 kB
Tags CPython 3.10 Windows x86-32
SHA-256 checksum
How to use checksums
7dab07e8d089853b34fb5bc241aac0deb3f5b8f69dd35ea5cc64762120ccfae1
BLAKE2b-256 checksum
How to use checksums
bcd64d59b01766f1e1770fa5f284a7ab1107e95d65710034ed05e06b1a3d8e60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp310-cp310-musllinux_1_1_x86_64.whl

Download URL pystreed-1.4.0-cp310-cp310-musllinux_1_1_x86_64.whl
Size 1.7 MB
Tags CPython 3.10 Linux musl 1.1+ x86-64
SHA-256 checksum
How to use checksums
85f16bccf7d6d15a8907c5a24b58dd55d241b81b3980cd802ad7003504fe66b7
BLAKE2b-256 checksum
How to use checksums
4e50335db7bc8832888c1af4d9828013ca5afc9347b606c18cd2abd6a3040c4b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp310-cp310-musllinux_1_1_i686.whl

Download URL pystreed-1.4.0-cp310-cp310-musllinux_1_1_i686.whl
Size 1.8 MB
Tags CPython 3.10 Linux musl 1.1+ x86-32
SHA-256 checksum
How to use checksums
4ab760a82308320483dbd94c042c8f152036fabd413457d809064142e7d637a9
BLAKE2b-256 checksum
How to use checksums
4d37cf3ee272e520d20e776fbc5445f4f472702806a69d40d8c2f480d26ff5d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pystreed-1.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.2 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
945456a9e2a609b282466bfea6ef7a946f6b4d9d120562e55b554d2f745890c7
BLAKE2b-256 checksum
How to use checksums
a9280b02bb738cdd589fabc8a4662274b4cd4040a142d7b9099fadca67f2baa6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL pystreed-1.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Size 1.3 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-32
SHA-256 checksum
How to use checksums
af9e3a3e2475ad9f9a5f7e62f05b711a0e6788f7cfdc8f030a1273a49d952b3a
BLAKE2b-256 checksum
How to use checksums
136ce340328d8477668d5c99d704110548737ca2132af824312e566fdb5f7477
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL pystreed-1.4.0-cp310-cp310-macosx_11_0_arm64.whl
Size 1.1 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b6bce6f4bd250b40cb1034032e8e14066507fe052a0406b0893bc71fde07e705
BLAKE2b-256 checksum
How to use checksums
0eeeb16cf64cb9047669be26b92d8d58df4a7a8252d8079e875e4e29ea2f576b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pystreed-1.4.0-cp310-cp310-macosx_10_9_universal2.whl

Download URL pystreed-1.4.0-cp310-cp310-macosx_10_9_universal2.whl
Size 2.3 MB
Tags CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
d584614bc156a9aa5ac0af780aa941f9261caa5def28d7ccf285ef0db9f5740a
BLAKE2b-256 checksum
How to use checksums
664d34c54e6ebd31fd70cf2e40c32f8d93455a96891dce27ffc872478fb1a8f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

1.4.0 This release

25 release files

1.3.9

25 release files

1.3.8

25 release files

1.3.6

41 release files

1.3.5

41 release files

1.3.4

53 release files

1.3.3

53 release files

1.3.2

53 release files

1.3.1

53 release files

1.3.0

53 release files

1.2.3

53 release files

1.2.2

53 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page