=============================================
binlearn - Binning and Discretization Library
=============================================
.. image:: https://img.shields.io/pypi/v/binlearn
:alt: PyPI Version
:target: https://pypi.org/project/binlearn/
.. image:: https://img.shields.io/pypi/pyversions/binlearn
:alt: Python Versions
:target: https://pypi.org/project/binlearn/
.. image:: https://img.shields.io/github/actions/workflow/status/TheDAALab/binlearn/build.yml?branch=main
:alt: Build Status
:target: https://github.com/TheDAALab/binlearn/actions/workflows/build.yml
.. image:: https://img.shields.io/codecov/c/github/TheDAALab/binlearn
:alt: Code Coverage
:target: https://codecov.io/gh/TheDAALab/binlearn
.. image:: https://img.shields.io/github/license/TheDAALab/binlearn
:alt: License
:target: https://github.com/TheDAALab/binlearn/blob/main/LICENSE
.. image:: https://img.shields.io/readthedocs/binlearn
:alt: Documentation Status
:target: https://binlearn.readthedocs.io/
.. image:: https://img.shields.io/pypi/dm/binlearn
:alt: Monthly Downloads
:target: https://pypi.org/project/binlearn/
.. image:: https://img.shields.io/github/stars/TheDAALab/binlearn?style=social
:alt: GitHub Stars
:target: https://github.com/TheDAALab/binlearn
.. image:: https://img.shields.io/badge/code%20style-ruff-000000.svg
:alt: Code Style - Ruff
:target: https://github.com/astral-sh/ruff
.. image:: https://img.shields.io/badge/typing-mypy-blue
:alt: Type Checking - MyPy
:target: https://mypy.readthedocs.io/
A modern, type-safe Python library for data binning and discretization with comprehensive error handling, sklearn compatibility, and DataFrame support. Features our new **SingletonBinning** method for cleaner categorical data encoding!
๐ **Key Features**
---------------------
โจ **Multiple Binning Methods**
* **EqualWidthBinning** - Equal-width intervals across data range
* **EqualFrequencyBinning** - Equal-frequency (quantile-based) bins
* **KMeansBinning** - K-means clustering-based discretization
* **EqualWidthMinimumWeightBinning** - Weight-constrained equal-width binning
* **SupervisedBinning** - Decision tree-based supervised binning for classification and regression
* **ManualIntervalBinning** - Custom interval boundary specification
* **ManualFlexibleBinning** - Mixed interval and singleton bin definitions
* **SingletonBinning** - Clean categorical encoding for discrete values ๐
๐ง **Framework Integration**
* **Pandas DataFrames** - Native support with column name preservation
* **Polars DataFrames** - High-performance columnar data support (optional)
* **NumPy Arrays** - Efficient numerical array processing
* **Scikit-learn Pipelines** - Full transformer compatibility
โก **Modern Code Quality**
* **Type Safety** - 100% mypy compliance with comprehensive type annotations
* **Code Quality** - 100% ruff compliance with modern Python syntax
* **Error Handling** - Comprehensive validation with helpful error messages and suggestions
* **Test Coverage** - 100% code coverage with 841 comprehensive tests
* **Documentation** - Extensive examples and API documentation with SingletonBinning guide
๐ฆ **Installation**
---------------------
.. code-block:: bash
pip install binlearn
๐ฅ **Quick Start**
--------------------
.. code-block:: python
import numpy as np
import pandas as pd
from binlearn import EqualWidthBinning, SupervisedBinning, SingletonBinning
# Create sample data
data = pd.DataFrame({
'age': np.random.normal(35, 10, 1000),
'income': np.random.lognormal(10, 0.5, 1000),
'score': np.random.uniform(0, 100, 1000)
})
# Equal-width binning with DataFrame preservation
binner = EqualWidthBinning(n_bins=5, preserve_dataframe=True)
data_binned = binner.fit_transform(data)
print(f"Original shape: {data.shape}")
print(f"Binned shape: {data_binned.shape}")
print(f"Bin edges for age: {binner.bin_edges_['age']}")
# NEW: SingletonBinning for categorical features
categorical_data = pd.DataFrame({
'category': ['A', 'B', 'A', 'C', 'B', 'A'],
'rating': [1, 2, 1, 3, 2, 1]
})
singleton_binner = SingletonBinning(preserve_dataframe=True)
categorical_binned = singleton_binner.fit_transform(categorical_data)
print(f"Categorical binning: {categorical_binned.shape}")
๐ฏ **Supervised Binning Example**
-----------------------------------
.. code-block:: python
from binlearn import SupervisedBinning
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
# Create classification dataset
X, y = make_classification(n_samples=1000, n_features=4, n_classes=2, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create supervised binner that considers target variable
sup_binner = SupervisedBinning(
n_bins=4,
task_type='classification',
tree_params={'max_depth': 3, 'min_samples_leaf': 20}
)
# Fit using guidance data (target variable)
X_train_binned = sup_binner.fit_transform(X_train, guidance_data=y_train)
X_test_binned = sup_binner.transform(X_test)
print(f"Supervised binning created bins optimized for target separation")
print(f"Bin edges per feature: {[len(edges)-1 for edges in sup_binner.bin_edges_.values()]}")
๐ ๏ธ **Scikit-learn Integration**
---------------------------------
.. code-block:: python
from sklearn.pipeline import Pipeline
from sklearn.ensemble import RandomForestClassifier
from binlearn import EqualFrequencyBinning
# Create ML pipeline with binning preprocessing
pipeline = Pipeline([
('binning', EqualFrequencyBinning(n_bins=5)),
('classifier', RandomForestClassifier(random_state=42))
])
# Train and evaluate
pipeline.fit(X_train, y_train)
accuracy = pipeline.score(X_test, y_test)
print(f"Pipeline accuracy: {accuracy:.3f}")
๐ **Available Methods**
--------------------------
**Interval-based Methods:**
* ``EqualWidthBinning`` - Creates bins of equal width across the data range
* ``EqualFrequencyBinning`` - Creates bins with approximately equal number of samples
* ``KMeansBinning`` - Uses K-means clustering to determine bin boundaries
* ``EqualWidthMinimumWeightBinning`` - Equal-width bins with weight constraints
**Flexible Methods:**
* ``ManualIntervalBinning`` - Specify custom interval boundaries
* ``ManualFlexibleBinning`` - Define mixed interval and singleton bins
**Categorical Methods:**
* ``SingletonBinning`` - Clean categorical encoding for discrete values ๐
**Supervised Methods:**
* ``SupervisedBinning`` - Decision tree-based binning optimized for target variables (classification and regression)
โ๏ธ **Requirements**
---------------------
**Python Versions**: 3.10, 3.11, 3.12, 3.13
**Core Dependencies**:
* NumPy >= 1.21.0
* SciPy >= 1.7.0
* Scikit-learn >= 1.0.0
* kmeans1d >= 0.3.0
**Optional Dependencies**:
* Pandas >= 1.3.0 (for DataFrame support)
* Polars >= 0.15.0 (for Polars DataFrame support)
**Development Dependencies**:
* pytest >= 6.0 (for testing)
* ruff >= 0.1.0 (for linting and formatting)
* mypy >= 1.0.0 (for type checking)
๐งช **Development Setup**
--------------------------
.. code-block:: bash
# Clone repository
git clone https://github.com/TheDAALab/binlearn.git
cd binlearn
# Install in development mode with all dependencies
pip install -e ".[tests,dev,pandas,polars]"
# Run all tests
pytest
# Run code quality checks
ruff check binlearn/
mypy binlearn/ --ignore-missing-imports
# Build documentation
cd docs && make html
๐ **Code Quality Standards**
-------------------------------
* โ
**100% Test Coverage** - Comprehensive test suite with 841 tests
* โ
**100% Type Safety** - Complete mypy compliance with modern type annotations
* โ
**100% Code Quality** - Full ruff compliance with modern Python standards
* * โ
**Comprehensive Documentation** - Detailed API docs and examples with SingletonBinning guide
* โ
**Modern Python** - Uses latest Python features and best practices
* โ
**Robust Error Handling** - Helpful error messages with actionable suggestions
๐ค **Contributing**
---------------------
We welcome contributions! Here's how to get started:
1. Fork the repository on GitHub
2. Create a feature branch: ``git checkout -b feature/your-feature``
3. Make your changes and add tests
4. Ensure all quality checks pass:
.. code-block:: bash
pytest # Run tests
ruff check binlearn/ # Check code quality
mypy binlearn/ --ignore-missing-imports # Check types
5. Submit a pull request
**Areas for Contribution**:
* ๐ Bug reports and fixes
* โจ New binning algorithms
* ๐ Documentation improvements
* ๐งช Additional test cases
* ๐ฏ Performance optimizations
๐ **Links**
--------------
* **GitHub Repository**: https://github.com/TheDAALab/binlearn
* **Issue Tracker**: https://github.com/TheDAALab/binlearn/issues
* **Documentation**: https://binlearn.readthedocs.io/
๐ **License**
----------------
This project is licensed under the MIT License. See the `LICENSE <https://github.com/TheDAALab/binlearn/blob/main/LICENSE>`_ file for details.
---
**Developed by TheDAALab**
*A modern, type-safe binning framework for Python data science workflows.*
.. image:: https://img.shields.io/badge/Powered%20by-Python-blue.svg
:alt: Powered by Python
:target: https://www.python.org/
.. image:: https://img.shields.io/badge/Built%20with-NumPy-orange.svg
:alt: Built with NumPy
:target: https://numpy.org/
.. image:: https://img.shields.io/badge/Compatible%20with-Pandas-green.svg
:alt: Compatible with Pandas
:target: https://pandas.pydata.org/
.. image:: https://img.shields.io/badge/Integrates%20with-Scikit--learn-red.svg
:alt: Integrates with Scikit-learn
:target: https://scikit-learn.org/
.. image:: https://img.shields.io/pypi/status/binlearn
:alt: Development Status
:target: https://pypi.org/project/binlearn/
.. image:: https://img.shields.io/github/contributors/TheDAALab/binlearn
:alt: Contributors
:target: https://github.com/TheDAALab/binlearn/graphs/contributors
Raw data
{
"_id": null,
"home_page": null,
"name": "binlearn",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "The DAALAB <gyorgy.kovacs@daalab.com>",
"keywords": "binning, discretization, binlearn, data preprocessing, machine learning, data science, feature engineering",
"author": null,
"author_email": "The DAALAB <gyorgy.kovacs@daalab.com>",
"download_url": "https://files.pythonhosted.org/packages/6e/ff/d8f9e06ee6cd471188442848a3f73a1904d91503857bb9c69b274a836634/binlearn-0.1.14.tar.gz",
"platform": null,
"description": "=============================================\nbinlearn - Binning and Discretization Library\n=============================================\n\n.. image:: https://img.shields.io/pypi/v/binlearn\n :alt: PyPI Version\n :target: https://pypi.org/project/binlearn/\n\n.. image:: https://img.shields.io/pypi/pyversions/binlearn\n :alt: Python Versions\n :target: https://pypi.org/project/binlearn/\n\n.. image:: https://img.shields.io/github/actions/workflow/status/TheDAALab/binlearn/build.yml?branch=main\n :alt: Build Status\n :target: https://github.com/TheDAALab/binlearn/actions/workflows/build.yml\n\n.. image:: https://img.shields.io/codecov/c/github/TheDAALab/binlearn\n :alt: Code Coverage\n :target: https://codecov.io/gh/TheDAALab/binlearn\n\n.. image:: https://img.shields.io/github/license/TheDAALab/binlearn\n :alt: License\n :target: https://github.com/TheDAALab/binlearn/blob/main/LICENSE\n\n.. image:: https://img.shields.io/readthedocs/binlearn\n :alt: Documentation Status\n :target: https://binlearn.readthedocs.io/\n\n.. image:: https://img.shields.io/pypi/dm/binlearn\n :alt: Monthly Downloads\n :target: https://pypi.org/project/binlearn/\n\n.. image:: https://img.shields.io/github/stars/TheDAALab/binlearn?style=social\n :alt: GitHub Stars\n :target: https://github.com/TheDAALab/binlearn\n\n.. image:: https://img.shields.io/badge/code%20style-ruff-000000.svg\n :alt: Code Style - Ruff\n :target: https://github.com/astral-sh/ruff\n\n.. image:: https://img.shields.io/badge/typing-mypy-blue\n :alt: Type Checking - MyPy\n :target: https://mypy.readthedocs.io/\n\nA modern, type-safe Python library for data binning and discretization with comprehensive error handling, sklearn compatibility, and DataFrame support. Features our new **SingletonBinning** method for cleaner categorical data encoding!\n\n\ud83d\ude80 **Key Features**\n---------------------\n\n\u2728 **Multiple Binning Methods**\n * **EqualWidthBinning** - Equal-width intervals across data range\n * **EqualFrequencyBinning** - Equal-frequency (quantile-based) bins \n * **KMeansBinning** - K-means clustering-based discretization\n * **EqualWidthMinimumWeightBinning** - Weight-constrained equal-width binning\n * **SupervisedBinning** - Decision tree-based supervised binning for classification and regression\n * **ManualIntervalBinning** - Custom interval boundary specification\n * **ManualFlexibleBinning** - Mixed interval and singleton bin definitions\n * **SingletonBinning** - Clean categorical encoding for discrete values \ud83c\udd95\n\n\ud83d\udd27 **Framework Integration**\n * **Pandas DataFrames** - Native support with column name preservation\n * **Polars DataFrames** - High-performance columnar data support (optional)\n * **NumPy Arrays** - Efficient numerical array processing\n * **Scikit-learn Pipelines** - Full transformer compatibility\n\n\u26a1 **Modern Code Quality**\n * **Type Safety** - 100% mypy compliance with comprehensive type annotations\n * **Code Quality** - 100% ruff compliance with modern Python syntax\n * **Error Handling** - Comprehensive validation with helpful error messages and suggestions\n * **Test Coverage** - 100% code coverage with 841 comprehensive tests\n * **Documentation** - Extensive examples and API documentation with SingletonBinning guide\n\n\ud83d\udce6 **Installation**\n---------------------\n\n.. code-block:: bash\n\n pip install binlearn\n\n\ud83d\udd25 **Quick Start**\n--------------------\n\n.. code-block:: python\n\n import numpy as np\n import pandas as pd\n from binlearn import EqualWidthBinning, SupervisedBinning, SingletonBinning\n \n # Create sample data\n data = pd.DataFrame({\n 'age': np.random.normal(35, 10, 1000),\n 'income': np.random.lognormal(10, 0.5, 1000),\n 'score': np.random.uniform(0, 100, 1000)\n })\n \n # Equal-width binning with DataFrame preservation\n binner = EqualWidthBinning(n_bins=5, preserve_dataframe=True)\n data_binned = binner.fit_transform(data)\n \n print(f\"Original shape: {data.shape}\")\n print(f\"Binned shape: {data_binned.shape}\")\n print(f\"Bin edges for age: {binner.bin_edges_['age']}\")\n \n # NEW: SingletonBinning for categorical features\n categorical_data = pd.DataFrame({\n 'category': ['A', 'B', 'A', 'C', 'B', 'A'],\n 'rating': [1, 2, 1, 3, 2, 1]\n })\n \n singleton_binner = SingletonBinning(preserve_dataframe=True)\n categorical_binned = singleton_binner.fit_transform(categorical_data)\n print(f\"Categorical binning: {categorical_binned.shape}\")\n\n\ud83c\udfaf **Supervised Binning Example**\n-----------------------------------\n\n.. code-block:: python\n\n from binlearn import SupervisedBinning\n from sklearn.datasets import make_classification\n from sklearn.model_selection import train_test_split\n \n # Create classification dataset\n X, y = make_classification(n_samples=1000, n_features=4, n_classes=2, random_state=42)\n X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n \n # Create supervised binner that considers target variable\n sup_binner = SupervisedBinning(\n n_bins=4,\n task_type='classification',\n tree_params={'max_depth': 3, 'min_samples_leaf': 20}\n )\n \n # Fit using guidance data (target variable)\n X_train_binned = sup_binner.fit_transform(X_train, guidance_data=y_train)\n X_test_binned = sup_binner.transform(X_test)\n \n print(f\"Supervised binning created bins optimized for target separation\")\n print(f\"Bin edges per feature: {[len(edges)-1 for edges in sup_binner.bin_edges_.values()]}\")\n\n\ud83d\udee0\ufe0f **Scikit-learn Integration**\n---------------------------------\n\n.. code-block:: python\n\n from sklearn.pipeline import Pipeline\n from sklearn.ensemble import RandomForestClassifier\n from binlearn import EqualFrequencyBinning\n \n # Create ML pipeline with binning preprocessing\n pipeline = Pipeline([\n ('binning', EqualFrequencyBinning(n_bins=5)),\n ('classifier', RandomForestClassifier(random_state=42))\n ])\n \n # Train and evaluate\n pipeline.fit(X_train, y_train)\n accuracy = pipeline.score(X_test, y_test)\n print(f\"Pipeline accuracy: {accuracy:.3f}\")\n\n\ud83d\udcda **Available Methods**\n--------------------------\n\n**Interval-based Methods:**\n\n* ``EqualWidthBinning`` - Creates bins of equal width across the data range\n* ``EqualFrequencyBinning`` - Creates bins with approximately equal number of samples \n* ``KMeansBinning`` - Uses K-means clustering to determine bin boundaries\n* ``EqualWidthMinimumWeightBinning`` - Equal-width bins with weight constraints\n\n**Flexible Methods:**\n\n* ``ManualIntervalBinning`` - Specify custom interval boundaries\n* ``ManualFlexibleBinning`` - Define mixed interval and singleton bins\n\n**Categorical Methods:**\n\n* ``SingletonBinning`` - Clean categorical encoding for discrete values \ud83c\udd95\n\n**Supervised Methods:**\n\n* ``SupervisedBinning`` - Decision tree-based binning optimized for target variables (classification and regression)\n\n\u2699\ufe0f **Requirements**\n---------------------\n\n**Python Versions**: 3.10, 3.11, 3.12, 3.13\n\n**Core Dependencies**:\n * NumPy >= 1.21.0\n * SciPy >= 1.7.0\n * Scikit-learn >= 1.0.0\n * kmeans1d >= 0.3.0\n\n**Optional Dependencies**:\n * Pandas >= 1.3.0 (for DataFrame support)\n * Polars >= 0.15.0 (for Polars DataFrame support)\n\n**Development Dependencies**:\n * pytest >= 6.0 (for testing)\n * ruff >= 0.1.0 (for linting and formatting)\n * mypy >= 1.0.0 (for type checking)\n\n\ud83e\uddea **Development Setup**\n--------------------------\n\n.. code-block:: bash\n\n # Clone repository\n git clone https://github.com/TheDAALab/binlearn.git\n cd binlearn\n \n # Install in development mode with all dependencies\n pip install -e \".[tests,dev,pandas,polars]\"\n \n # Run all tests\n pytest\n \n # Run code quality checks\n ruff check binlearn/\n mypy binlearn/ --ignore-missing-imports\n \n # Build documentation\n cd docs && make html\n\n\ud83c\udfc6 **Code Quality Standards**\n-------------------------------\n\n* \u2705 **100% Test Coverage** - Comprehensive test suite with 841 tests\n* \u2705 **100% Type Safety** - Complete mypy compliance with modern type annotations\n* \u2705 **100% Code Quality** - Full ruff compliance with modern Python standards\n* * \u2705 **Comprehensive Documentation** - Detailed API docs and examples with SingletonBinning guide\n* \u2705 **Modern Python** - Uses latest Python features and best practices\n* \u2705 **Robust Error Handling** - Helpful error messages with actionable suggestions\n\n\ud83e\udd1d **Contributing**\n---------------------\n\nWe welcome contributions! Here's how to get started:\n\n1. Fork the repository on GitHub\n2. Create a feature branch: ``git checkout -b feature/your-feature``\n3. Make your changes and add tests\n4. Ensure all quality checks pass:\n \n .. code-block:: bash\n \n pytest # Run tests\n ruff check binlearn/ # Check code quality \n mypy binlearn/ --ignore-missing-imports # Check types\n\n5. Submit a pull request\n\n**Areas for Contribution**:\n * \ud83d\udc1b Bug reports and fixes\n * \u2728 New binning algorithms\n * \ud83d\udcda Documentation improvements\n * \ud83e\uddea Additional test cases\n * \ud83c\udfaf Performance optimizations\n\n\ud83d\udd17 **Links**\n--------------\n\n* **GitHub Repository**: https://github.com/TheDAALab/binlearn\n* **Issue Tracker**: https://github.com/TheDAALab/binlearn/issues\n* **Documentation**: https://binlearn.readthedocs.io/\n\n\ud83d\udcc4 **License**\n----------------\n\nThis project is licensed under the MIT License. See the `LICENSE <https://github.com/TheDAALab/binlearn/blob/main/LICENSE>`_ file for details.\n\n---\n\n**Developed by TheDAALab** \n\n*A modern, type-safe binning framework for Python data science workflows.*\n\n.. image:: https://img.shields.io/badge/Powered%20by-Python-blue.svg\n :alt: Powered by Python\n :target: https://www.python.org/\n\n.. image:: https://img.shields.io/badge/Built%20with-NumPy-orange.svg\n :alt: Built with NumPy\n :target: https://numpy.org/\n\n.. image:: https://img.shields.io/badge/Compatible%20with-Pandas-green.svg\n :alt: Compatible with Pandas\n :target: https://pandas.pydata.org/\n\n.. image:: https://img.shields.io/badge/Integrates%20with-Scikit--learn-red.svg\n :alt: Integrates with Scikit-learn\n :target: https://scikit-learn.org/\n\n.. image:: https://img.shields.io/pypi/status/binlearn\n :alt: Development Status\n :target: https://pypi.org/project/binlearn/\n\n.. image:: https://img.shields.io/github/contributors/TheDAALab/binlearn\n :alt: Contributors\n :target: https://github.com/TheDAALab/binlearn/graphs/contributors\n",
"bugtrack_url": null,
"license": null,
"summary": "A comprehensive binning and discretization library for machine learning",
"version": "0.1.14",
"project_urls": {
"Bug Tracker": "https://github.com/TheDAALab/binlearn/issues",
"Changelog": "https://github.com/TheDAALab/binlearn/blob/main/CHANGELOG.md",
"Documentation": "https://binlearn.readthedocs.io/",
"Homepage": "https://github.com/TheDAALab/binlearn",
"Repository": "https://github.com/TheDAALab/binlearn.git"
},
"split_keywords": [
"binning",
" discretization",
" binlearn",
" data preprocessing",
" machine learning",
" data science",
" feature engineering"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "016ff1eebc6ba034981f330e0c13a1bf33dee92ec22b773275a6aecd84185101",
"md5": "c62b8f634898f90364399d6336aaf9ee",
"sha256": "afa7d0456b62b03d62d9adb11ce683605765d2067203e1dd7494eb226b1dd529"
},
"downloads": -1,
"filename": "binlearn-0.1.14-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c62b8f634898f90364399d6336aaf9ee",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 98557,
"upload_time": "2025-08-04T13:46:20",
"upload_time_iso_8601": "2025-08-04T13:46:20.381135Z",
"url": "https://files.pythonhosted.org/packages/01/6f/f1eebc6ba034981f330e0c13a1bf33dee92ec22b773275a6aecd84185101/binlearn-0.1.14-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6effd8f9e06ee6cd471188442848a3f73a1904d91503857bb9c69b274a836634",
"md5": "49976e8b46a56e446d88cbdc38f97174",
"sha256": "3bc7d016031ac17926636ccbf55a871150de6fd61582b346917575bfddcf45da"
},
"downloads": -1,
"filename": "binlearn-0.1.14.tar.gz",
"has_sig": false,
"md5_digest": "49976e8b46a56e446d88cbdc38f97174",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 197638,
"upload_time": "2025-08-04T13:46:22",
"upload_time_iso_8601": "2025-08-04T13:46:22.034002Z",
"url": "https://files.pythonhosted.org/packages/6e/ff/d8f9e06ee6cd471188442848a3f73a1904d91503857bb9c69b274a836634/binlearn-0.1.14.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-04 13:46:22",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "TheDAALab",
"github_project": "binlearn",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "numpy",
"specs": []
},
{
"name": "pytest",
"specs": []
},
{
"name": "scipy",
"specs": []
},
{
"name": "kmeans1d",
"specs": []
},
{
"name": "scikit-learn",
"specs": []
}
],
"lcname": "binlearn"
}