obliquetree


Nameobliquetree JSON
Version 1.0.3 PyPI version JSON
download
home_pageNone
SummaryTraditional and Oblique Decision Tree
upload_time2025-07-29 07:50:26
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT License
keywords python data-science machine-learning machine-learning-library explainable-ai decision-tree oblique-tree
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # obliquetree

`obliquetree` is an advanced decision tree implementation designed to provide high-performance and interpretable models. It supports both classification and regression tasks, enabling a wide range of applications. By offering traditional and oblique splits, it ensures flexibility and improved generalization with shallow trees. This makes it a powerful alternative to regular decision trees.


![Tree Visualization](docs/source/_static/tree_visual.png)


----

## Getting Started

`obliquetree` combines advanced capabilities with efficient performance. It supports **oblique splits**, leveraging **L-BFGS optimization** to determine the best linear weights for splits, ensuring both speed and accuracy.

In **traditional mode**, without oblique splits, `obliquetree` outperforms `scikit-learn` in terms of speed and adds support for **categorical variables**, providing a significant advantage over many traditional decision tree implementations.

When the **oblique feature** is enabled, `obliquetree` dynamically selects the optimal split type between oblique and traditional splits. If no weights can be found to reduce impurity, it defaults to an **axis-aligned split**, ensuring robustness and adaptability in various scenarios.

In very large trees (e.g., depth 10 or more), the performance of `obliquetree` may converge closely with **traditional trees**. The true strength of `obliquetree` lies in their ability to perform exceptionally well at **shallower depths**, offering improved generalization with fewer splits. Moreover, thanks to linear projections, `obliquetree` significantly outperform traditional trees when working with datasets that exhibit **linear relationships**.

-----
## Installation
To install `obliquetree`, use the following pip command:
```bash
pip install obliquetree
```

Using the `obliquetree` library is simple and intuitive. Here's a more generic example that works for both classification and regression:


```python
from obliquetree import Classifier, Regressor

# Initialize the model (Classifier or Regressor)
model = Classifier(  # Replace "Classifier" with "Regressor" if performing regression
    use_oblique=True,       # Enable oblique splits
    max_depth=2,            # Set the maximum depth of the tree
    n_pair=2,               # Number of feature pairs for optimization
    random_state=42,        # Set a random state for reproducibility
    categories=[0, 10, 32], # Specify which features are categorical
)

# Train the model on the training dataset
model.fit(X_train, y_train)

# Predict on the test dataset
y_pred = model.predict(X_test)
```
-----

