kumoai 2.14.0.dev202512151351__cp313-cp313-macosx_11_0_arm64.whl → 2.15.0.dev202601121731__cp313-cp313-macosx_11_0_arm64.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.
Files changed (48) hide show
  1. kumoai/__init__.py +23 -26
  2. kumoai/_version.py +1 -1
  3. kumoai/client/client.py +6 -0
  4. kumoai/client/jobs.py +26 -0
  5. kumoai/connector/utils.py +21 -7
  6. kumoai/experimental/rfm/__init__.py +51 -24
  7. kumoai/experimental/rfm/authenticate.py +3 -4
  8. kumoai/experimental/rfm/backend/local/graph_store.py +37 -46
  9. kumoai/experimental/rfm/backend/local/sampler.py +0 -3
  10. kumoai/experimental/rfm/backend/local/table.py +24 -30
  11. kumoai/experimental/rfm/backend/snow/sampler.py +197 -90
  12. kumoai/experimental/rfm/backend/snow/table.py +159 -52
  13. kumoai/experimental/rfm/backend/sqlite/__init__.py +2 -2
  14. kumoai/experimental/rfm/backend/sqlite/sampler.py +199 -99
  15. kumoai/experimental/rfm/backend/sqlite/table.py +103 -45
  16. kumoai/experimental/rfm/base/__init__.py +6 -1
  17. kumoai/experimental/rfm/base/column.py +96 -10
  18. kumoai/experimental/rfm/base/expression.py +44 -0
  19. kumoai/experimental/rfm/base/mapper.py +69 -0
  20. kumoai/experimental/rfm/base/sampler.py +28 -18
  21. kumoai/experimental/rfm/base/source.py +1 -1
  22. kumoai/experimental/rfm/base/sql_sampler.py +342 -13
  23. kumoai/experimental/rfm/base/table.py +374 -208
  24. kumoai/experimental/rfm/base/utils.py +27 -0
  25. kumoai/experimental/rfm/graph.py +335 -180
  26. kumoai/experimental/rfm/infer/__init__.py +6 -4
  27. kumoai/experimental/rfm/infer/dtype.py +7 -4
  28. kumoai/experimental/rfm/infer/multicategorical.py +1 -1
  29. kumoai/experimental/rfm/infer/pkey.py +4 -2
  30. kumoai/experimental/rfm/infer/stype.py +35 -0
  31. kumoai/experimental/rfm/infer/time_col.py +5 -4
  32. kumoai/experimental/rfm/pquery/executor.py +27 -27
  33. kumoai/experimental/rfm/pquery/pandas_executor.py +29 -31
  34. kumoai/experimental/rfm/relbench.py +76 -0
  35. kumoai/experimental/rfm/rfm.py +600 -360
  36. kumoai/experimental/rfm/sagemaker.py +4 -4
  37. kumoai/experimental/rfm/task_table.py +292 -0
  38. kumoai/pquery/training_table.py +16 -2
  39. kumoai/testing/snow.py +3 -3
  40. kumoai/trainer/distilled_trainer.py +175 -0
  41. kumoai/utils/__init__.py +1 -2
  42. kumoai/utils/display.py +87 -0
  43. kumoai/utils/progress_logger.py +190 -12
  44. {kumoai-2.14.0.dev202512151351.dist-info → kumoai-2.15.0.dev202601121731.dist-info}/METADATA +3 -2
  45. {kumoai-2.14.0.dev202512151351.dist-info → kumoai-2.15.0.dev202601121731.dist-info}/RECORD +48 -40
  46. {kumoai-2.14.0.dev202512151351.dist-info → kumoai-2.15.0.dev202601121731.dist-info}/WHEEL +0 -0
  47. {kumoai-2.14.0.dev202512151351.dist-info → kumoai-2.15.0.dev202601121731.dist-info}/licenses/LICENSE +0 -0
  48. {kumoai-2.14.0.dev202512151351.dist-info → kumoai-2.15.0.dev202601121731.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,7 @@
1
+ import re
1
2
  import sys
2
3
  import time
3
- from typing import Any, List, Optional, Union
4
+ from typing import Any
4
5
 
5
6
  from rich.console import Console, ConsoleOptions, RenderResult
6
7
  from rich.live import Live
@@ -20,12 +21,23 @@ from typing_extensions import Self
20
21
 
21
22
 
22
23
  class ProgressLogger:
23
- def __init__(self, msg: str) -> None:
24
+ def __init__(self, msg: str, verbose: bool = True) -> None:
24
25
  self.msg = msg
25
- self.logs: List[str] = []
26
+ self.verbose = verbose
27
+ self.depth = 0
28
+
29
+ self.logs: list[str] = []
30
+
31
+ self.start_time: float | None = None
32
+ self.end_time: float | None = None
33
+
34
+ @classmethod
35
+ def default(cls, msg: str, verbose: bool = True) -> 'ProgressLogger':
36
+ from kumoai import in_snowflake_notebook
26
37
 
27
- self.start_time: Optional[float] = None
28
- self.end_time: Optional[float] = None
38
+ if in_snowflake_notebook():
39
+ return StreamlitProgressLogger(msg, verbose)
40
+ return RichProgressLogger(msg, verbose)
29
41
 
30
42
  @property
31
43
  def duration(self) -> float:
@@ -37,11 +49,19 @@ class ProgressLogger:
37
49
  def log(self, msg: str) -> None:
38
50
  self.logs.append(msg)
39
51
 
52
+ def init_progress(self, total: int, description: str) -> None:
53
+ pass
54
+
55
+ def step(self) -> None:
56
+ pass
57
+
40
58
  def __enter__(self) -> Self:
59
+ self.depth += 1
41
60
  self.start_time = time.perf_counter()
42
61
  return self
43
62
 
44
63
  def __exit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None:
64
+ self.depth -= 1
45
65
  self.end_time = time.perf_counter()
46
66
 
47
67
  def __repr__(self) -> str:
@@ -66,22 +86,21 @@ class ColoredTimeRemainingColumn(TimeRemainingColumn):
66
86
  return Text(str(super().render(task)), style=self.style)
67
87
 
68
88
 
69
- class InteractiveProgressLogger(ProgressLogger):
89
+ class RichProgressLogger(ProgressLogger):
70
90
  def __init__(
71
91
  self,
72
92
  msg: str,
73
93
  verbose: bool = True,
74
94
  refresh_per_second: int = 10,
75
95
  ) -> None:
76
- super().__init__(msg=msg)
96
+ super().__init__(msg=msg, verbose=verbose)
77
97
 
78
- self.verbose = verbose
79
98
  self.refresh_per_second = refresh_per_second
80
99
 
81
- self._progress: Optional[Progress] = None
82
- self._task: Optional[int] = None
100
+ self._progress: Progress | None = None
101
+ self._task: int | None = None
83
102
 
84
- self._live: Optional[Live] = None
103
+ self._live: Live | None = None
85
104
  self._exception: bool = False
86
105
 
87
106
  def init_progress(self, total: int, description: str) -> None:
@@ -107,6 +126,9 @@ class InteractiveProgressLogger(ProgressLogger):
107
126
 
108
127
  super().__enter__()
109
128
 
129
+ if self.depth > 1:
130
+ return self
131
+
110
132
  if not in_notebook(): # Render progress bar in TUI.
111
133
  sys.stdout.write("\x1b]9;4;3\x07")
112
134
  sys.stdout.flush()
@@ -126,6 +148,9 @@ class InteractiveProgressLogger(ProgressLogger):
126
148
 
127
149
  super().__exit__(exc_type, exc_val, exc_tb)
128
150
 
151
+ if self.depth > 1:
152
+ return
153
+
129
154
  if exc_type is not None:
130
155
  self._exception = True
131
156
 
@@ -151,7 +176,7 @@ class InteractiveProgressLogger(ProgressLogger):
151
176
 
152
177
  table = Table.grid(padding=(0, 1))
153
178
 
154
- icon: Union[Text, Padding]
179
+ icon: Text | Padding
155
180
  if self._exception:
156
181
  style = 'red'
157
182
  icon = Text('❌', style=style)
@@ -175,3 +200,156 @@ class InteractiveProgressLogger(ProgressLogger):
175
200
 
176
201
  if self.verbose and self._progress is not None:
177
202
  yield self._progress.get_renderable()
203
+
204
+
205
+ class StreamlitProgressLogger(ProgressLogger):
206
+ def __init__(
207
+ self,
208
+ msg: str,
209
+ verbose: bool = True,
210
+ ) -> None:
211
+ super().__init__(msg=msg, verbose=verbose)
212
+
213
+ self._status: Any = None
214
+
215
+ self._total = 0
216
+ self._current = 0
217
+ self._description: str = ''
218
+ self._progress: Any = None
219
+
220
+ def __enter__(self) -> Self:
221
+ super().__enter__()
222
+
223
+ import streamlit as st
224
+
225
+ if self.depth > 1:
226
+ return self
227
+
228
+ # Adjust layout for prettier output:
229
+ st.markdown(STREAMLIT_CSS, unsafe_allow_html=True)
230
+
231
+ if self.verbose:
232
+ self._status = st.status(
233
+ f':blue[{self._sanitize_text(self.msg)}]',
234
+ expanded=True,
235
+ )
236
+
237
+ return self
238
+
239
+ def log(self, msg: str) -> None:
240
+ super().log(msg)
241
+ if self.verbose and self._status is not None:
242
+ self._status.write(self._sanitize_text(msg))
243
+
244
+ def init_progress(self, total: int, description: str) -> None:
245
+ if self.verbose and self._status is not None:
246
+ self._total = total
247
+ self._current = 0
248
+ self._description = self._sanitize_text(description)
249
+ percent = min(self._current / self._total, 1.0)
250
+ self._progress = self._status.progress(
251
+ value=percent,
252
+ text=f'{self._description} [{self._current}/{self._total}]',
253
+ )
254
+
255
+ def step(self) -> None:
256
+ self._current += 1
257
+
258
+ if self.verbose and self._progress is not None:
259
+ percent = min(self._current / self._total, 1.0)
260
+ self._progress.progress(
261
+ value=percent,
262
+ text=f'{self._description} [{self._current}/{self._total}]',
263
+ )
264
+
265
+ def __exit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None:
266
+ super().__exit__(exc_type, exc_val, exc_tb)
267
+
268
+ if not self.verbose or self._status is None or self.depth > 1:
269
+ return
270
+
271
+ label = f'{self._sanitize_text(self.msg)} ({self.duration:.2f}s)'
272
+
273
+ if exc_type is not None:
274
+ self._status.update(
275
+ label=f':red[{label}]',
276
+ state='error',
277
+ expanded=True,
278
+ )
279
+ else:
280
+ self._status.update(
281
+ label=f':green[{label}]',
282
+ state='complete',
283
+ expanded=True,
284
+ )
285
+
286
+ @staticmethod
287
+ def _sanitize_text(msg: str) -> str:
288
+ return re.sub(r'\[/?bold\]', '**', msg)
289
+
290
+
291
+ STREAMLIT_CSS = """
292
+ <style>
293
+ /* Fix horizontal scrollbar */
294
+ .stExpander summary {
295
+ width: auto;
296
+ }
297
+
298
+ /* Fix paddings/margins */
299
+ .stExpander summary {
300
+ padding: 0.75rem 1rem 0.5rem;
301
+ }
302
+ .stExpander p {
303
+ margin: 0px 0px 0.2rem;
304
+ }
305
+ .stExpander [data-testid="stExpanderDetails"] {
306
+ padding-bottom: 1.45rem;
307
+ }
308
+ .stExpander .stProgress div:first-child {
309
+ padding-bottom: 4px;
310
+ }
311
+
312
+ /* Fix expand icon position */
313
+ .stExpander summary svg {
314
+ height: 1.5rem;
315
+ }
316
+
317
+ /* Fix summary icons */
318
+ .stExpander summary [data-testid="stExpanderIconCheck"] {
319
+ font-size: 1.8rem;
320
+ margin-top: -3px;
321
+ color: rgb(21, 130, 55);
322
+ }
323
+ .stExpander summary [data-testid="stExpanderIconError"] {
324
+ font-size: 1.8rem;
325
+ margin-top: -3px;
326
+ color: rgb(255, 43, 43);
327
+ }
328
+ .stExpander summary span:first-child span:first-child {
329
+ width: 1.6rem;
330
+ }
331
+
332
+ /* Add border between title and content */
333
+ .stExpander [data-testid="stExpanderDetails"] {
334
+ border-top: 1px solid rgba(30, 37, 47, 0.2);
335
+ padding-top: 0.5rem;
336
+ }
337
+
338
+ /* Fix title font size */
339
+ .stExpander summary p {
340
+ font-size: 1rem;
341
+ }
342
+
343
+ /* Gray out content */
344
+ .stExpander [data-testid="stExpanderDetails"] {
345
+ color: rgba(30, 37, 47, 0.5);
346
+ }
347
+
348
+ /* Fix progress bar font size */
349
+ .stExpander .stProgress p {
350
+ line-height: 1.6;
351
+ font-size: 1rem;
352
+ color: rgba(30, 37, 47, 0.5);
353
+ }
354
+ </style>
355
+ """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kumoai
3
- Version: 2.14.0.dev202512151351
3
+ Version: 2.15.0.dev202601121731
4
4
  Summary: AI on the Modern Data Stack
5
5
  Author-email: "Kumo.AI" <hello@kumo.ai>
6
6
  License-Expression: MIT
@@ -23,7 +23,7 @@ Requires-Dist: requests>=2.28.2
23
23
  Requires-Dist: urllib3
24
24
  Requires-Dist: plotly
25
25
  Requires-Dist: typing_extensions>=4.5.0
26
- Requires-Dist: kumo-api==0.49.0
26
+ Requires-Dist: kumo-api<1.0.0,>=0.53.0
27
27
  Requires-Dist: tqdm>=4.66.0
28
28
  Requires-Dist: aiohttp>=3.10.0
29
29
  Requires-Dist: pydantic>=1.10.21
@@ -41,6 +41,7 @@ Requires-Dist: requests-mock; extra == "test"
41
41
  Provides-Extra: sqlite
42
42
  Requires-Dist: adbc_driver_sqlite; extra == "sqlite"
43
43
  Provides-Extra: snowflake
44
+ Requires-Dist: numpy<2.0; extra == "snowflake"
44
45
  Requires-Dist: snowflake-connector-python; extra == "snowflake"
45
46
  Requires-Dist: pyyaml; extra == "snowflake"
46
47
  Provides-Extra: sagemaker
@@ -1,8 +1,8 @@
1
1
  kumoai/kumolib.cpython-313-darwin.so,sha256=waBv-DiZ3WcasxiCQ-OM9EbSTgTtCfBTZIibXAK-JiQ,232816
2
2
  kumoai/_logging.py,sha256=U2_5ROdyk92P4xO4H2WJV8EC7dr6YxmmnM-b7QX9M7I,886
3
3
  kumoai/mixin.py,sha256=MP413xzuCqWhxAPUHmloLA3j4ZyF1tEtfi516b_hOXQ,812
4
- kumoai/_version.py,sha256=bOoqsL1s-b_8ovgo8rxykwFD8SfZQM7pj8skKFtYz5U,39
5
- kumoai/__init__.py,sha256=Nn9YH_x9kAeEFn8RWbP95slZow0qFnakPZZ1WADe1hY,10843
4
+ kumoai/_version.py,sha256=Xo4G3EKaSBfPJqe6ahgplEBLNj9WpK6dS9XukJO3Dlk,39
5
+ kumoai/__init__.py,sha256=x6Emn6VesHQz0wR7ZnbddPRYO9A5-0JTHDkzJ3Ocq6w,10907
6
6
  kumoai/formatting.py,sha256=jA_rLDCGKZI8WWCha-vtuLenVKTZvli99Tqpurz1H84,953
7
7
  kumoai/futures.py,sha256=oJFIfdCM_3nWIqQteBKYMY4fPhoYlYWE_JA2o6tx-ng,3737
8
8
  kumoai/jobs.py,sha256=NrdLEFNo7oeCYSy-kj2nAvCFrz9BZ_xrhkqHFHk5ksY,2496
@@ -11,39 +11,45 @@ kumoai/databricks.py,sha256=e6E4lOFvZHXFwh4CO1kXU1zzDU3AapLQYMxjiHPC-HQ,476
11
11
  kumoai/spcs.py,sha256=N31d7rLa-bgYh8e2J4YzX1ScxGLqiVXrqJnCl1y4Mts,4139
12
12
  kumoai/_singleton.py,sha256=UTwrbDkoZSGB8ZelorvprPDDv9uZkUi1q_SrmsyngpQ,836
13
13
  kumoai/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- kumoai/experimental/rfm/graph.py,sha256=awVJSk4cWRMacS5CJvJtR8TR56FEbrJPcQCukNydQOc,40392
15
- kumoai/experimental/rfm/__init__.py,sha256=slliYcrh80xPtQQ_nnsp3ny9IbmHCyirmdZUfKTdME4,6064
16
- kumoai/experimental/rfm/sagemaker.py,sha256=_hTrFg4qfXe7uzwqSEG_wze-IFkwn7qde9OpUodCpbc,4982
17
- kumoai/experimental/rfm/rfm.py,sha256=YyUzoyu7STVnmGnKWTgAPVB4GlMng_n1PDXv45o9oJM,49976
18
- kumoai/experimental/rfm/authenticate.py,sha256=FiuHMvP7V3zBZUlHMDMbNLhc-UgDZgz4hjVSTuQ7DRw,18888
14
+ kumoai/experimental/rfm/relbench.py,sha256=cVsxxV3TIL3PLEoYb-8tAVW3GSef6NQAd3rxdHJL63I,2276
15
+ kumoai/experimental/rfm/graph.py,sha256=JtpnP-NIowKgtEggif_MzgXjbc6mi3tUyBGi1WuzsI0,46346
16
+ kumoai/experimental/rfm/__init__.py,sha256=bW2XyYtkbdiu_iICYFF2Fu1Fx5fyGbqne6m_6c1P-fY,7016
17
+ kumoai/experimental/rfm/sagemaker.py,sha256=6fyXO1Jd_scq-DH7kcv6JcV8QPyTbh4ceqwQDPADlZ0,4963
18
+ kumoai/experimental/rfm/rfm.py,sha256=dCDHR-yNhtdH2Ja1yasbwSYYstDxlEkVOUNCUEOCTLM,60002
19
+ kumoai/experimental/rfm/authenticate.py,sha256=G2RkRWznMVQUzvhvbKhn0bMCY7VmoNYxluz3THRqSdE,18851
20
+ kumoai/experimental/rfm/task_table.py,sha256=n_gZNQlCqHOiAkbeaa18nnQ-amt1oWKA9riO2rkrZuw,9847
19
21
  kumoai/experimental/rfm/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- kumoai/experimental/rfm/backend/sqlite/__init__.py,sha256=cA-PZL1oTaLxthZbfLSudexImtF6jRsGkdjSp-66dCM,914
21
- kumoai/experimental/rfm/backend/sqlite/table.py,sha256=fSn-CsOKK584Qgn8a-k8eymykoOrIX5w0CCzOBNW0Zk,4677
22
- kumoai/experimental/rfm/backend/sqlite/sampler.py,sha256=SsQCJB04DyNoz7Vyy6oF4sfaqCZt5aHpE1Kxf1qEGco,14467
22
+ kumoai/experimental/rfm/backend/sqlite/__init__.py,sha256=jl-DBbhsqQ-dUXyWhyQTM1AU2qNAtXCmi1mokdhtBTg,902
23
+ kumoai/experimental/rfm/backend/sqlite/table.py,sha256=WqYtd_rwlawItRMXZUfv14qdyU6huQmODuFjDo483dI,6683
24
+ kumoai/experimental/rfm/backend/sqlite/sampler.py,sha256=G5INoEAvoPlg8pSN_QlJIOy2B-2D40eTDPZJxU0Dr0g,18651
23
25
  kumoai/experimental/rfm/backend/local/__init__.py,sha256=2s9sSA-E-8pfkkzCH4XPuaSxSznEURMfMgwEIfYYPsg,1014
24
- kumoai/experimental/rfm/backend/local/table.py,sha256=-R_9nncosByAfSMfUt6HgCUNoW_MLGJW3F5SnAd4Ru0,3744
25
- kumoai/experimental/rfm/backend/local/graph_store.py,sha256=5cHuExHljU_Z56KV3s-PwzeiLuPKgh2mCxcjTMmPZ8E,11928
26
- kumoai/experimental/rfm/backend/local/sampler.py,sha256=85HoHCDiFOiuD_vFPZRx9JCyQUlLsqgsuB3NAw50wNw,10836
26
+ kumoai/experimental/rfm/backend/local/table.py,sha256=GKeYGcu52ztCU8EBMqp5UVj85E145Ug41xiCPiTCXq4,3489
27
+ kumoai/experimental/rfm/backend/local/graph_store.py,sha256=RHhkI13KpdPxqb4vXkwEwuFiX5DkrEsfZsOLywNnrvU,11294
28
+ kumoai/experimental/rfm/backend/local/sampler.py,sha256=UKxTjsYs00sYuV_LAlDuZOvQq0BZzPCzZK1Fki2Fd70,10726
27
29
  kumoai/experimental/rfm/backend/snow/__init__.py,sha256=BYfsiuJ4Ee30GjG9EuUtitMHXnRfvVKi85zNlIwldV4,993
28
- kumoai/experimental/rfm/backend/snow/table.py,sha256=--kC_jh4kbXDulvWWwqERjZOKUQrAP506ksKtzQY7qk,4841
29
- kumoai/experimental/rfm/backend/snow/sampler.py,sha256=vp_Z2Ov6IUaT9x5_tuPGFaz3XX_jQPLQZhkKX9AS5cI,10341
30
+ kumoai/experimental/rfm/backend/snow/table.py,sha256=9N7TOcXX8hhAjCawnhuvQCArBFTCdng3gBakunUxg90,8892
31
+ kumoai/experimental/rfm/backend/snow/sampler.py,sha256=qst_9nRuiAT-rJecq9ZX3DbNFgIK4MZxeK9_HP8i5NM,14602
30
32
  kumoai/experimental/rfm/pquery/__init__.py,sha256=X0O3EIq5SMfBEE-ii5Cq6iDhR3s3XMXB52Cx5htoePw,152
31
- kumoai/experimental/rfm/pquery/pandas_executor.py,sha256=wYI9a3smClR2pQGwsYRdmpOm0PlUsbtyW9wpAVpCEe4,18492
32
- kumoai/experimental/rfm/pquery/executor.py,sha256=f7-pJhL0BgFU9E4o4gQpQyArOvyrZtwxFmks34-QOAE,2741
33
- kumoai/experimental/rfm/infer/multicategorical.py,sha256=0-cLpDnGryhr76QhZNO-klKokJ6MUSfxXcGdQ61oykY,1102
33
+ kumoai/experimental/rfm/pquery/pandas_executor.py,sha256=MwSvFRwLq-z19LEdF0G0AT7Gj9tCqu-XLEA7mNbqXwc,18454
34
+ kumoai/experimental/rfm/pquery/executor.py,sha256=gs5AVNaA50ci8zXOBD3qt5szdTReSwTs4BGuEyx4BEE,2728
35
+ kumoai/experimental/rfm/infer/multicategorical.py,sha256=lNO_8aJw1whO6QVEMB3PRWMNlEEiX44g3v4tP88TSQY,1119
34
36
  kumoai/experimental/rfm/infer/categorical.py,sha256=VwNaKwKbRYkTxEJ1R6gziffC8dGsEThcDEfbi-KqW5c,853
35
- kumoai/experimental/rfm/infer/time_col.py,sha256=7R5Itl8RRBOr61qLpRTanIqrUVZFZcAXzDA9lCw4nx4,1820
36
- kumoai/experimental/rfm/infer/pkey.py,sha256=ubNqW1LIjLKiXbjXELAY3g6n2f3u2Eis_uC2DEiXFiU,4393
37
+ kumoai/experimental/rfm/infer/time_col.py,sha256=iw_aUcHD2bHr7uRa3E7uDC30kU37aLIRTVAFdQEpt68,1818
38
+ kumoai/experimental/rfm/infer/pkey.py,sha256=IaJI5GHK8ds_a3AOr3YYVgUlSmYYEgr4Nu92s2RyBV4,4412
37
39
  kumoai/experimental/rfm/infer/id.py,sha256=ZIO0DWIoiEoS_8MVc5lkqBfkTWWQ0yGCgjkwLdaYa_Q,908
38
- kumoai/experimental/rfm/infer/dtype.py,sha256=ZZ6ztqJnTR1CaC2z5Uhf0o0rSdNThnss5tem5JNQkck,2607
39
- kumoai/experimental/rfm/infer/__init__.py,sha256=krdMFN8iKZlSFOl-M5MW1KuSviQV3H1E18jj2uB8g6Q,469
40
+ kumoai/experimental/rfm/infer/dtype.py,sha256=FyAqvtrOWQC9hGrhQ7sC4BAI6c9k6ew-fo8ClS1sewM,2782
41
+ kumoai/experimental/rfm/infer/__init__.py,sha256=8GDxQKd0pxZULdk7mpwl3CsOpL4v2HPuPEsbi2t_vzc,519
40
42
  kumoai/experimental/rfm/infer/timestamp.py,sha256=vM9--7eStzaGG13Y-oLYlpNJyhL6f9dp17HDXwtl_DM,1094
41
- kumoai/experimental/rfm/base/sql_sampler.py,sha256=ibLn1pT2zLhs1VpK4PUf9E89aUO5q9iT1S2jmGYkKP4,1644
42
- kumoai/experimental/rfm/base/__init__.py,sha256=8nCg154X94HTLVOATcO54tX3axFm8QlZG9T1M3ZasnI,549
43
- kumoai/experimental/rfm/base/table.py,sha256=neGldEZaweoJ8VRgnEnaSpAISSkSTkgXxItuuywBM4E,20010
44
- kumoai/experimental/rfm/base/sampler.py,sha256=aCD98t0CUhAvGXEFv24Vq2g4otuclpKkkyL1rMR_mFg,31449
45
- kumoai/experimental/rfm/base/source.py,sha256=RqlI_kBoRV0ADb8KdEKn15RNHMdFUzEVzb57lIoyBM4,294
46
- kumoai/experimental/rfm/base/column.py,sha256=izCJmufJcd1RSi-ptFMfrue-JYag38MJxizka7ya0-A,2319
43
+ kumoai/experimental/rfm/infer/stype.py,sha256=fu4zsOB-C7jNeMnq6dsK4bOZSewe7PtZe_AkohSRLoM,894
44
+ kumoai/experimental/rfm/base/sql_sampler.py,sha256=_go8TnH7AHki-0gg_pB7xd228VYhogQh10OkxT7PEnI,15682
45
+ kumoai/experimental/rfm/base/mapper.py,sha256=WbWXSF8Vkdeud7UeQ2JgSX7z4d27b_b6o7nR4zET1aw,2420
46
+ kumoai/experimental/rfm/base/__init__.py,sha256=rjmMux5lG8srw1bjQGcFQFv6zET9e5riP81nPkw28Jg,724
47
+ kumoai/experimental/rfm/base/utils.py,sha256=MODr8v9aeIxwwdO6N2V8mzdjpOkBgFFcxvfFsXYfNm8,892
48
+ kumoai/experimental/rfm/base/table.py,sha256=eJuOUM64VWDkHaslNgeR5A_FZjlPF_4czC8OfFGR62E,26015
49
+ kumoai/experimental/rfm/base/sampler.py,sha256=2G6VmgAGV1mSQWHK4wUgf5Ngr8nnH8Hg6_D3sPZZx1A,31951
50
+ kumoai/experimental/rfm/base/expression.py,sha256=Y7NtLTnKlx6euG_N3fLTcrFKheB6P5KS_jhCfoXV9DE,1252
51
+ kumoai/experimental/rfm/base/source.py,sha256=bwu3GU2TvIXR2fwKAmJ1-5BDoNXMnI1SU3Fgdk8lWnc,301
52
+ kumoai/experimental/rfm/base/column.py,sha256=GXzLC-VpShr6PecUzaj1MJKc_PHzfW5Jn9bOYPA8fFA,4965
47
53
  kumoai/encoder/__init__.py,sha256=VPGs4miBC_WfwWeOXeHhFomOUocERFavhKf5fqITcds,182
48
54
  kumoai/graph/graph.py,sha256=iyp4klPIMn2ttuEqMJvsrxKb_tmz_DTnvziIhCegduM,38291
49
55
  kumoai/graph/__init__.py,sha256=n8X4X8luox4hPBHTRC9R-3JzvYYMoR8n7lF1H4w4Hzc,228
@@ -53,8 +59,9 @@ kumoai/artifact_export/config.py,sha256=jOPDduduxv0uuB-7xVlDiZglfpmFF5lzQhhH1SMk
53
59
  kumoai/artifact_export/job.py,sha256=GEisSwvcjK_35RgOfsLXGgxMTXIWm765B_BW_Kgs-V0,3275
54
60
  kumoai/artifact_export/__init__.py,sha256=BsfDrc3mCHpO9-BqvqKm8qrXDIwfdaoH5UIoG4eQkc4,238
55
61
  kumoai/utils/datasets.py,sha256=ptKIUoBONVD55pTVNdRCkQT3NWdN_r9UAUu4xewPa3U,2928
56
- kumoai/utils/__init__.py,sha256=cF5ACzp1X61sqhlCHc6biQk6fc4gW_oyhGsBrjx-SoM,316
57
- kumoai/utils/progress_logger.py,sha256=pngEGzMHkiOUKOa6fbzxCEc2xlA4SJKV4TDTVVoqObM,5062
62
+ kumoai/utils/__init__.py,sha256=6S-UtwjeLpnCYRCCIEWhkitPYGaqOGXC1ChE13DzXiU,256
63
+ kumoai/utils/display.py,sha256=gnQR8QO0QQYfusefr7lObVEwZ3xajsv0XhhjAqOlz1A,2432
64
+ kumoai/utils/progress_logger.py,sha256=rRcfWnfV6uHuvb7cD0mIIfUz3JvnSae0U4SesncODU8,9505
58
65
  kumoai/utils/sql.py,sha256=f6lR6rBEW7Dtk0NdM26dOZXUHDizEHb1WPlBCJrwoq0,118
59
66
  kumoai/utils/forecasting.py,sha256=-nDS6ucKNfQhTQOfebjefj0wwWH3-KYNslIomxwwMBM,7415
60
67
  kumoai/codegen/generate.py,sha256=SvfWWa71xSAOjH9645yQvgoEM-o4BYjupM_EpUxqB_E,7331
@@ -73,7 +80,7 @@ kumoai/codegen/handlers/__init__.py,sha256=k8TB_Kn-1BycBBi51kqFS2fZHCpCPgR9-3J9g
73
80
  kumoai/codegen/handlers/utils.py,sha256=58b2GCgaTBUp2aId7BLMXMV0ENrusbNbfw7mlyXAXPE,1447
74
81
  kumoai/codegen/handlers/connector.py,sha256=afGf_GreyQ9y6qF3QTgSiM416qtUcP298SatNqUFhvQ,3828
75
82
  kumoai/codegen/handlers/table.py,sha256=POHpA-GFYFGTSuerGmtigYablk-Wq1L3EBvsOI-iFMQ,3956
76
- kumoai/testing/snow.py,sha256=ubx3yJP0UHxsNiar1-jNdv8ZfszKc8Js3_Gg70uf008,1487
83
+ kumoai/testing/snow.py,sha256=S2ayiJ0WCZQdPKYiAKqT8OkQEw0xjYjOgDtGcjs3o7Q,1526
77
84
  kumoai/testing/__init__.py,sha256=goHIIo3JE7uHV7njo4_aTd89mVVR74BEAZ2uyBaOR0w,170
78
85
  kumoai/testing/decorators.py,sha256=83tMifuPTpUqX7zHxMttkj1TDdB62EBtAP-Fjj72Zdo,1607
79
86
  kumoai/connector/glue_connector.py,sha256=HivT0QYQ8-XeB4QLgWvghiqXuq7jyBK9G2R1py_NnE4,4697
@@ -83,20 +90,20 @@ kumoai/connector/bigquery_connector.py,sha256=IkyRqvF8Cg96kApUuuz86eYnl-BqBmDX1f
83
90
  kumoai/connector/source_table.py,sha256=QLT8bEYaxeMwy-b168url0VfnkTrs5K6VKLbxTI4hEY,17539
84
91
  kumoai/connector/__init__.py,sha256=9g6oNJ0qHWFlL5enTSoK4_SSH_5hP74xUDZx-9SggC4,842
85
92
  kumoai/connector/file_upload_connector.py,sha256=swp03HgChOvmNPJetuujBSAqADe7NRmS_T0F3o9it4w,7008
86
- kumoai/connector/utils.py,sha256=wlqQxMmPvnFNoCcczGkKYjSu05h8OhWh4fhTzQm_2bQ,64694
93
+ kumoai/connector/utils.py,sha256=sD3_Dmf42FobMfVayzMVkDHIfXzPN-htD3RHd6Kw8hQ,65055
87
94
  kumoai/connector/s3_connector.py,sha256=3kbv-h7DwD8O260Q0h1GPm5wwQpLt-Tb3d_CBSaie44,10155
88
95
  kumoai/connector/base.py,sha256=cujXSZF3zAfuxNuEw54DSL1T7XCuR4t0shSMDuPUagQ,5291
89
96
  kumoai/pquery/__init__.py,sha256=uTXr7t1eXcVfM-ETaM_1ImfEqhrmaj8BjiIvy1YZTL8,533
90
97
  kumoai/pquery/predictive_query.py,sha256=UXn1s8ztubYZMNGl4ijaeidMiGlFveb1TGw9qI5-TAo,24901
91
98
  kumoai/pquery/prediction_table.py,sha256=QPDH22X1UB0NIufY7qGuV2XW7brG3Pv--FbjNezzM2g,10776
92
- kumoai/pquery/training_table.py,sha256=elmPDZx11kPiC_dkOhJcBUGtHKgL32GCBvZ9k6U0pMg,15809
99
+ kumoai/pquery/training_table.py,sha256=QsZbqA1o-hFSi8GygtDQgYKFi8-3Ur2PftnpgAMqAec,16566
93
100
  kumoai/client/pquery.py,sha256=IQ8As-OOJOkuMoMosphOsA5hxQYLCbzOQJO7RezK8uY,7091
94
- kumoai/client/client.py,sha256=Jda8V9yiu3LbhxlcgRWPeYi7eF6jzCKcq8-B_vEd1ik,8514
101
+ kumoai/client/client.py,sha256=npTLooBtmZ9xOo7AbEiYQTh9wFktsGSEpSEfdB7vdB4,8715
95
102
  kumoai/client/graph.py,sha256=zvLEDExLT_RVbUMHqVl0m6tO6s2gXmYSoWmPF6YMlnA,3831
96
103
  kumoai/client/online.py,sha256=pkBBh_DEC3GAnPcNw6bopNRlGe7EUbIFe7_seQqZRaw,2720
97
104
  kumoai/client/source_table.py,sha256=VCsCcM7KYcnjGP7HLTb-AOSEGEVsJTWjk8bMg1JdgPU,2101
98
105
  kumoai/client/__init__.py,sha256=MkyOuMaHQ2c8GPxjBDQSVFhfRE2d2_6CXQ6rxj4ps4w,64
99
- kumoai/client/jobs.py,sha256=iu_Wrta6BQMlV6ZtzSnmhjwNPKDMQDXOsqVVIyWodqw,17074
106
+ kumoai/client/jobs.py,sha256=Aq-JO5yfU5BvD5_8ZXJ8NYxsE4yFXj_NdG9-ilymsr4,18164
100
107
  kumoai/client/utils.py,sha256=lz1NubwMDHCwzQRowRXm7mjAoYRd5UjRQIwXdtWAl90,3849
101
108
  kumoai/client/connector.py,sha256=x3i2aBTJTEMZvYRcWkY-UfWVOANZjqAso4GBbcshFjw,3920
102
109
  kumoai/client/table.py,sha256=cQG-RPm-e91idEgse1IPJDvBmzddIDGDkuyrR1rq4wU,3235
@@ -108,9 +115,10 @@ kumoai/trainer/job.py,sha256=Wk69nzFhbvuA3nEvtCstI04z5CxkgvQ6tHnGchE0Lkg,44938
108
115
  kumoai/trainer/baseline_trainer.py,sha256=LlfViNOmswNv4c6zJJLsyv0pC2mM2WKMGYx06ogtEVc,4024
109
116
  kumoai/trainer/__init__.py,sha256=zUdFl-f-sBWmm2x8R-rdVzPBeU2FaMzUY5mkcgoTa1k,939
110
117
  kumoai/trainer/online_serving.py,sha256=9cddb5paeZaCgbUeceQdAOxysCtV5XP-KcsgFz_XR5w,9566
118
+ kumoai/trainer/distilled_trainer.py,sha256=2pPs5clakNxkLfaak7uqPJOrpTWe1RVVM7ztDSqQZvU,6484
111
119
  kumoai/trainer/trainer.py,sha256=hBXO7gwpo3t59zKFTeIkK65B8QRmWCwO33sbDuEAPlY,20133
112
- kumoai-2.14.0.dev202512151351.dist-info/RECORD,,
113
- kumoai-2.14.0.dev202512151351.dist-info/WHEEL,sha256=oqGJCpG61FZJmvyZ3C_0aCv-2mdfcY9e3fXvyUNmWfM,136
114
- kumoai-2.14.0.dev202512151351.dist-info/top_level.txt,sha256=YjU6UcmomoDx30vEXLsOU784ED7VztQOsFApk1SFwvs,7
115
- kumoai-2.14.0.dev202512151351.dist-info/METADATA,sha256=RzqzEYc4ILs4XE1EIMufUNuB-yVzeuwDctT3Qb65zdk,2510
116
- kumoai-2.14.0.dev202512151351.dist-info/licenses/LICENSE,sha256=TbWlyqRmhq9PEzCaTI0H0nWLQCCOywQM8wYH8MbjfLo,1102
120
+ kumoai-2.15.0.dev202601121731.dist-info/RECORD,,
121
+ kumoai-2.15.0.dev202601121731.dist-info/WHEEL,sha256=oqGJCpG61FZJmvyZ3C_0aCv-2mdfcY9e3fXvyUNmWfM,136
122
+ kumoai-2.15.0.dev202601121731.dist-info/top_level.txt,sha256=YjU6UcmomoDx30vEXLsOU784ED7VztQOsFApk1SFwvs,7
123
+ kumoai-2.15.0.dev202601121731.dist-info/METADATA,sha256=hIe7QHOe9wHsuE1EZQjEoBNGi6W8Pr4GNT5tIAmVLUI,2564
124
+ kumoai-2.15.0.dev202601121731.dist-info/licenses/LICENSE,sha256=TbWlyqRmhq9PEzCaTI0H0nWLQCCOywQM8wYH8MbjfLo,1102