featcopilot 0.1.0__py3-none-any.whl → 0.3.0__py3-none-any.whl
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.
- featcopilot/__init__.py +10 -1
- featcopilot/core/__init__.py +2 -0
- featcopilot/core/feature.py +5 -1
- featcopilot/core/transform_rule.py +276 -0
- featcopilot/engines/relational.py +5 -2
- featcopilot/engines/tabular.py +151 -5
- featcopilot/engines/text.py +352 -11
- featcopilot/engines/timeseries.py +235 -3
- featcopilot/llm/__init__.py +6 -1
- featcopilot/llm/code_generator.py +7 -4
- featcopilot/llm/copilot_client.py +97 -20
- featcopilot/llm/explainer.py +6 -3
- featcopilot/llm/litellm_client.py +595 -0
- featcopilot/llm/semantic_engine.py +717 -26
- featcopilot/llm/transform_rule_generator.py +403 -0
- featcopilot/selection/importance.py +40 -9
- featcopilot/selection/redundancy.py +39 -10
- featcopilot/selection/statistical.py +107 -34
- featcopilot/selection/unified.py +57 -3
- featcopilot/stores/__init__.py +17 -0
- featcopilot/stores/base.py +166 -0
- featcopilot/stores/feast_store.py +541 -0
- featcopilot/stores/rule_store.py +343 -0
- featcopilot/transformers/sklearn_compat.py +18 -6
- featcopilot/utils/__init__.py +14 -0
- featcopilot/utils/logger.py +47 -0
- featcopilot/utils/models.py +287 -0
- featcopilot/utils/parallel.py +5 -1
- {featcopilot-0.1.0.dist-info → featcopilot-0.3.0.dist-info}/METADATA +56 -25
- featcopilot-0.3.0.dist-info/RECORD +38 -0
- featcopilot-0.1.0.dist-info/RECORD +0 -29
- {featcopilot-0.1.0.dist-info → featcopilot-0.3.0.dist-info}/WHEEL +0 -0
- {featcopilot-0.1.0.dist-info → featcopilot-0.3.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
"""Model utilities for Copilot client."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
from typing import Optional
|
|
5
|
+
|
|
6
|
+
from featcopilot.utils.logger import get_logger
|
|
7
|
+
|
|
8
|
+
logger = get_logger(__name__)
|
|
9
|
+
|
|
10
|
+
# Cache for models fetched from Copilot
|
|
11
|
+
_cached_models: Optional[list[dict]] = None
|
|
12
|
+
|
|
13
|
+
# Default model
|
|
14
|
+
DEFAULT_MODEL = "gpt-5.2"
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
async def _fetch_models_from_copilot() -> list[dict]:
|
|
18
|
+
"""Fetch available models from Copilot SDK."""
|
|
19
|
+
try:
|
|
20
|
+
from copilot import CopilotClient
|
|
21
|
+
|
|
22
|
+
client = CopilotClient()
|
|
23
|
+
await client.start()
|
|
24
|
+
|
|
25
|
+
# Get available models from Copilot
|
|
26
|
+
models = await client.list_models()
|
|
27
|
+
await client.stop()
|
|
28
|
+
|
|
29
|
+
return models
|
|
30
|
+
|
|
31
|
+
except ImportError:
|
|
32
|
+
logger.warning("copilot-sdk not installed. Cannot fetch models from Copilot.")
|
|
33
|
+
return []
|
|
34
|
+
except Exception as e:
|
|
35
|
+
logger.warning(f"Could not fetch models from Copilot: {e}")
|
|
36
|
+
return []
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _get_event_loop():
|
|
40
|
+
"""Get or create an event loop."""
|
|
41
|
+
try:
|
|
42
|
+
loop = asyncio.get_event_loop()
|
|
43
|
+
if loop.is_closed():
|
|
44
|
+
loop = asyncio.new_event_loop()
|
|
45
|
+
asyncio.set_event_loop(loop)
|
|
46
|
+
except RuntimeError:
|
|
47
|
+
loop = asyncio.new_event_loop()
|
|
48
|
+
asyncio.set_event_loop(loop)
|
|
49
|
+
return loop
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def fetch_models(force_refresh: bool = False) -> list[dict]:
|
|
53
|
+
"""
|
|
54
|
+
Fetch available models from the Copilot client.
|
|
55
|
+
|
|
56
|
+
This function queries the Copilot SDK to get the current list of
|
|
57
|
+
supported models. Results are cached for subsequent calls.
|
|
58
|
+
|
|
59
|
+
Parameters
|
|
60
|
+
----------
|
|
61
|
+
force_refresh : bool, default=False
|
|
62
|
+
If True, bypass cache and fetch fresh model list
|
|
63
|
+
|
|
64
|
+
Returns
|
|
65
|
+
-------
|
|
66
|
+
list[dict]
|
|
67
|
+
List of model information dictionaries. Each dict contains
|
|
68
|
+
model metadata from the Copilot API.
|
|
69
|
+
|
|
70
|
+
Examples
|
|
71
|
+
--------
|
|
72
|
+
>>> from featcopilot.utils import fetch_models
|
|
73
|
+
>>> models = fetch_models()
|
|
74
|
+
>>> for m in models:
|
|
75
|
+
... print(m.get('id') or m.get('name'))
|
|
76
|
+
"""
|
|
77
|
+
global _cached_models
|
|
78
|
+
|
|
79
|
+
if _cached_models is not None and not force_refresh:
|
|
80
|
+
return _cached_models
|
|
81
|
+
|
|
82
|
+
loop = _get_event_loop()
|
|
83
|
+
models = loop.run_until_complete(_fetch_models_from_copilot())
|
|
84
|
+
|
|
85
|
+
if models:
|
|
86
|
+
_cached_models = models
|
|
87
|
+
|
|
88
|
+
return models
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def list_models(
|
|
92
|
+
provider: Optional[str] = None,
|
|
93
|
+
verbose: bool = False,
|
|
94
|
+
force_refresh: bool = False,
|
|
95
|
+
) -> list[dict]:
|
|
96
|
+
"""
|
|
97
|
+
List all supported models from the Copilot client.
|
|
98
|
+
|
|
99
|
+
Retrieves the current list of available models directly from
|
|
100
|
+
the Copilot SDK.
|
|
101
|
+
|
|
102
|
+
Parameters
|
|
103
|
+
----------
|
|
104
|
+
provider : str, optional
|
|
105
|
+
Filter by provider (e.g., 'OpenAI', 'Anthropic', 'Google')
|
|
106
|
+
verbose : bool, default=False
|
|
107
|
+
If True, print model information to logger
|
|
108
|
+
force_refresh : bool, default=False
|
|
109
|
+
If True, bypass cache and fetch fresh model list
|
|
110
|
+
|
|
111
|
+
Returns
|
|
112
|
+
-------
|
|
113
|
+
list[dict]
|
|
114
|
+
List of model information dictionaries from Copilot API
|
|
115
|
+
|
|
116
|
+
Examples
|
|
117
|
+
--------
|
|
118
|
+
>>> from featcopilot.utils import list_models
|
|
119
|
+
>>> models = list_models()
|
|
120
|
+
>>> for m in models:
|
|
121
|
+
... print(m)
|
|
122
|
+
|
|
123
|
+
>>> # With verbose output
|
|
124
|
+
>>> list_models(verbose=True)
|
|
125
|
+
|
|
126
|
+
>>> # Filter by provider (if supported by returned data)
|
|
127
|
+
>>> openai_models = list_models(provider='OpenAI')
|
|
128
|
+
"""
|
|
129
|
+
models = fetch_models(force_refresh=force_refresh)
|
|
130
|
+
|
|
131
|
+
# Apply provider filter if specified
|
|
132
|
+
if provider and models:
|
|
133
|
+
filtered = []
|
|
134
|
+
for m in models:
|
|
135
|
+
model_provider = m.get("provider", "") or m.get("vendor", "") or ""
|
|
136
|
+
if provider.lower() in model_provider.lower():
|
|
137
|
+
filtered.append(m)
|
|
138
|
+
models = filtered
|
|
139
|
+
|
|
140
|
+
if verbose:
|
|
141
|
+
_print_models(models)
|
|
142
|
+
|
|
143
|
+
return models
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def get_model_info(model_name: str, force_refresh: bool = False) -> Optional[dict]:
|
|
147
|
+
"""
|
|
148
|
+
Get information about a specific model from Copilot.
|
|
149
|
+
|
|
150
|
+
Parameters
|
|
151
|
+
----------
|
|
152
|
+
model_name : str
|
|
153
|
+
The model identifier
|
|
154
|
+
force_refresh : bool, default=False
|
|
155
|
+
If True, bypass cache and fetch fresh model list
|
|
156
|
+
|
|
157
|
+
Returns
|
|
158
|
+
-------
|
|
159
|
+
dict or None
|
|
160
|
+
Model information if found, None otherwise
|
|
161
|
+
|
|
162
|
+
Examples
|
|
163
|
+
--------
|
|
164
|
+
>>> from featcopilot.utils import get_model_info
|
|
165
|
+
>>> info = get_model_info('gpt-5.2')
|
|
166
|
+
>>> if info:
|
|
167
|
+
... print(info)
|
|
168
|
+
"""
|
|
169
|
+
models = fetch_models(force_refresh=force_refresh)
|
|
170
|
+
|
|
171
|
+
for model in models:
|
|
172
|
+
# Check various possible name fields
|
|
173
|
+
if model.get("id") == model_name:
|
|
174
|
+
return model
|
|
175
|
+
if model.get("name") == model_name:
|
|
176
|
+
return model
|
|
177
|
+
if model.get("model") == model_name:
|
|
178
|
+
return model
|
|
179
|
+
|
|
180
|
+
return None
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def get_default_model() -> str:
|
|
184
|
+
"""
|
|
185
|
+
Get the default model name.
|
|
186
|
+
|
|
187
|
+
Returns
|
|
188
|
+
-------
|
|
189
|
+
str
|
|
190
|
+
The default model identifier
|
|
191
|
+
|
|
192
|
+
Examples
|
|
193
|
+
--------
|
|
194
|
+
>>> from featcopilot.utils import get_default_model
|
|
195
|
+
>>> model = get_default_model()
|
|
196
|
+
>>> print(model) # 'gpt-5.2'
|
|
197
|
+
"""
|
|
198
|
+
return DEFAULT_MODEL
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
def get_model_names(force_refresh: bool = False) -> list[str]:
|
|
202
|
+
"""
|
|
203
|
+
Get list of available model names/identifiers.
|
|
204
|
+
|
|
205
|
+
Parameters
|
|
206
|
+
----------
|
|
207
|
+
force_refresh : bool, default=False
|
|
208
|
+
If True, bypass cache and fetch fresh model list
|
|
209
|
+
|
|
210
|
+
Returns
|
|
211
|
+
-------
|
|
212
|
+
list[str]
|
|
213
|
+
List of model identifiers
|
|
214
|
+
|
|
215
|
+
Examples
|
|
216
|
+
--------
|
|
217
|
+
>>> from featcopilot.utils import get_model_names
|
|
218
|
+
>>> names = get_model_names()
|
|
219
|
+
>>> print(names)
|
|
220
|
+
"""
|
|
221
|
+
models = fetch_models(force_refresh=force_refresh)
|
|
222
|
+
names = []
|
|
223
|
+
|
|
224
|
+
for m in models:
|
|
225
|
+
name = m.get("id") or m.get("name") or m.get("model")
|
|
226
|
+
if name:
|
|
227
|
+
names.append(name)
|
|
228
|
+
|
|
229
|
+
return names
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
def is_valid_model(model_name: str, force_refresh: bool = False) -> bool:
|
|
233
|
+
"""
|
|
234
|
+
Check if a model name is valid/supported.
|
|
235
|
+
|
|
236
|
+
Parameters
|
|
237
|
+
----------
|
|
238
|
+
model_name : str
|
|
239
|
+
The model identifier to check
|
|
240
|
+
force_refresh : bool, default=False
|
|
241
|
+
If True, bypass cache and fetch fresh model list
|
|
242
|
+
|
|
243
|
+
Returns
|
|
244
|
+
-------
|
|
245
|
+
bool
|
|
246
|
+
True if model is supported, False otherwise
|
|
247
|
+
|
|
248
|
+
Examples
|
|
249
|
+
--------
|
|
250
|
+
>>> from featcopilot.utils import is_valid_model
|
|
251
|
+
>>> is_valid_model('gpt-5.2')
|
|
252
|
+
"""
|
|
253
|
+
models = fetch_models(force_refresh=force_refresh)
|
|
254
|
+
|
|
255
|
+
if not models:
|
|
256
|
+
# If we couldn't fetch models, allow any model name
|
|
257
|
+
# (let the Copilot API validate it)
|
|
258
|
+
logger.warning("Could not validate model - Copilot unavailable")
|
|
259
|
+
return True
|
|
260
|
+
|
|
261
|
+
return model_name in get_model_names(force_refresh=False)
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
def _print_models(models: list[dict]) -> None:
|
|
265
|
+
"""Print models information."""
|
|
266
|
+
if not models:
|
|
267
|
+
logger.info("No models found. Copilot SDK may not be available.")
|
|
268
|
+
return
|
|
269
|
+
|
|
270
|
+
logger.info("Available models from Copilot:")
|
|
271
|
+
logger.info("-" * 60)
|
|
272
|
+
|
|
273
|
+
for model in models:
|
|
274
|
+
model_id = model.get("id") or model.get("name") or model.get("model") or "unknown"
|
|
275
|
+
description = model.get("description", "")
|
|
276
|
+
provider = model.get("provider") or model.get("vendor") or ""
|
|
277
|
+
|
|
278
|
+
line = f" {model_id}"
|
|
279
|
+
if provider:
|
|
280
|
+
line += f" ({provider})"
|
|
281
|
+
if description:
|
|
282
|
+
line += f" - {description[:50]}..."
|
|
283
|
+
|
|
284
|
+
logger.info(line)
|
|
285
|
+
|
|
286
|
+
logger.info("-" * 60)
|
|
287
|
+
logger.info(f"Total: {len(models)} models")
|
featcopilot/utils/parallel.py
CHANGED
|
@@ -4,6 +4,10 @@ from typing import Any, Callable, Optional
|
|
|
4
4
|
|
|
5
5
|
import pandas as pd
|
|
6
6
|
|
|
7
|
+
from featcopilot.utils.logger import get_logger
|
|
8
|
+
|
|
9
|
+
logger = get_logger(__name__)
|
|
10
|
+
|
|
7
11
|
|
|
8
12
|
def parallel_apply(
|
|
9
13
|
func: Callable,
|
|
@@ -51,7 +55,7 @@ def parallel_apply(
|
|
|
51
55
|
except ImportError:
|
|
52
56
|
# Fallback to sequential processing
|
|
53
57
|
if verbose:
|
|
54
|
-
|
|
58
|
+
logger.warning("joblib not available, using sequential processing")
|
|
55
59
|
|
|
56
60
|
return [func(row) for _, row in data.iterrows()]
|
|
57
61
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: featcopilot
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Next-generation LLM-powered auto feature engineering framework with GitHub Copilot SDK
|
|
5
5
|
Author: FeatCopilot Contributors
|
|
6
6
|
License: MIT
|
|
@@ -28,11 +28,27 @@ Requires-Dist: pydantic>=2.0.0
|
|
|
28
28
|
Requires-Dist: joblib>=1.1.0
|
|
29
29
|
Provides-Extra: llm
|
|
30
30
|
Requires-Dist: github-copilot-sdk>=0.1.0; extra == "llm"
|
|
31
|
+
Requires-Dist: nest_asyncio>=1.5.0; extra == "llm"
|
|
32
|
+
Provides-Extra: litellm
|
|
33
|
+
Requires-Dist: litellm>=1.0.0; extra == "litellm"
|
|
34
|
+
Requires-Dist: nest_asyncio>=1.5.0; extra == "litellm"
|
|
31
35
|
Provides-Extra: timeseries
|
|
32
36
|
Requires-Dist: statsmodels>=0.13.0; extra == "timeseries"
|
|
37
|
+
Provides-Extra: feast
|
|
38
|
+
Requires-Dist: feast>=0.30.0; extra == "feast"
|
|
33
39
|
Provides-Extra: full
|
|
34
40
|
Requires-Dist: github-copilot-sdk>=0.1.0; extra == "full"
|
|
41
|
+
Requires-Dist: litellm>=1.0.0; extra == "full"
|
|
35
42
|
Requires-Dist: statsmodels>=0.13.0; extra == "full"
|
|
43
|
+
Requires-Dist: feast>=0.30.0; extra == "full"
|
|
44
|
+
Requires-Dist: nest_asyncio>=1.5.0; extra == "full"
|
|
45
|
+
Provides-Extra: benchmark
|
|
46
|
+
Requires-Dist: github-copilot-sdk>=0.1.0; extra == "benchmark"
|
|
47
|
+
Requires-Dist: statsmodels>=0.13.0; extra == "benchmark"
|
|
48
|
+
Requires-Dist: flaml[automl,blendsearch]>=2.0.0; extra == "benchmark"
|
|
49
|
+
Requires-Dist: autogluon.tabular[fastai]>=1.5.0; extra == "benchmark"
|
|
50
|
+
Requires-Dist: h2o>=3.40.0; extra == "benchmark"
|
|
51
|
+
Requires-Dist: numpy<2; extra == "benchmark"
|
|
36
52
|
Provides-Extra: dev
|
|
37
53
|
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
38
54
|
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
@@ -44,32 +60,39 @@ Requires-Dist: pre-commit>=3.6.0; extra == "dev"
|
|
|
44
60
|
|
|
45
61
|
# FeatCopilot 🚀
|
|
46
62
|
|
|
47
|
-
**Next-Generation LLM-Powered Auto Feature Engineering
|
|
63
|
+
**Next-Generation LLM-Powered Auto Feature Engineering Framework**
|
|
48
64
|
|
|
49
|
-
FeatCopilot
|
|
65
|
+
FeatCopilot automatically generates, selects, and explains predictive features using semantic understanding. It analyzes column meanings, applies domain-aware transformations, and provides human-readable explanations—turning raw data into ML-ready features in seconds.
|
|
66
|
+
|
|
67
|
+
## 🎬 Introduction Video
|
|
68
|
+
|
|
69
|
+
[](https://www.youtube.com/watch?v=H7m50TLGHFk)
|
|
50
70
|
|
|
51
71
|
## 📊 Benchmark Highlights
|
|
52
72
|
|
|
53
|
-
###
|
|
73
|
+
### Simple Models Benchmark (42 Datasets)
|
|
74
|
+
|
|
75
|
+
| Configuration | Improved | Avg Improvement | Best Improvement |
|
|
76
|
+
|---------------|----------|-----------------|------------------|
|
|
77
|
+
| **Tabular Engine** | 20 (48%) | +4.54% | +197% (delays_zurich) |
|
|
78
|
+
| **Tabular + LLM** | 23 (55%) | +6.12% | +420% (delays_zurich) |
|
|
79
|
+
|
|
80
|
+
Models: RandomForest (n_estimators=200, max_depth=20), LogisticRegression/Ridge
|
|
54
81
|
|
|
55
|
-
|
|
56
|
-
|-----------|--------------------:|----------:|
|
|
57
|
-
| **Text Classification** | **+12.44%** | +49.02% (News Headlines) |
|
|
58
|
-
| Time Series | +1.51% | +12.12% (Retail Demand) |
|
|
59
|
-
| Classification | +0.54% | +4.35% |
|
|
60
|
-
| Regression | +0.65% | +5.57% |
|
|
82
|
+
### AutoML Benchmark (FLAML, 120s budget)
|
|
61
83
|
|
|
62
|
-
|
|
84
|
+
| Metric | Value |
|
|
85
|
+
|--------|-------|
|
|
86
|
+
| **Datasets** | 41 |
|
|
87
|
+
| **Improved** | 19 (46%) |
|
|
88
|
+
| **Best Improvement** | +8.55% (abalone) |
|
|
63
89
|
|
|
64
|
-
|
|
65
|
-
|-----------|--------------------:|----------:|
|
|
66
|
-
| **Regression** | **+7.79%** | +19.66% (Retail Demand) |
|
|
67
|
-
| Classification | +2.38% | +2.87% |
|
|
90
|
+
### Key Results
|
|
68
91
|
|
|
69
|
-
- ✅
|
|
70
|
-
- 🧠 **+
|
|
71
|
-
-
|
|
72
|
-
-
|
|
92
|
+
- ✅ **+197% improvement** on delays_zurich (tabular only)
|
|
93
|
+
- 🧠 **+420% improvement** with LLM-enhanced features
|
|
94
|
+
- 📈 **+8.98%** on abalone regression task
|
|
95
|
+
- 🚀 **+5.68%** on complex_classification
|
|
73
96
|
|
|
74
97
|
[View Full Benchmark Results](https://thinkall.github.io/featcopilot/user-guide/benchmarks/)
|
|
75
98
|
|
|
@@ -87,7 +110,7 @@ FeatCopilot is a unified feature engineering framework that combines the best ap
|
|
|
87
110
|
# Basic installation
|
|
88
111
|
pip install featcopilot
|
|
89
112
|
|
|
90
|
-
# With LLM capabilities
|
|
113
|
+
# With LLM capabilities
|
|
91
114
|
pip install featcopilot[llm]
|
|
92
115
|
|
|
93
116
|
# Full installation
|
|
@@ -111,12 +134,12 @@ X_transformed = engineer.fit_transform(X, y) # <1 second
|
|
|
111
134
|
print(f"Features: {X.shape[1]} -> {X_transformed.shape[1]}")
|
|
112
135
|
```
|
|
113
136
|
|
|
114
|
-
### LLM Mode (With
|
|
137
|
+
### LLM Mode (With LiteLLM)
|
|
115
138
|
|
|
116
139
|
```python
|
|
117
140
|
from featcopilot import AutoFeatureEngineer
|
|
118
141
|
|
|
119
|
-
# LLM-powered semantic features (+
|
|
142
|
+
# LLM-powered semantic features (+420% max improvement)
|
|
120
143
|
engineer = AutoFeatureEngineer(
|
|
121
144
|
engines=['tabular', 'llm'],
|
|
122
145
|
max_features=50
|
|
@@ -164,16 +187,24 @@ engine = TimeSeriesEngine(
|
|
|
164
187
|
```
|
|
165
188
|
|
|
166
189
|
### LLM Engine
|
|
167
|
-
Uses GitHub Copilot SDK for intelligent feature generation.
|
|
190
|
+
Uses GitHub Copilot SDK (default) or LiteLLM (100+ providers) for intelligent feature generation.
|
|
168
191
|
|
|
169
192
|
```python
|
|
170
193
|
from featcopilot.llm import SemanticEngine
|
|
171
194
|
|
|
195
|
+
# Default: GitHub Copilot SDK
|
|
172
196
|
engine = SemanticEngine(
|
|
173
|
-
model='gpt-5',
|
|
197
|
+
model='gpt-5.2',
|
|
174
198
|
max_suggestions=20,
|
|
175
199
|
validate_features=True
|
|
176
200
|
)
|
|
201
|
+
|
|
202
|
+
# Alternative: LiteLLM backend
|
|
203
|
+
engine = SemanticEngine(
|
|
204
|
+
model='gpt-4o',
|
|
205
|
+
backend='litellm',
|
|
206
|
+
max_suggestions=20
|
|
207
|
+
)
|
|
177
208
|
```
|
|
178
209
|
|
|
179
210
|
## Feature Selection
|
|
@@ -211,7 +242,7 @@ X_selected = selector.fit_transform(X, y)
|
|
|
211
242
|
|
|
212
243
|
- Python 3.9+
|
|
213
244
|
- NumPy, Pandas, Scikit-learn
|
|
214
|
-
- GitHub Copilot
|
|
245
|
+
- GitHub Copilot SDK (default) or LiteLLM (for 100+ LLM providers)
|
|
215
246
|
|
|
216
247
|
## License
|
|
217
248
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
featcopilot/__init__.py,sha256=nTvN_SeJQwZWbiZopiPcB56MF34ONLP5CVKgpml1xcE,1057
|
|
2
|
+
featcopilot/core/__init__.py,sha256=FA_2a1JRjEgqaYLiWD8turixWBJzWwD9WhaUZaaUBtk,417
|
|
3
|
+
featcopilot/core/base.py,sha256=lN1zfV6GHCNy2XSNV9OH2dXtvwrZZsu376kT_ExrZto,6090
|
|
4
|
+
featcopilot/core/feature.py,sha256=BzzRJB6RH5RlaOszIvVqcRfQ2F0vfkP_sctfpYAlb-Y,7441
|
|
5
|
+
featcopilot/core/registry.py,sha256=EK4lleLShhMkGRXI1evv6SsVO81rpLLkzJbjImHryJE,4030
|
|
6
|
+
featcopilot/core/transform_rule.py,sha256=aCT3Fvvgi7hFnFn9t0CevY8UpT3ZABwGCZvTr2P9uBo,9420
|
|
7
|
+
featcopilot/engines/__init__.py,sha256=bXY5eiEQTZ9IxPY1fTESw4v1-nXFkegSs8p4VYGr7TQ,360
|
|
8
|
+
featcopilot/engines/relational.py,sha256=MUqOZgOwKmp7sMsE7lCMbLEjqekBPpcdLXeXkCEKzPM,8402
|
|
9
|
+
featcopilot/engines/tabular.py,sha256=8OMFl3TyfZPDwIyOnhLmcAvGw5INI92Ws6KYSe-BOPY,17733
|
|
10
|
+
featcopilot/engines/text.py,sha256=EWmSftvZ9z-JQFG4I194uKf81PPG_jluToajoPcyTRk,21998
|
|
11
|
+
featcopilot/engines/timeseries.py,sha256=0erGr987-H_a5iQuKhLVK8Zk1_8KJs7H6-09pU1O1oU,22188
|
|
12
|
+
featcopilot/llm/__init__.py,sha256=i_g4veX3aPFRSpffP3h-IZN-VvaWSMtfNT5kE7fup5w,735
|
|
13
|
+
featcopilot/llm/code_generator.py,sha256=p6qSSZ4ul8kxOBjmnAEAU_1dwtVMJWqIfDiM5UXkZqY,9814
|
|
14
|
+
featcopilot/llm/copilot_client.py,sha256=5ZjYQ5JO__RIxVV4_ZFZ-75gFMfgWoTv99uE9I7KXTg,20268
|
|
15
|
+
featcopilot/llm/explainer.py,sha256=5ukhm27zqyH3oHDOgCHrw3OeJMDEt9olIOYD_hTHqbA,6232
|
|
16
|
+
featcopilot/llm/litellm_client.py,sha256=HSrzJ9-cvxaDdqv142cgoeAqJ2WcIcwVhgz1Jb-PPv8,20443
|
|
17
|
+
featcopilot/llm/semantic_engine.py,sha256=2OC04PwUEYnBwe6MFLT0aPW1HzW2egP8vQsBNeT13LI,40309
|
|
18
|
+
featcopilot/llm/transform_rule_generator.py,sha256=2LUXshjLh-IRMdYgm5s6Vjs_Pvna_Hgbwg66efzs_1s,13510
|
|
19
|
+
featcopilot/selection/__init__.py,sha256=pjoos64ym3CR7Hk75qq2dY0NN4OT0Sn3hiBSG_h44SE,406
|
|
20
|
+
featcopilot/selection/importance.py,sha256=ieCZw4PvqLtoyl_mD349GBSOwnsrCAszwMbQYMcDqFc,6606
|
|
21
|
+
featcopilot/selection/redundancy.py,sha256=aRFlrwlYXWIrt2cEuciNSenvYj2eTb5lHuWCKhje6aw,7069
|
|
22
|
+
featcopilot/selection/statistical.py,sha256=Jowj5dMxzHkO96M6jROTJtu0tX9N3W99AThYO9bt8os,9226
|
|
23
|
+
featcopilot/selection/unified.py,sha256=xmVkXIMDqnCeyQE6OES3y1kVfnqImE7oHNbTVDo9bpc,9057
|
|
24
|
+
featcopilot/stores/__init__.py,sha256=KCcspMcFfm3-OA5JrcXgNHipYbgNWsK3zg0jAlp0syA,526
|
|
25
|
+
featcopilot/stores/base.py,sha256=VzHUA1IYMUiP4-cE4SXt_xmgkk2raIz09-9aZ6szOxQ,4395
|
|
26
|
+
featcopilot/stores/feast_store.py,sha256=ej6b05JRMwXqQ8pTorxKH8LQ3JTlwzGAGNckZPzq7d8,19032
|
|
27
|
+
featcopilot/stores/rule_store.py,sha256=HZQ0eQv-P3w5R7hl-syeOnIgI8V38hpZZl5u4WMHPEs,9924
|
|
28
|
+
featcopilot/transformers/__init__.py,sha256=pHHSivxNVyC9AmKzdA8UJS0B-b9V1B4eI1QgTP0Z8uw,234
|
|
29
|
+
featcopilot/transformers/sklearn_compat.py,sha256=yXBhxfkU9VOBgpb-bS-1L4hUUUuqG0Hg2xFxx0N5zBE,14082
|
|
30
|
+
featcopilot/utils/__init__.py,sha256=aWRMS_4sZHdw8eTHBYT_O4qMYuM9EHsPGPlo5a-PzaE,489
|
|
31
|
+
featcopilot/utils/cache.py,sha256=CYIVXQU9dpVdrLkemhjVAoCzXRMRzuQ-U36-q_8zDoc,6489
|
|
32
|
+
featcopilot/utils/logger.py,sha256=qJe4OT13TPanF-vebfs8BILmwkuV8zi2KSHlAUDaSnU,1334
|
|
33
|
+
featcopilot/utils/models.py,sha256=X9amoyLjy8umaCvbp0G6BkmzmasvAYZc2xVKvD6yeAA,7317
|
|
34
|
+
featcopilot/utils/parallel.py,sha256=k0ePtnI48aXNomD0lBBptla0RlhCX1-5xyEDD9zbkDQ,2963
|
|
35
|
+
featcopilot-0.3.0.dist-info/METADATA,sha256=0l3NT1k8X83RnIyz5mAPMMb5ZPVzFeJ_R-LX83NBDew,7936
|
|
36
|
+
featcopilot-0.3.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
37
|
+
featcopilot-0.3.0.dist-info/top_level.txt,sha256=Lf6lB8VBDX71TBzSXW3qq44RO5hIUKQ6DMi_dL8G_Ak,12
|
|
38
|
+
featcopilot-0.3.0.dist-info/RECORD,,
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
featcopilot/__init__.py,sha256=Ljn4cK5Emw_Rh8rg-T1EqDoyuWz_GXCAkiaZ_amz-cA,708
|
|
2
|
-
featcopilot/core/__init__.py,sha256=TX_AsPRsVDY1ZKO-ApK7qBFhbgngQbYNamhzYU9P3P8,338
|
|
3
|
-
featcopilot/core/base.py,sha256=lN1zfV6GHCNy2XSNV9OH2dXtvwrZZsu376kT_ExrZto,6090
|
|
4
|
-
featcopilot/core/feature.py,sha256=YGE-xDj7cRZDA50Oa5W-USXiEZ1NrX3WagZueRQiZbk,7361
|
|
5
|
-
featcopilot/core/registry.py,sha256=EK4lleLShhMkGRXI1evv6SsVO81rpLLkzJbjImHryJE,4030
|
|
6
|
-
featcopilot/engines/__init__.py,sha256=bXY5eiEQTZ9IxPY1fTESw4v1-nXFkegSs8p4VYGr7TQ,360
|
|
7
|
-
featcopilot/engines/relational.py,sha256=0zr8OhCRg-jvch1HRaxR6RgQFti3McDPvdco-onsUTc,8311
|
|
8
|
-
featcopilot/engines/tabular.py,sha256=M5cynbfNzkFilxV2rPG5kIcEwni-wc_HtjGNuGiSXGU,10781
|
|
9
|
-
featcopilot/engines/text.py,sha256=I9OGN0Rwf2SW1V9shaJDmmud1eymnx5xLdSmLfCzKhU,7396
|
|
10
|
-
featcopilot/engines/timeseries.py,sha256=76YE5QAD-yzXdajeP3wP3cfqtRSOZglz-E-OVSnvvs8,13553
|
|
11
|
-
featcopilot/llm/__init__.py,sha256=75MgMNw8cAggNOUAJV8ib1uV_UCTjA04tdYbqWNwumU,468
|
|
12
|
-
featcopilot/llm/code_generator.py,sha256=dAn5n3fp-sWj3DhQ9I-ZME5bYSXRVSe4Blx5P-W484Q,9715
|
|
13
|
-
featcopilot/llm/copilot_client.py,sha256=BLAENfNjkyOvgeVWQt-94mkTtxcdz5esk0ro6iaUCPM,17328
|
|
14
|
-
featcopilot/llm/explainer.py,sha256=fztidSmLX5dmbPRMcLmgXNv7AvDEJjXM5OzD6NFtQjQ,6142
|
|
15
|
-
featcopilot/llm/semantic_engine.py,sha256=U4CQ-OsWEr_c2Q8HF6yN7jXhKpTaSR6lft-lEacBzXo,12554
|
|
16
|
-
featcopilot/selection/__init__.py,sha256=pjoos64ym3CR7Hk75qq2dY0NN4OT0Sn3hiBSG_h44SE,406
|
|
17
|
-
featcopilot/selection/importance.py,sha256=GzSHTwKIeHJt42mzb1x8ClGFnqU9_2MxV1kOce9SODg,5481
|
|
18
|
-
featcopilot/selection/redundancy.py,sha256=bz47JQtEBKoz9eMIMB3YMOxH_1s7q1OsEUE_Ob3t0xg,5301
|
|
19
|
-
featcopilot/selection/statistical.py,sha256=POuWuMoyggJt1bCML10I6C7gKZoUP7Yc4nMsKBwECYs,6184
|
|
20
|
-
featcopilot/selection/unified.py,sha256=UPrTJ0svTjy6SnqQVeyiAGNjkgTRbXO_AzbucGZNUjc,6273
|
|
21
|
-
featcopilot/transformers/__init__.py,sha256=pHHSivxNVyC9AmKzdA8UJS0B-b9V1B4eI1QgTP0Z8uw,234
|
|
22
|
-
featcopilot/transformers/sklearn_compat.py,sha256=z5oA_y8YENQaGTTnR13u7CWhJpIhNmUoQP-DNVIgPeA,13536
|
|
23
|
-
featcopilot/utils/__init__.py,sha256=PH-fC1WYJYevcMVI4CCoXIUTJlb5lPXwKeKNj56vs_k,198
|
|
24
|
-
featcopilot/utils/cache.py,sha256=CYIVXQU9dpVdrLkemhjVAoCzXRMRzuQ-U36-q_8zDoc,6489
|
|
25
|
-
featcopilot/utils/parallel.py,sha256=MjLAYWYgoeu02IoWNWEZ82sCcRDi5bICJVcSq7dXmN4,2874
|
|
26
|
-
featcopilot-0.1.0.dist-info/METADATA,sha256=EI1MSGG2KkICOCRnLX1CI5-v91N40pmRS6oyAVgk1w4,6804
|
|
27
|
-
featcopilot-0.1.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
28
|
-
featcopilot-0.1.0.dist-info/top_level.txt,sha256=Lf6lB8VBDX71TBzSXW3qq44RO5hIUKQ6DMi_dL8G_Ak,12
|
|
29
|
-
featcopilot-0.1.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|