upgini 1.2.16__py3-none-any.whl → 1.2.16a1__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/__about__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "1.2.16"
1
+ __version__ = "1.2.16a1"
@@ -336,7 +336,6 @@ class FeaturesEnricher(TransformerMixin):
336
336
  self.exclude_columns = exclude_columns
337
337
  self.baseline_score_column = baseline_score_column
338
338
  self.add_date_if_missing = add_date_if_missing
339
- self.features_info_display_handle = None
340
339
 
341
340
  def _get_api_key(self):
342
341
  return self._api_key
@@ -1035,9 +1034,7 @@ class FeaturesEnricher(TransformerMixin):
1035
1034
  fitting_enriched_X, enriched_y_sorted
1036
1035
  )
1037
1036
 
1038
- if enriched_shaps is not None:
1039
- self._update_shap_values(enriched_shaps)
1040
-
1037
+ print(f"Calculated enriched shaps: {enriched_shaps}")
1041
1038
  if enriched_metric is None:
1042
1039
  self.logger.warning(
1043
1040
  f"Enriched {metric} on train combined features is None (maybe all features was removed)"
@@ -1195,17 +1192,6 @@ class FeaturesEnricher(TransformerMixin):
1195
1192
  self.logger.info(f"Calculating metrics elapsed time: {time.time() - start_time}")
1196
1193
 
1197
1194
  def _update_shap_values(self, new_shaps: Dict[str, float]):
1198
- new_shaps = {
1199
- feature: self._round_shap_value(shap)
1200
- for feature, shap in new_shaps.items()
1201
- if feature in self.feature_names_
1202
- }
1203
- features_importances = list(new_shaps.items())
1204
- features_importances.sort(key=lambda m: (-m[1], m[0]))
1205
- self.feature_names_, self.feature_importances_ = zip(*features_importances)
1206
- self.feature_names_ = list(self.feature_names_)
1207
- self.feature_importances_ = list(self.feature_importances_)
1208
-
1209
1195
  feature_name_header = self.bundle.get("features_info_name")
1210
1196
  shap_value_header = self.bundle.get("features_info_shap")
1211
1197
 
@@ -1213,28 +1199,9 @@ class FeaturesEnricher(TransformerMixin):
1213
1199
  return new_shaps.get(row[feature_name_header], row[shap_value_header])
1214
1200
 
1215
1201
  self.features_info[shap_value_header] = self.features_info.apply(update_shap, axis=1)
1216
- self._internal_features_info[shap_value_header] = self._internal_features_info.apply(update_shap, axis=1)
1217
- self._features_info_without_links[shap_value_header] = self._features_info_without_links.apply(
1218
- update_shap, axis=1
1219
- )
1220
- self.logger.info(f"Recalculated SHAP values:\n{self._features_info_without_links}")
1221
-
1222
1202
  self.features_info.sort_values(by=shap_value_header, ascending=False, inplace=True)
1223
- self._internal_features_info.sort_values(by=shap_value_header, ascending=False, inplace=True)
1224
- self._features_info_without_links.sort_values(by=shap_value_header, ascending=False, inplace=True)
1225
1203
 
1226
- if self.features_info_display_handle:
1227
- try:
1228
- _ = get_ipython() # type: ignore
1229
-
1230
- display_html_dataframe(
1231
- self.features_info,
1232
- self._features_info_without_links,
1233
- self.bundle.get("relevant_features_header"),
1234
- display_handle=self.features_info_display_handle,
1235
- )
1236
- except (ImportError, NameError):
1237
- print(self._internal_features_info)
1204
+ # TODO redraw
1238
1205
 
1239
1206
  def _check_train_and_eval_target_distribution(self, y, eval_set_dict):
1240
1207
  uneven_distribution = False
@@ -1564,19 +1531,11 @@ class FeaturesEnricher(TransformerMixin):
1564
1531
  self.logger.info("No external features selected. So use only input datasets for metrics calculation")
1565
1532
  return self.__sample_only_input(validated_X, validated_y, eval_set, is_demo_dataset)
1566
1533
  # TODO save and check if dataset was deduplicated - use imbalance branch for such case
1567
- elif (
1568
- not self.imbalanced
1569
- and not exclude_features_sources
1570
- and is_input_same_as_fit
1571
- and self.df_with_original_index is not None
1572
- ):
1534
+ elif not self.imbalanced and not exclude_features_sources and is_input_same_as_fit:
1573
1535
  self.logger.info("Dataset is not imbalanced, so use enriched_X from fit")
1574
1536
  return self.__sample_balanced(eval_set, trace_id, remove_outliers_calc_metrics)
1575
1537
  else:
1576
- self.logger.info(
1577
- "Dataset is imbalanced or exclude_features_sources or X was passed or this is saved search."
1578
- " Run transform"
1579
- )
1538
+ self.logger.info("Dataset is imbalanced or exclude_features_sources or X was passed. Run transform")
1580
1539
  print(self.bundle.get("prepare_data_for_metrics"))
1581
1540
  return self.__sample_imbalanced(
1582
1541
  validated_X,
@@ -1635,7 +1594,9 @@ class FeaturesEnricher(TransformerMixin):
1635
1594
  generated_features.extend(generator.generated_features)
1636
1595
 
1637
1596
  normalizer = Normalizer(self.bundle, self.logger, self.warning_counter)
1638
- df, search_keys, generated_features = normalizer.normalize(df, search_keys, generated_features)
1597
+ df, search_keys, generated_features = normalizer.normalize(
1598
+ df, search_keys, generated_features
1599
+ )
1639
1600
  columns_renaming = normalizer.columns_renaming
1640
1601
 
1641
1602
  df = clean_full_duplicates(df, logger=self.logger, silent=True, bundle=self.bundle)
@@ -2075,7 +2036,9 @@ class FeaturesEnricher(TransformerMixin):
2075
2036
  generated_features.extend(generator.generated_features)
2076
2037
 
2077
2038
  normalizer = Normalizer(self.bundle, self.logger, self.warning_counter, silent_mode)
2078
- df, search_keys, generated_features = normalizer.normalize(df, search_keys, generated_features)
2039
+ df, search_keys, generated_features = normalizer.normalize(
2040
+ df, search_keys, generated_features
2041
+ )
2079
2042
  columns_renaming = normalizer.columns_renaming
2080
2043
 
2081
2044
  # Don't pass all features in backend on transform
@@ -3431,13 +3394,6 @@ class FeaturesEnricher(TransformerMixin):
3431
3394
 
3432
3395
  return result_train, result_eval_sets
3433
3396
 
3434
- @staticmethod
3435
- def _round_shap_value(shap: float) -> float:
3436
- if shap > 0.0 and shap < 0.0001:
3437
- return 0.0001
3438
- else:
3439
- return round(shap, 4)
3440
-
3441
3397
  def __prepare_feature_importances(self, trace_id: str, x_columns: List[str], silent=False):
3442
3398
  llm_source = "LLM with external data augmentation"
3443
3399
  if self._search_task is None:
@@ -3455,6 +3411,12 @@ class FeaturesEnricher(TransformerMixin):
3455
3411
  features_info_without_links = []
3456
3412
  internal_features_info = []
3457
3413
 
3414
+ def round_shap_value(shap: float) -> float:
3415
+ if shap > 0.0 and shap < 0.0001:
3416
+ return 0.0001
3417
+ else:
3418
+ return round(shap, 4)
3419
+
3458
3420
  def list_or_single(lst: List[str], single: str):
3459
3421
  return lst or ([single] if single else [])
3460
3422
 
@@ -3487,7 +3449,7 @@ class FeaturesEnricher(TransformerMixin):
3487
3449
 
3488
3450
  feature_sample = []
3489
3451
  self.feature_names_.append(feature_meta.name)
3490
- self.feature_importances_.append(self._round_shap_value(feature_meta.shap_value))
3452
+ self.feature_importances_.append(round_shap_value(feature_meta.shap_value))
3491
3453
  if feature_meta.name in features_df.columns:
3492
3454
  feature_sample = np.random.choice(features_df[feature_meta.name].dropna().unique(), 3).tolist()
3493
3455
  if len(feature_sample) > 0 and isinstance(feature_sample[0], float):
@@ -3526,7 +3488,7 @@ class FeaturesEnricher(TransformerMixin):
3526
3488
  features_info.append(
3527
3489
  {
3528
3490
  self.bundle.get("features_info_name"): feature_name,
3529
- self.bundle.get("features_info_shap"): self._round_shap_value(feature_meta.shap_value),
3491
+ self.bundle.get("features_info_shap"): round_shap_value(feature_meta.shap_value),
3530
3492
  self.bundle.get("features_info_hitrate"): feature_meta.hit_rate,
3531
3493
  self.bundle.get("features_info_value_preview"): feature_sample,
3532
3494
  self.bundle.get("features_info_provider"): provider,
@@ -3537,7 +3499,7 @@ class FeaturesEnricher(TransformerMixin):
3537
3499
  features_info_without_links.append(
3538
3500
  {
3539
3501
  self.bundle.get("features_info_name"): internal_feature_name,
3540
- self.bundle.get("features_info_shap"): self._round_shap_value(feature_meta.shap_value),
3502
+ self.bundle.get("features_info_shap"): round_shap_value(feature_meta.shap_value),
3541
3503
  self.bundle.get("features_info_hitrate"): feature_meta.hit_rate,
3542
3504
  self.bundle.get("features_info_value_preview"): feature_sample,
3543
3505
  self.bundle.get("features_info_provider"): internal_provider,
@@ -3549,7 +3511,7 @@ class FeaturesEnricher(TransformerMixin):
3549
3511
  {
3550
3512
  self.bundle.get("features_info_name"): internal_feature_name,
3551
3513
  "feature_link": feature_meta.doc_link,
3552
- self.bundle.get("features_info_shap"): self._round_shap_value(feature_meta.shap_value),
3514
+ self.bundle.get("features_info_shap"): round_shap_value(feature_meta.shap_value),
3553
3515
  self.bundle.get("features_info_hitrate"): feature_meta.hit_rate,
3554
3516
  self.bundle.get("features_info_value_preview"): feature_sample,
3555
3517
  self.bundle.get("features_info_provider"): internal_provider,
@@ -3829,11 +3791,8 @@ class FeaturesEnricher(TransformerMixin):
3829
3791
  print(Format.GREEN + Format.BOLD + msg + Format.END)
3830
3792
  self.logger.info(msg)
3831
3793
  if len(self.feature_names_) > 0:
3832
- self.features_info_display_handle = display_html_dataframe(
3833
- self.features_info,
3834
- self._features_info_without_links,
3835
- self.bundle.get("relevant_features_header"),
3836
- display_id="features_info",
3794
+ display_html_dataframe(
3795
+ self.features_info, self._features_info_without_links, self.bundle.get("relevant_features_header")
3837
3796
  )
3838
3797
 
3839
3798
  display_html_dataframe(
upgini/metrics.py CHANGED
@@ -1,9 +1,9 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from collections import defaultdict
3
4
  import inspect
4
5
  import logging
5
6
  import re
6
- from collections import defaultdict
7
7
  from copy import deepcopy
8
8
  from typing import Any, Callable, Dict, List, Optional, Tuple, Union
9
9
 
@@ -339,10 +339,10 @@ class EstimatorWrapper:
339
339
 
340
340
  if shap_values_all_folds:
341
341
  average_shap_values = {
342
- feature: np.mean(np.array(shaps)) for feature, shaps in shap_values_all_folds.items() if len(shaps) > 0
342
+ feature: np.mean(shaps)
343
+ for feature, shaps
344
+ in shap_values_all_folds.items()
343
345
  }
344
- if len(average_shap_values) == 0:
345
- average_shap_values = None
346
346
  else:
347
347
  average_shap_values = None
348
348
 
@@ -480,7 +480,6 @@ class CatBoostWrapper(EstimatorWrapper):
480
480
  )
481
481
  self.cat_features = None
482
482
  self.emb_features = None
483
- self.grouped_embedding_features = None
484
483
  self.exclude_features = []
485
484
 
486
485
  def _prepare_to_fit(self, x: pd.DataFrame, y: pd.Series) -> Tuple[pd.DataFrame, np.ndarray, np.ndarray, dict]:
@@ -490,16 +489,17 @@ class CatBoostWrapper(EstimatorWrapper):
490
489
  if hasattr(CatBoostClassifier, "get_embedding_feature_indices"):
491
490
  emb_pattern = r"(.+)_emb\d+"
492
491
  self.emb_features = [c for c in x.columns if re.match(emb_pattern, c) and is_numeric_dtype(x[c])]
492
+ embedding_features = []
493
493
  if len(self.emb_features) > 3: # There is no reason to reduce embeddings dimension with less than 4
494
494
  self.logger.info(
495
495
  "Embedding features count more than 3, so group them into one vector for CatBoost: "
496
496
  f"{self.emb_features}"
497
497
  )
498
- x, self.grouped_embedding_features = self.group_embeddings(x)
499
- params["embedding_features"] = self.grouped_embedding_features
498
+ x, embedding_features = self.group_embeddings(x)
499
+ params["embedding_features"] = embedding_features
500
500
  else:
501
501
  self.logger.info(f"Embedding features count less than 3, so use them separately: {self.emb_features}")
502
- self.grouped_embedding_features = None
502
+ self.emb_features = []
503
503
  else:
504
504
  self.logger.warning(f"Embedding features are not supported by Catboost version {catboost.__version__}")
505
505
 
@@ -515,7 +515,7 @@ class CatBoostWrapper(EstimatorWrapper):
515
515
  self.logger.warning(f"Text features are not supported by this Catboost version {catboost.__version__}")
516
516
 
517
517
  # Find rest categorical features
518
- self.cat_features = _get_cat_features(x, self.text_features, self.grouped_embedding_features)
518
+ self.cat_features = _get_cat_features(x, self.text_features, embedding_features)
519
519
  # x = fill_na_cat_features(x, self.cat_features)
520
520
  unique_cat_features = []
521
521
  for name in self.cat_features:
@@ -603,13 +603,7 @@ class CatBoostWrapper(EstimatorWrapper):
603
603
  def calculate_shap(self, x: pd.DataFrame, y: pd.Series, estimator: CatBoost) -> Optional[Dict[str, float]]:
604
604
  try:
605
605
  # Create Pool for fold data, if need (for example, when categorical features are present)
606
- fold_pool = Pool(
607
- x,
608
- y,
609
- cat_features=self.cat_features,
610
- text_features=self.text_features,
611
- embedding_features=self.grouped_embedding_features,
612
- )
606
+ fold_pool = Pool(x, y, cat_features=self.cat_features)
613
607
 
614
608
  # Get SHAP values of current estimator
615
609
  shap_values_fold = estimator.get_feature_importance(data=fold_pool, type="ShapValues")
@@ -627,7 +621,6 @@ class CatBoostWrapper(EstimatorWrapper):
627
621
  return dict(zip(estimator.feature_names_, all_shaps))
628
622
 
629
623
  except Exception:
630
- self.logger.exception("Failed to recalculate new SHAP values")
631
624
  return None
632
625
 
633
626
 
@@ -49,7 +49,10 @@ class Normalizer:
49
49
  self.generated_features = []
50
50
 
51
51
  def normalize(
52
- self, df: pd.DataFrame, search_keys: Dict[str, SearchKey], generated_features: List[str]
52
+ self,
53
+ df: pd.DataFrame,
54
+ search_keys: Dict[str, SearchKey],
55
+ generated_features: List[str],
53
56
  ) -> Tuple[pd.DataFrame, Dict[str, SearchKey], List[str]]:
54
57
  self.search_keys = search_keys.copy()
55
58
  self.generated_features = generated_features.copy()
@@ -9,7 +9,6 @@ from typing import Callable, List, Optional
9
9
 
10
10
  import pandas as pd
11
11
  from xhtml2pdf import pisa
12
-
13
12
  from upgini.__about__ import __version__
14
13
 
15
14
 
@@ -73,9 +72,7 @@ def make_table(df: pd.DataFrame, wrap_long_string=None) -> str:
73
72
  )
74
73
 
75
74
 
76
- def display_html_dataframe(
77
- df: pd.DataFrame, internal_df: pd.DataFrame, header: str, display_id: Optional[str] = None, display_handle=None
78
- ):
75
+ def display_html_dataframe(df: pd.DataFrame, internal_df: pd.DataFrame, header: str, display_id: str):
79
76
  if not ipython_available():
80
77
  print(header)
81
78
  print(internal_df)
@@ -136,10 +133,7 @@ def display_html_dataframe(
136
133
  {table_html}
137
134
  </div>
138
135
  """
139
- if display_handle:
140
- return display_handle.update(HTML(result_html))
141
- else:
142
- return display(HTML(result_html), display_id=display_id)
136
+ return display(HTML(result_html))
143
137
 
144
138
 
145
139
  def make_html_report(
@@ -58,6 +58,10 @@ class FeaturesValidator:
58
58
 
59
59
  columns_renaming = columns_renaming or {}
60
60
 
61
+ if features_for_generate:
62
+ empty_or_constant_features = [
63
+ f for f in empty_or_constant_features if columns_renaming.get(f, f) not in features_for_generate
64
+ ]
61
65
  if empty_or_constant_features:
62
66
  msg = bundle.get("empty_or_contant_features").format(
63
67
  [columns_renaming.get(f, f) for f in empty_or_constant_features]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: upgini
3
- Version: 1.2.16
3
+ Version: 1.2.16a1
4
4
  Summary: Intelligent data search & enrichment for Machine Learning
5
5
  Project-URL: Bug Reports, https://github.com/upgini/upgini/issues
6
6
  Project-URL: Homepage, https://upgini.com/
@@ -145,7 +145,7 @@ Description-Content-Type: text/markdown
145
145
 
146
146
  ## 💼 Tutorials
147
147
 
148
- ### [Search of relevant external features & Automated feature generation for Salary prediction task (use as a template)](https://github.com/upgini/upgini/blob/main/notebooks/Upgini_Features_search%26generation.ipynb)
148
+ ### [Search of relevant external features & Automated feature generation for Salary predicton task (use as a template)](https://github.com/upgini/upgini/blob/main/notebooks/Upgini_Features_search%26generation.ipynb)
149
149
 
150
150
  * The goal is to predict salary for data science job postning based on information about employer and job description.
151
151
  * Following this guide, you'll learn how to **search & auto generate new relevant features with Upgini library**
@@ -1,13 +1,13 @@
1
- upgini/__about__.py,sha256=7RIJ-Nh9kHJf5O5NvahUeP8DNXq6oIzbYcIt_yKv0lQ,23
1
+ upgini/__about__.py,sha256=vMDC8s3UWLhN6avUSjtfizIVhxWIHW-WKTw04ha19HE,25
2
2
  upgini/__init__.py,sha256=M64LwQTBa-5Jz24Zm2h8rWwlKQQ1J8nP7gGgIciS0WU,589
3
3
  upgini/ads.py,sha256=nvuRxRx5MHDMgPr9SiU-fsqRdFaBv8p4_v1oqiysKpc,2714
4
4
  upgini/dataset.py,sha256=iPFiMJtk4HF1ytw9wCQr8H9RfoOKj_TIo8XYZKWgcMc,31331
5
5
  upgini/errors.py,sha256=2b_Wbo0OYhLUbrZqdLIx5jBnAsiD1Mcenh-VjR4HCTw,950
6
- upgini/features_enricher.py,sha256=d3-QHyb8vYuWBImHumeA-BBrgT--5V-L91WgU1vduR8,190892
6
+ upgini/features_enricher.py,sha256=oEWJjD3v4v_0fZr8ZWSzqFCs08yJrjVTDMNPEFsFL_E,188978
7
7
  upgini/http.py,sha256=21asexflvavydzCOONJDGQBtQanCElrbnqLXakJ9Cu8,42880
8
8
  upgini/lazy_import.py,sha256=74gQ8JuA48BGRLxAo7lNHNKY2D2emMxrUxKGdxVGhuY,1012
9
9
  upgini/metadata.py,sha256=osmzdNESeh7yP3BZday6N9Q3eaIHfzhhRM1d6NSgcf0,11223
10
- upgini/metrics.py,sha256=lhLqFv1tLWNzx3ULELo3MMSqI8eBoHL7P5jKpG8a6PE,33899
10
+ upgini/metrics.py,sha256=zs_gnjZCdk8AUYOj-mD7V1k-8Gn2EfHcXvK7J6RWOxA,33492
11
11
  upgini/search_task.py,sha256=qxUxAD-bed-FpZYmTB_4orW7YJsW_O6a1TcgnZIRFr4,17307
12
12
  upgini/spinner.py,sha256=4iMd-eIe_BnkqFEMIliULTbj6rNI2HkN_VJ4qYe0cUc,1118
13
13
  upgini/version_validator.py,sha256=ddSKUK_-eGJB3NgrqOMoWJU-OxQ253WsNLp8aqJkaIM,1389
@@ -27,7 +27,7 @@ upgini/data_source/data_source_publisher.py,sha256=X-8aGtVgzGmxyXkMVBoBLIGDMb4lY
27
27
  upgini/mdc/__init__.py,sha256=aM08nIWFc2gWdWUa3_IuEnNND0cQPkBGnYpRMnfFN8k,1019
28
28
  upgini/mdc/context.py,sha256=3u1B-jXt7tXEvNcV3qmR9SDCseudnY7KYsLclBdwVLk,1405
29
29
  upgini/normalizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- upgini/normalizer/normalize_utils.py,sha256=Lv75lq7M46z9cAIutwkdKZtPZkWblgoRzToAJ1BwY8A,7709
30
+ upgini/normalizer/normalize_utils.py,sha256=w7S4yQZkdlBptC7peqmrn8zqs-Z0RPq2rp78IZuoE7M,7734
31
31
  upgini/resource_bundle/__init__.py,sha256=S5F2G47pnJd2LDpmFsjDqEwiKkP8Hm-hcseDbMka6Ko,8345
32
32
  upgini/resource_bundle/exceptions.py,sha256=5fRvx0_vWdE1-7HcSgF0tckB4A9AKyf5RiinZkInTsI,621
33
33
  upgini/resource_bundle/strings.properties,sha256=eqJP6bGu12zFuQJqMY03QbMhppcdwIfL2bsJWaqmuZ4,27221
@@ -44,10 +44,10 @@ upgini/utils/custom_loss_utils.py,sha256=kieNZYBYZm5ZGBltF1F_jOSF4ea6C29rYuCyiDc
44
44
  upgini/utils/cv_utils.py,sha256=w6FQb9nO8BWDx88EF83NpjPLarK4eR4ia0Wg0kLBJC4,3525
45
45
  upgini/utils/datetime_utils.py,sha256=4tsGeehU0KS6wqNsc9gEEWZ9s6T9E0UReUIO3rSuXNU,12174
46
46
  upgini/utils/deduplicate_utils.py,sha256=NpaPtBYXwUtfKTRHWrtz2uUq6tZN6C_Nd719ydPRF2Q,8484
47
- upgini/utils/display_utils.py,sha256=ntmOs8VchrkPFVNp4iEhdXRRtYx823vJ51saECoY6Bk,11175
47
+ upgini/utils/display_utils.py,sha256=kOY3lKKbJDIb424TFAF0wQiFUhcARTy2Flz0bQ2M8NY,11014
48
48
  upgini/utils/email_utils.py,sha256=j0Ug1R_0AnCg1Y92zIZ4XMwvKo3G5_pcOlBN1OH_gZs,5191
49
49
  upgini/utils/fallback_progress_bar.py,sha256=PDaKb8dYpVZaWMroNcOHsTc3pSjgi9mOm0--cOFTwJ0,1074
50
- upgini/utils/features_validator.py,sha256=yiOdzVtpArELMufzAa9mtWq32lETB6sIF-w3Yvl3vV8,3614
50
+ upgini/utils/features_validator.py,sha256=URNywJnfPVpRKGAK9drJIdyHarGczB298y9QGQwOVGE,3818
51
51
  upgini/utils/format.py,sha256=Yv5cvvSs2bOLUzzNu96Pu33VMDNbabio92QepUj41jU,243
52
52
  upgini/utils/ip_utils.py,sha256=Q6vb7Sr5Khx3Sq3eENjW2qCXKej_S5jZbneH6zEOkzQ,5171
53
53
  upgini/utils/phone_utils.py,sha256=IrbztLuOJBiePqqxllfABWfYlfAjYevPhXKipl95wUI,10432
@@ -57,7 +57,7 @@ upgini/utils/sklearn_ext.py,sha256=13jQS_k7v0aUtudXV6nGUEWjttPQzAW9AFYL5wgEz9k,4
57
57
  upgini/utils/target_utils.py,sha256=qHzZRmICFbLNCrmVqGkaBcjm91L2ERRZMppci36acV4,10085
58
58
  upgini/utils/track_info.py,sha256=G5Lu1xxakg2_TQjKZk4b5SvrHsATTXNVV3NbvWtT8k8,5663
59
59
  upgini/utils/warning_counter.py,sha256=dIWBB4dI5XRRJZudvIlqlIYKEiwLLPcXarsZuYRt338,227
60
- upgini-1.2.16.dist-info/METADATA,sha256=hmLjva5M3m8LpawvBgEjKCrilENMBJAfax6mDnygVyw,48578
61
- upgini-1.2.16.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
62
- upgini-1.2.16.dist-info/licenses/LICENSE,sha256=5RRzgvdJUu3BUDfv4bzVU6FqKgwHlIay63pPCSmSgzw,1514
63
- upgini-1.2.16.dist-info/RECORD,,
60
+ upgini-1.2.16a1.dist-info/METADATA,sha256=0w4SeT93Uz51cWP6Y0uHw0Eh2iMVqkUIOjlaaD_Jduw,48579
61
+ upgini-1.2.16a1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
62
+ upgini-1.2.16a1.dist-info/licenses/LICENSE,sha256=5RRzgvdJUu3BUDfv4bzVU6FqKgwHlIay63pPCSmSgzw,1514
63
+ upgini-1.2.16a1.dist-info/RECORD,,