featcopilot 0.1.0__py3-none-any.whl → 0.2.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 +3 -1
- featcopilot/core/feature.py +5 -1
- featcopilot/engines/relational.py +5 -2
- featcopilot/engines/tabular.py +6 -3
- featcopilot/engines/text.py +6 -3
- featcopilot/engines/timeseries.py +5 -2
- featcopilot/llm/__init__.py +4 -1
- featcopilot/llm/code_generator.py +7 -4
- featcopilot/llm/copilot_client.py +67 -23
- featcopilot/llm/explainer.py +6 -3
- featcopilot/llm/litellm_client.py +595 -0
- featcopilot/llm/semantic_engine.py +65 -16
- featcopilot/selection/importance.py +5 -2
- featcopilot/selection/redundancy.py +6 -3
- featcopilot/selection/statistical.py +4 -1
- featcopilot/selection/unified.py +4 -1
- featcopilot/stores/__init__.py +15 -0
- featcopilot/stores/base.py +166 -0
- featcopilot/stores/feast_store.py +541 -0
- featcopilot/transformers/sklearn_compat.py +8 -5
- 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.2.0.dist-info}/METADATA +32 -9
- featcopilot-0.2.0.dist-info/RECORD +35 -0
- featcopilot-0.1.0.dist-info/RECORD +0 -29
- {featcopilot-0.1.0.dist-info → featcopilot-0.2.0.dist-info}/WHEEL +0 -0
- {featcopilot-0.1.0.dist-info → featcopilot-0.2.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.2.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,26 @@ 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>=1.0.0; extra == "benchmark"
|
|
50
|
+
Requires-Dist: h2o>=3.40.0; extra == "benchmark"
|
|
36
51
|
Provides-Extra: dev
|
|
37
52
|
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
38
53
|
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
@@ -44,9 +59,9 @@ Requires-Dist: pre-commit>=3.6.0; extra == "dev"
|
|
|
44
59
|
|
|
45
60
|
# FeatCopilot 🚀
|
|
46
61
|
|
|
47
|
-
**Next-Generation LLM-Powered Auto Feature Engineering
|
|
62
|
+
**Next-Generation LLM-Powered Auto Feature Engineering Framework**
|
|
48
63
|
|
|
49
|
-
FeatCopilot
|
|
64
|
+
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.
|
|
50
65
|
|
|
51
66
|
## 📊 Benchmark Highlights
|
|
52
67
|
|
|
@@ -59,7 +74,7 @@ FeatCopilot is a unified feature engineering framework that combines the best ap
|
|
|
59
74
|
| Classification | +0.54% | +4.35% |
|
|
60
75
|
| Regression | +0.65% | +5.57% |
|
|
61
76
|
|
|
62
|
-
### LLM Engine (With
|
|
77
|
+
### LLM Engine (With LiteLLM - 30-60s)
|
|
63
78
|
|
|
64
79
|
| Task Type | Average Improvement | Best Case |
|
|
65
80
|
|-----------|--------------------:|----------:|
|
|
@@ -87,7 +102,7 @@ FeatCopilot is a unified feature engineering framework that combines the best ap
|
|
|
87
102
|
# Basic installation
|
|
88
103
|
pip install featcopilot
|
|
89
104
|
|
|
90
|
-
# With LLM capabilities
|
|
105
|
+
# With LLM capabilities
|
|
91
106
|
pip install featcopilot[llm]
|
|
92
107
|
|
|
93
108
|
# Full installation
|
|
@@ -111,7 +126,7 @@ X_transformed = engineer.fit_transform(X, y) # <1 second
|
|
|
111
126
|
print(f"Features: {X.shape[1]} -> {X_transformed.shape[1]}")
|
|
112
127
|
```
|
|
113
128
|
|
|
114
|
-
### LLM Mode (With
|
|
129
|
+
### LLM Mode (With LiteLLM)
|
|
115
130
|
|
|
116
131
|
```python
|
|
117
132
|
from featcopilot import AutoFeatureEngineer
|
|
@@ -164,16 +179,24 @@ engine = TimeSeriesEngine(
|
|
|
164
179
|
```
|
|
165
180
|
|
|
166
181
|
### LLM Engine
|
|
167
|
-
Uses GitHub Copilot SDK for intelligent feature generation.
|
|
182
|
+
Uses GitHub Copilot SDK (default) or LiteLLM (100+ providers) for intelligent feature generation.
|
|
168
183
|
|
|
169
184
|
```python
|
|
170
185
|
from featcopilot.llm import SemanticEngine
|
|
171
186
|
|
|
187
|
+
# Default: GitHub Copilot SDK
|
|
172
188
|
engine = SemanticEngine(
|
|
173
|
-
model='gpt-5',
|
|
189
|
+
model='gpt-5.2',
|
|
174
190
|
max_suggestions=20,
|
|
175
191
|
validate_features=True
|
|
176
192
|
)
|
|
193
|
+
|
|
194
|
+
# Alternative: LiteLLM backend
|
|
195
|
+
engine = SemanticEngine(
|
|
196
|
+
model='gpt-4o',
|
|
197
|
+
backend='litellm',
|
|
198
|
+
max_suggestions=20
|
|
199
|
+
)
|
|
177
200
|
```
|
|
178
201
|
|
|
179
202
|
## Feature Selection
|
|
@@ -211,7 +234,7 @@ X_selected = selector.fit_transform(X, y)
|
|
|
211
234
|
|
|
212
235
|
- Python 3.9+
|
|
213
236
|
- NumPy, Pandas, Scikit-learn
|
|
214
|
-
- GitHub Copilot
|
|
237
|
+
- GitHub Copilot SDK (default) or LiteLLM (for 100+ LLM providers)
|
|
215
238
|
|
|
216
239
|
## License
|
|
217
240
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
featcopilot/__init__.py,sha256=pHamq5ULkm-VFVvy0JQFu-x3CRNqY4mZXppVqV_W4f0,763
|
|
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=BzzRJB6RH5RlaOszIvVqcRfQ2F0vfkP_sctfpYAlb-Y,7441
|
|
5
|
+
featcopilot/core/registry.py,sha256=EK4lleLShhMkGRXI1evv6SsVO81rpLLkzJbjImHryJE,4030
|
|
6
|
+
featcopilot/engines/__init__.py,sha256=bXY5eiEQTZ9IxPY1fTESw4v1-nXFkegSs8p4VYGr7TQ,360
|
|
7
|
+
featcopilot/engines/relational.py,sha256=MUqOZgOwKmp7sMsE7lCMbLEjqekBPpcdLXeXkCEKzPM,8402
|
|
8
|
+
featcopilot/engines/tabular.py,sha256=YPjqc9vxCI9-n9pzP3Bm4w2MZ5KHKE5XOk1BdI_nqSc,10878
|
|
9
|
+
featcopilot/engines/text.py,sha256=sixWPg7iuf1NGCWo51gIVZ6DMEf0NUrKA5HECcLXF1k,7496
|
|
10
|
+
featcopilot/engines/timeseries.py,sha256=FdwpOUJJToIkT1RR4VTpFIWYSvEfl_5pXJXf2qAuKm8,13644
|
|
11
|
+
featcopilot/llm/__init__.py,sha256=NswbNiGISinrIzx0EKwaL8fZL4t0DDDD8CIKZ3v_vps,629
|
|
12
|
+
featcopilot/llm/code_generator.py,sha256=p6qSSZ4ul8kxOBjmnAEAU_1dwtVMJWqIfDiM5UXkZqY,9814
|
|
13
|
+
featcopilot/llm/copilot_client.py,sha256=PX7JKBvF0dpnTNMRn_eZcH3swkvZqGQ6pKRICoxwF6c,19034
|
|
14
|
+
featcopilot/llm/explainer.py,sha256=5ukhm27zqyH3oHDOgCHrw3OeJMDEt9olIOYD_hTHqbA,6232
|
|
15
|
+
featcopilot/llm/litellm_client.py,sha256=HSrzJ9-cvxaDdqv142cgoeAqJ2WcIcwVhgz1Jb-PPv8,20443
|
|
16
|
+
featcopilot/llm/semantic_engine.py,sha256=6eg_9Ru_llo0W4wcdIPbMZOlx_p1MTdmCWLQ85g2v6o,14466
|
|
17
|
+
featcopilot/selection/__init__.py,sha256=pjoos64ym3CR7Hk75qq2dY0NN4OT0Sn3hiBSG_h44SE,406
|
|
18
|
+
featcopilot/selection/importance.py,sha256=GEUXfSwknLweAnbdaKX1OZuOn7tfhn-SPyIGiuBSvBg,5575
|
|
19
|
+
featcopilot/selection/redundancy.py,sha256=2S-fP20nfTPPikgIQFc0dvfJU3SprThake5waDdINF4,5398
|
|
20
|
+
featcopilot/selection/statistical.py,sha256=dey-vX-WKT9rrDtHPLYyksfJLHQqdREjSnrXJIUPT0I,6269
|
|
21
|
+
featcopilot/selection/unified.py,sha256=7H8USqe59FLA6cCXJC2etP8Cp6YMLJW3rwaNjIS_iUI,6358
|
|
22
|
+
featcopilot/stores/__init__.py,sha256=w_Ap3jA8pbV7eij3jK6TxAapG1O1tdKFAmUvAPcSdZA,439
|
|
23
|
+
featcopilot/stores/base.py,sha256=VzHUA1IYMUiP4-cE4SXt_xmgkk2raIz09-9aZ6szOxQ,4395
|
|
24
|
+
featcopilot/stores/feast_store.py,sha256=ej6b05JRMwXqQ8pTorxKH8LQ3JTlwzGAGNckZPzq7d8,19032
|
|
25
|
+
featcopilot/transformers/__init__.py,sha256=pHHSivxNVyC9AmKzdA8UJS0B-b9V1B4eI1QgTP0Z8uw,234
|
|
26
|
+
featcopilot/transformers/sklearn_compat.py,sha256=rf9tapjbiRT6Bx-hU_t-7UMncrKGwTaKn45qHcYWfUI,13637
|
|
27
|
+
featcopilot/utils/__init__.py,sha256=aWRMS_4sZHdw8eTHBYT_O4qMYuM9EHsPGPlo5a-PzaE,489
|
|
28
|
+
featcopilot/utils/cache.py,sha256=CYIVXQU9dpVdrLkemhjVAoCzXRMRzuQ-U36-q_8zDoc,6489
|
|
29
|
+
featcopilot/utils/logger.py,sha256=qJe4OT13TPanF-vebfs8BILmwkuV8zi2KSHlAUDaSnU,1334
|
|
30
|
+
featcopilot/utils/models.py,sha256=X9amoyLjy8umaCvbp0G6BkmzmasvAYZc2xVKvD6yeAA,7317
|
|
31
|
+
featcopilot/utils/parallel.py,sha256=k0ePtnI48aXNomD0lBBptla0RlhCX1-5xyEDD9zbkDQ,2963
|
|
32
|
+
featcopilot-0.2.0.dist-info/METADATA,sha256=9p7mmGYqFf4gerx16TnIxOLUueLxU5DBATWivlapS9k,7763
|
|
33
|
+
featcopilot-0.2.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
34
|
+
featcopilot-0.2.0.dist-info/top_level.txt,sha256=Lf6lB8VBDX71TBzSXW3qq44RO5hIUKQ6DMi_dL8G_Ak,12
|
|
35
|
+
featcopilot-0.2.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
|