upgini 1.2.5__py3-none-any.whl → 1.2.6__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.5"
1
+ __version__ = "1.2.6"
@@ -1,3 +1,4 @@
1
+ from copy import deepcopy
1
2
  from typing import Dict
2
3
 
3
4
  from upgini.autofe.binary import (
@@ -83,4 +84,4 @@ ALL_OPERANDS: Dict[str, Operand] = {
83
84
 
84
85
 
85
86
  def find_op(name):
86
- return ALL_OPERANDS.get(name)
87
+ return deepcopy(ALL_OPERANDS.get(name))
upgini/autofe/feature.py CHANGED
@@ -22,6 +22,9 @@ class Column:
22
22
  def set_op_params(self, params: Dict[str, str]) -> "Column":
23
23
  return self
24
24
 
25
+ def get_op_params(self, **kwargs):
26
+ return dict()
27
+
25
28
  def rename_columns(self, mapping: Dict[str, str]) -> "Column":
26
29
  self.name = self._unhash(mapping.get(self.name) or self.name)
27
30
  return self
@@ -44,6 +47,10 @@ class Column:
44
47
  def get_columns(self, **kwargs) -> List[str]:
45
48
  return [self.name]
46
49
 
50
+ @property
51
+ def children(self) -> List[Union["Feature", "Column"]]:
52
+ return []
53
+
47
54
  def infer_type(self, data: pd.DataFrame) -> DtypeObj:
48
55
  return data[self.name].dtype
49
56
 
@@ -88,9 +95,30 @@ class Feature:
88
95
  self.op.set_params(params)
89
96
 
90
97
  for child in self.children:
91
- child.set_op_params(params)
98
+ child_params = {
99
+ k[len(child.get_display_name()) + 1 :]: v
100
+ for k, v in params.items()
101
+ if k.startswith(child.get_display_name())
102
+ }
103
+ if not child_params:
104
+ child_params = params
105
+ child.set_op_params(child_params)
92
106
  return self
93
107
 
108
+ def get_op_params(self, **kwargs) -> Dict[str, str]:
109
+ return {
110
+ k: str(v)
111
+ for k, v in dict(
112
+ (
113
+ (f"{child.get_display_name(**kwargs)}_{k}", v)
114
+ for child in self.children
115
+ for k, v in child.get_op_params(**kwargs).items()
116
+ ),
117
+ **(self.op.get_params() or {}),
118
+ ).items()
119
+ if v is not None
120
+ }
121
+
94
122
  def get_hash(self) -> str:
95
123
  return hashlib.sha256(
96
124
  "_".join([self.op.name] + [ch.get_display_name() for ch in self.children]).encode("utf-8")
@@ -326,24 +354,26 @@ class FeatureGroup:
326
354
  return names
327
355
 
328
356
  def calculate(self, data: pd.DataFrame, is_root=False) -> pd.DataFrame:
329
- main_column = None if self.main_column_node is None else self.main_column_node.get_columns()[0]
330
357
  if isinstance(self.op, PandasOperand):
331
- columns = self.get_columns()
332
- lower_order_children = [
358
+ main_column = None if self.main_column_node is None else self.main_column_node.get_display_name()
359
+ lower_order_children = []
360
+ if self.main_column_node is not None:
361
+ lower_order_children.append(self.main_column_node)
362
+ lower_order_children.extend(
333
363
  ch for f in self.children for ch in f.children if ch.get_display_name() != main_column
334
- ]
364
+ )
335
365
  lower_order_names = [ch.get_display_name() for ch in lower_order_children]
336
- if any(isinstance(f, Feature) for f in lower_order_children):
337
- child_data = pd.concat(
338
- [data[main_column or []]] + [ch.calculate(data) for ch in lower_order_children],
339
- axis=1,
340
- )
341
- child_data.columns = ([main_column] if main_column is not None else []) + lower_order_names
342
- else:
343
- child_data = data[columns]
366
+ child_data = pd.concat(
367
+ [ch.calculate(data) for ch in lower_order_children],
368
+ axis=1,
369
+ )
370
+ child_data.columns = lower_order_names
344
371
 
345
372
  new_data = self.op.calculate_group(child_data, main_column=main_column)
346
- new_data.rename(columns=dict(zip(lower_order_names, self.get_display_names())), inplace=True)
373
+ new_data.rename(
374
+ columns=dict(zip((n for n in lower_order_names if n != main_column), self.get_display_names())),
375
+ inplace=True,
376
+ )
347
377
  else:
348
378
  raise NotImplementedError(f"Unrecognized operator {self.op.name}.")
349
379
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: upgini
3
- Version: 1.2.5
3
+ Version: 1.2.6
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/
@@ -1,4 +1,4 @@
1
- upgini/__about__.py,sha256=jBmZf3HLbiQlWiolOsAA6J5-BbxXD2bqFqEqDH3lfqo,22
1
+ upgini/__about__.py,sha256=vMQK58X8_YZGKzRm0ThvPAKFtpfyejGmUnDrY9RQ13w,22
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=olZ-OHSfBNoBSCo7R5t7uCLukI2nO7afpx_A-HCiJLk,31067
@@ -14,10 +14,10 @@ upgini/version_validator.py,sha256=ddSKUK_-eGJB3NgrqOMoWJU-OxQ253WsNLp8aqJkaIM,1
14
14
  upgini/ads_management/__init__.py,sha256=qzyisOToVRP-tquAJD1PblZhNtMrOB8FiyF9JvfkvgE,50
15
15
  upgini/ads_management/ads_manager.py,sha256=igVbN2jz80Umb2BUJixmJVj-zx8unoKpecVo-R-nGdw,2648
16
16
  upgini/autofe/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- upgini/autofe/all_operands.py,sha256=3LiH9iU-ArGmYpS8FHWH7yCFx40ILfvlSXJlKIa75BQ,2542
17
+ upgini/autofe/all_operands.py,sha256=cCCB44qvkmuWyiRM5Xykx8tkHPIjQthrWyj67STWN80,2578
18
18
  upgini/autofe/binary.py,sha256=TRjEdxsfyPY5E8ksYfdKMmU6GtvALfGFPNVIG7DBhzM,7520
19
19
  upgini/autofe/date.py,sha256=OpFc3Al0xO3qlESn2Uokfxw51ArVqmh3xngWwdrsaqE,9762
20
- upgini/autofe/feature.py,sha256=gwGWY2UcX_0wHAvfEiu1rRU7GFZyzMWZIaPVcf6kD80,14223
20
+ upgini/autofe/feature.py,sha256=eL7wABUhDKZzv3E-RPJNcyGwSfB0UptcfU2RbvsOks4,15082
21
21
  upgini/autofe/groupby.py,sha256=r-xl_keZZgm_tpiEoDhjYSkT6NHv7a4cRQR4wJ4uCp8,3263
22
22
  upgini/autofe/operand.py,sha256=uk883RaNqgXqtkaRqA1re1d9OFnnpv0JVvelYx09Yw0,2943
23
23
  upgini/autofe/unary.py,sha256=T3E7F3dA_7o_rkdCFq7JV6nHLzcoHLHQTcxO7y5Opa4,4646
@@ -57,7 +57,7 @@ upgini/utils/sklearn_ext.py,sha256=13jQS_k7v0aUtudXV6nGUEWjttPQzAW9AFYL5wgEz9k,4
57
57
  upgini/utils/target_utils.py,sha256=BVtDmrmFMKerSUWaNOIEdzsYHIFiODdpnWbE50QDPDc,7864
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.5.dist-info/METADATA,sha256=fhsrvEjfwwBugsHGyyLoDDrQYo637p1C32g6os3kx5M,48607
61
- upgini-1.2.5.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
62
- upgini-1.2.5.dist-info/licenses/LICENSE,sha256=5RRzgvdJUu3BUDfv4bzVU6FqKgwHlIay63pPCSmSgzw,1514
63
- upgini-1.2.5.dist-info/RECORD,,
60
+ upgini-1.2.6.dist-info/METADATA,sha256=NxVadJI-fglLuYE_HcGEWEqxxW8m-uF2T44BGWagFEU,48607
61
+ upgini-1.2.6.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
62
+ upgini-1.2.6.dist-info/licenses/LICENSE,sha256=5RRzgvdJUu3BUDfv4bzVU6FqKgwHlIay63pPCSmSgzw,1514
63
+ upgini-1.2.6.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.25.0
2
+ Generator: hatchling 1.24.2
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any