Name | sktree JSON |
Version |
0.1.3
JSON |
| download |
home_page | |
Summary | Modern decision trees in Python |
upload_time | 2023-07-05 23:35:30 |
maintainer | |
docs_url | None |
author | |
requires_python | >=3.9 |
license | |
keywords |
tree
oblique
trees
manifold-learning
scikit-learn
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![CircleCI](https://circleci.com/gh/neurodata/scikit-tree/tree/main.svg?style=svg)](https://circleci.com/gh/neurodata/scikit-tree/tree/main)
[![Main](https://github.com/neurodata/scikit-tree/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/neurodata/scikit-tree/actions/workflows/main.yml)
[![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)
[![codecov](https://codecov.io/gh/neurodata/scikit-tree/branch/main/graph/badge.svg?token=H1reh7Qwf4)](https://codecov.io/gh/neurodata/scikit-tree)
scikit-tree
===========
scikit-tree is a scikit-learn compatible API for building state-of-the-art decision trees. These include unsupervised trees, oblique trees, uncertainty trees, quantile trees and causal trees.
Tree-models have withstood the test of time, and are consistently used for modern-day data science and machine learning applications. They especially perform well when there are limited samples for a problem and are flexible learners that can be applied to a wide variety of different settings, such as tabular, images, time-series, genomics, EEG data and more.
We welcome contributions for modern tree-based algorithms. We use Cython to achieve fast C/C++ speeds, while abiding by a scikit-learn compatible (tested) API. Moreover, our Cython internals are easily extensible because they follow the internal Cython API of scikit-learn as well.
**Submodule dependency on a fork of scikit-learn**
Due to the current state of scikit-learn's internal Cython code for trees, we have to instead leverage a maintained fork of scikit-learn at https://github.com/neurodata/scikit-learn, where specifically, the `fork` branch is used to build and install this repo. We keep that fork well-maintained and up-to-date with respect to the main sklearn repo. The only difference is the refactoring of the `tree/` submodule. This fork is used internally under the namespace ``sktree._lib.sklearn``. It is necessary to use this fork for anything related to:
- `RandomForest*`
- `ExtraTrees*`
- or any importable items from the `tree/` submodule, whether it is a Cython or Python object
If you are developing for scikit-tree, we will always depend on the most up-to-date commit of `https://github.com/neurodata/scikit-learn/submodulev2` as a submodule within scikit-tee. This branch is consistently maintained for changes upstream that occur in the scikit-learn tree submodule. This ensures that our fork maintains consistency and robustness due to bug fixes and improvements upstream.
Documentation
=============
See here for the documentation for our dev version: https://docs.neurodata.io/scikit-tree/dev/index.html
Why oblique trees and why trees beyond those in scikit-learn?
=============================================================
In 2001, Leo Breiman proposed two types of Random Forests. One was known as ``Forest-RI``, which is the axis-aligned traditional random forest. One was known as ``Forest-RC``, which is the random oblique linear combinations random forest. This leveraged random combinations of features to perform splits. [MORF](1) builds upon ``Forest-RC`` by proposing additional functions to combine features. Other modern tree variants such as Canonical Correlation Forests (CCF), or unsupervised random forests are also important at solving real-world problems using robust decision tree models.
Installation
============
Our installation will try to follow scikit-learn installation as close as possible, as we contain Cython code subclassed, or inspired by the scikit-learn tree submodule.
AS OF NOW, scikit-tree is in development stage and the installation is still finicky due to the upstream scikit-learn's stalled refactoring PRs of the tree submodule. Once those are merged, the installation will be simpler. The current recommended installation is done locally with meson.
Dependencies
------------
We minimally require:
* Python (>=3.8)
* numpy
* scipy
* scikit-learn >= 1.3
Building locally with Meson (RECOMMENDED)
-----------------------------------------
Make sure you have the necessary packages installed
# install build dependencies
pip install numpy scipy meson ninja meson-python Cython scikit-learn scikit-learn-tree
# you may need these optional dependencies to build scikit-learn locally
conda install -c conda-forge joblib threadpoolctl pytest compilers llvm-openmp
We use the ``spin`` CLI to abstract away build details:
# run the build using Meson/Ninja
./spin build
# you can run the following command to see what other options there are
./spin --help
./spin build --help
# For example, you might want to start from a clean build
./spin build --clean
# or build in parallel for faster builds
./spin build -j 2
# you will need to double check the build-install has the proper path
# this might be different from machine to machine
export PYTHONPATH=${PWD}/build-install/usr/lib/python3.9/site-packages
# run specific unit tests
./spin test -- sktree/tree/tests/test_tree.py
# you can bring up the CLI menu
./spin --help
You can also do the same thing using Meson/Ninja itself. Run the following to build the local files:
# generate ninja make files
meson build --prefix=$PWD/build
# compile
ninja -C build
# install scikit-tree package
meson install -C build
export PYTHONPATH=${PWD}/build/lib/python3.9/site-packages
# to check installation, you need to be in a different directory
cd docs;
python -c "from sktree import tree"
python -c "import sklearn; print(sklearn.__version__);"
Alternatively, you can use editable installs
pip install --no-build-isolation --editable .
References
==========
[1]: [`Li, Adam, et al. "Manifold Oblique Random Forests: Towards Closing the Gap on Convolutional Deep Networks." arXiv preprint arXiv:1909.11799 (2019)`](https://arxiv.org/abs/1909.11799)
Raw data
{
"_id": null,
"home_page": "",
"name": "sktree",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": "Neurodata <adam.li@columbia.edu>",
"keywords": "tree oblique trees manifold-learning scikit-learn",
"author": "",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/6d/ae/ae3e23c6f9ef6990aeced9077b6461964dfb505b32080a7a4115da6523af/sktree-0.1.3.tar.gz",
"platform": null,
"description": "[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![CircleCI](https://circleci.com/gh/neurodata/scikit-tree/tree/main.svg?style=svg)](https://circleci.com/gh/neurodata/scikit-tree/tree/main)\n[![Main](https://github.com/neurodata/scikit-tree/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/neurodata/scikit-tree/actions/workflows/main.yml)\n[![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)\n[![codecov](https://codecov.io/gh/neurodata/scikit-tree/branch/main/graph/badge.svg?token=H1reh7Qwf4)](https://codecov.io/gh/neurodata/scikit-tree)\n\nscikit-tree\n===========\n\nscikit-tree is a scikit-learn compatible API for building state-of-the-art decision trees. These include unsupervised trees, oblique trees, uncertainty trees, quantile trees and causal trees.\n\nTree-models have withstood the test of time, and are consistently used for modern-day data science and machine learning applications. They especially perform well when there are limited samples for a problem and are flexible learners that can be applied to a wide variety of different settings, such as tabular, images, time-series, genomics, EEG data and more.\n\nWe welcome contributions for modern tree-based algorithms. We use Cython to achieve fast C/C++ speeds, while abiding by a scikit-learn compatible (tested) API. Moreover, our Cython internals are easily extensible because they follow the internal Cython API of scikit-learn as well.\n\n**Submodule dependency on a fork of scikit-learn**\nDue to the current state of scikit-learn's internal Cython code for trees, we have to instead leverage a maintained fork of scikit-learn at https://github.com/neurodata/scikit-learn, where specifically, the `fork` branch is used to build and install this repo. We keep that fork well-maintained and up-to-date with respect to the main sklearn repo. The only difference is the refactoring of the `tree/` submodule. This fork is used internally under the namespace ``sktree._lib.sklearn``. It is necessary to use this fork for anything related to:\n\n- `RandomForest*`\n- `ExtraTrees*`\n- or any importable items from the `tree/` submodule, whether it is a Cython or Python object\n\nIf you are developing for scikit-tree, we will always depend on the most up-to-date commit of `https://github.com/neurodata/scikit-learn/submodulev2` as a submodule within scikit-tee. This branch is consistently maintained for changes upstream that occur in the scikit-learn tree submodule. This ensures that our fork maintains consistency and robustness due to bug fixes and improvements upstream.\n\nDocumentation\n=============\n\nSee here for the documentation for our dev version: https://docs.neurodata.io/scikit-tree/dev/index.html\n\nWhy oblique trees and why trees beyond those in scikit-learn?\n=============================================================\nIn 2001, Leo Breiman proposed two types of Random Forests. One was known as ``Forest-RI``, which is the axis-aligned traditional random forest. One was known as ``Forest-RC``, which is the random oblique linear combinations random forest. This leveraged random combinations of features to perform splits. [MORF](1) builds upon ``Forest-RC`` by proposing additional functions to combine features. Other modern tree variants such as Canonical Correlation Forests (CCF), or unsupervised random forests are also important at solving real-world problems using robust decision tree models.\n\nInstallation\n============\nOur installation will try to follow scikit-learn installation as close as possible, as we contain Cython code subclassed, or inspired by the scikit-learn tree submodule.\n\nAS OF NOW, scikit-tree is in development stage and the installation is still finicky due to the upstream scikit-learn's stalled refactoring PRs of the tree submodule. Once those are merged, the installation will be simpler. The current recommended installation is done locally with meson.\n\nDependencies\n------------\n\nWe minimally require:\n\n * Python (>=3.8)\n * numpy\n * scipy\n * scikit-learn >= 1.3\n\nBuilding locally with Meson (RECOMMENDED)\n-----------------------------------------\nMake sure you have the necessary packages installed\n\n # install build dependencies\n pip install numpy scipy meson ninja meson-python Cython scikit-learn scikit-learn-tree\n\n # you may need these optional dependencies to build scikit-learn locally\n conda install -c conda-forge joblib threadpoolctl pytest compilers llvm-openmp\n\nWe use the ``spin`` CLI to abstract away build details:\n\n # run the build using Meson/Ninja\n ./spin build\n \n # you can run the following command to see what other options there are\n ./spin --help\n ./spin build --help\n \n # For example, you might want to start from a clean build\n ./spin build --clean\n \n # or build in parallel for faster builds\n ./spin build -j 2\n\n # you will need to double check the build-install has the proper path \n # this might be different from machine to machine\n export PYTHONPATH=${PWD}/build-install/usr/lib/python3.9/site-packages\n\n # run specific unit tests\n ./spin test -- sktree/tree/tests/test_tree.py\n\n # you can bring up the CLI menu\n ./spin --help\n\nYou can also do the same thing using Meson/Ninja itself. Run the following to build the local files:\n\n # generate ninja make files\n meson build --prefix=$PWD/build\n\n # compile\n ninja -C build\n\n # install scikit-tree package\n meson install -C build\n\n export PYTHONPATH=${PWD}/build/lib/python3.9/site-packages\n\n # to check installation, you need to be in a different directory\n cd docs; \n python -c \"from sktree import tree\"\n python -c \"import sklearn; print(sklearn.__version__);\"\n\nAlternatively, you can use editable installs\n\n pip install --no-build-isolation --editable .\n\nReferences\n==========\n[1]: [`Li, Adam, et al. \"Manifold Oblique Random Forests: Towards Closing the Gap on Convolutional Deep Networks.\" arXiv preprint arXiv:1909.11799 (2019)`](https://arxiv.org/abs/1909.11799)",
"bugtrack_url": null,
"license": "",
"summary": "Modern decision trees in Python",
"version": "0.1.3",
"project_urls": null,
"split_keywords": [
"tree",
"oblique",
"trees",
"manifold-learning",
"scikit-learn"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0ed274395cb003cf0ccd99ffd40cb97b7ad0901e423e3573e493d3b22b58c363",
"md5": "9757edc93b9e8f1a6ded751d5556ed33",
"sha256": "78006d32a486e650afd95a44de5babe1689390ce28f00c7e7c77ae3f69469e8a"
},
"downloads": -1,
"filename": "sktree-0.1.3-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "9757edc93b9e8f1a6ded751d5556ed33",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 1486503,
"upload_time": "2023-07-05T23:06:36",
"upload_time_iso_8601": "2023-07-05T23:06:36.712852Z",
"url": "https://files.pythonhosted.org/packages/0e/d2/74395cb003cf0ccd99ffd40cb97b7ad0901e423e3573e493d3b22b58c363/sktree-0.1.3-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9f3ec42020019c8b7bac422f542ce91836a9943cf4ef4ba1d6f0f1e35b4609f4",
"md5": "23fbf62015125dfce2a793c1739a6ca3",
"sha256": "23c44e4ba42047127df2d2f05463b14d764807110c0e2dc14ea3a14d87c95bc4"
},
"downloads": -1,
"filename": "sktree-0.1.3-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "23fbf62015125dfce2a793c1739a6ca3",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 1362012,
"upload_time": "2023-07-05T23:06:38",
"upload_time_iso_8601": "2023-07-05T23:06:38.785033Z",
"url": "https://files.pythonhosted.org/packages/9f/3e/c42020019c8b7bac422f542ce91836a9943cf4ef4ba1d6f0f1e35b4609f4/sktree-0.1.3-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c5a028008e16707fc652c98c936f16d37d8347e26a6b35b9a0cebb9ba6fa6cf0",
"md5": "49746ee0673ecef6ed9f50b6effb0973",
"sha256": "7111790502d0c52ac58c479f174d45e62c3f6381b501e2b52e6c4f24ee0cbe90"
},
"downloads": -1,
"filename": "sktree-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "49746ee0673ecef6ed9f50b6effb0973",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 1887910,
"upload_time": "2023-07-05T23:06:40",
"upload_time_iso_8601": "2023-07-05T23:06:40.749527Z",
"url": "https://files.pythonhosted.org/packages/c5/a0/28008e16707fc652c98c936f16d37d8347e26a6b35b9a0cebb9ba6fa6cf0/sktree-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f56a07a85ae253854cd8b311095c8be3435990b772d9de7f20f465b506a704ad",
"md5": "2e500d668b37c7a74e7390a131d88b96",
"sha256": "904741147e8fc0b6320df0a902fdace41c0e9697ade714e6baa7bb2a14a2b7d3"
},
"downloads": -1,
"filename": "sktree-0.1.3-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "2e500d668b37c7a74e7390a131d88b96",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 12414996,
"upload_time": "2023-07-05T23:06:46",
"upload_time_iso_8601": "2023-07-05T23:06:46.979066Z",
"url": "https://files.pythonhosted.org/packages/f5/6a/07a85ae253854cd8b311095c8be3435990b772d9de7f20f465b506a704ad/sktree-0.1.3-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b0dc73ed2220bcc265da7af1d2bc96b9467f4783d7ecb010b7c3850c77856e3d",
"md5": "806a59d3f82d2c229a633b6f0c8ce954",
"sha256": "ec78b508b75e8cd2f6281a7a7fb7a5989adfbe372e6f3d749349f1b2ba135f8f"
},
"downloads": -1,
"filename": "sktree-0.1.3-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "806a59d3f82d2c229a633b6f0c8ce954",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 1463568,
"upload_time": "2023-07-05T23:06:49",
"upload_time_iso_8601": "2023-07-05T23:06:49.798262Z",
"url": "https://files.pythonhosted.org/packages/b0/dc/73ed2220bcc265da7af1d2bc96b9467f4783d7ecb010b7c3850c77856e3d/sktree-0.1.3-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "04057bc07e8d8242a50bc77e07b6142629d1de74351fdb380e758410922ff61d",
"md5": "5a09ccbb76d2cd5def33d9048a7a465a",
"sha256": "b83bb80b193fa80828dc9dc7caa9a9025e962a445bd6dae32071beb7688610de"
},
"downloads": -1,
"filename": "sktree-0.1.3-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "5a09ccbb76d2cd5def33d9048a7a465a",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 1339351,
"upload_time": "2023-07-05T23:06:51",
"upload_time_iso_8601": "2023-07-05T23:06:51.712281Z",
"url": "https://files.pythonhosted.org/packages/04/05/7bc07e8d8242a50bc77e07b6142629d1de74351fdb380e758410922ff61d/sktree-0.1.3-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "81a3986ca9d0c90a12ac1945ca15eafb1b2e578a6e4595b0289799dad9d14e55",
"md5": "8d8a5bfe227261ca86e2c6ed5b0212b9",
"sha256": "f7e55345faddf1cd819222000ae224684f219dd7b5754ec5a1d3614dd341f127"
},
"downloads": -1,
"filename": "sktree-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "8d8a5bfe227261ca86e2c6ed5b0212b9",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 1884658,
"upload_time": "2023-07-05T23:06:53",
"upload_time_iso_8601": "2023-07-05T23:06:53.404988Z",
"url": "https://files.pythonhosted.org/packages/81/a3/986ca9d0c90a12ac1945ca15eafb1b2e578a6e4595b0289799dad9d14e55/sktree-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b8915c5875fc0573ca0146fd74eef4a7f64358f07e808da66e67b4d51f096ddc",
"md5": "210ba5719ecc2311186f0ea0862d393d",
"sha256": "04d13c5fe990267362370c4dfc402d7de9e6d945a3054389d990321fdbdbe6c5"
},
"downloads": -1,
"filename": "sktree-0.1.3-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "210ba5719ecc2311186f0ea0862d393d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 12416837,
"upload_time": "2023-07-05T23:06:55",
"upload_time_iso_8601": "2023-07-05T23:06:55.945792Z",
"url": "https://files.pythonhosted.org/packages/b8/91/5c5875fc0573ca0146fd74eef4a7f64358f07e808da66e67b4d51f096ddc/sktree-0.1.3-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "40fa7c48df979497c5e5ab92a500eaf07c5fd85bddb278cbd68660f44d147b6f",
"md5": "29aacd96760034bdfe78ec093aadb608",
"sha256": "5f2ff696bddb54036161d4a42b0d353b589aa89f0c32a8a3ec77c576d9c680d9"
},
"downloads": -1,
"filename": "sktree-0.1.3-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "29aacd96760034bdfe78ec093aadb608",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 1496406,
"upload_time": "2023-07-05T23:07:00",
"upload_time_iso_8601": "2023-07-05T23:07:00.361823Z",
"url": "https://files.pythonhosted.org/packages/40/fa/7c48df979497c5e5ab92a500eaf07c5fd85bddb278cbd68660f44d147b6f/sktree-0.1.3-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "57cae32e3d0f120471ee3d893844b57f1ac48e97116722398afff57dfffb6318",
"md5": "1857862d6cd6797fa05c4f621372daf4",
"sha256": "b661324aaf950758802e353316f3c69723bb0ad303251a7bb4712a96a654f2bf"
},
"downloads": -1,
"filename": "sktree-0.1.3-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "1857862d6cd6797fa05c4f621372daf4",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 1368330,
"upload_time": "2023-07-05T23:07:02",
"upload_time_iso_8601": "2023-07-05T23:07:02.294160Z",
"url": "https://files.pythonhosted.org/packages/57/ca/e32e3d0f120471ee3d893844b57f1ac48e97116722398afff57dfffb6318/sktree-0.1.3-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c40f4183ec166516459af0ead35d7b0e63e83a7e0752850cfa3a3d70d4738178",
"md5": "117e5deda689fe70197e105fd447fb6b",
"sha256": "6ae3eb1c94f8ec188a010008ed9881108005f04dff5a372a9388f68ca344ec71"
},
"downloads": -1,
"filename": "sktree-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "117e5deda689fe70197e105fd447fb6b",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 1914526,
"upload_time": "2023-07-05T23:07:04",
"upload_time_iso_8601": "2023-07-05T23:07:04.246300Z",
"url": "https://files.pythonhosted.org/packages/c4/0f/4183ec166516459af0ead35d7b0e63e83a7e0752850cfa3a3d70d4738178/sktree-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "861494cbdab5cf09e76659692948ca5eafd75b1ebdf6b5cc959b49e6d0715d69",
"md5": "4d49c122c76739859247bb773bb76f9e",
"sha256": "757b5560d9f84eea5caa2cb4a148e9a8b79055ec19bfb60a4f9d9f6c7c915a29"
},
"downloads": -1,
"filename": "sktree-0.1.3-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "4d49c122c76739859247bb773bb76f9e",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 12467089,
"upload_time": "2023-07-05T23:07:07",
"upload_time_iso_8601": "2023-07-05T23:07:07.644721Z",
"url": "https://files.pythonhosted.org/packages/86/14/94cbdab5cf09e76659692948ca5eafd75b1ebdf6b5cc959b49e6d0715d69/sktree-0.1.3-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6daeae3e23c6f9ef6990aeced9077b6461964dfb505b32080a7a4115da6523af",
"md5": "afb373244f9683acfb9cb6cea7b9827b",
"sha256": "1bd70aa4b1f360410e1a38db5459331bc5134c91549481212f5e9284884010ed"
},
"downloads": -1,
"filename": "sktree-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "afb373244f9683acfb9cb6cea7b9827b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 13788829,
"upload_time": "2023-07-05T23:35:30",
"upload_time_iso_8601": "2023-07-05T23:35:30.926034Z",
"url": "https://files.pythonhosted.org/packages/6d/ae/ae3e23c6f9ef6990aeced9077b6461964dfb505b32080a7a4115da6523af/sktree-0.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-07-05 23:35:30",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "sktree"
}