treemind


Nametreemind JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
Summaryfeature and feature interaction analyzer for gradient boosting
upload_time2025-07-23 18:36:52
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseBSD 3-Clause License
keywords python data-science machine-learning machine-learning-library explainable-ai gradient boosting
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
# treemind

`treemind` is a high-performance library for interpreting tree-based models. It supports regression, binary and multiclass classification, and handles both numerical and categorical features. By analyzing split intervals and feature interactions, `treemind` helps you understand which features drive predictions and how they interact making it ideal for model explanation, debugging, and auditing.


> A formal research paper detailing the theoretical foundation of `treemind` is forthcoming.

---

## Installation

Install `treemind` via pip:

```bash
pip install treemind
```

---

## Key Features

* **Feature Analysis**
  Quantifies how individual features influence predictions across specific decision boundaries.

* **Interaction Detection**
  Detects and visualizes interaction effects between two or more features at any order `n`, constrained by memory and time.

* **Optimized Performance**
  Fast even on deep models thanks to efficient Cython-backed core.

* **Rich Visualizations**
  Interactive and static plots to visualize importance, split intervals, and interaction strength.

* **Broad Model Support**
  Compatible with `xgboost`, `lightgbm`, `catboost`, `sklearn`, and `perpetual`. Works with regression, binary, and multiclass tasks. Supports categorical features.

---

## Algorithm & Performance

The `treemind` algorithm analyzes how often features and their combinations appear in decision paths, then summarizes their behavior over split intervals.

