upgini 1.1.274__py3-none-any.whl → 1.1.274a2__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.
Potentially problematic release.
This version of upgini might be problematic. Click here for more details.
- upgini/autofe/date.py +2 -8
- upgini/features_enricher.py +28 -54
- upgini/metrics.py +1 -12
- upgini/resource_bundle/strings.properties +1 -2
- upgini/utils/track_info.py +13 -25
- {upgini-1.1.274.dist-info → upgini-1.1.274a2.dist-info}/METADATA +2 -2
- {upgini-1.1.274.dist-info → upgini-1.1.274a2.dist-info}/RECORD +10 -10
- {upgini-1.1.274.dist-info → upgini-1.1.274a2.dist-info}/LICENSE +0 -0
- {upgini-1.1.274.dist-info → upgini-1.1.274a2.dist-info}/WHEEL +0 -0
- {upgini-1.1.274.dist-info → upgini-1.1.274a2.dist-info}/top_level.txt +0 -0
upgini/autofe/date.py
CHANGED
|
@@ -2,7 +2,6 @@ from typing import Any, Optional, Union
|
|
|
2
2
|
import numpy as np
|
|
3
3
|
import pandas as pd
|
|
4
4
|
from pydantic import BaseModel
|
|
5
|
-
from pandas.core.arrays.timedeltas import TimedeltaArray
|
|
6
5
|
|
|
7
6
|
from upgini.autofe.operand import PandasOperand
|
|
8
7
|
|
|
@@ -74,13 +73,8 @@ class DateListDiff(PandasOperand, DateDiffMixin):
|
|
|
74
73
|
|
|
75
74
|
return pd.Series(left - right.values).apply(lambda x: self._agg(self._diff(x)))
|
|
76
75
|
|
|
77
|
-
def _diff(self, x
|
|
78
|
-
|
|
79
|
-
x = (x / 365 / 24 / 60 / 60 / 10**9).astype(int)
|
|
80
|
-
elif self.diff_unit == "M":
|
|
81
|
-
raise Exception("Unsupported difference unit: Month")
|
|
82
|
-
else:
|
|
83
|
-
x = x / np.timedelta64(1, self.diff_unit)
|
|
76
|
+
def _diff(self, x):
|
|
77
|
+
x = x / np.timedelta64(1, self.diff_unit)
|
|
84
78
|
return x[x > 0]
|
|
85
79
|
|
|
86
80
|
def _agg(self, x):
|
upgini/features_enricher.py
CHANGED
|
@@ -424,9 +424,6 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
424
424
|
|
|
425
425
|
self.__validate_search_keys(self.search_keys, self.search_id)
|
|
426
426
|
|
|
427
|
-
# Validate client estimator params
|
|
428
|
-
self._get_client_cat_features(estimator, X, self.search_keys)
|
|
429
|
-
|
|
430
427
|
try:
|
|
431
428
|
self.X = X
|
|
432
429
|
self.y = y
|
|
@@ -820,7 +817,6 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
820
817
|
trace_id = trace_id or str(uuid.uuid4())
|
|
821
818
|
start_time = time.time()
|
|
822
819
|
with MDC(trace_id=trace_id):
|
|
823
|
-
self.logger.info("Start calculate metrics")
|
|
824
820
|
if len(args) > 0:
|
|
825
821
|
msg = f"WARNING: Unsupported positional arguments for calculate_metrics: {args}"
|
|
826
822
|
self.logger.warning(msg)
|
|
@@ -872,9 +868,22 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
872
868
|
self.__display_support_link(msg)
|
|
873
869
|
return None
|
|
874
870
|
|
|
875
|
-
cat_features
|
|
876
|
-
|
|
877
|
-
|
|
871
|
+
cat_features = None
|
|
872
|
+
search_keys_for_metrics = []
|
|
873
|
+
if (
|
|
874
|
+
estimator is not None
|
|
875
|
+
and hasattr(estimator, "get_param")
|
|
876
|
+
and estimator.get_param("cat_features") is not None
|
|
877
|
+
):
|
|
878
|
+
cat_features = estimator.get_param("cat_features")
|
|
879
|
+
if len(cat_features) > 0 and isinstance(cat_features[0], int):
|
|
880
|
+
cat_features = [effective_X.columns[i] for i in cat_features]
|
|
881
|
+
for cat_feature in cat_features:
|
|
882
|
+
if cat_feature in self.search_keys:
|
|
883
|
+
if self.search_keys[cat_feature] in [SearchKey.COUNTRY, SearchKey.POSTAL_CODE]:
|
|
884
|
+
search_keys_for_metrics.append(cat_feature)
|
|
885
|
+
else:
|
|
886
|
+
raise ValidationError(self.bundle.get("cat_feature_search_key").format(cat_feature))
|
|
878
887
|
|
|
879
888
|
prepared_data = self._prepare_data_for_metrics(
|
|
880
889
|
trace_id=trace_id,
|
|
@@ -889,7 +898,6 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
889
898
|
search_keys_for_metrics=search_keys_for_metrics,
|
|
890
899
|
progress_bar=progress_bar,
|
|
891
900
|
progress_callback=progress_callback,
|
|
892
|
-
cat_features=cat_features,
|
|
893
901
|
)
|
|
894
902
|
if prepared_data is None:
|
|
895
903
|
return None
|
|
@@ -1265,29 +1273,6 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1265
1273
|
|
|
1266
1274
|
return _cv, groups
|
|
1267
1275
|
|
|
1268
|
-
def _get_client_cat_features(
|
|
1269
|
-
self, estimator: Optional[Any], X: pd.DataFrame, search_keys: Dict[str, SearchKey]
|
|
1270
|
-
) -> Optional[List[str]]:
|
|
1271
|
-
cat_features = None
|
|
1272
|
-
search_keys_for_metrics = []
|
|
1273
|
-
if (
|
|
1274
|
-
estimator is not None
|
|
1275
|
-
and hasattr(estimator, "get_param")
|
|
1276
|
-
and estimator.get_param("cat_features") is not None
|
|
1277
|
-
):
|
|
1278
|
-
cat_features = estimator.get_param("cat_features")
|
|
1279
|
-
if len(cat_features) > 0:
|
|
1280
|
-
if all([isinstance(f, int) for f in cat_features]):
|
|
1281
|
-
cat_features = [X.columns[i] for i in cat_features]
|
|
1282
|
-
self.logger.info(f"Collected categorical features {cat_features} from user estimator")
|
|
1283
|
-
for cat_feature in cat_features:
|
|
1284
|
-
if cat_feature in search_keys:
|
|
1285
|
-
if search_keys[cat_feature] in [SearchKey.COUNTRY, SearchKey.POSTAL_CODE]:
|
|
1286
|
-
search_keys_for_metrics.append(cat_feature)
|
|
1287
|
-
else:
|
|
1288
|
-
raise ValidationError(self.bundle.get("cat_feature_search_key").format(cat_feature))
|
|
1289
|
-
return cat_features, search_keys_for_metrics
|
|
1290
|
-
|
|
1291
1276
|
def _prepare_data_for_metrics(
|
|
1292
1277
|
self,
|
|
1293
1278
|
trace_id: str,
|
|
@@ -1302,7 +1287,6 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1302
1287
|
search_keys_for_metrics: Optional[List[str]] = None,
|
|
1303
1288
|
progress_bar: Optional[ProgressBar] = None,
|
|
1304
1289
|
progress_callback: Optional[Callable[[SearchProgress], Any]] = None,
|
|
1305
|
-
cat_features: Optional[List[str]] = None,
|
|
1306
1290
|
):
|
|
1307
1291
|
is_input_same_as_fit, X, y, eval_set = self._is_input_same_as_fit(X, y, eval_set)
|
|
1308
1292
|
is_demo_dataset = hash_input(X, y, eval_set) in DEMO_DATASET_HASHES
|
|
@@ -1360,8 +1344,9 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1360
1344
|
|
|
1361
1345
|
# Detect and drop high cardinality columns in train
|
|
1362
1346
|
columns_with_high_cardinality = FeaturesValidator.find_high_cardinality(fitting_X)
|
|
1363
|
-
|
|
1364
|
-
|
|
1347
|
+
columns_with_high_cardinality = [
|
|
1348
|
+
c for c in columns_with_high_cardinality if c not in (self.generate_features or [])
|
|
1349
|
+
]
|
|
1365
1350
|
if len(columns_with_high_cardinality) > 0:
|
|
1366
1351
|
self.logger.warning(
|
|
1367
1352
|
f"High cardinality columns {columns_with_high_cardinality} will be dropped for metrics calculation"
|
|
@@ -1824,10 +1809,12 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1824
1809
|
features_section = ""
|
|
1825
1810
|
|
|
1826
1811
|
search_id = self._search_task.search_task_id
|
|
1827
|
-
api_example =
|
|
1812
|
+
api_example = (
|
|
1813
|
+
f"""curl 'https://search.upgini.com/online/api/http_inference_trigger?search_id={search_id}' \\
|
|
1828
1814
|
-H 'Authorization: {self.api_key}' \\
|
|
1829
1815
|
-H 'Content-Type: application/json' \\
|
|
1830
1816
|
-d '{{"search_keys": {keys}{features_section}}}'"""
|
|
1817
|
+
)
|
|
1831
1818
|
return api_example
|
|
1832
1819
|
|
|
1833
1820
|
def _get_copy_of_runtime_parameters(self) -> RuntimeParameters:
|
|
@@ -1923,7 +1910,8 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1923
1910
|
else:
|
|
1924
1911
|
self.logger.info("Input dataset hasn't date column")
|
|
1925
1912
|
if self.add_date_if_missing:
|
|
1926
|
-
df = self._add_current_date_as_key(df
|
|
1913
|
+
df = self._add_current_date_as_key(df)
|
|
1914
|
+
search_keys[self.CURRENT_DATE] = SearchKey.DATE
|
|
1927
1915
|
email_column = self._get_email_column(search_keys)
|
|
1928
1916
|
hem_column = self._get_hem_column(search_keys)
|
|
1929
1917
|
email_converted_to_hem = False
|
|
@@ -2294,7 +2282,8 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
2294
2282
|
else:
|
|
2295
2283
|
self.logger.info("Input dataset hasn't date column")
|
|
2296
2284
|
if self.add_date_if_missing:
|
|
2297
|
-
df = self._add_current_date_as_key(df
|
|
2285
|
+
df = self._add_current_date_as_key(df)
|
|
2286
|
+
self.fit_search_keys[self.CURRENT_DATE] = SearchKey.DATE
|
|
2298
2287
|
email_column = self._get_email_column(self.fit_search_keys)
|
|
2299
2288
|
hem_column = self._get_hem_column(self.fit_search_keys)
|
|
2300
2289
|
email_converted_to_hem = False
|
|
@@ -2876,23 +2865,8 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
2876
2865
|
return col
|
|
2877
2866
|
|
|
2878
2867
|
@staticmethod
|
|
2879
|
-
def _add_current_date_as_key(
|
|
2880
|
-
df
|
|
2881
|
-
) -> pd.DataFrame:
|
|
2882
|
-
if (
|
|
2883
|
-
set(search_keys.values()) == {SearchKey.PHONE}
|
|
2884
|
-
or set(search_keys.values()) == {SearchKey.EMAIL}
|
|
2885
|
-
or set(search_keys.values()) == {SearchKey.HEM}
|
|
2886
|
-
or set(search_keys.values()) == {SearchKey.COUNTRY, SearchKey.POSTAL_CODE}
|
|
2887
|
-
):
|
|
2888
|
-
msg = bundle.get("current_date_added")
|
|
2889
|
-
print(msg)
|
|
2890
|
-
logger.warning(msg)
|
|
2891
|
-
df[FeaturesEnricher.CURRENT_DATE] = datetime.date.today()
|
|
2892
|
-
search_keys[FeaturesEnricher.CURRENT_DATE] = SearchKey.DATE
|
|
2893
|
-
converter = DateTimeSearchKeyConverter(FeaturesEnricher.CURRENT_DATE, None, logger, bundle)
|
|
2894
|
-
df = converter.convert(df)
|
|
2895
|
-
return df
|
|
2868
|
+
def _add_current_date_as_key(df: pd.DataFrame) -> pd.DataFrame:
|
|
2869
|
+
df[FeaturesEnricher.CURRENT_DATE] = datetime.date.today()
|
|
2896
2870
|
|
|
2897
2871
|
@staticmethod
|
|
2898
2872
|
def _get_group_columns(df: pd.DataFrame, search_keys: Dict[str, SearchKey]) -> List[str]:
|
upgini/metrics.py
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import inspect
|
|
2
1
|
import logging
|
|
3
2
|
import re
|
|
4
3
|
from copy import deepcopy
|
|
@@ -382,11 +381,6 @@ class EstimatorWrapper:
|
|
|
382
381
|
kwargs["estimator"] = estimator_copy
|
|
383
382
|
if isinstance(estimator, CatBoostClassifier) or isinstance(estimator, CatBoostRegressor):
|
|
384
383
|
if cat_features is not None:
|
|
385
|
-
for cat_feature in cat_features:
|
|
386
|
-
if cat_feature not in X.columns:
|
|
387
|
-
logger.error(
|
|
388
|
-
f"Client cat_feature `{cat_feature}` not found in X columns: {X.columns.to_list()}"
|
|
389
|
-
)
|
|
390
384
|
estimator_copy.set_params(
|
|
391
385
|
cat_features=[X.columns.get_loc(cat_feature) for cat_feature in cat_features]
|
|
392
386
|
)
|
|
@@ -651,14 +645,9 @@ class OtherEstimatorWrapper(EstimatorWrapper):
|
|
|
651
645
|
|
|
652
646
|
|
|
653
647
|
def validate_scoring_argument(scoring: Union[Callable, str, None]):
|
|
648
|
+
# TODO validate that if it is Callable then it accepts 3 arguments
|
|
654
649
|
if isinstance(scoring, str) and scoring is not None:
|
|
655
650
|
_get_scorer_by_name(scoring)
|
|
656
|
-
elif isinstance(scoring, Callable):
|
|
657
|
-
spec = inspect.getfullargspec(scoring)
|
|
658
|
-
if len(spec.args) < 3:
|
|
659
|
-
raise ValidationError(
|
|
660
|
-
f"Invalid scoring function passed {scoring}. It should accept 3 input arguments: estimator, X, y"
|
|
661
|
-
)
|
|
662
651
|
|
|
663
652
|
|
|
664
653
|
def _get_scorer_by_name(scoring: str) -> Tuple[Callable, str, int]:
|
|
@@ -38,7 +38,6 @@ loss_selection_warn=\nWARNING: Loss `{0}` is not supported for feature selection
|
|
|
38
38
|
loss_calc_metrics_warn=\nWARNING: Loss `{0}` is not supported for metrics calculation with {1}
|
|
39
39
|
multivariate_timeseries_detected=\nWARNING: Multivariate TimeSeries detected. Blocked time series cross-validation split selected.\nMore details: https://github.com/upgini/upgini#-time-series-prediction-support
|
|
40
40
|
group_k_fold_in_classification=\nWARNING: Using group K-fold cross-validation split for classification task.
|
|
41
|
-
current_date_added=\nWARNING: No date/datetime column was detected in X to be used as a search key. The current date will be used to match the latest version of data sources
|
|
42
41
|
|
|
43
42
|
# Errors
|
|
44
43
|
failed_search_by_task_id=Failed to retrieve the specified search results
|
|
@@ -159,7 +158,7 @@ dataset_invalid_multiclass_target=Unexpected dtype of target for multiclass task
|
|
|
159
158
|
dataset_invalid_regression_target=Unexpected dtype of target for regression task type: {}. Expected float
|
|
160
159
|
dataset_invalid_timeseries_target=Unexpected dtype of target for timeseries task type: {}. Expected float
|
|
161
160
|
dataset_to_many_multiclass_targets=The number of target classes {} exceeds the allowed threshold: {}. Please, correct your data and try again
|
|
162
|
-
dataset_rarest_class_less_min=
|
|
161
|
+
dataset_rarest_class_less_min=Frequency of the rarest class `{}` is {}, minimum frequency must be > {} for each class\nPlease, remove rows with rarest class from your dataframe
|
|
163
162
|
dataset_rarest_class_less_threshold=\nWARNING: Target is imbalanced and will be undersampled to the rarest class. Frequency of the rarest class `{}` is {}\nMinimum number of observations for each class to avoid undersampling {} ({}%)
|
|
164
163
|
dataset_date_features=\nWARNING: Columns {} is a datetime or period type but not used as a search key, removed from X
|
|
165
164
|
dataset_too_many_features=Too many features. Maximum number of features is {}
|
upgini/utils/track_info.py
CHANGED
|
@@ -55,7 +55,7 @@ def _get_execution_ide() -> str:
|
|
|
55
55
|
def get_track_metrics(client_ip: Optional[str] = None, client_visitorid: Optional[str] = None) -> dict:
|
|
56
56
|
# default values
|
|
57
57
|
track = {"ide": _get_execution_ide()}
|
|
58
|
-
ident_res = "https://
|
|
58
|
+
ident_res = "https://api.ipify.org"
|
|
59
59
|
|
|
60
60
|
try:
|
|
61
61
|
track["hostname"] = socket.gethostname()
|
|
@@ -74,20 +74,17 @@ def get_track_metrics(client_ip: Optional[str] = None, client_visitorid: Optiona
|
|
|
74
74
|
display(
|
|
75
75
|
Javascript(
|
|
76
76
|
"""
|
|
77
|
-
|
|
78
|
-
return import('https://upgini.github.io/upgini/js/a.js')
|
|
77
|
+
import('https://upgini.github.io/upgini/js/a.js')
|
|
79
78
|
.then(FingerprintJS => FingerprintJS.load())
|
|
80
79
|
.then(fp => fp.get())
|
|
81
|
-
.then(result => result.visitorId);
|
|
82
|
-
}
|
|
80
|
+
.then(result => window.visitorId = result.visitorId);
|
|
83
81
|
"""
|
|
84
82
|
)
|
|
85
83
|
)
|
|
86
|
-
track["visitorId"] = output.eval_js("
|
|
84
|
+
track["visitorId"] = output.eval_js("window.visitorId", timeout_sec=10)
|
|
87
85
|
except Exception as e:
|
|
88
86
|
track["err"] = str(e)
|
|
89
|
-
|
|
90
|
-
track["visitorId"] = "None"
|
|
87
|
+
track["visitorId"] = "None"
|
|
91
88
|
if client_ip:
|
|
92
89
|
track["ip"] = client_ip
|
|
93
90
|
else:
|
|
@@ -98,19 +95,16 @@ def get_track_metrics(client_ip: Optional[str] = None, client_visitorid: Optiona
|
|
|
98
95
|
display(
|
|
99
96
|
Javascript(
|
|
100
97
|
f"""
|
|
101
|
-
|
|
102
|
-
return fetch("{ident_res}")
|
|
98
|
+
fetch("{ident_res}")
|
|
103
99
|
.then(response => response.text())
|
|
104
|
-
.then(data => data);
|
|
105
|
-
}}
|
|
100
|
+
.then(data => window.clientIP = data);
|
|
106
101
|
"""
|
|
107
102
|
)
|
|
108
103
|
)
|
|
109
|
-
track["ip"] = output.eval_js("
|
|
104
|
+
track["ip"] = output.eval_js("window.clientIP", timeout_sec=10)
|
|
110
105
|
except Exception as e:
|
|
111
106
|
track["err"] = str(e)
|
|
112
|
-
|
|
113
|
-
track["ip"] = "0.0.0.0"
|
|
107
|
+
track["ip"] = "0.0.0.0"
|
|
114
108
|
|
|
115
109
|
elif track["ide"] == "binder":
|
|
116
110
|
try:
|
|
@@ -122,10 +116,8 @@ def get_track_metrics(client_ip: Optional[str] = None, client_visitorid: Optiona
|
|
|
122
116
|
track["visitorId"] = sha256(os.environ["CLIENT_IP"].encode()).hexdigest()
|
|
123
117
|
except Exception as e:
|
|
124
118
|
track["err"] = str(e)
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
if "visitorId" not in track:
|
|
128
|
-
track["visitorId"] = "None"
|
|
119
|
+
track["ip"] = "0.0.0.0"
|
|
120
|
+
track["visitorId"] = "None"
|
|
129
121
|
|
|
130
122
|
elif track["ide"] == "kaggle":
|
|
131
123
|
try:
|
|
@@ -144,8 +136,8 @@ def get_track_metrics(client_ip: Optional[str] = None, client_visitorid: Optiona
|
|
|
144
136
|
raise Exception(err)
|
|
145
137
|
except Exception as e:
|
|
146
138
|
track["err"] = str(e)
|
|
147
|
-
|
|
148
|
-
|
|
139
|
+
track["ip"] = "0.0.0.0"
|
|
140
|
+
track["visitorId"] = "None"
|
|
149
141
|
else:
|
|
150
142
|
try:
|
|
151
143
|
if client_ip:
|
|
@@ -158,9 +150,5 @@ def get_track_metrics(client_ip: Optional[str] = None, client_visitorid: Optiona
|
|
|
158
150
|
track["visitorId"] = sha256(str(getnode()).encode()).hexdigest()
|
|
159
151
|
except Exception as e:
|
|
160
152
|
track["err"] = str(e)
|
|
161
|
-
if "visitorId" not in track:
|
|
162
|
-
track["visitorId"] = "None"
|
|
163
|
-
if "ip" not in track:
|
|
164
|
-
track["ip"] = "0.0.0.0"
|
|
165
153
|
|
|
166
154
|
return track
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: upgini
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.274a2
|
|
4
4
|
Summary: Intelligent data search & enrichment for Machine Learning
|
|
5
5
|
Home-page: https://upgini.com/
|
|
6
6
|
Author: Upgini Developers
|
|
@@ -28,7 +28,7 @@ Description-Content-Type: text/markdown
|
|
|
28
28
|
License-File: LICENSE
|
|
29
29
|
Requires-Dist: python-dateutil >=2.8.0
|
|
30
30
|
Requires-Dist: requests >=2.8.0
|
|
31
|
-
Requires-Dist: pandas <
|
|
31
|
+
Requires-Dist: pandas <2.1.0,>=1.1.0
|
|
32
32
|
Requires-Dist: numpy >=1.19.0
|
|
33
33
|
Requires-Dist: scikit-learn >=1.3.0
|
|
34
34
|
Requires-Dist: pydantic <2.0.0,>=1.8.2
|
|
@@ -2,11 +2,11 @@ upgini/__init__.py,sha256=asENHgEVHQBIkV-e_0IhE_ZWqkCG6398U3ZLrNzAH6k,407
|
|
|
2
2
|
upgini/ads.py,sha256=mre6xn44wcC_fg63iLT_kTh4mViZqR9AKRJZAtpQz8Y,2592
|
|
3
3
|
upgini/dataset.py,sha256=xb4gIANyGbdcuM8Awyq2pJPiH_3k_LEbETApJgAoRBA,45529
|
|
4
4
|
upgini/errors.py,sha256=pdzQl3MKuK52yvncxMWMRWeSIOGhUFzpQoszoRFBOk0,958
|
|
5
|
-
upgini/features_enricher.py,sha256=
|
|
5
|
+
upgini/features_enricher.py,sha256=eQqiCXs-JM8cDQiXY6VEN1--oIWY3HsqxKrjNnF7rAU,174722
|
|
6
6
|
upgini/fingerprint.js,sha256=VygVIQlN1v4NGZfjHqtRogOw8zjTnnMNJg_f7M5iGQU,33442
|
|
7
7
|
upgini/http.py,sha256=zaO86LBBLmkieGbgYifk29eVoPCxXimZQ8YkQtKcM0I,42244
|
|
8
8
|
upgini/metadata.py,sha256=fwVxtkR6Mn4iRoOqV6BfMJvJrx65I3YwZUMbZjhPyOI,9673
|
|
9
|
-
upgini/metrics.py,sha256=
|
|
9
|
+
upgini/metrics.py,sha256=U3VJKbKmuWACqI4jTcszXo0WqeXFtV8bWyY9VLBL-rw,29129
|
|
10
10
|
upgini/search_task.py,sha256=tmJ17WUxv3J5NWrYUJB_NKdZ792Ifz8Z8UnDXeQnpss,17077
|
|
11
11
|
upgini/spinner.py,sha256=Dm1dQ5F_z_Ua2odLxZX7OypcOX9tSx_vE5MGaKtUmfw,1118
|
|
12
12
|
upgini/version_validator.py,sha256=rDIncP6BEko4J2F2hUcMOtKm_vZbI4ICWcNcw8hrwM4,1400
|
|
@@ -15,7 +15,7 @@ upgini/ads_management/ads_manager.py,sha256=fP4Yqx3h2Snw5X335TbXEwFoupq1RYsE7y0P
|
|
|
15
15
|
upgini/autofe/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
16
|
upgini/autofe/all_operands.py,sha256=H66wqVLD-H9k8A4-q2wslhV9QaNxlb49f8YiT0Xfkps,2356
|
|
17
17
|
upgini/autofe/binary.py,sha256=f8LQqZi9zyaMUAv-jASMmWNA_vT05ncYCjZq0qx3USs,3972
|
|
18
|
-
upgini/autofe/date.py,sha256=
|
|
18
|
+
upgini/autofe/date.py,sha256=_6RoEJZ5Kf-Q_aMOFucS6YSIZpCcelgpw-edV4qmRIM,3935
|
|
19
19
|
upgini/autofe/feature.py,sha256=2FQRGtIumNz60hFAjfLReaY18SI7HxzYZOoC5avzSjQ,11847
|
|
20
20
|
upgini/autofe/groupby.py,sha256=iXRfOmOc84ooSzRhsh9GmmG7rTafX0-ekXko8s9Qs68,3089
|
|
21
21
|
upgini/autofe/operand.py,sha256=dhtToPDGWtP_0u_RjayUpezJJZAgq_TzNbPH0bI9OXI,2805
|
|
@@ -29,7 +29,7 @@ upgini/normalizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
|
|
|
29
29
|
upgini/normalizer/phone_normalizer.py,sha256=_SYMX4GTgwzRXArK54Jp3vUBE5d4jZxSVyze-0tqzg0,9996
|
|
30
30
|
upgini/resource_bundle/__init__.py,sha256=hdvbqL0b0xMWbY6-kiYGsW1ro2GMiWpxxsO9uCv-h9Q,8379
|
|
31
31
|
upgini/resource_bundle/exceptions.py,sha256=5fRvx0_vWdE1-7HcSgF0tckB4A9AKyf5RiinZkInTsI,621
|
|
32
|
-
upgini/resource_bundle/strings.properties,sha256=
|
|
32
|
+
upgini/resource_bundle/strings.properties,sha256=TM9OykiEXNpcgFN3DpqBGbQs4N9m4mzHBn-k6aazc30,26111
|
|
33
33
|
upgini/resource_bundle/strings_widget.properties,sha256=gOdqvZWntP2LCza_tyVk1_yRYcG4c04K9sQOAVhF_gw,1577
|
|
34
34
|
upgini/sampler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
35
|
upgini/sampler/base.py,sha256=CC-DvPbrN7zp5--SVFuUqkVmdWM_5F7R0Do98ETV82U,6421
|
|
@@ -54,10 +54,10 @@ upgini/utils/postal_code_utils.py,sha256=_8CR9tBqsPptQsmMUvnrCAmBaMIQSWH3JfJ4ly3
|
|
|
54
54
|
upgini/utils/progress_bar.py,sha256=iNXyqT3vKCeHpfiG5HHwr7Lk2cTtKViM93Fl8iZnjGc,1564
|
|
55
55
|
upgini/utils/sklearn_ext.py,sha256=e1aMNXk1zUt7uFnl0FcUF0zOnaXSE7z5xBHmJPknUVs,44014
|
|
56
56
|
upgini/utils/target_utils.py,sha256=9K67tkY7LWhQMO-vbbPqBaO-KriAmg_6fVz5RQRaLQc,7802
|
|
57
|
-
upgini/utils/track_info.py,sha256=
|
|
57
|
+
upgini/utils/track_info.py,sha256=EPcJ13Jqa17_T0JjM37Ac9kWDz5Zk0GVsIZKutOb8aU,5207
|
|
58
58
|
upgini/utils/warning_counter.py,sha256=dIWBB4dI5XRRJZudvIlqlIYKEiwLLPcXarsZuYRt338,227
|
|
59
|
-
upgini-1.1.
|
|
60
|
-
upgini-1.1.
|
|
61
|
-
upgini-1.1.
|
|
62
|
-
upgini-1.1.
|
|
63
|
-
upgini-1.1.
|
|
59
|
+
upgini-1.1.274a2.dist-info/LICENSE,sha256=5RRzgvdJUu3BUDfv4bzVU6FqKgwHlIay63pPCSmSgzw,1514
|
|
60
|
+
upgini-1.1.274a2.dist-info/METADATA,sha256=bjcE365HG_llg9ozhC4TSFN2-bemJxgLzCQrX6O8R_M,48158
|
|
61
|
+
upgini-1.1.274a2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
62
|
+
upgini-1.1.274a2.dist-info/top_level.txt,sha256=OFhTGiDIWKl5gFI49qvWq1R9IKflPaE2PekcbDXDtx4,7
|
|
63
|
+
upgini-1.1.274a2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|