## Documentation
For example usage, API details, comparisons with axis-aligned trees, and in-depth insights into the algorithmic foundation, we **strongly recommend** referring to the full [documentation](https://obliquetree.readthedocs.io/en/latest/).

---
## Key Features

- **Oblique Splits**  
  Perform oblique splits using linear combinations of features to capture complex patterns in data. Supports both linear and soft decision tree objectives for flexible and accurate modeling.

- **Axis-Aligned Splits**  
  Offers conventional (axis-aligned) splits, enabling users to leverage standard decision tree behavior for simplicity and interpretability.

- **Feature Constraints**  
  Limit the number of features used in oblique splits with the `n_pair` parameter, promoting simpler, more interpretable tree structures while retaining predictive power.

- **Seamless Categorical Feature Handling**  
  Natively supports categorical columns with minimal preprocessing. Only label encoding is required, removing the need for extensive data transformation.

- **Robust Handling of Missing Values**  
  Automatically assigns `NaN` values to the optimal leaf for axis-aligned splits.

- **Customizable Tree Structures**  
  The flexible API empowers users to design their own tree architectures easily.

- **Exact Equivalence with `scikit-learn`**  
  Guarantees results identical to `scikit-learn`'s decision trees when oblique and categorical splitting are disabled.

- **Optimized Performance**  
  Outperforms `scikit-learn` in terms of speed and efficiency when oblique and categorical splitting are disabled:
  - Up to **50% faster** for datasets with float columns.
  - Up to **200% faster** for datasets with integer columns.

  ![Performance Comparison (Float)](docs/source/_static/sklearn_perf/performance_comparison_float.png)

  ![Performance Comparison (Integer)](docs/source/_static/sklearn_perf/performance_comparison_int.png)


----
### Contributing
Contributions are welcome! If you'd like to improve `obliquetree` or suggest new features, feel free to fork the repository and submit a pull request.

-----
### License
`obliquetree` is released under the MIT License. See the LICENSE file for more details.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "obliquetree",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "python, data-science, machine-learning, machine-learning-library, explainable-ai, decision-tree, oblique-tree",
    "author": null,
    "author_email": "Samet Copur <sametcopur@yahoo.com>",
    "download_url": null,
    "platform": null,
    "description": "# obliquetree\n\n`obliquetree` is an advanced decision tree implementation designed to provide high-performance and interpretable models. It supports both classification and regression tasks, enabling a wide range of applications. By offering traditional and oblique splits, it ensures flexibility and improved generalization with shallow trees. This makes it a powerful alternative to regular decision trees.\n\n\n![Tree Visualization](docs/source/_static/tree_visual.png)\n\n\n----\n\n## Getting Started\n\n`obliquetree` combines advanced capabilities with efficient performance. It supports **oblique splits**, leveraging **L-BFGS optimization** to determine the best linear weights for splits, ensuring both speed and accuracy.\n\nIn **traditional mode**, without oblique splits, `obliquetree` outperforms `scikit-learn` in terms of speed and adds support for **categorical variables**, providing a significant advantage over many traditional decision tree implementations.\n\nWhen the **oblique feature** is enabled, `obliquetree` dynamically selects the optimal split type between oblique and traditional splits. If no weights can be found to reduce impurity, it defaults to an **axis-aligned split**, ensuring robustness and adaptability in various scenarios.\n\nIn very large trees (e.g., depth 10 or more), the performance of `obliquetree` may converge closely with **traditional trees**. The true strength of `obliquetree` lies in their ability to perform exceptionally well at **shallower depths**, offering improved generalization with fewer splits. Moreover, thanks to linear projections, `obliquetree` significantly outperform traditional trees when working with datasets that exhibit **linear relationships**.\n\n-----\n## Installation\nTo install `obliquetree`, use the following pip command:\n```bash\npip install obliquetree\n```\n\nUsing the `obliquetree` library is simple and intuitive. Here's a more generic example that works for both classification and regression:\n\n\n```python\nfrom obliquetree import Classifier, Regressor\n\n# Initialize the model (Classifier or Regressor)\nmodel = Classifier(  # Replace \"Classifier\" with \"Regressor\" if performing regression\n    use_oblique=True,       # Enable oblique splits\n    max_depth=2,            # Set the maximum depth of the tree\n    n_pair=2,               # Number of feature pairs for optimization\n    random_state=42,        # Set a random state for reproducibility\n    categories=[0, 10, 32], # Specify which features are categorical\n)\n\n# Train the model on the training dataset\nmodel.fit(X_train, y_train)\n\n# Predict on the test dataset\ny_pred = model.predict(X_test)\n```\n-----\n\n## Documentation\nFor example usage, API details, comparisons with axis-aligned trees, and in-depth insights into the algorithmic foundation, we **strongly recommend** referring to the full [documentation](https://obliquetree.readthedocs.io/en/latest/).\n\n---\n## Key Features\n\n- **Oblique Splits**  \n  Perform oblique splits using linear combinations of features to capture complex patterns in data. Supports both linear and soft decision tree objectives for flexible and accurate modeling.\n\n- **Axis-Aligned Splits**  \n  Offers conventional (axis-aligned) splits, enabling users to leverage standard decision tree behavior for simplicity and interpretability.\n\n- **Feature Constraints**  \n  Limit the number of features used in oblique splits with the `n_pair` parameter, promoting simpler, more interpretable tree structures while retaining predictive power.\n\n- **Seamless Categorical Feature Handling**  \n  Natively supports categorical columns with minimal preprocessing. Only label encoding is required, removing the need for extensive data transformation.\n\n- **Robust Handling of Missing Values**  \n  Automatically assigns `NaN` values to the optimal leaf for axis-aligned splits.\n\n- **Customizable Tree Structures**  \n  The flexible API empowers users to design their own tree architectures easily.\n\n- **Exact Equivalence with `scikit-learn`**  \n  Guarantees results identical to `scikit-learn`'s decision trees when oblique and categorical splitting are disabled.\n\n- **Optimized Performance**  \n  Outperforms `scikit-learn` in terms of speed and efficiency when oblique and categorical splitting are disabled:\n  - Up to **50% faster** for datasets with float columns.\n  - Up to **200% faster** for datasets with integer columns.\n\n  ![Performance Comparison (Float)](docs/source/_static/sklearn_perf/performance_comparison_float.png)\n\n  ![Performance Comparison (Integer)](docs/source/_static/sklearn_perf/performance_comparison_int.png)\n\n\n----\n### Contributing\nContributions are welcome! If you'd like to improve `obliquetree` or suggest new features, feel free to fork the repository and submit a pull request.\n\n-----\n### License\n`obliquetree` is released under the MIT License. See the LICENSE file for more details.\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "Traditional and Oblique Decision Tree",
    "version": "1.0.3",
    "project_urls": {
        "Documentation": "https://obliquetree.readthedocs.io/en/latest/",
        "Repository": "https://github.com/sametcopur/obliquetree",
        "Tracker": "https://github.com/sametcopur/obliquetree/issues"
    },
    "split_keywords": [
        "python",
        " data-science",
        " machine-learning",
        " machine-learning-library",
        " explainable-ai",
        " decision-tree",
        " oblique-tree"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c26b85cbe1a6859f4bd7d9e8be7b6881d9ef62db029d00a656445c253097c960",
                "md5": "93a5d61fb32b3e54d8b3734e7bd0bec0",
                "sha256": "0b00d2514aa71c20edbcf77088d2356bd106638ea2345f0852b303020fae2dc4"
            },
            "downloads": -1,
            "filename": "obliquetree-1.0.3-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "93a5d61fb32b3e54d8b3734e7bd0bec0",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 1418043,
            "upload_time": "2025-07-29T07:50:26",
            "upload_time_iso_8601": "2025-07-29T07:50:26.497410Z",
            "url": "https://files.pythonhosted.org/packages/c2/6b/85cbe1a6859f4bd7d9e8be7b6881d9ef62db029d00a656445c253097c960/obliquetree-1.0.3-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3d665a4d5a5fd11eaa7d39f34519adddcc43395542c9dea52f688a2efdf6d4f2",
                "md5": "9c689c0cd74ea10c739b9d73fe2cf3f7",
                "sha256": "43873d70675fb5eff9f90c690117315248710f35da724934231d70c44dce83fe"
            },
            "downloads": -1,
            "filename": "obliquetree-1.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9c689c0cd74ea10c739b9d73fe2cf3f7",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 4334300,
            "upload_time": "2025-07-29T07:58:03",
            "upload_time_iso_8601": "2025-07-29T07:58:03.995718Z",
            "url": "https://files.pythonhosted.org/packages/3d/66/5a4d5a5fd11eaa7d39f34519adddcc43395542c9dea52f688a2efdf6d4f2/obliquetree-1.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5523033a331c53e73e040cb2da1fae68bb96eb9e4202b86fd17ea8dee26036af",
                "md5": "67be817c93bdcd37d4c4ea5b06f0cee4",
                "sha256": "810b0db84d00b842c59edc996a98acec5c4c937cdc4473faee97f6af86a97f95"
            },
            "downloads": -1,
            "filename": "obliquetree-1.0.3-cp310-cp310-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "67be817c93bdcd37d4c4ea5b06f0cee4",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 5385048,
            "upload_time": "2025-07-29T07:58:05",
            "upload_time_iso_8601": "2025-07-29T07:58:05.294835Z",
            "url": "https://files.pythonhosted.org/packages/55/23/033a331c53e73e040cb2da1fae68bb96eb9e4202b86fd17ea8dee26036af/obliquetree-1.0.3-cp310-cp310-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e5e6d92d07eb54b1a19c3cf161f012ee5f78a95373bad55e96f449b13ac46ab7",
                "md5": "aec5726f9415add16286f939227469ae",
                "sha256": "5e1a067448bfe509e5445e35de7e5718b32c281d77304ef2bb53dbbbb720dedf"
            },
            "downloads": -1,
            "filename": "obliquetree-1.0.3-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "aec5726f9415add16286f939227469ae",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.10",
            "size": 1378987,
            "upload_time": "2025-07-29T07:52:49",
            "upload_time_iso_8601": "2025-07-29T07:52:49.530288Z",
            "url": "https://files.pythonhosted.org/packages/e5/e6/d92d07eb54b1a19c3cf161f012ee5f78a95373bad55e96f449b13ac46ab7/obliquetree-1.0.3-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0a3dd2c77819821acf58bd72570b54fb23c91534b5a55f0cd576d363827dfbef",
                "md5": "ac76795363870a97d31d3431b70a46ac",
                "sha256": "2a68e8ff877f4f406af62c7531a6d50eceb45d8487dc0bde8d15d5eba8577484"
            },
            "downloads": -1,
            "filename": "obliquetree-1.0.3-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "ac76795363870a97d31d3431b70a46ac",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 1416273,
            "upload_time": "2025-07-29T07:50:27",
            "upload_time_iso_8601": "2025-07-29T07:50:27.936704Z",
            "url": "https://files.pythonhosted.org/packages/0a/3d/d2c77819821acf58bd72570b54fb23c91534b5a55f0cd576d363827dfbef/obliquetree-1.0.3-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "04a10bf6e502d6b2d1c6ed84c0ebf42632baf63482a9aa3a161a65a6bafbfa6d",
                "md5": "70996efc378174e7ece8a3a917a506ca",
                "sha256": "7c7d755111dd64a1230dcfab7633656435e27e88a460caf101b9ee4b26d5233c"
            },
            "downloads": -1,
            "filename": "obliquetree-1.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "70996efc378174e7ece8a3a917a506ca",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 4506352,
            "upload_time": "2025-07-29T07:58:06",
            "upload_time_iso_8601": "2025-07-29T07:58:06.505324Z",
            "url": "https://files.pythonhosted.org/packages/04/a1/0bf6e502d6b2d1c6ed84c0ebf42632baf63482a9aa3a161a65a6bafbfa6d/obliquetree-1.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c5b1279b0ded4459c9bd585c27805828dbc40fb3a4078618c846a5c3b48229c1",
                "md5": "3ee8bdbcb67f84800a67743e8452fcb3",
                "sha256": "a4381bec80cd864934c7629b25064b89b01ee1e4724e66efd05b2769e36e70da"
            },
            "downloads": -1,
            "filename": "obliquetree-1.0.3-cp311-cp311-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3ee8bdbcb67f84800a67743e8452fcb3",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 5555922,
            "upload_time": "2025-07-29T07:58:07",
            "upload_time_iso_8601": "2025-07-29T07:58:07.692928Z",
            "url": "https://files.pythonhosted.org/packages/c5/b1/279b0ded4459c9bd585c27805828dbc40fb3a4078618c846a5c3b48229c1/obliquetree-1.0.3-cp311-cp311-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e18c8e47585ccb63b08e6463805e8a03353aa7cea3f2e735de702a9844c57751",
                "md5": "5e6a74b13561b14a05ce82dcb44f24b2",
                "sha256": "610a464cf0a364bcbff53fe455d917e2f04cbb2ed429bb01270d59744fd6e7e3"
            },
            "downloads": -1,
            "filename": "obliquetree-1.0.3-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "5e6a74b13561b14a05ce82dcb44f24b2",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.10",
            "size": 1377678,
            "upload_time": "2025-07-29T07:52:50",
            "upload_time_iso_8601": "2025-07-29T07:52:50.504668Z",
            "url": "https://files.pythonhosted.org/packages/e1/8c/8e47585ccb63b08e6463805e8a03353aa7cea3f2e735de702a9844c57751/obliquetree-1.0.3-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "17001c6bc5c450291c94f8f9061df30a117d21e8279a6cb18a0b8096dfd41382",
                "md5": "47464b24f81ea4fb53c05dbaf5f94d04",
                "sha256": "e9457aacef5401b3e5ab84f119832cbd6dd8dbec7549801ea80db1e634844c12"
            },
            "downloads": -1,
            "filename": "obliquetree-1.0.3-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "47464b24f81ea4fb53c05dbaf5f94d04",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 1413388,
            "upload_time": "2025-07-29T07:50:29",
            "upload_time_iso_8601": "2025-07-29T07:50:29.365232Z",
            "url": "https://files.pythonhosted.org/packages/17/00/1c6bc5c450291c94f8f9061df30a117d21e8279a6cb18a0b8096dfd41382/obliquetree-1.0.3-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d39b227b240322b21db7c9f7ded1ae5ca26f5d9784d337573d7740a0fb322716",
                "md5": "db47b6b7d2546462913b4b894c368795",
                "sha256": "217895f6063d7d5087d31d731778363875a3b17d97da536d7a391bffdebc6a6a"
            },
            "downloads": -1,
            "filename": "obliquetree-1.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "db47b6b7d2546462913b4b894c368795",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 4453938,
            "upload_time": "2025-07-29T07:58:08",
            "upload_time_iso_8601": "2025-07-29T07:58:08.913539Z",
            "url": "https://files.pythonhosted.org/packages/d3/9b/227b240322b21db7c9f7ded1ae5ca26f5d9784d337573d7740a0fb322716/obliquetree-1.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b809cee4c98382e2a59c07dd847a17a69adf3bf9d4de33ba2c5e63572f9568b6",
                "md5": "88e42ce4e11aa1b527d977972439f485",
                "sha256": "bb5fa6e3b24310dd39fc2c88d1c31503f51dd3dff45336ca89539a08d9e52dbc"
            },
            "downloads": -1,
            "filename": "obliquetree-1.0.3-cp312-cp312-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "88e42ce4e11aa1b527d977972439f485",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 5477867,
            "upload_time": "2025-07-29T07:58:10",
            "upload_time_iso_8601": "2025-07-29T07:58:10.527611Z",
            "url": "https://files.pythonhosted.org/packages/b8/09/cee4c98382e2a59c07dd847a17a69adf3bf9d4de33ba2c5e63572f9568b6/obliquetree-1.0.3-cp312-cp312-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "956b245621199ac5d5d87dd10fdb6e846d6bfae4ed8ed9c403babe34494883c6",
                "md5": "dd7e7018a753b51c4675a8c7cf306eec",
                "sha256": "9740893212d65bbe0c17bbd8519d416e2c9ae2a51c74ab1188935fcef1e595fe"
            },
            "downloads": -1,
            "filename": "obliquetree-1.0.3-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "dd7e7018a753b51c4675a8c7cf306eec",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.10",
            "size": 1379179,
            "upload_time": "2025-07-29T07:52:52",
            "upload_time_iso_8601": "2025-07-29T07:52:52.167957Z",
            "url": "https://files.pythonhosted.org/packages/95/6b/245621199ac5d5d87dd10fdb6e846d6bfae4ed8ed9c403babe34494883c6/obliquetree-1.0.3-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "41824dfee3ec0abec63a2d72e907bc0bd9dd33de66a2710fe3943f0d91d4a59d",
                "md5": "766bcb0e4809a24525487bdcb031c7f5",
                "sha256": "b981b22bf2125f2c93c2802b773c73b2d025635422bf24813ef2dd69948dfe56"
            },
            "downloads": -1,
            "filename": "obliquetree-1.0.3-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "766bcb0e4809a24525487bdcb031c7f5",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.10",
            "size": 1408454,
            "upload_time": "2025-07-29T07:50:30",
            "upload_time_iso_8601": "2025-07-29T07:50:30.335860Z",
            "url": "https://files.pythonhosted.org/packages/41/82/4dfee3ec0abec63a2d72e907bc0bd9dd33de66a2710fe3943f0d91d4a59d/obliquetree-1.0.3-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bf2d84d0ba0b02a97a829e8b0a9f53d7f6dcd14fdd9ba5329839861e5c441a14",
                "md5": "a595e2a1018b80916b8e0e13c769b2aa",
                "sha256": "b1fd597c8785f7367e235be990f3bf8968eefe86988308f4ec19337a6ae4f10f"
            },
            "downloads": -1,
            "filename": "obliquetree-1.0.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a595e2a1018b80916b8e0e13c769b2aa",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.10",
            "size": 4445686,
            "upload_time": "2025-07-29T07:58:11",
            "upload_time_iso_8601": "2025-07-29T07:58:11.711700Z",
            "url": "https://files.pythonhosted.org/packages/bf/2d/84d0ba0b02a97a829e8b0a9f53d7f6dcd14fdd9ba5329839861e5c441a14/obliquetree-1.0.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "59e5333875d9017921b4cef10942c6a6a868ab3ca48be94620a8cc12f056b590",
                "md5": "9c11a3c88f9f8820062da258921f4f09",
                "sha256": "4f75f07807cfa338d503ebd965af72dd91f7f1b1df4577fb832d8949c3287a96"
            },
            "downloads": -1,
            "filename": "obliquetree-1.0.3-cp313-cp313-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9c11a3c88f9f8820062da258921f4f09",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.10",
            "size": 5464166,
            "upload_time": "2025-07-29T07:58:12",
            "upload_time_iso_8601": "2025-07-29T07:58:12.884223Z",
            "url": "https://files.pythonhosted.org/packages/59/e5/333875d9017921b4cef10942c6a6a868ab3ca48be94620a8cc12f056b590/obliquetree-1.0.3-cp313-cp313-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6ba62ef255b87b7c4124f8434bba2e97d5a2bf37af5dd5b6c93a5f005fb886ea",
                "md5": "9864124089d3638c9072dc95bafb5194",
                "sha256": "f93572212c974881531dd1e6640106bbefdef998898556804bf91b3f25113259"
            },
            "downloads": -1,
            "filename": "obliquetree-1.0.3-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "9864124089d3638c9072dc95bafb5194",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.10",
            "size": 1377758,
            "upload_time": "2025-07-29T07:52:53",
            "upload_time_iso_8601": "2025-07-29T07:52:53.702799Z",
            "url": "https://files.pythonhosted.org/packages/6b/a6/2ef255b87b7c4124f8434bba2e97d5a2bf37af5dd5b6c93a5f005fb886ea/obliquetree-1.0.3-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-29 07:50:26",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "sametcopur",
    "github_project": "obliquetree",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "obliquetree"
}
        
Elapsed time: 1.60488s