kumoai 2.13.0.dev202512040649__cp313-cp313-win_amd64.whl → 2.14.0.dev202601081732__cp313-cp313-win_amd64.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.
- kumoai/__init__.py +35 -26
- kumoai/_version.py +1 -1
- kumoai/client/client.py +6 -0
- kumoai/client/jobs.py +26 -0
- kumoai/client/pquery.py +6 -2
- kumoai/connector/utils.py +21 -7
- kumoai/experimental/rfm/__init__.py +51 -24
- kumoai/experimental/rfm/authenticate.py +3 -4
- kumoai/experimental/rfm/backend/local/__init__.py +4 -0
- kumoai/experimental/rfm/{local_graph_store.py → backend/local/graph_store.py} +62 -110
- kumoai/experimental/rfm/backend/local/sampler.py +312 -0
- kumoai/experimental/rfm/backend/local/table.py +35 -31
- kumoai/experimental/rfm/backend/snow/__init__.py +2 -0
- kumoai/experimental/rfm/backend/snow/sampler.py +366 -0
- kumoai/experimental/rfm/backend/snow/table.py +177 -50
- kumoai/experimental/rfm/backend/sqlite/__init__.py +4 -2
- kumoai/experimental/rfm/backend/sqlite/sampler.py +454 -0
- kumoai/experimental/rfm/backend/sqlite/table.py +131 -48
- kumoai/experimental/rfm/base/__init__.py +23 -3
- kumoai/experimental/rfm/base/column.py +96 -10
- kumoai/experimental/rfm/base/expression.py +44 -0
- kumoai/experimental/rfm/base/sampler.py +782 -0
- kumoai/experimental/rfm/base/source.py +2 -1
- kumoai/experimental/rfm/base/sql_sampler.py +247 -0
- kumoai/experimental/rfm/base/table.py +404 -203
- kumoai/experimental/rfm/graph.py +374 -172
- kumoai/experimental/rfm/infer/__init__.py +6 -4
- kumoai/experimental/rfm/infer/dtype.py +7 -4
- kumoai/experimental/rfm/infer/multicategorical.py +1 -1
- kumoai/experimental/rfm/infer/pkey.py +4 -2
- kumoai/experimental/rfm/infer/stype.py +35 -0
- kumoai/experimental/rfm/infer/time_col.py +1 -2
- kumoai/experimental/rfm/pquery/executor.py +27 -27
- kumoai/experimental/rfm/pquery/pandas_executor.py +30 -32
- kumoai/experimental/rfm/relbench.py +76 -0
- kumoai/experimental/rfm/rfm.py +762 -467
- kumoai/experimental/rfm/sagemaker.py +4 -4
- kumoai/experimental/rfm/task_table.py +292 -0
- kumoai/kumolib.cp313-win_amd64.pyd +0 -0
- kumoai/pquery/predictive_query.py +10 -6
- kumoai/pquery/training_table.py +16 -2
- kumoai/testing/snow.py +50 -0
- kumoai/trainer/distilled_trainer.py +175 -0
- kumoai/utils/__init__.py +3 -2
- kumoai/utils/display.py +87 -0
- kumoai/utils/progress_logger.py +190 -12
- kumoai/utils/sql.py +3 -0
- {kumoai-2.13.0.dev202512040649.dist-info → kumoai-2.14.0.dev202601081732.dist-info}/METADATA +3 -2
- {kumoai-2.13.0.dev202512040649.dist-info → kumoai-2.14.0.dev202601081732.dist-info}/RECORD +52 -41
- kumoai/experimental/rfm/local_graph_sampler.py +0 -223
- kumoai/experimental/rfm/local_pquery_driver.py +0 -689
- {kumoai-2.13.0.dev202512040649.dist-info → kumoai-2.14.0.dev202601081732.dist-info}/WHEEL +0 -0
- {kumoai-2.13.0.dev202512040649.dist-info → kumoai-2.14.0.dev202601081732.dist-info}/licenses/LICENSE +0 -0
- {kumoai-2.13.0.dev202512040649.dist-info → kumoai-2.14.0.dev202601081732.dist-info}/top_level.txt +0 -0
kumoai/utils/display.py
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
from collections.abc import Sequence
|
|
2
|
+
|
|
3
|
+
import pandas as pd
|
|
4
|
+
from rich import box
|
|
5
|
+
from rich.console import Console
|
|
6
|
+
from rich.table import Table
|
|
7
|
+
from rich.text import Text
|
|
8
|
+
|
|
9
|
+
from kumoai import in_notebook, in_snowflake_notebook
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def message(msg: str) -> None:
|
|
13
|
+
if in_snowflake_notebook():
|
|
14
|
+
import streamlit as st
|
|
15
|
+
st.markdown(msg)
|
|
16
|
+
elif in_notebook():
|
|
17
|
+
from IPython.display import Markdown, display
|
|
18
|
+
display(Markdown(msg))
|
|
19
|
+
else:
|
|
20
|
+
print(msg.replace("`", "'"))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def title(msg: str) -> None:
|
|
24
|
+
if in_notebook():
|
|
25
|
+
message(f"### {msg}")
|
|
26
|
+
else:
|
|
27
|
+
msg = msg.replace("`", "'")
|
|
28
|
+
Console().print(f"[bold]{msg}[/bold]", highlight=False)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def italic(msg: str) -> None:
|
|
32
|
+
if in_notebook():
|
|
33
|
+
message(f"*{msg}*")
|
|
34
|
+
else:
|
|
35
|
+
msg = msg.replace("`", "'")
|
|
36
|
+
Console().print(
|
|
37
|
+
f"[italic]{msg}[/italic]",
|
|
38
|
+
highlight=False,
|
|
39
|
+
style='dim',
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def unordered_list(items: Sequence[str]) -> None:
|
|
44
|
+
if in_notebook():
|
|
45
|
+
msg = '\n'.join([f"- {item}" for item in items])
|
|
46
|
+
message(msg)
|
|
47
|
+
else:
|
|
48
|
+
text = Text('\n').join(
|
|
49
|
+
Text.assemble(
|
|
50
|
+
Text(' • ', style='yellow'),
|
|
51
|
+
Text(item.replace('`', '')),
|
|
52
|
+
) for item in items)
|
|
53
|
+
Console().print(text, highlight=False)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def dataframe(df: pd.DataFrame) -> None:
|
|
57
|
+
if in_snowflake_notebook():
|
|
58
|
+
import streamlit as st
|
|
59
|
+
st.dataframe(df, hide_index=True)
|
|
60
|
+
elif in_notebook():
|
|
61
|
+
from IPython.display import display
|
|
62
|
+
try:
|
|
63
|
+
if hasattr(df.style, 'hide'):
|
|
64
|
+
display(df.style.hide(axis='index')) # pandas=2
|
|
65
|
+
else:
|
|
66
|
+
display(df.style.hide_index()) # pandas<1.3
|
|
67
|
+
except ImportError:
|
|
68
|
+
print(df.to_string(index=False)) # missing jinja2
|
|
69
|
+
else:
|
|
70
|
+
Console().print(to_rich_table(df))
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def to_rich_table(df: pd.DataFrame) -> Table:
|
|
74
|
+
table = Table(box=box.ROUNDED)
|
|
75
|
+
for column in df.columns:
|
|
76
|
+
table.add_column(str(column))
|
|
77
|
+
for _, row in df.iterrows():
|
|
78
|
+
values: list[str | Text] = []
|
|
79
|
+
for value in row:
|
|
80
|
+
if str(value) == 'True':
|
|
81
|
+
values.append('✅')
|
|
82
|
+
elif str(value) in {'False', '-'}:
|
|
83
|
+
values.append(Text('-', style='dim'))
|
|
84
|
+
else:
|
|
85
|
+
values.append(str(value))
|
|
86
|
+
table.add_row(*values)
|
|
87
|
+
return table
|
kumoai/utils/progress_logger.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import re
|
|
1
2
|
import sys
|
|
2
3
|
import time
|
|
3
|
-
from typing import Any
|
|
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.
|
|
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
|
-
|
|
28
|
-
|
|
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
|
|
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:
|
|
82
|
-
self._task:
|
|
100
|
+
self._progress: Progress | None = None
|
|
101
|
+
self._task: int | None = None
|
|
83
102
|
|
|
84
|
-
self._live:
|
|
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:
|
|
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
|
+
"""
|
kumoai/utils/sql.py
ADDED
{kumoai-2.13.0.dev202512040649.dist-info → kumoai-2.14.0.dev202601081732.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kumoai
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.14.0.dev202601081732
|
|
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.
|
|
26
|
+
Requires-Dist: kumo-api==0.49.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,26 +1,26 @@
|
|
|
1
|
-
kumoai/__init__.py,sha256=
|
|
1
|
+
kumoai/__init__.py,sha256=cKL7QeT-b5OHi75jtvFzbIKGjeJV5Tago7jKLX0nuYE,11207
|
|
2
2
|
kumoai/_logging.py,sha256=qL4JbMQwKXri2f-SEJoFB8TY5ALG12S-nobGTNWxW-A,915
|
|
3
3
|
kumoai/_singleton.py,sha256=i2BHWKpccNh5SJGDyU0IXsnYzJAYr8Xb0wz4c6LRbpo,861
|
|
4
|
-
kumoai/_version.py,sha256=
|
|
4
|
+
kumoai/_version.py,sha256=kzdldxHHR5QHfvOxMMZW6iK135Mpc7XrTltLFgYNQws,39
|
|
5
5
|
kumoai/databricks.py,sha256=ahwJz6DWLXMkndT0XwEDBxF-hoqhidFR8wBUQ4TLZ68,490
|
|
6
6
|
kumoai/exceptions.py,sha256=7TMs0SC8xrU009_Pgd4QXtSF9lxJq8MtRbeX9pcQUy4,859
|
|
7
7
|
kumoai/formatting.py,sha256=o3uCnLwXPhe1KI5WV9sBgRrcU7ed4rgu_pf89GL9Nc0,983
|
|
8
8
|
kumoai/futures.py,sha256=J8rtZMEYFzdn5xF_x-LAiKJz3KGL6PT02f6rq_2bOJk,3836
|
|
9
9
|
kumoai/jobs.py,sha256=dCi7BAdfm2tCnonYlGU4WJokJWbh3RzFfaOX2EYCIHU,2576
|
|
10
|
-
kumoai/kumolib.cp313-win_amd64.pyd,sha256=
|
|
10
|
+
kumoai/kumolib.cp313-win_amd64.pyd,sha256=hvnQnFCKpDyjgNu-pYLOFmRwl8KjNHrYn4VTaDS8-g4,198144
|
|
11
11
|
kumoai/mixin.py,sha256=IaiB8SAI0VqOoMVzzIaUlqMt53-QPUK6OB0HikG-V9E,840
|
|
12
12
|
kumoai/spcs.py,sha256=KWfENrwSLruprlD-QPh63uU0N6npiNrwkeKfBk3EUyQ,4260
|
|
13
13
|
kumoai/artifact_export/__init__.py,sha256=UXAQI5q92ChBzWAk8o3J6pElzYHudAzFZssQXd4o7i8,247
|
|
14
14
|
kumoai/artifact_export/config.py,sha256=PRoUByzu5l-nyBKFR4vnRlq19b53ExGVy8YDCD7zMuI,8233
|
|
15
15
|
kumoai/artifact_export/job.py,sha256=lOFIdPCrvhwdfvvDhQ2yzW8J4qIdYQoHZO1Rz3kJky4,3383
|
|
16
16
|
kumoai/client/__init__.py,sha256=v0ISO1QD8JJhIJS6IzWz5-SL3EhtNCPeX3j1b2HBY0s,69
|
|
17
|
-
kumoai/client/client.py,sha256=
|
|
17
|
+
kumoai/client/client.py,sha256=cabrXk8fPPrXsTDoWiBsZnXNpZsH3Ap2gk5pyVqxO9Y,8938
|
|
18
18
|
kumoai/client/connector.py,sha256=CO2LG5aDpCLxWNYYFRXGZs1AhYH3dRcbqBEUGwHQGzQ,4030
|
|
19
19
|
kumoai/client/endpoints.py,sha256=DpEKEQ1yvL15iHZadXZKO94t-qXrYLaeV1sknX4IuPg,5532
|
|
20
20
|
kumoai/client/graph.py,sha256=6MFyPYxDPfGTWeAI_84RUgWx9rVvqbLnR0Ourtgj5rg,3951
|
|
21
|
-
kumoai/client/jobs.py,sha256=
|
|
21
|
+
kumoai/client/jobs.py,sha256=SF99fbSEGo-O6MLDWRN1kEaOiiGuv5IeUJjE0exrJuw,18637
|
|
22
22
|
kumoai/client/online.py,sha256=4s_8Sv8m_k_tty4CO7RuAt0e6BDMkGvsZZ3VX8zyDb8,2798
|
|
23
|
-
kumoai/client/pquery.py,sha256=
|
|
23
|
+
kumoai/client/pquery.py,sha256=8hBT44-1gc2QoO-tjdDsJXJA4mLO1thmS27b4XDlUUY,7298
|
|
24
24
|
kumoai/client/rfm.py,sha256=Gmt_dqoXekBCLiF0eQPgpoJ1cbnhnU8VbINF3U13qbQ,3838
|
|
25
25
|
kumoai/client/source_table.py,sha256=mMHJtQ_yUHRI9LdHLVHxNGt83bbzmC1_d-NmXjbiTuI,2154
|
|
26
26
|
kumoai/client/table.py,sha256=VhjLEMLQS1Z7zjcb2Yt3gZfiVqiD7b1gj-WNux_504A,3336
|
|
@@ -50,62 +50,73 @@ kumoai/connector/glue_connector.py,sha256=kqT2q53Da7PeeaZrvLVzFXC186E7glh5eGitKL
|
|
|
50
50
|
kumoai/connector/s3_connector.py,sha256=AUzENbQ20bYXh3XOXEOsWRKlaGGkm3YrW9JfBLm-LqY,10433
|
|
51
51
|
kumoai/connector/snowflake_connector.py,sha256=tQzIWxC4oDGqxFt0212w5eoIPT4QBP2nuF9SdKRNwNI,9274
|
|
52
52
|
kumoai/connector/source_table.py,sha256=fnqwIKY6qYo4G0EsRzchb6FgZ-dQyU6aRaD9UAxsml0,18010
|
|
53
|
-
kumoai/connector/utils.py,sha256=
|
|
53
|
+
kumoai/connector/utils.py,sha256=vxr5sVHAMucqlI3Xz5jfQ-uN_fa0KE2qcOY6c7TiUoU,66865
|
|
54
54
|
kumoai/encoder/__init__.py,sha256=8FeP6mUyCeXxr1b8kUIi5dxe5vEXQRft9tPoaV1CBqg,186
|
|
55
55
|
kumoai/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
|
-
kumoai/experimental/rfm/__init__.py,sha256=
|
|
57
|
-
kumoai/experimental/rfm/authenticate.py,sha256=
|
|
58
|
-
kumoai/experimental/rfm/graph.py,sha256=
|
|
59
|
-
kumoai/experimental/rfm/
|
|
60
|
-
kumoai/experimental/rfm/
|
|
61
|
-
kumoai/experimental/rfm/
|
|
62
|
-
kumoai/experimental/rfm/
|
|
63
|
-
kumoai/experimental/rfm/sagemaker.py,sha256=sEJSyfEFBA3-7wKinBEzSooKHEn0BgPjrgRnPhYo79g,5120
|
|
56
|
+
kumoai/experimental/rfm/__init__.py,sha256=dibc0t7g-PYanT90TncRlceD0ZqxtKStVdzzG1_cXC8,7226
|
|
57
|
+
kumoai/experimental/rfm/authenticate.py,sha256=odKaqOAEkdC_wB340cs_ozjSvQLTce45WLiJSEzQaL8,19283
|
|
58
|
+
kumoai/experimental/rfm/graph.py,sha256=LHPJQyTSf_traFDX2AZj9ylpP69aATIB-TCDh_mj_gc,47583
|
|
59
|
+
kumoai/experimental/rfm/relbench.py,sha256=30O7QAKYcMgr6C9Qpgev7gxSMAtWXop25p7DtmzrBlE,2352
|
|
60
|
+
kumoai/experimental/rfm/rfm.py,sha256=D67eDTSHDkpCm1dPJAZcLZKyKc26AdT4REU1g0xk5hs,61047
|
|
61
|
+
kumoai/experimental/rfm/sagemaker.py,sha256=7Yk4um0gBBn7u-Bz8JRv53z0__FcD0uESoiImJhxsBw,5101
|
|
62
|
+
kumoai/experimental/rfm/task_table.py,sha256=4sx9z6JhHQVQaPAlbyfDwbyOBApOUs6SEXHHcfsdxl0,10139
|
|
64
63
|
kumoai/experimental/rfm/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
65
|
-
kumoai/experimental/rfm/backend/local/__init__.py,sha256=
|
|
66
|
-
kumoai/experimental/rfm/backend/local/
|
|
67
|
-
kumoai/experimental/rfm/backend/
|
|
68
|
-
kumoai/experimental/rfm/backend/
|
|
69
|
-
kumoai/experimental/rfm/backend/
|
|
70
|
-
kumoai/experimental/rfm/backend/
|
|
71
|
-
kumoai/experimental/rfm/
|
|
72
|
-
kumoai/experimental/rfm/
|
|
73
|
-
kumoai/experimental/rfm/
|
|
74
|
-
kumoai/experimental/rfm/
|
|
75
|
-
kumoai/experimental/rfm/
|
|
64
|
+
kumoai/experimental/rfm/backend/local/__init__.py,sha256=8JbLaai0yhtldFcDkddphIJKMiKc0XnodvYBWkrGPXI,1056
|
|
65
|
+
kumoai/experimental/rfm/backend/local/graph_store.py,sha256=fmBOdXK6a7hHqfB5NqpcGB8GTH60pEbTn7hZJcJi6yk,11591
|
|
66
|
+
kumoai/experimental/rfm/backend/local/sampler.py,sha256=tD3l5xfcxjsWDaC45V-xOAI_-Jyyk_au-E7wyrMqCx4,11038
|
|
67
|
+
kumoai/experimental/rfm/backend/local/table.py,sha256=86lztrVxdpya25X4r8mR2c_t-tI8gAEyahz-mNmk9tA,3602
|
|
68
|
+
kumoai/experimental/rfm/backend/snow/__init__.py,sha256=lsF0sJXZ0Pc3NvBTBXJHudp-iZJXdidrhyqFQKEU5_Q,1030
|
|
69
|
+
kumoai/experimental/rfm/backend/snow/sampler.py,sha256=9mtVpsyBYjPxWjBbqyoDLJlhttTnbOLwm3ixA9cTpKw,14707
|
|
70
|
+
kumoai/experimental/rfm/backend/snow/table.py,sha256=ZEaHsTV7dt4aS1Wp_4gYV475Ysyr7icRVlyKxKrjh7o,9134
|
|
71
|
+
kumoai/experimental/rfm/backend/sqlite/__init__.py,sha256=wkSr2D_E5VCH4RGW8FCN2iJp-6wb_RTCMO8R3p5lkiw,934
|
|
72
|
+
kumoai/experimental/rfm/backend/sqlite/sampler.py,sha256=l6Ht8nXWKLjbmwDESmYKWhwVO_sbgx-YtYZ0uaO24gM,19112
|
|
73
|
+
kumoai/experimental/rfm/backend/sqlite/table.py,sha256=nH3S3lBVfG6aWp0DtCUVJRBZhlQV4ieskbz-5D0AlG0,6867
|
|
74
|
+
kumoai/experimental/rfm/base/__init__.py,sha256=is8HTLng28h5AtpledQ-hdIheGM052JdBhjv8HtKhDw,754
|
|
75
|
+
kumoai/experimental/rfm/base/column.py,sha256=JeDKSZnTChFHMaIC3TcEgdPG9Rr2PATTAMIMhjnvXrs,5117
|
|
76
|
+
kumoai/experimental/rfm/base/expression.py,sha256=04NgmrrvjM1yFXnOMDZtb5V1-oFufqCamv2KTETOHik,1296
|
|
77
|
+
kumoai/experimental/rfm/base/sampler.py,sha256=yTAUGRL_UmZVsj7ctf2W1DtciQLNrktwtU9Qd_wE52A,32673
|
|
78
|
+
kumoai/experimental/rfm/base/source.py,sha256=67rpePejkZli4B_eDWzDrn_8Q5Msyo2XZ9F8IGB0ImI,320
|
|
79
|
+
kumoai/experimental/rfm/base/sql_sampler.py,sha256=Wd60cvIs06WkW13Jh64QtAgQCEbA5M_7Rde473Jh_SU,9605
|
|
80
|
+
kumoai/experimental/rfm/base/table.py,sha256=5tVaTFTBlUoP_-2I0IdFonmpFRzlwQe0vGthkApQucM,27629
|
|
81
|
+
kumoai/experimental/rfm/infer/__init__.py,sha256=Uf4Od7B2G80U61mkkxsnxHPGu1Hh2RqOazTkOYtNLvA,538
|
|
76
82
|
kumoai/experimental/rfm/infer/categorical.py,sha256=bqmfrE5ZCBTcb35lA4SyAkCu3MgttAn29VBJYMBNhVg,893
|
|
77
|
-
kumoai/experimental/rfm/infer/dtype.py,sha256=
|
|
83
|
+
kumoai/experimental/rfm/infer/dtype.py,sha256=LnAazTqfic0SOH0Py_ooXvVxXR5OVi6-Og1L_9lMOZc,2864
|
|
78
84
|
kumoai/experimental/rfm/infer/id.py,sha256=xaJBETLZa8ttzZCsDwFSwfyCi3VYsLc_kDWT_t_6Ih4,954
|
|
79
|
-
kumoai/experimental/rfm/infer/multicategorical.py,sha256=
|
|
80
|
-
kumoai/experimental/rfm/infer/pkey.py,sha256=
|
|
81
|
-
kumoai/experimental/rfm/infer/
|
|
85
|
+
kumoai/experimental/rfm/infer/multicategorical.py,sha256=mMuRCbfs0zsfOoPB_eCs6nlt4WgNPvklmYPRq7w85L4,1167
|
|
86
|
+
kumoai/experimental/rfm/infer/pkey.py,sha256=GCAUN8Hz5-leVv2-H8soP3k-DsXJ1O_uQU25-CsSWN0,4540
|
|
87
|
+
kumoai/experimental/rfm/infer/stype.py,sha256=lOgiGJ_rsaeiFWyVUw0IMwn_7hGOqL8mvy2rGzXfi3Q,929
|
|
88
|
+
kumoai/experimental/rfm/infer/time_col.py,sha256=-OJbjHxD05UuSF2ePBkywzm-h2Qd9kC4BEFaHuglUbs,1850
|
|
82
89
|
kumoai/experimental/rfm/infer/timestamp.py,sha256=L2VxjtYTSyUBYAo4M-L08xSQlPpqnHMAVF5_vxjh3Y0,1135
|
|
83
90
|
kumoai/experimental/rfm/pquery/__init__.py,sha256=RkTn0I74uXOUuOiBpa6S-_QEYctMutkUnBEfF9ztQzI,159
|
|
84
|
-
kumoai/experimental/rfm/pquery/executor.py,sha256=
|
|
85
|
-
kumoai/experimental/rfm/pquery/pandas_executor.py,sha256=
|
|
91
|
+
kumoai/experimental/rfm/pquery/executor.py,sha256=mz5mqhHbgZM0f5oNFLyThWGM4UePx_kd1O4zyJ_8ToQ,2830
|
|
92
|
+
kumoai/experimental/rfm/pquery/pandas_executor.py,sha256=awZSp41i0qTPzMowWJ1-FY4rbpTH7hxMeV91drEPfUQ,18984
|
|
86
93
|
kumoai/graph/__init__.py,sha256=QGk3OMwRzQJSGESdcc7hcQH6UDmNVJYTdqnRren4c7Q,240
|
|
87
94
|
kumoai/graph/column.py,sha256=cQhioibTbIKIBZ-bf8-Bt4F4Iblhidps-CYWrkxRPnE,4295
|
|
88
95
|
kumoai/graph/graph.py,sha256=Pq-dxi4MwoDtrrwm3xeyUB9Hl7ryNfHq4rMHuvyNB3c,39239
|
|
89
96
|
kumoai/graph/table.py,sha256=BB-4ezyd7hrrj6QZwRBa80ySH0trwYb4fmhRn3xoK-k,34726
|
|
90
97
|
kumoai/pquery/__init__.py,sha256=FF6QUTG_xrz2ic1I8NcIa8O993Ae98eZ9gkvQ4rapgo,558
|
|
91
98
|
kumoai/pquery/prediction_table.py,sha256=hWG4L_ze4PLgUoxCXNKk8_nkYxVXELQs8_X8KGOE9yk,11063
|
|
92
|
-
kumoai/pquery/predictive_query.py,sha256=
|
|
93
|
-
kumoai/pquery/training_table.py,sha256=
|
|
99
|
+
kumoai/pquery/predictive_query.py,sha256=I5Ntc7YO1qEGxKrLuhAzZO3SySr8Wnjhde8eDbbB7zk,25542
|
|
100
|
+
kumoai/pquery/training_table.py,sha256=ex5FpA4_rY5OSIl2koisQENFoPbTz2PmG-DR3rvnysg,17004
|
|
94
101
|
kumoai/testing/__init__.py,sha256=XBQ_Sa3WnOYlpXZ3gUn8w6nVfZt-nfPhytfIBeiPt4w,178
|
|
95
102
|
kumoai/testing/decorators.py,sha256=p79ZCQqPY_MHWy0_l7-xQ6wUIqFTn4AbrGWTHLvpbQY,1664
|
|
103
|
+
kumoai/testing/snow.py,sha256=i0m8y7ciqUnQeP1Xe_-bOxVh_xyAuuyz_rTEHJFkYY0,1537
|
|
96
104
|
kumoai/trainer/__init__.py,sha256=uCFXy9bw_byn_wYd3M-BTZCHTVvv4XXr8qRlh-QOvag,981
|
|
97
105
|
kumoai/trainer/baseline_trainer.py,sha256=oXweh8j1sar6KhQfr3A7gmQxcDq7SG0Bx3jIenbtyC4,4117
|
|
98
106
|
kumoai/trainer/config.py,sha256=7_Jv1w1mqaokCQwQdJkqCSgVpmh8GqE3fL1Ky_vvttI,100
|
|
107
|
+
kumoai/trainer/distilled_trainer.py,sha256=hdZWi1_6bxNBDwHGmEMXTYtFUwC0JiDLozOR8zQvBBY,6659
|
|
99
108
|
kumoai/trainer/job.py,sha256=IBP2SeIk21XpRK1Um1NIs2dEKid319cHu6UkCjKO6jc,46130
|
|
100
109
|
kumoai/trainer/online_serving.py,sha256=T1jicl-qXiiWGQWUCwlfQsyxWUODybj_975gx9yglH4,9824
|
|
101
110
|
kumoai/trainer/trainer.py,sha256=AKumc3X2Vm3qxZSA85Dv_fSLC4JQ3rM7P0ixOWbEex0,20608
|
|
102
111
|
kumoai/trainer/util.py,sha256=LCXkY5MNl6NbEVd2OZ0aVqF6fvr3KiCFh6pH0igAi_g,4165
|
|
103
|
-
kumoai/utils/__init__.py,sha256=
|
|
112
|
+
kumoai/utils/__init__.py,sha256=lazi9gAl5YBg1Nk121zSDg-BIKTVETjFTZwTFUlGngo,267
|
|
104
113
|
kumoai/utils/datasets.py,sha256=UyAII-oAn7x3ombuvpbSQ41aVF9SYKBjQthTD-vcT2A,3011
|
|
114
|
+
kumoai/utils/display.py,sha256=oPNcXLUUnSKo0m2Hxc330QFPPtnV-wjJMjKoBseB1HY,2519
|
|
105
115
|
kumoai/utils/forecasting.py,sha256=ZgKeUCbWLOot0giAkoigwU5du8LkrwAicFOi5hVn6wg,7624
|
|
106
|
-
kumoai/utils/progress_logger.py,sha256=
|
|
107
|
-
kumoai
|
|
108
|
-
kumoai-2.
|
|
109
|
-
kumoai-2.
|
|
110
|
-
kumoai-2.
|
|
111
|
-
kumoai-2.
|
|
116
|
+
kumoai/utils/progress_logger.py,sha256=UYVaPhY6BFVhV48bYeMWMtYWRJFPvnQq2UqkZhLbzFQ,9860
|
|
117
|
+
kumoai/utils/sql.py,sha256=a9HT5IIUaXfbQaLbZ2HuuYHLBDev_cer1Tzif7xE-R4,121
|
|
118
|
+
kumoai-2.14.0.dev202601081732.dist-info/licenses/LICENSE,sha256=ZUilBDp--4vbhsEr6f_Upw9rnIx09zQ3K9fXQ0rfd6w,1111
|
|
119
|
+
kumoai-2.14.0.dev202601081732.dist-info/METADATA,sha256=vYTHC9RcmY73aISUFIuzPUuvQzTRYYo6tAb8rgMjUBY,2628
|
|
120
|
+
kumoai-2.14.0.dev202601081732.dist-info/WHEEL,sha256=qV0EIPljj1XC_vuSatRWjn02nZIz3N1t8jsZz7HBr2U,101
|
|
121
|
+
kumoai-2.14.0.dev202601081732.dist-info/top_level.txt,sha256=YjU6UcmomoDx30vEXLsOU784ED7VztQOsFApk1SFwvs,7
|
|
122
|
+
kumoai-2.14.0.dev202601081732.dist-info/RECORD,,
|