* [Algorithm Overview](https://treemind.readthedocs.io/en/latest/algorithm.html)
* [Performance Benchmarks](https://treemind.readthedocs.io/en/latest/experiments/experiment_main.html)

---

### Quickstart Example

This walkthrough shows how to use `treemind.Explainer` with a LightGBM model trained on the Breast Cancer dataset.

```python
from lightgbm import LGBMClassifier
from sklearn.datasets import load_breast_cancer

from treemind import Explainer
from treemind.plot import (
    feature_plot,
    interaction_plot,
    interaction_scatter_plot,
    importance_plot,
)

# Load sample data
X, y = load_breast_cancer(return_X_y=True, as_frame=True)

# Train a model
model = LGBMClassifier(verbose=-1)
model.fit(X, y)

# Create an explainer
explainer = Explainer(model)
```

---

### Count Feature Appearances

To see how often each feature (or feature pair) appears in the decision trees:

```python
explainer.count_node(degree=1)  # Individual feature usage
```

```text
| column_index | count |
|--------------|-------|
| 21           | 1739  |
| 27           | 1469  |
```

```python
explainer.count_node(degree=2)  # Pairwise feature usage
```

```text
| column1_index | column2_index | count |
|---------------|---------------|-------|
| 21            | 22            | 927   |
| 21            | 23            | 876   |
```

---

### One-Dimensional Feature Analysis

Analyze how a single feature influences the model:

```python
result1_d = explainer.explain(degree=1)
```

Inspect a specific feature (e.g., feature 21):

```python
result1_d[21]
```

```text
| worst_texture_lb | worst_texture_ub | value     | std      | count  |
|------------------|------------------|-----------|----------|--------|
| -inf             | 18.460           | 3.185128  | 8.479232 | 402.24 |
| 18.460           | 19.300           | 3.160656  | 8.519873 | 402.39 |
```

#### Feature Visualization

```python
feature_plot(result1_d, 21)
```

<p align="center">
  <img src="/docs/source/_static/api/feature_plot.png" alt="Feature Plot" width="80%">
</p>

#### Feature Importance

```python
result1_d.importance()
```

```text
| feature_0            | importance |
|----------------------|------------|
| worst_concave_points | 2.326004   |
| worst_perimeter      | 2.245493   |
```

```python
importance_plot(result1_d)
```

<p align="center">
  <img src="/docs/source/_static/api/importance_plot.png" alt="Feature Importance" width="80%">
</p>

---

### Two-Dimensional Interaction Analysis

Evaluate how two features interact to influence predictions:

```python
result2_d = explainer.explain(degree=2)
result2_d[21, 22]
```

```text
| worst_texture_lb | worst_texture_ub | worst_concave_points_lb | worst_concave_points_ub | value    | std      | count  |
|------------------|------------------|--------------------------|--------------------------|----------|----------|--------|
| -inf             | 18.46            | -inf                     | 0.058860                 | 4.929324 | 7.679424 | 355.40 |
```

#### Interaction Importance

```python
result2_d.importance()
```

```text
| feature_0         | feature_1            | importance |
|------------------|----------------------|------------|
| worst_perimeter  | worst_area           | 2.728454   |
| worst_texture    | worst_concave_points | 2.439605   |
```

```python
importance_plot(result2_d)
```

<p align="center">
  <img src="/docs/source/_static/api/importance_plot2d.png" alt="2D Importance" width="80%">
</p>

#### Interaction Plots

```python
interaction_plot(result2_d, (21, 22))
```

<p align="center">
  <img src="/docs/source/_static/api/interaction_plot.png" alt="Interaction Plot" width="80%">
</p>

```python
interaction_scatter_plot(X, result2_d, (21, 22))
```

<p align="center">
  <img src="/docs/source/_static/api/interaction_scatter_plot.png" alt="Interaction Scatter" width="80%">
</p>

---



## Contributing

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

---

## License

`treemind` is released under the MIT License. See the [LICENSE](./LICENSE) file for details.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "treemind",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "python, data-science, machine-learning, machine-learning-library, explainable-ai, gradient boosting",
    "author": null,
    "author_email": "Samet Copur <sametcopur@yahoo.com>",
    "download_url": null,
    "platform": null,
    "description": "\n# treemind\n\n`treemind` is a high-performance library for interpreting tree-based models. It supports regression, binary and multiclass classification, and handles both numerical and categorical features. By analyzing split intervals and feature interactions, `treemind` helps you understand which features drive predictions and how they interact making it ideal for model explanation, debugging, and auditing.\n\n\n> A formal research paper detailing the theoretical foundation of `treemind` is forthcoming.\n\n---\n\n## Installation\n\nInstall `treemind` via pip:\n\n```bash\npip install treemind\n```\n\n---\n\n## Key Features\n\n* **Feature Analysis**\n  Quantifies how individual features influence predictions across specific decision boundaries.\n\n* **Interaction Detection**\n  Detects and visualizes interaction effects between two or more features at any order `n`, constrained by memory and time.\n\n* **Optimized Performance**\n  Fast even on deep models thanks to efficient Cython-backed core.\n\n* **Rich Visualizations**\n  Interactive and static plots to visualize importance, split intervals, and interaction strength.\n\n* **Broad Model Support**\n  Compatible with `xgboost`, `lightgbm`, `catboost`, `sklearn`, and `perpetual`. Works with regression, binary, and multiclass tasks. Supports categorical features.\n\n---\n\n## Algorithm & Performance\n\nThe `treemind` algorithm analyzes how often features and their combinations appear in decision paths, then summarizes their behavior over split intervals.\n\n* [Algorithm Overview](https://treemind.readthedocs.io/en/latest/algorithm.html)\n* [Performance Benchmarks](https://treemind.readthedocs.io/en/latest/experiments/experiment_main.html)\n\n---\n\n### Quickstart Example\n\nThis walkthrough shows how to use `treemind.Explainer` with a LightGBM model trained on the Breast Cancer dataset.\n\n```python\nfrom lightgbm import LGBMClassifier\nfrom sklearn.datasets import load_breast_cancer\n\nfrom treemind import Explainer\nfrom treemind.plot import (\n    feature_plot,\n    interaction_plot,\n    interaction_scatter_plot,\n    importance_plot,\n)\n\n# Load sample data\nX, y = load_breast_cancer(return_X_y=True, as_frame=True)\n\n# Train a model\nmodel = LGBMClassifier(verbose=-1)\nmodel.fit(X, y)\n\n# Create an explainer\nexplainer = Explainer(model)\n```\n\n---\n\n### Count Feature Appearances\n\nTo see how often each feature (or feature pair) appears in the decision trees:\n\n```python\nexplainer.count_node(degree=1)  # Individual feature usage\n```\n\n```text\n| column_index | count |\n|--------------|-------|\n| 21           | 1739  |\n| 27           | 1469  |\n```\n\n```python\nexplainer.count_node(degree=2)  # Pairwise feature usage\n```\n\n```text\n| column1_index | column2_index | count |\n|---------------|---------------|-------|\n| 21            | 22            | 927   |\n| 21            | 23            | 876   |\n```\n\n---\n\n### One-Dimensional Feature Analysis\n\nAnalyze how a single feature influences the model:\n\n```python\nresult1_d = explainer.explain(degree=1)\n```\n\nInspect a specific feature (e.g., feature 21):\n\n```python\nresult1_d[21]\n```\n\n```text\n| worst_texture_lb | worst_texture_ub | value     | std      | count  |\n|------------------|------------------|-----------|----------|--------|\n| -inf             | 18.460           | 3.185128  | 8.479232 | 402.24 |\n| 18.460           | 19.300           | 3.160656  | 8.519873 | 402.39 |\n```\n\n#### Feature Visualization\n\n```python\nfeature_plot(result1_d, 21)\n```\n\n<p align=\"center\">\n  <img src=\"/docs/source/_static/api/feature_plot.png\" alt=\"Feature Plot\" width=\"80%\">\n</p>\n\n#### Feature Importance\n\n```python\nresult1_d.importance()\n```\n\n```text\n| feature_0            | importance |\n|----------------------|------------|\n| worst_concave_points | 2.326004   |\n| worst_perimeter      | 2.245493   |\n```\n\n```python\nimportance_plot(result1_d)\n```\n\n<p align=\"center\">\n  <img src=\"/docs/source/_static/api/importance_plot.png\" alt=\"Feature Importance\" width=\"80%\">\n</p>\n\n---\n\n### Two-Dimensional Interaction Analysis\n\nEvaluate how two features interact to influence predictions:\n\n```python\nresult2_d = explainer.explain(degree=2)\nresult2_d[21, 22]\n```\n\n```text\n| worst_texture_lb | worst_texture_ub | worst_concave_points_lb | worst_concave_points_ub | value    | std      | count  |\n|------------------|------------------|--------------------------|--------------------------|----------|----------|--------|\n| -inf             | 18.46            | -inf                     | 0.058860                 | 4.929324 | 7.679424 | 355.40 |\n```\n\n#### Interaction Importance\n\n```python\nresult2_d.importance()\n```\n\n```text\n| feature_0         | feature_1            | importance |\n|------------------|----------------------|------------|\n| worst_perimeter  | worst_area           | 2.728454   |\n| worst_texture    | worst_concave_points | 2.439605   |\n```\n\n```python\nimportance_plot(result2_d)\n```\n\n<p align=\"center\">\n  <img src=\"/docs/source/_static/api/importance_plot2d.png\" alt=\"2D Importance\" width=\"80%\">\n</p>\n\n#### Interaction Plots\n\n```python\ninteraction_plot(result2_d, (21, 22))\n```\n\n<p align=\"center\">\n  <img src=\"/docs/source/_static/api/interaction_plot.png\" alt=\"Interaction Plot\" width=\"80%\">\n</p>\n\n```python\ninteraction_scatter_plot(X, result2_d, (21, 22))\n```\n\n<p align=\"center\">\n  <img src=\"/docs/source/_static/api/interaction_scatter_plot.png\" alt=\"Interaction Scatter\" width=\"80%\">\n</p>\n\n---\n\n\n\n## Contributing\n\nContributions are welcome! If you'd like to improve `treemind` or suggest new features, feel free to fork the repository and submit a pull request.\n\n---\n\n## License\n\n`treemind` is released under the MIT License. See the [LICENSE](./LICENSE) file for details.\n",
    "bugtrack_url": null,
    "license": "BSD 3-Clause License",
    "summary": "feature and feature interaction analyzer for gradient boosting",
    "version": "0.2.0",
    "project_urls": {
        "Documentation": "https://treemind.readthedocs.io/en/latest/",
        "Repository": "https://github.com/sametcopur/treemind",
        "Tracker": "https://github.com/sametcopur/treemind/issues"
    },
    "split_keywords": [
        "python",
        " data-science",
        " machine-learning",
        " machine-learning-library",
        " explainable-ai",
        " gradient boosting"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1a7f5ba1a1cee784d914e6c54e9d7ae48daf5d9b95f0b82ff0c3b30a2b5ff473",
                "md5": "d05a1503dad878698ed3bff3fd0a9446",
                "sha256": "a230de352bd2e4d6a3c2a248d7f34e0ba15fdcaabd5d6444400399e39f88eaec"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d05a1503dad878698ed3bff3fd0a9446",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1616816,
            "upload_time": "2025-07-23T18:36:52",
            "upload_time_iso_8601": "2025-07-23T18:36:52.570302Z",
            "url": "https://files.pythonhosted.org/packages/1a/7f/5ba1a1cee784d914e6c54e9d7ae48daf5d9b95f0b82ff0c3b30a2b5ff473/treemind-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "43b78eb4f1f026c77376fa0980f2352d2a691cb9de971b7183344d0f383fc6a6",
                "md5": "7d068489ea0a664660f9ce0788670d64",
                "sha256": "d062e3e6369ac08c93ce9b4d2673a49cd51977ac6805692cc75ef9d918f66631"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "7d068489ea0a664660f9ce0788670d64",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1582020,
            "upload_time": "2025-07-23T18:34:21",
            "upload_time_iso_8601": "2025-07-23T18:34:21.508315Z",
            "url": "https://files.pythonhosted.org/packages/43/b7/8eb4f1f026c77376fa0980f2352d2a691cb9de971b7183344d0f383fc6a6/treemind-0.2.0-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "aa3b79976bf8695e10f0a287007d8b116ba3442c11ae34a5a8836894f6437c46",
                "md5": "3cdedc39aa2cdc1601ba50e4d70cafbf",
                "sha256": "0df723d17372c58f04deabe07989ee7ca2020a8046047e4d545cde0d7cdec327"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3cdedc39aa2cdc1601ba50e4d70cafbf",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 7225990,
            "upload_time": "2025-07-23T18:45:07",
            "upload_time_iso_8601": "2025-07-23T18:45:07.139706Z",
            "url": "https://files.pythonhosted.org/packages/aa/3b/79976bf8695e10f0a287007d8b116ba3442c11ae34a5a8836894f6437c46/treemind-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "be329d7265c83afb60e78f2960ad7deb81a3767038cd9e2a057fe5f12d8e84f9",
                "md5": "a2f5a3ba01375a40e763f927dc66e0da",
                "sha256": "a6a2ab3354db7190897f428347dbdd0f5ab2609ea3dc8139c92d10ed48a7726d"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a2f5a3ba01375a40e763f927dc66e0da",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 8277375,
            "upload_time": "2025-07-23T18:45:08",
            "upload_time_iso_8601": "2025-07-23T18:45:08.598394Z",
            "url": "https://files.pythonhosted.org/packages/be/32/9d7265c83afb60e78f2960ad7deb81a3767038cd9e2a057fe5f12d8e84f9/treemind-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bfb39b1a55ff8c50431e37d0556a55acc9a1f6f75497f98c365c4c30ad0297a6",
                "md5": "2dd3498b6b76e52ff76cc80ae61978a4",
                "sha256": "c1dfa7fe8c748bcd0dd87ecd5c5b48c8b9cb27164eb92eb82a6dbcaee4c0fe04"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "2dd3498b6b76e52ff76cc80ae61978a4",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1534419,
            "upload_time": "2025-07-23T18:37:14",
            "upload_time_iso_8601": "2025-07-23T18:37:14.232324Z",
            "url": "https://files.pythonhosted.org/packages/bf/b3/9b1a55ff8c50431e37d0556a55acc9a1f6f75497f98c365c4c30ad0297a6/treemind-0.2.0-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5acf8ac26ba43f55df302c8cb8dfa92bcdb1bcafbeb8ce1f4fad771d1fb3fc82",
                "md5": "204d726f7165587c9c01930ebcf049b1",
                "sha256": "b69c4beca1ff73ebcd38aefd43317e2c21a2d83ba6d0c2d0a04a6e133801d042"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "204d726f7165587c9c01930ebcf049b1",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1616050,
            "upload_time": "2025-07-23T18:36:53",
            "upload_time_iso_8601": "2025-07-23T18:36:53.611581Z",
            "url": "https://files.pythonhosted.org/packages/5a/cf/8ac26ba43f55df302c8cb8dfa92bcdb1bcafbeb8ce1f4fad771d1fb3fc82/treemind-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "12f649a11992c5d39af402587c63ea8ecfc283692c24348b40a4e1c93b692cb7",
                "md5": "6d6fdf4f74a03865307f85de05764d18",
                "sha256": "8d3286c94e2068bc767539e3e3384dc2c8b8b0c45fcb55c06598da5357f3a978"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "6d6fdf4f74a03865307f85de05764d18",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1580878,
            "upload_time": "2025-07-23T18:34:23",
            "upload_time_iso_8601": "2025-07-23T18:34:23.625512Z",
            "url": "https://files.pythonhosted.org/packages/12/f6/49a11992c5d39af402587c63ea8ecfc283692c24348b40a4e1c93b692cb7/treemind-0.2.0-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4bcf61f3e37488ea7d4a21171085096939b1c410f895c96fd6a91ded6983ebab",
                "md5": "8fed203231f935537135cbb9c7995516",
                "sha256": "97f369fc737d56bd338f8d95fe4007abab518611e7ec256f8cfdf73e76db35a2"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8fed203231f935537135cbb9c7995516",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 7393670,
            "upload_time": "2025-07-23T18:45:09",
            "upload_time_iso_8601": "2025-07-23T18:45:09.962469Z",
            "url": "https://files.pythonhosted.org/packages/4b/cf/61f3e37488ea7d4a21171085096939b1c410f895c96fd6a91ded6983ebab/treemind-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5f589a75c4863474e0534ad9553c2b9c8ffa77c0f0960751c3b7fdd25b999d81",
                "md5": "f6d12aec5ba867f222e63e12ac18de99",
                "sha256": "0f20e50c69d4f8aaac8d7053f8011bd25a6de1b277ad157e5b5608b43d0a6c72"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f6d12aec5ba867f222e63e12ac18de99",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 8445017,
            "upload_time": "2025-07-23T18:45:11",
            "upload_time_iso_8601": "2025-07-23T18:45:11.402613Z",
            "url": "https://files.pythonhosted.org/packages/5f/58/9a75c4863474e0534ad9553c2b9c8ffa77c0f0960751c3b7fdd25b999d81/treemind-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "688351254f6acd8f1909b55dc7dcb1ecc1e389ac0bd1e358bf8990c4853a4998",
                "md5": "a82637452dbd2bd46c1e1413ec5d2361",
                "sha256": "cc08fff29ef54feb4b85d26a93f32f922320fc2ee7c02c3dfffc409f091fe8f2"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "a82637452dbd2bd46c1e1413ec5d2361",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1533025,
            "upload_time": "2025-07-23T18:37:15",
            "upload_time_iso_8601": "2025-07-23T18:37:15.266227Z",
            "url": "https://files.pythonhosted.org/packages/68/83/51254f6acd8f1909b55dc7dcb1ecc1e389ac0bd1e358bf8990c4853a4998/treemind-0.2.0-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f81c21a8f3c21d18eba9dae7e9e5fff208692e7e3151efa3bb884ea65f3cd4e9",
                "md5": "5bb81bcd3eb8c4f1ddeb85ae789d2ea5",
                "sha256": "3b8754c653891739ea0ef01824cc22b4e3c957db3feb843bcc65c9779ab146e9"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5bb81bcd3eb8c4f1ddeb85ae789d2ea5",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1617201,
            "upload_time": "2025-07-23T18:36:54",
            "upload_time_iso_8601": "2025-07-23T18:36:54.595174Z",
            "url": "https://files.pythonhosted.org/packages/f8/1c/21a8f3c21d18eba9dae7e9e5fff208692e7e3151efa3bb884ea65f3cd4e9/treemind-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "330c643c83bc3ee033141c9af0c3aef29a0bd7f3c92e00fb2c06bd4194539f1d",
                "md5": "1cb07338a4dba2570735fa8705d1b95e",
                "sha256": "59d21eb9170dbb81f1e517fd2c864d1a082bdff1c489e27e33184099cfc7a408"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "1cb07338a4dba2570735fa8705d1b95e",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1578007,
            "upload_time": "2025-07-23T18:34:25",
            "upload_time_iso_8601": "2025-07-23T18:34:25.546074Z",
            "url": "https://files.pythonhosted.org/packages/33/0c/643c83bc3ee033141c9af0c3aef29a0bd7f3c92e00fb2c06bd4194539f1d/treemind-0.2.0-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "09fed12a1984d55881504d610855b23619ba6b57b5cd40d144589407b54112de",
                "md5": "aeee241c98d4c940aa1fd87170fdbd86",
                "sha256": "9ee6cff65088b6ea7104f328385150ffc94d7b8bf85e05e7cf95d2937411be9e"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "aeee241c98d4c940aa1fd87170fdbd86",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 7235948,
            "upload_time": "2025-07-23T18:45:12",
            "upload_time_iso_8601": "2025-07-23T18:45:12.899552Z",
            "url": "https://files.pythonhosted.org/packages/09/fe/d12a1984d55881504d610855b23619ba6b57b5cd40d144589407b54112de/treemind-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ab0403fcb463631612aab20c8918185abbc74e8c5929da331990d4287ea0c41a",
                "md5": "6284957b094eb7f21812d6d17b625a2c",
                "sha256": "b55d9918a1d7de52f035a4e1a6afc94c51a2a2b3f4e073a3b8fcca365d10bb9c"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6284957b094eb7f21812d6d17b625a2c",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 8272423,
            "upload_time": "2025-07-23T18:45:14",
            "upload_time_iso_8601": "2025-07-23T18:45:14.247692Z",
            "url": "https://files.pythonhosted.org/packages/ab/04/03fcb463631612aab20c8918185abbc74e8c5929da331990d4287ea0c41a/treemind-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0083223b65d1b066401bc126d0446f80ec81e0bb79917d0ccec6669b84db1a12",
                "md5": "377168487bbd71b4dcfd996183909921",
                "sha256": "06c3d2ffee141df9e15451659833b3de7da24708875ece63cbbddf0d82ba1c41"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "377168487bbd71b4dcfd996183909921",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1535130,
            "upload_time": "2025-07-23T18:37:16",
            "upload_time_iso_8601": "2025-07-23T18:37:16.335619Z",
            "url": "https://files.pythonhosted.org/packages/00/83/223b65d1b066401bc126d0446f80ec81e0bb79917d0ccec6669b84db1a12/treemind-0.2.0-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3d58953782ed40b4efe508f0674e8eb14c959fe41f3ea923867a3d99ea428c9c",
                "md5": "3f268007e7b6b0233436f2846ba605d0",
                "sha256": "b7b16165b202fa949871f90eb14ecfc8adca14beeadb5661640f2f9b5f074664"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3f268007e7b6b0233436f2846ba605d0",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1620245,
            "upload_time": "2025-07-23T18:36:56",
            "upload_time_iso_8601": "2025-07-23T18:36:56.004162Z",
            "url": "https://files.pythonhosted.org/packages/3d/58/953782ed40b4efe508f0674e8eb14c959fe41f3ea923867a3d99ea428c9c/treemind-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d401d96c002ab6b409285837589ffb0a7259f4aed743d71d414810a36c3a2d39",
                "md5": "8f648f8d6d75b6b387bf1b7478652a82",
                "sha256": "1b4be7c8efc0c0583ec6a7641443a1da09e5db23badf57cf4f63e0091921267d"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "8f648f8d6d75b6b387bf1b7478652a82",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1585255,
            "upload_time": "2025-07-23T18:34:26",
            "upload_time_iso_8601": "2025-07-23T18:34:26.734395Z",
            "url": "https://files.pythonhosted.org/packages/d4/01/d96c002ab6b409285837589ffb0a7259f4aed743d71d414810a36c3a2d39/treemind-0.2.0-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7b0cd9751984d3838d92f069b40bc646761e68533cef9fc4db76079f8cdf52d7",
                "md5": "9e0149eb11ba8aafae259a4f416f0b0e",
                "sha256": "1420f74ed7ed2bc46aedaca1388dfbd9533baf2b4411f851ff1305dc9c659653"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9e0149eb11ba8aafae259a4f416f0b0e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 7211673,
            "upload_time": "2025-07-23T18:45:15",
            "upload_time_iso_8601": "2025-07-23T18:45:15.540523Z",
            "url": "https://files.pythonhosted.org/packages/7b/0c/d9751984d3838d92f069b40bc646761e68533cef9fc4db76079f8cdf52d7/treemind-0.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c8bd85dec089653d138820c1d0ccaaaf718abdf0da598e64ecc9bc46bd7fe62f",
                "md5": "d7379ad043d5552db931e7c4e2e61e9e",
                "sha256": "315da18696bc35ab8d63d90a4ae5fbb38bd4fca0a5e3461b63860f2412b5b3e3"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d7379ad043d5552db931e7c4e2e61e9e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 8265294,
            "upload_time": "2025-07-23T18:45:17",
            "upload_time_iso_8601": "2025-07-23T18:45:17.227789Z",
            "url": "https://files.pythonhosted.org/packages/c8/bd/85dec089653d138820c1d0ccaaaf718abdf0da598e64ecc9bc46bd7fe62f/treemind-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "64f3f359c6b230f687785f0c3b0478534535700941f0fecfa3079b47c9be1fb4",
                "md5": "e5579c04ac44114a1bd8a86a37f77181",
                "sha256": "f35b4e72daf9afba7b034ae1ab95bc94c48dd1e2eb2bbdeb88bce85978a302bc"
            },
            "downloads": -1,
            "filename": "treemind-0.2.0-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "e5579c04ac44114a1bd8a86a37f77181",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1537809,
            "upload_time": "2025-07-23T18:37:17",
            "upload_time_iso_8601": "2025-07-23T18:37:17.896457Z",
            "url": "https://files.pythonhosted.org/packages/64/f3/f359c6b230f687785f0c3b0478534535700941f0fecfa3079b47c9be1fb4/treemind-0.2.0-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-23 18:36:52",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "sametcopur",
    "github_project": "treemind",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "treemind"
}
        
Elapsed time: 0.61785s