fast-select 0.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Gavin Lynch
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,225 @@
1
+ Metadata-Version: 2.4
2
+ Name: fast-select
3
+ Version: 0.1.3
4
+ Summary: A Sci-Kit Learn compatible Numba and CUDA-accelerated implementation of various feature selection algorithms.
5
+ Author-email: Gavin Lynch <gavinlynch04@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/GavinLynch04/FastSelect
8
+ Project-URL: Documentation, https://fastselect.readthedocs.io/en/latest/
9
+ Project-URL: Bug Tracker, https://github.com/GavinLynch04/FastSelect/issues
10
+ Project-URL: Changelog, https://github.com/GavinLynch04/FastSelect/blob/main/CHANGELOG.md
11
+ Keywords: bioinformatics,feature selection,relief,reliefF,machine learning,numba,cuda,gpu,SURF,MultiSURF,TuRF,SURF*,MultiSURF*, mRMR, chi2
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Topic :: Utilities
23
+ Classifier: Operating System :: OS Independent
24
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
25
+ Requires-Python: >=3.9
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Requires-Dist: numpy>=1.21
29
+ Requires-Dist: numba>=0.56
30
+ Requires-Dist: scikit-learn>=1.6
31
+ Provides-Extra: gpu
32
+ Requires-Dist: cupy-cuda11x; extra == "gpu"
33
+ Provides-Extra: test
34
+ Requires-Dist: pytest>=7.0; extra == "test"
35
+ Requires-Dist: pytest-cov>=4.0; extra == "test"
36
+ Requires-Dist: skrebate>=0.6; extra == "test"
37
+ Provides-Extra: docs
38
+ Provides-Extra: dev
39
+ Requires-Dist: fast-select[docs,gpu,test]; extra == "dev"
40
+ Requires-Dist: black>=23.0; extra == "dev"
41
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
42
+ Requires-Dist: twine>=4.0; extra == "dev"
43
+ Requires-Dist: sphinx; extra == "dev"
44
+ Requires-Dist: furo; extra == "dev"
45
+ Requires-Dist: myst-parser; extra == "dev"
46
+ Requires-Dist: sphinx-copybutton; extra == "dev"
47
+ Dynamic: license-file
48
+
49
+ # **Fast-Select: Accelerated Feature Selection for Modern Datasets**
50
+ [![PyPI version](https://img.shields.io/pypi/v/fast-select?color=blue)](https://pypi.org/project/fast-select/)
51
+ [![Build Status](https://img.shields.io/github/actions/workflow/status/GavinLynch04/FastSelect/python-tests.yml?branch=main)](https://github.com/GavinLynch04/FastSelect/actions)
52
+ [![Python Versions](https://img.shields.io/pypi/pyversions/fast-select.svg)](https://pypi.org/project/fast-select/)
53
+ [![License](https://img.shields.io/pypi/l/fast-select.svg)](https://github.com/GavinLynch04/FastSelect/blob/main/LICENSE)
54
+ [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
55
+ [![Code style: ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
56
+ [![DOI](https://zenodo.org/badge/DOI/your-zenodo-doi.svg)](https://doi.org/your-zenodo-doi)
57
+ <!-- start-include -->
58
+ A high-performance Python library powered by **Numba** and **CUDA**, offering accelerated algorithms for feature selection. Initially built to optimize the complete Relief family of algorithms, `fast-select` aims to expand and accelerate a wide range of feature selection methods to empower machine learning on large-scale datasets.
59
+
60
+ ## **Key Features**
61
+
62
+ - **Blazing Fast Performance:** Leverages **Numba** for JIT compilation, **Joblib** for multi-core parallelism, and **Numba CUDA** for GPU acceleration, providing unmatched performance while scaling with modern hardware.
63
+
64
+ - **ML Pipeline Integration:** Fully compatible with **Scikit-Learn**, making it easy to fit into any machine learning pipeline with a familiar `.fit()`, `.transform()`, `.fit_transform()` interface.
65
+
66
+ - **Flexible Backends:** Offers dual execution modes for both CPU (`Joblib`) and GPU (`CUDA`). Automatically detects hardware with an easy-to-use `backend` parameter.
67
+
68
+ - **Feature-Rich Implementation:** Provides lightning-fast implementations of ReliefF, SURF, SURF*, MultiSURF, MultiSURF*, and TuRF—with plans to support additional feature selection algorithms in future releases.
69
+
70
+ - **Lightweight & Simple:** Avoids heavy dependencies like TensorFlow or PyTorch while delivering state-of-the-art acceleration for feature selection workflows.
71
+
72
+ <!-- end-include -->
73
+
74
+ ## **Table of Contents**
75
+
76
+ 1. [Installation](#installation)
77
+ 2. [Quickstart](#quickstart)
78
+ 3. [Backend Selection](#backend-selection-cpu-vs-gpu)
79
+ 4. [Benchmarking Highlights](#benchmarking-highlights)
80
+ 5. [Algorithm Implementations](#algorithm-implementations)
81
+ 6. [Future Directions](#future-directions)
82
+ 7. [Contributing](#contributing)
83
+ 8. [License](#license)
84
+ 9. [How to Cite](#how-to-cite)
85
+ 10. [Acknowledgments](#acknowledgments)
86
+
87
+ ## **Installation**
88
+ <!-- start-installation-section -->
89
+
90
+ Install `fast-select` directly from PyPI:
91
+
92
+ ```bash
93
+ pip install fast-select
94
+ ```
95
+
96
+ For development versions (with testing and documentation dependencies):
97
+
98
+ ```bash
99
+ git clone https://github.com/GavinLynch04/FastSelect.git
100
+ cd fast-select
101
+ pip install -e .[dev]
102
+ ```
103
+
104
+ <!-- end-installation-section -->
105
+
106
+
107
+ ## **Quickstart**
108
+ <!-- start-quickstart-section -->
109
+
110
+ Using `fast-select` is simple and seamless for anyone familiar with Scikit-Learn.
111
+
112
+ ```python
113
+ from fast_select.estimators import MultiSURF
114
+ from sklearn.datasets import make_classification
115
+ from sklearn.pipeline import Pipeline
116
+ from sklearn.preprocessing import StandardScaler
117
+ from sklearn.linear_model import LogisticRegression # Example classifier
118
+
119
+ # 1. Generate a synthetic dataset
120
+ X, y = make_classification(
121
+ n_samples=500,
122
+ n_features=1000,
123
+ n_informative=20,
124
+ n_redundant=100,
125
+ random_state=42
126
+ )
127
+
128
+ # 2. Use the MultiSURF estimator to select the top 15 features
129
+ selector = MultiSURF(n_features_to_select=15)
130
+ X_selected = selector.fit_transform(X, y)
131
+ print(f"Original feature count: {X.shape[1]}")
132
+ print(f"Selected feature count: {X_selected.shape[1]}")
133
+ print(f"Top 15 feature indices: {selector.top_features_}")
134
+
135
+ # 3. Integrate into a Scikit-Learn Pipeline
136
+ pipeline = Pipeline([
137
+ ('scaler', StandardScaler()),
138
+ ('feature_selector', MultiSURF(n_features_to_select=10, backend='cpu')),
139
+ ('classifier', LogisticRegression())
140
+ ])
141
+
142
+ # Fit the pipeline (now featuring fast feature selection!)
143
+ # pipeline.fit(X, y)
144
+ ```
145
+ <!-- end-quickstart-section -->
146
+
147
+ ## **Backend Selection (CPU vs. GPU)**
148
+
149
+ You can control the computational backend with the `backend` parameter during initialization:
150
+
151
+ - **`backend='auto'`**: Automatically detects if an NVIDIA GPU is available. Falls back to CPU if a GPU is not available.
152
+
153
+ - **`backend='gpu'`**: Explicitly runs on GPU. Will raise a `RuntimeError` if no compatible GPU is found.
154
+
155
+ - **`backend='cpu'`**: Forces CPU computations, even if a GPU is available.
156
+
157
+ Example usage:
158
+
159
+ ```python
160
+ # Force CPU usage
161
+ cpu_selector = MultiSURF(n_features_to_select=10, backend='cpu')
162
+
163
+ # Force GPU usage
164
+ gpu_selector = MultiSURF(n_features_to_select=10, backend='gpu')
165
+ ```
166
+
167
+ ---
168
+
169
+ ## **Benchmarking Highlights**
170
+
171
+ Fast-Select delivers groundbreaking improvements in runtime and memory efficiency. Benchmarks show **50-100x speed-ups** compared to `scikit-rebate` and R's `CORElearn` library, particularly on large datasets exceeding 10,000 samples and features. [Benchmarking scripts](./benchmarking) are available in the repository for further testing.
172
+
173
+ #### Runtime vs. Number of Samples (n >> p)
174
+
175
+ <p align="center">
176
+ <img alt="Runtime Benchmark N-Dominant" width="700" src="https://raw.githubusercontent.com/GavinLynch04/FastSelect/main/benchmarking/benchmark_n_dominant_runtime.png">
177
+ </p>
178
+
179
+ #### Runtime vs. Number of Features (p >> n)
180
+
181
+ <p align="center">
182
+ <img alt="Memory Benchmark P-Dominant" width="700" src="https://raw.githubusercontent.com/GavinLynch04/FastSelect/main/benchmarking/benchmark_p_dominant_runtime.png">
183
+ </p>
184
+
185
+ ---
186
+
187
+ ## **Algorithm Implementations**
188
+
189
+ Currently supported:
190
+
191
+ - **Relief-Family Algorithms:**
192
+ - ReliefF
193
+ - SURF
194
+ - SURF*
195
+ - MultiSURF
196
+ - MultiSURF*
197
+ - TuRF
198
+
199
+ Future plans include additional feature selection algorithms, such as wrappers, embedded methods, and more filter-based approaches.
200
+
201
+
202
+ ## **Contributing**
203
+
204
+ Contributions are highly encouraged. Whether you're fixing bugs, improving performance, or proposing new algorithms, your work is invaluable. Please ensure your submissions include relevant test cases and documentation updates.
205
+
206
+
207
+ ## **License**
208
+
209
+ This project is licensed under the MIT License. See the [LICENSE](./LICENSE) file for full details.
210
+
211
+
212
+ ## **How to Cite**
213
+
214
+ If you use `fast-select` in your research, please cite the software:
215
+
216
+ ### ** Citing the Software (Specific Version):**
217
+ Use the version-specific DOI provided via Zenodo on the [GitHub Release Page](https://github.com/GavinLynch04/FastSelect/releases).
218
+
219
+ ## **Acknowledgments**
220
+
221
+ This library builds on the exceptional work of the following:
222
+
223
+ - The **Numba** team for enabling JIT compilation and GPU acceleration.
224
+ - The **scikit-rebate** authors for their inspiring Relief-based library.
225
+ - The original researchers behind the Relief algorithms for their foundational contributions to feature selection.
@@ -0,0 +1,177 @@
1
+ # **Fast-Select: Accelerated Feature Selection for Modern Datasets**
2
+ [![PyPI version](https://img.shields.io/pypi/v/fast-select?color=blue)](https://pypi.org/project/fast-select/)
3
+ [![Build Status](https://img.shields.io/github/actions/workflow/status/GavinLynch04/FastSelect/python-tests.yml?branch=main)](https://github.com/GavinLynch04/FastSelect/actions)
4
+ [![Python Versions](https://img.shields.io/pypi/pyversions/fast-select.svg)](https://pypi.org/project/fast-select/)
5
+ [![License](https://img.shields.io/pypi/l/fast-select.svg)](https://github.com/GavinLynch04/FastSelect/blob/main/LICENSE)
6
+ [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
7
+ [![Code style: ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
8
+ [![DOI](https://zenodo.org/badge/DOI/your-zenodo-doi.svg)](https://doi.org/your-zenodo-doi)
9
+ <!-- start-include -->
10
+ A high-performance Python library powered by **Numba** and **CUDA**, offering accelerated algorithms for feature selection. Initially built to optimize the complete Relief family of algorithms, `fast-select` aims to expand and accelerate a wide range of feature selection methods to empower machine learning on large-scale datasets.
11
+
12
+ ## **Key Features**
13
+
14
+ - **Blazing Fast Performance:** Leverages **Numba** for JIT compilation, **Joblib** for multi-core parallelism, and **Numba CUDA** for GPU acceleration, providing unmatched performance while scaling with modern hardware.
15
+
16
+ - **ML Pipeline Integration:** Fully compatible with **Scikit-Learn**, making it easy to fit into any machine learning pipeline with a familiar `.fit()`, `.transform()`, `.fit_transform()` interface.
17
+
18
+ - **Flexible Backends:** Offers dual execution modes for both CPU (`Joblib`) and GPU (`CUDA`). Automatically detects hardware with an easy-to-use `backend` parameter.
19
+
20
+ - **Feature-Rich Implementation:** Provides lightning-fast implementations of ReliefF, SURF, SURF*, MultiSURF, MultiSURF*, and TuRF—with plans to support additional feature selection algorithms in future releases.
21
+
22
+ - **Lightweight & Simple:** Avoids heavy dependencies like TensorFlow or PyTorch while delivering state-of-the-art acceleration for feature selection workflows.
23
+
24
+ <!-- end-include -->
25
+
26
+ ## **Table of Contents**
27
+
28
+ 1. [Installation](#installation)
29
+ 2. [Quickstart](#quickstart)
30
+ 3. [Backend Selection](#backend-selection-cpu-vs-gpu)
31
+ 4. [Benchmarking Highlights](#benchmarking-highlights)
32
+ 5. [Algorithm Implementations](#algorithm-implementations)
33
+ 6. [Future Directions](#future-directions)
34
+ 7. [Contributing](#contributing)
35
+ 8. [License](#license)
36
+ 9. [How to Cite](#how-to-cite)
37
+ 10. [Acknowledgments](#acknowledgments)
38
+
39
+ ## **Installation**
40
+ <!-- start-installation-section -->
41
+
42
+ Install `fast-select` directly from PyPI:
43
+
44
+ ```bash
45
+ pip install fast-select
46
+ ```
47
+
48
+ For development versions (with testing and documentation dependencies):
49
+
50
+ ```bash
51
+ git clone https://github.com/GavinLynch04/FastSelect.git
52
+ cd fast-select
53
+ pip install -e .[dev]
54
+ ```
55
+
56
+ <!-- end-installation-section -->
57
+
58
+
59
+ ## **Quickstart**
60
+ <!-- start-quickstart-section -->
61
+
62
+ Using `fast-select` is simple and seamless for anyone familiar with Scikit-Learn.
63
+
64
+ ```python
65
+ from fast_select.estimators import MultiSURF
66
+ from sklearn.datasets import make_classification
67
+ from sklearn.pipeline import Pipeline
68
+ from sklearn.preprocessing import StandardScaler
69
+ from sklearn.linear_model import LogisticRegression # Example classifier
70
+
71
+ # 1. Generate a synthetic dataset
72
+ X, y = make_classification(
73
+ n_samples=500,
74
+ n_features=1000,
75
+ n_informative=20,
76
+ n_redundant=100,
77
+ random_state=42
78
+ )
79
+
80
+ # 2. Use the MultiSURF estimator to select the top 15 features
81
+ selector = MultiSURF(n_features_to_select=15)
82
+ X_selected = selector.fit_transform(X, y)
83
+ print(f"Original feature count: {X.shape[1]}")
84
+ print(f"Selected feature count: {X_selected.shape[1]}")
85
+ print(f"Top 15 feature indices: {selector.top_features_}")
86
+
87
+ # 3. Integrate into a Scikit-Learn Pipeline
88
+ pipeline = Pipeline([
89
+ ('scaler', StandardScaler()),
90
+ ('feature_selector', MultiSURF(n_features_to_select=10, backend='cpu')),
91
+ ('classifier', LogisticRegression())
92
+ ])
93
+
94
+ # Fit the pipeline (now featuring fast feature selection!)
95
+ # pipeline.fit(X, y)
96
+ ```
97
+ <!-- end-quickstart-section -->
98
+
99
+ ## **Backend Selection (CPU vs. GPU)**
100
+
101
+ You can control the computational backend with the `backend` parameter during initialization:
102
+
103
+ - **`backend='auto'`**: Automatically detects if an NVIDIA GPU is available. Falls back to CPU if a GPU is not available.
104
+
105
+ - **`backend='gpu'`**: Explicitly runs on GPU. Will raise a `RuntimeError` if no compatible GPU is found.
106
+
107
+ - **`backend='cpu'`**: Forces CPU computations, even if a GPU is available.
108
+
109
+ Example usage:
110
+
111
+ ```python
112
+ # Force CPU usage
113
+ cpu_selector = MultiSURF(n_features_to_select=10, backend='cpu')
114
+
115
+ # Force GPU usage
116
+ gpu_selector = MultiSURF(n_features_to_select=10, backend='gpu')
117
+ ```
118
+
119
+ ---
120
+
121
+ ## **Benchmarking Highlights**
122
+
123
+ Fast-Select delivers groundbreaking improvements in runtime and memory efficiency. Benchmarks show **50-100x speed-ups** compared to `scikit-rebate` and R's `CORElearn` library, particularly on large datasets exceeding 10,000 samples and features. [Benchmarking scripts](./benchmarking) are available in the repository for further testing.
124
+
125
+ #### Runtime vs. Number of Samples (n >> p)
126
+
127
+ <p align="center">
128
+ <img alt="Runtime Benchmark N-Dominant" width="700" src="https://raw.githubusercontent.com/GavinLynch04/FastSelect/main/benchmarking/benchmark_n_dominant_runtime.png">
129
+ </p>
130
+
131
+ #### Runtime vs. Number of Features (p >> n)
132
+
133
+ <p align="center">
134
+ <img alt="Memory Benchmark P-Dominant" width="700" src="https://raw.githubusercontent.com/GavinLynch04/FastSelect/main/benchmarking/benchmark_p_dominant_runtime.png">
135
+ </p>
136
+
137
+ ---
138
+
139
+ ## **Algorithm Implementations**
140
+
141
+ Currently supported:
142
+
143
+ - **Relief-Family Algorithms:**
144
+ - ReliefF
145
+ - SURF
146
+ - SURF*
147
+ - MultiSURF
148
+ - MultiSURF*
149
+ - TuRF
150
+
151
+ Future plans include additional feature selection algorithms, such as wrappers, embedded methods, and more filter-based approaches.
152
+
153
+
154
+ ## **Contributing**
155
+
156
+ Contributions are highly encouraged. Whether you're fixing bugs, improving performance, or proposing new algorithms, your work is invaluable. Please ensure your submissions include relevant test cases and documentation updates.
157
+
158
+
159
+ ## **License**
160
+
161
+ This project is licensed under the MIT License. See the [LICENSE](./LICENSE) file for full details.
162
+
163
+
164
+ ## **How to Cite**
165
+
166
+ If you use `fast-select` in your research, please cite the software:
167
+
168
+ ### ** Citing the Software (Specific Version):**
169
+ Use the version-specific DOI provided via Zenodo on the [GitHub Release Page](https://github.com/GavinLynch04/FastSelect/releases).
170
+
171
+ ## **Acknowledgments**
172
+
173
+ This library builds on the exceptional work of the following:
174
+
175
+ - The **Numba** team for enabling JIT compilation and GPU acceleration.
176
+ - The **scikit-rebate** authors for their inspiring Relief-based library.
177
+ - The original researchers behind the Relief algorithms for their foundational contributions to feature selection.
@@ -0,0 +1,102 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+
6
+ [project]
7
+ name = "fast-select"
8
+ version = "0.1.3"
9
+
10
+ authors = [
11
+ { name="Gavin Lynch", email="gavinlynch04@gmail.com" },
12
+ ]
13
+
14
+ description = "A Sci-Kit Learn compatible Numba and CUDA-accelerated implementation of various feature selection algorithms."
15
+
16
+ readme = "README.md"
17
+
18
+ requires-python = ">=3.9"
19
+
20
+ license = "MIT"
21
+ license-files = ["LICENSE"]
22
+
23
+ keywords = ["bioinformatics", "feature selection", "relief", "reliefF", "machine learning", "numba", "cuda", "gpu", "SURF", "MultiSURF", "TuRF", "SURF*", "MultiSURF*, mRMR, chi2"]
24
+
25
+ classifiers = [
26
+ "Development Status :: 4 - Beta",
27
+ "Intended Audience :: Science/Research",
28
+ "Intended Audience :: Developers",
29
+ "Programming Language :: Python :: 3",
30
+ "Programming Language :: Python :: 3.9",
31
+ "Programming Language :: Python :: 3.10",
32
+ "Programming Language :: Python :: 3.11",
33
+ "Programming Language :: Python :: 3.12",
34
+ "Topic :: Scientific/Engineering :: Bio-Informatics",
35
+ "Topic :: Software Development :: Libraries :: Python Modules",
36
+ "Topic :: Utilities",
37
+ "Operating System :: OS Independent",
38
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
39
+ ]
40
+
41
+ dependencies = [
42
+ "numpy>=1.21",
43
+ "numba>=0.56",
44
+ "scikit-learn>=1.6",
45
+ ]
46
+
47
+
48
+ [project.urls]
49
+ "Homepage" = "https://github.com/GavinLynch04/FastSelect"
50
+ "Documentation" = "https://fastselect.readthedocs.io/en/latest/"
51
+ "Bug Tracker" = "https://github.com/GavinLynch04/FastSelect/issues"
52
+ "Changelog" = "https://github.com/GavinLynch04/FastSelect/blob/main/CHANGELOG.md"
53
+
54
+
55
+ [project.optional-dependencies]
56
+ gpu = [
57
+ "cupy-cuda11x",
58
+ ]
59
+
60
+ test = [
61
+ "pytest>=7.0",
62
+ "pytest-cov>=4.0",
63
+ "skrebate>=0.6",
64
+ ]
65
+
66
+ docs = [
67
+ ]
68
+
69
+ dev = [
70
+ "fast-select[gpu, test, docs]",
71
+ "black>=23.0",
72
+ "ruff>=0.1.0",
73
+ "twine>=4.0",
74
+ "sphinx",
75
+ "furo",
76
+ "myst-parser",
77
+ "sphinx-copybutton",
78
+ ]
79
+
80
+
81
+
82
+ [tool.setuptools.packages]
83
+ find = { where = ["src"] }
84
+
85
+
86
+ [tool.pytest.ini_options]
87
+ minversion = "7.0"
88
+ addopts = "-ra -q --cov=fast_relief --cov-report=term-missing"
89
+ testpaths = ["tests"]
90
+
91
+
92
+ [tool.black]
93
+ line-length = 120
94
+
95
+
96
+ [tool.ruff]
97
+ line-length = 120
98
+ ignore = ["N811", "N803", "N806", "E731"]
99
+ select = ["E", "F", "W", "I", "N", "UP"]
100
+
101
+ [tool.ruff.isort]
102
+ known-first-party = ["fast_select"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+