kumoai 2.13.0.dev202512040649__cp313-cp313-win_amd64.whl → 2.14.0.dev202512211732__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 +12 -0
- kumoai/_version.py +1 -1
- kumoai/client/pquery.py +6 -2
- kumoai/experimental/rfm/__init__.py +33 -8
- 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} +52 -91
- kumoai/experimental/rfm/backend/local/sampler.py +315 -0
- kumoai/experimental/rfm/backend/local/table.py +21 -16
- kumoai/experimental/rfm/backend/snow/__init__.py +2 -0
- kumoai/experimental/rfm/backend/snow/sampler.py +252 -0
- kumoai/experimental/rfm/backend/snow/table.py +102 -48
- kumoai/experimental/rfm/backend/sqlite/__init__.py +4 -2
- kumoai/experimental/rfm/backend/sqlite/sampler.py +349 -0
- kumoai/experimental/rfm/backend/sqlite/table.py +84 -31
- kumoai/experimental/rfm/base/__init__.py +26 -3
- kumoai/experimental/rfm/base/column.py +14 -12
- kumoai/experimental/rfm/base/column_expression.py +50 -0
- kumoai/experimental/rfm/base/sampler.py +773 -0
- kumoai/experimental/rfm/base/source.py +1 -0
- kumoai/experimental/rfm/base/sql_sampler.py +84 -0
- kumoai/experimental/rfm/base/sql_table.py +229 -0
- kumoai/experimental/rfm/base/table.py +173 -138
- kumoai/experimental/rfm/graph.py +302 -108
- kumoai/experimental/rfm/infer/__init__.py +6 -4
- kumoai/experimental/rfm/infer/dtype.py +3 -3
- 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/rfm.py +299 -230
- kumoai/experimental/rfm/sagemaker.py +4 -4
- kumoai/kumolib.cp313-win_amd64.pyd +0 -0
- kumoai/pquery/predictive_query.py +10 -6
- kumoai/testing/snow.py +50 -0
- kumoai/utils/__init__.py +3 -2
- kumoai/utils/progress_logger.py +178 -12
- kumoai/utils/sql.py +3 -0
- {kumoai-2.13.0.dev202512040649.dist-info → kumoai-2.14.0.dev202512211732.dist-info}/METADATA +3 -2
- {kumoai-2.13.0.dev202512040649.dist-info → kumoai-2.14.0.dev202512211732.dist-info}/RECORD +44 -36
- 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.dev202512211732.dist-info}/WHEEL +0 -0
- {kumoai-2.13.0.dev202512040649.dist-info → kumoai-2.14.0.dev202512211732.dist-info}/licenses/LICENSE +0 -0
- {kumoai-2.13.0.dev202512040649.dist-info → kumoai-2.14.0.dev202512211732.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import base64
|
|
2
2
|
import json
|
|
3
|
-
from typing import Any
|
|
3
|
+
from typing import Any
|
|
4
4
|
|
|
5
5
|
import requests
|
|
6
6
|
|
|
@@ -48,8 +48,8 @@ class KumoClient_SageMakerAdapter(KumoClient):
|
|
|
48
48
|
|
|
49
49
|
# Recording buffers.
|
|
50
50
|
self._recording_active = False
|
|
51
|
-
self._recorded_reqs:
|
|
52
|
-
self._recorded_resps:
|
|
51
|
+
self._recorded_reqs: list[dict[str, Any]] = []
|
|
52
|
+
self._recorded_resps: list[dict[str, Any]] = []
|
|
53
53
|
|
|
54
54
|
def authenticate(self) -> None:
|
|
55
55
|
# TODO(siyang): call /ping to verify?
|
|
@@ -92,7 +92,7 @@ class KumoClient_SageMakerAdapter(KumoClient):
|
|
|
92
92
|
self._recorded_reqs.clear()
|
|
93
93
|
self._recorded_resps.clear()
|
|
94
94
|
|
|
95
|
-
def end_recording(self) ->
|
|
95
|
+
def end_recording(self) -> list[tuple[dict[str, Any], dict[str, Any]]]:
|
|
96
96
|
"""Stop recording and return recorded requests/responses."""
|
|
97
97
|
assert self._recording_active
|
|
98
98
|
self._recording_active = False
|
|
Binary file
|
|
@@ -370,9 +370,11 @@ class PredictiveQuery:
|
|
|
370
370
|
train_table_job_api = global_state.client.generate_train_table_job_api
|
|
371
371
|
job_id: GenerateTrainTableJobID = train_table_job_api.create(
|
|
372
372
|
GenerateTrainTableRequest(
|
|
373
|
-
dict(custom_tags),
|
|
374
|
-
|
|
375
|
-
|
|
373
|
+
dict(custom_tags),
|
|
374
|
+
pq_id,
|
|
375
|
+
plan,
|
|
376
|
+
None,
|
|
377
|
+
))
|
|
376
378
|
|
|
377
379
|
self._train_table = TrainingTableJob(job_id=job_id)
|
|
378
380
|
if non_blocking:
|
|
@@ -451,9 +453,11 @@ class PredictiveQuery:
|
|
|
451
453
|
bp_table_api = global_state.client.generate_prediction_table_job_api
|
|
452
454
|
job_id: GeneratePredictionTableJobID = bp_table_api.create(
|
|
453
455
|
GeneratePredictionTableRequest(
|
|
454
|
-
dict(custom_tags),
|
|
455
|
-
|
|
456
|
-
|
|
456
|
+
dict(custom_tags),
|
|
457
|
+
pq_id,
|
|
458
|
+
plan,
|
|
459
|
+
None,
|
|
460
|
+
))
|
|
457
461
|
|
|
458
462
|
self._prediction_table = PredictionTableJob(job_id=job_id)
|
|
459
463
|
if non_blocking:
|
kumoai/testing/snow.py
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
from kumoai.experimental.rfm.backend.snow import Connection
|
|
5
|
+
from kumoai.experimental.rfm.backend.snow import connect as _connect
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def connect(
|
|
9
|
+
region: str,
|
|
10
|
+
id: str,
|
|
11
|
+
account: str,
|
|
12
|
+
user: str,
|
|
13
|
+
warehouse: str,
|
|
14
|
+
database: str | None = None,
|
|
15
|
+
schema: str | None = None,
|
|
16
|
+
) -> Connection:
|
|
17
|
+
|
|
18
|
+
kwargs = dict(password=os.getenv('SNOWFLAKE_PASSWORD'))
|
|
19
|
+
if kwargs['password'] is None:
|
|
20
|
+
import boto3
|
|
21
|
+
from cryptography.hazmat.primitives import serialization
|
|
22
|
+
|
|
23
|
+
client = boto3.client(
|
|
24
|
+
service_name='secretsmanager',
|
|
25
|
+
region_name=region,
|
|
26
|
+
)
|
|
27
|
+
secret_id = (f'arn:aws:secretsmanager:{region}:{id}:secret:'
|
|
28
|
+
f'{account}.snowflakecomputing.com')
|
|
29
|
+
response = client.get_secret_value(SecretId=secret_id)['SecretString']
|
|
30
|
+
secret = json.loads(response)
|
|
31
|
+
|
|
32
|
+
private_key = serialization.load_pem_private_key(
|
|
33
|
+
secret['kumo_user_secretkey'].encode(),
|
|
34
|
+
password=None,
|
|
35
|
+
)
|
|
36
|
+
kwargs['private_key'] = private_key.private_bytes(
|
|
37
|
+
encoding=serialization.Encoding.DER,
|
|
38
|
+
format=serialization.PrivateFormat.PKCS8,
|
|
39
|
+
encryption_algorithm=serialization.NoEncryption(),
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
return _connect(
|
|
43
|
+
account=account,
|
|
44
|
+
user=user,
|
|
45
|
+
warehouse='WH_XS',
|
|
46
|
+
database='KUMO',
|
|
47
|
+
schema=schema,
|
|
48
|
+
session_parameters=dict(CLIENT_TELEMETRY_ENABLED=False),
|
|
49
|
+
**kwargs,
|
|
50
|
+
)
|
kumoai/utils/__init__.py
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
from .
|
|
1
|
+
from .sql import quote_ident
|
|
2
|
+
from .progress_logger import ProgressLogger
|
|
2
3
|
from .forecasting import ForecastVisualizer
|
|
3
4
|
from .datasets import from_relbench
|
|
4
5
|
|
|
5
6
|
__all__ = [
|
|
7
|
+
'quote_ident',
|
|
6
8
|
'ProgressLogger',
|
|
7
|
-
'InteractiveProgressLogger',
|
|
8
9
|
'ForecastVisualizer',
|
|
9
10
|
'from_relbench',
|
|
10
11
|
]
|
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,22 @@ 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
|
+
|
|
28
|
+
self.logs: list[str] = []
|
|
29
|
+
|
|
30
|
+
self.start_time: float | None = None
|
|
31
|
+
self.end_time: float | None = None
|
|
32
|
+
|
|
33
|
+
@classmethod
|
|
34
|
+
def default(cls, msg: str, verbose: bool = True) -> 'ProgressLogger':
|
|
35
|
+
from kumoai import in_snowflake_notebook
|
|
26
36
|
|
|
27
|
-
|
|
28
|
-
|
|
37
|
+
if in_snowflake_notebook():
|
|
38
|
+
return StreamlitProgressLogger(msg, verbose)
|
|
39
|
+
return RichProgressLogger(msg, verbose)
|
|
29
40
|
|
|
30
41
|
@property
|
|
31
42
|
def duration(self) -> float:
|
|
@@ -37,6 +48,12 @@ class ProgressLogger:
|
|
|
37
48
|
def log(self, msg: str) -> None:
|
|
38
49
|
self.logs.append(msg)
|
|
39
50
|
|
|
51
|
+
def init_progress(self, total: int, description: str) -> None:
|
|
52
|
+
pass
|
|
53
|
+
|
|
54
|
+
def step(self) -> None:
|
|
55
|
+
pass
|
|
56
|
+
|
|
40
57
|
def __enter__(self) -> Self:
|
|
41
58
|
self.start_time = time.perf_counter()
|
|
42
59
|
return self
|
|
@@ -66,22 +83,21 @@ class ColoredTimeRemainingColumn(TimeRemainingColumn):
|
|
|
66
83
|
return Text(str(super().render(task)), style=self.style)
|
|
67
84
|
|
|
68
85
|
|
|
69
|
-
class
|
|
86
|
+
class RichProgressLogger(ProgressLogger):
|
|
70
87
|
def __init__(
|
|
71
88
|
self,
|
|
72
89
|
msg: str,
|
|
73
90
|
verbose: bool = True,
|
|
74
91
|
refresh_per_second: int = 10,
|
|
75
92
|
) -> None:
|
|
76
|
-
super().__init__(msg=msg)
|
|
93
|
+
super().__init__(msg=msg, verbose=verbose)
|
|
77
94
|
|
|
78
|
-
self.verbose = verbose
|
|
79
95
|
self.refresh_per_second = refresh_per_second
|
|
80
96
|
|
|
81
|
-
self._progress:
|
|
82
|
-
self._task:
|
|
97
|
+
self._progress: Progress | None = None
|
|
98
|
+
self._task: int | None = None
|
|
83
99
|
|
|
84
|
-
self._live:
|
|
100
|
+
self._live: Live | None = None
|
|
85
101
|
self._exception: bool = False
|
|
86
102
|
|
|
87
103
|
def init_progress(self, total: int, description: str) -> None:
|
|
@@ -151,7 +167,7 @@ class InteractiveProgressLogger(ProgressLogger):
|
|
|
151
167
|
|
|
152
168
|
table = Table.grid(padding=(0, 1))
|
|
153
169
|
|
|
154
|
-
icon:
|
|
170
|
+
icon: Text | Padding
|
|
155
171
|
if self._exception:
|
|
156
172
|
style = 'red'
|
|
157
173
|
icon = Text('❌', style=style)
|
|
@@ -175,3 +191,153 @@ class InteractiveProgressLogger(ProgressLogger):
|
|
|
175
191
|
|
|
176
192
|
if self.verbose and self._progress is not None:
|
|
177
193
|
yield self._progress.get_renderable()
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
class StreamlitProgressLogger(ProgressLogger):
|
|
197
|
+
def __init__(
|
|
198
|
+
self,
|
|
199
|
+
msg: str,
|
|
200
|
+
verbose: bool = True,
|
|
201
|
+
) -> None:
|
|
202
|
+
super().__init__(msg=msg, verbose=verbose)
|
|
203
|
+
|
|
204
|
+
self._status: Any = None
|
|
205
|
+
|
|
206
|
+
self._total = 0
|
|
207
|
+
self._current = 0
|
|
208
|
+
self._description: str = ''
|
|
209
|
+
self._progress: Any = None
|
|
210
|
+
|
|
211
|
+
def __enter__(self) -> Self:
|
|
212
|
+
super().__enter__()
|
|
213
|
+
|
|
214
|
+
import streamlit as st
|
|
215
|
+
|
|
216
|
+
# Adjust layout for prettier output:
|
|
217
|
+
st.markdown(STREAMLIT_CSS, unsafe_allow_html=True)
|
|
218
|
+
|
|
219
|
+
if self.verbose:
|
|
220
|
+
self._status = st.status(
|
|
221
|
+
f':blue[{self._sanitize_text(self.msg)}]',
|
|
222
|
+
expanded=True,
|
|
223
|
+
)
|
|
224
|
+
|
|
225
|
+
return self
|
|
226
|
+
|
|
227
|
+
def log(self, msg: str) -> None:
|
|
228
|
+
super().log(msg)
|
|
229
|
+
if self.verbose and self._status is not None:
|
|
230
|
+
self._status.write(self._sanitize_text(msg))
|
|
231
|
+
|
|
232
|
+
def init_progress(self, total: int, description: str) -> None:
|
|
233
|
+
if self.verbose and self._status is not None:
|
|
234
|
+
self._total = total
|
|
235
|
+
self._current = 0
|
|
236
|
+
self._description = self._sanitize_text(description)
|
|
237
|
+
percent = min(self._current / self._total, 1.0)
|
|
238
|
+
self._progress = self._status.progress(
|
|
239
|
+
value=percent,
|
|
240
|
+
text=f'{self._description} [{self._current}/{self._total}]',
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
def step(self) -> None:
|
|
244
|
+
self._current += 1
|
|
245
|
+
|
|
246
|
+
if self.verbose and self._progress is not None:
|
|
247
|
+
percent = min(self._current / self._total, 1.0)
|
|
248
|
+
self._progress.progress(
|
|
249
|
+
value=percent,
|
|
250
|
+
text=f'{self._description} [{self._current}/{self._total}]',
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
def __exit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None:
|
|
254
|
+
super().__exit__(exc_type, exc_val, exc_tb)
|
|
255
|
+
|
|
256
|
+
if not self.verbose or self._status is None:
|
|
257
|
+
return
|
|
258
|
+
|
|
259
|
+
label = f'{self._sanitize_text(self.msg)} ({self.duration:.2f}s)'
|
|
260
|
+
|
|
261
|
+
if exc_type is not None:
|
|
262
|
+
self._status.update(
|
|
263
|
+
label=f':red[{label}]',
|
|
264
|
+
state='error',
|
|
265
|
+
expanded=True,
|
|
266
|
+
)
|
|
267
|
+
else:
|
|
268
|
+
self._status.update(
|
|
269
|
+
label=f':green[{label}]',
|
|
270
|
+
state='complete',
|
|
271
|
+
expanded=True,
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
@staticmethod
|
|
275
|
+
def _sanitize_text(msg: str) -> str:
|
|
276
|
+
return re.sub(r'\[/?bold\]', '**', msg)
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
STREAMLIT_CSS = """
|
|
280
|
+
<style>
|
|
281
|
+
/* Fix horizontal scrollbar */
|
|
282
|
+
.stExpander summary {
|
|
283
|
+
width: auto;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/* Fix paddings/margins */
|
|
287
|
+
.stExpander summary {
|
|
288
|
+
padding: 0.75rem 1rem 0.5rem;
|
|
289
|
+
}
|
|
290
|
+
.stExpander p {
|
|
291
|
+
margin: 0px 0px 0.2rem;
|
|
292
|
+
}
|
|
293
|
+
.stExpander [data-testid="stExpanderDetails"] {
|
|
294
|
+
padding-bottom: 1.45rem;
|
|
295
|
+
}
|
|
296
|
+
.stExpander .stProgress div:first-child {
|
|
297
|
+
padding-bottom: 4px;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/* Fix expand icon position */
|
|
301
|
+
.stExpander summary svg {
|
|
302
|
+
height: 1.5rem;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/* Fix summary icons */
|
|
306
|
+
.stExpander summary [data-testid="stExpanderIconCheck"] {
|
|
307
|
+
font-size: 1.8rem;
|
|
308
|
+
margin-top: -3px;
|
|
309
|
+
color: rgb(21, 130, 55);
|
|
310
|
+
}
|
|
311
|
+
.stExpander summary [data-testid="stExpanderIconError"] {
|
|
312
|
+
font-size: 1.8rem;
|
|
313
|
+
margin-top: -3px;
|
|
314
|
+
color: rgb(255, 43, 43);
|
|
315
|
+
}
|
|
316
|
+
.stExpander summary span:first-child span:first-child {
|
|
317
|
+
width: 1.6rem;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/* Add border between title and content */
|
|
321
|
+
.stExpander [data-testid="stExpanderDetails"] {
|
|
322
|
+
border-top: 1px solid rgba(30, 37, 47, 0.2);
|
|
323
|
+
padding-top: 0.5rem;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/* Fix title font size */
|
|
327
|
+
.stExpander summary p {
|
|
328
|
+
font-size: 1rem;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/* Gray out content */
|
|
332
|
+
.stExpander [data-testid="stExpanderDetails"] {
|
|
333
|
+
color: rgba(30, 37, 47, 0.5);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/* Fix progress bar font size */
|
|
337
|
+
.stExpander .stProgress p {
|
|
338
|
+
line-height: 1.6;
|
|
339
|
+
font-size: 1rem;
|
|
340
|
+
color: rgba(30, 37, 47, 0.5);
|
|
341
|
+
}
|
|
342
|
+
</style>
|
|
343
|
+
"""
|
kumoai/utils/sql.py
ADDED
{kumoai-2.13.0.dev202512040649.dist-info → kumoai-2.14.0.dev202512211732.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.dev202512211732
|
|
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,13 +1,13 @@
|
|
|
1
|
-
kumoai/__init__.py,sha256=
|
|
1
|
+
kumoai/__init__.py,sha256=aDhb7KGetDnOz54u1Fd45zfM2N8oAha6XT2CvJqOvgc,11146
|
|
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=r_ZJN4_1Q2z42px3GUoxeFu6s1G0ZVF0s5q_k2WJWS8,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=Etr0FROvpwYRpjsHqdfGr7kmcROvj273xJnJxK1B2ew,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
|
|
@@ -20,7 +20,7 @@ kumoai/client/endpoints.py,sha256=DpEKEQ1yvL15iHZadXZKO94t-qXrYLaeV1sknX4IuPg,55
|
|
|
20
20
|
kumoai/client/graph.py,sha256=6MFyPYxDPfGTWeAI_84RUgWx9rVvqbLnR0Ourtgj5rg,3951
|
|
21
21
|
kumoai/client/jobs.py,sha256=Y8wKiTk1I5ywc-2cxR72LaBjfhPTCVOezSCTeDpTs8Q,17521
|
|
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
|
|
@@ -53,46 +53,53 @@ kumoai/connector/source_table.py,sha256=fnqwIKY6qYo4G0EsRzchb6FgZ-dQyU6aRaD9UAxs
|
|
|
53
53
|
kumoai/connector/utils.py,sha256=5K9BMdWiIP3hhdkUc6Xt1e0xv5YyziXtZ4PnBqq0Ehw,66490
|
|
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/local_pquery_driver.py,sha256=Yd_yHIrvuDj16IC1pvsqiQvZS41vvOOCRMiuDGtN6Fk,26851
|
|
62
|
-
kumoai/experimental/rfm/rfm.py,sha256=vOnL8ecHTo1TX2B8_T8xaWGou8qYYz8DyVENu1H93mM,48834
|
|
63
|
-
kumoai/experimental/rfm/sagemaker.py,sha256=sEJSyfEFBA3-7wKinBEzSooKHEn0BgPjrgRnPhYo79g,5120
|
|
56
|
+
kumoai/experimental/rfm/__init__.py,sha256=Hws948dE_YfBSR2GEEHiZMcqctahIqH7CrlRRhdgIVU,7332
|
|
57
|
+
kumoai/experimental/rfm/authenticate.py,sha256=odKaqOAEkdC_wB340cs_ozjSvQLTce45WLiJSEzQaL8,19283
|
|
58
|
+
kumoai/experimental/rfm/graph.py,sha256=hJuZrNF5xC03REY06W-985fuXzI1Kll8hpbtgUt4UCE,47499
|
|
59
|
+
kumoai/experimental/rfm/rfm.py,sha256=OWFKebezAkGpEzZCf4DgyepCVbpzpZxhiUYZ0V9g60o,51447
|
|
60
|
+
kumoai/experimental/rfm/sagemaker.py,sha256=7Yk4um0gBBn7u-Bz8JRv53z0__FcD0uESoiImJhxsBw,5101
|
|
64
61
|
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/
|
|
62
|
+
kumoai/experimental/rfm/backend/local/__init__.py,sha256=8JbLaai0yhtldFcDkddphIJKMiKc0XnodvYBWkrGPXI,1056
|
|
63
|
+
kumoai/experimental/rfm/backend/local/graph_store.py,sha256=Nx9cDZG_Fi1fMUPi1R9xZ3k0vAOky8UutRiQdyAo-9w,12160
|
|
64
|
+
kumoai/experimental/rfm/backend/local/sampler.py,sha256=p59f6pU4g2GpyXh8EP9eWHDsL17Ck3xX_0bZ-R68PHI,11151
|
|
65
|
+
kumoai/experimental/rfm/backend/local/table.py,sha256=vEuvtett3oaO-AhlrJMMhqsA87IgQRfqnAI-vesD5D0,3933
|
|
66
|
+
kumoai/experimental/rfm/backend/snow/__init__.py,sha256=lsF0sJXZ0Pc3NvBTBXJHudp-iZJXdidrhyqFQKEU5_Q,1030
|
|
67
|
+
kumoai/experimental/rfm/backend/snow/sampler.py,sha256=v3dGIK4RKxNUULlmwa7UKwa8H8ap4dh4lzHWHzTVsDk,10262
|
|
68
|
+
kumoai/experimental/rfm/backend/snow/table.py,sha256=9BZXCiqySU2Cq_dNdv1wsc09MfDWr_uOuKYgXBM_1G0,6451
|
|
69
|
+
kumoai/experimental/rfm/backend/sqlite/__init__.py,sha256=wkSr2D_E5VCH4RGW8FCN2iJp-6wb_RTCMO8R3p5lkiw,934
|
|
70
|
+
kumoai/experimental/rfm/backend/sqlite/sampler.py,sha256=fGU6r0X0sAZ-OFkZOyK94kKuW4KduRJZX8KIE8viQRU,14591
|
|
71
|
+
kumoai/experimental/rfm/backend/sqlite/table.py,sha256=hrxaNVX9KEVa27htdvDseLVcch8RboEiLkwthFj9OXk,6137
|
|
72
|
+
kumoai/experimental/rfm/base/__init__.py,sha256=YE9E5x5DUT-RQxpanlNl5WZiSeYaxJbzc_uRVMV39UY,918
|
|
73
|
+
kumoai/experimental/rfm/base/column.py,sha256=5t4UBANg-Se3BXL4uiXbAfI-C9DQV_iAiM8sglUjFDA,2356
|
|
74
|
+
kumoai/experimental/rfm/base/column_expression.py,sha256=CBD5LXBdVDYjSiUM42FXCObKNEF8V4u9upVOpU5VTAk,1311
|
|
75
|
+
kumoai/experimental/rfm/base/sampler.py,sha256=Pi_UcdCxpoIXIYDDGTn0hYYQZbMbvC75dwEjPz_wMic,32222
|
|
76
|
+
kumoai/experimental/rfm/base/source.py,sha256=-I_yBCGWuCpD4j2I7hzfl3Cj8A25rXAGCpih5_0ShwY,313
|
|
77
|
+
kumoai/experimental/rfm/base/sql_sampler.py,sha256=4soPQ50g4jJhMb-EZyOsxrIXdPOx4-vppJalAd8l4fg,2682
|
|
78
|
+
kumoai/experimental/rfm/base/sql_table.py,sha256=DT9D0pHJc4oQERNL3hVdzzjd1vR_faEnLc_OSG8d-Xg,8480
|
|
79
|
+
kumoai/experimental/rfm/base/table.py,sha256=FTnv6AOMRTsZToQNcl7ACAL__aR6mCh9BurAOe6sEx8,21021
|
|
80
|
+
kumoai/experimental/rfm/infer/__init__.py,sha256=Uf4Od7B2G80U61mkkxsnxHPGu1Hh2RqOazTkOYtNLvA,538
|
|
76
81
|
kumoai/experimental/rfm/infer/categorical.py,sha256=bqmfrE5ZCBTcb35lA4SyAkCu3MgttAn29VBJYMBNhVg,893
|
|
77
|
-
kumoai/experimental/rfm/infer/dtype.py,sha256=
|
|
82
|
+
kumoai/experimental/rfm/infer/dtype.py,sha256=enZ-b8NmSlY687P59y7Kelq9vZJjq3Q-h7EyrPNfRRc,2714
|
|
78
83
|
kumoai/experimental/rfm/infer/id.py,sha256=xaJBETLZa8ttzZCsDwFSwfyCi3VYsLc_kDWT_t_6Ih4,954
|
|
79
84
|
kumoai/experimental/rfm/infer/multicategorical.py,sha256=D-1KwYRkOSkBrOJr4Xa3eTCoAF9O9hPGa7Vg67V5_HU,1150
|
|
80
|
-
kumoai/experimental/rfm/infer/pkey.py,sha256=
|
|
81
|
-
kumoai/experimental/rfm/infer/
|
|
85
|
+
kumoai/experimental/rfm/infer/pkey.py,sha256=GCAUN8Hz5-leVv2-H8soP3k-DsXJ1O_uQU25-CsSWN0,4540
|
|
86
|
+
kumoai/experimental/rfm/infer/stype.py,sha256=lOgiGJ_rsaeiFWyVUw0IMwn_7hGOqL8mvy2rGzXfi3Q,929
|
|
87
|
+
kumoai/experimental/rfm/infer/time_col.py,sha256=-OJbjHxD05UuSF2ePBkywzm-h2Qd9kC4BEFaHuglUbs,1850
|
|
82
88
|
kumoai/experimental/rfm/infer/timestamp.py,sha256=L2VxjtYTSyUBYAo4M-L08xSQlPpqnHMAVF5_vxjh3Y0,1135
|
|
83
89
|
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=
|
|
90
|
+
kumoai/experimental/rfm/pquery/executor.py,sha256=mz5mqhHbgZM0f5oNFLyThWGM4UePx_kd1O4zyJ_8ToQ,2830
|
|
91
|
+
kumoai/experimental/rfm/pquery/pandas_executor.py,sha256=awZSp41i0qTPzMowWJ1-FY4rbpTH7hxMeV91drEPfUQ,18984
|
|
86
92
|
kumoai/graph/__init__.py,sha256=QGk3OMwRzQJSGESdcc7hcQH6UDmNVJYTdqnRren4c7Q,240
|
|
87
93
|
kumoai/graph/column.py,sha256=cQhioibTbIKIBZ-bf8-Bt4F4Iblhidps-CYWrkxRPnE,4295
|
|
88
94
|
kumoai/graph/graph.py,sha256=Pq-dxi4MwoDtrrwm3xeyUB9Hl7ryNfHq4rMHuvyNB3c,39239
|
|
89
95
|
kumoai/graph/table.py,sha256=BB-4ezyd7hrrj6QZwRBa80ySH0trwYb4fmhRn3xoK-k,34726
|
|
90
96
|
kumoai/pquery/__init__.py,sha256=FF6QUTG_xrz2ic1I8NcIa8O993Ae98eZ9gkvQ4rapgo,558
|
|
91
97
|
kumoai/pquery/prediction_table.py,sha256=hWG4L_ze4PLgUoxCXNKk8_nkYxVXELQs8_X8KGOE9yk,11063
|
|
92
|
-
kumoai/pquery/predictive_query.py,sha256=
|
|
98
|
+
kumoai/pquery/predictive_query.py,sha256=I5Ntc7YO1qEGxKrLuhAzZO3SySr8Wnjhde8eDbbB7zk,25542
|
|
93
99
|
kumoai/pquery/training_table.py,sha256=L1QjaVlY4SAPD8OUmTaH6YjZzBbPOnS9mnAT69znWv0,16233
|
|
94
100
|
kumoai/testing/__init__.py,sha256=XBQ_Sa3WnOYlpXZ3gUn8w6nVfZt-nfPhytfIBeiPt4w,178
|
|
95
101
|
kumoai/testing/decorators.py,sha256=p79ZCQqPY_MHWy0_l7-xQ6wUIqFTn4AbrGWTHLvpbQY,1664
|
|
102
|
+
kumoai/testing/snow.py,sha256=i0m8y7ciqUnQeP1Xe_-bOxVh_xyAuuyz_rTEHJFkYY0,1537
|
|
96
103
|
kumoai/trainer/__init__.py,sha256=uCFXy9bw_byn_wYd3M-BTZCHTVvv4XXr8qRlh-QOvag,981
|
|
97
104
|
kumoai/trainer/baseline_trainer.py,sha256=oXweh8j1sar6KhQfr3A7gmQxcDq7SG0Bx3jIenbtyC4,4117
|
|
98
105
|
kumoai/trainer/config.py,sha256=7_Jv1w1mqaokCQwQdJkqCSgVpmh8GqE3fL1Ky_vvttI,100
|
|
@@ -100,12 +107,13 @@ kumoai/trainer/job.py,sha256=IBP2SeIk21XpRK1Um1NIs2dEKid319cHu6UkCjKO6jc,46130
|
|
|
100
107
|
kumoai/trainer/online_serving.py,sha256=T1jicl-qXiiWGQWUCwlfQsyxWUODybj_975gx9yglH4,9824
|
|
101
108
|
kumoai/trainer/trainer.py,sha256=AKumc3X2Vm3qxZSA85Dv_fSLC4JQ3rM7P0ixOWbEex0,20608
|
|
102
109
|
kumoai/trainer/util.py,sha256=LCXkY5MNl6NbEVd2OZ0aVqF6fvr3KiCFh6pH0igAi_g,4165
|
|
103
|
-
kumoai/utils/__init__.py,sha256=
|
|
110
|
+
kumoai/utils/__init__.py,sha256=lazi9gAl5YBg1Nk121zSDg-BIKTVETjFTZwTFUlGngo,267
|
|
104
111
|
kumoai/utils/datasets.py,sha256=UyAII-oAn7x3ombuvpbSQ41aVF9SYKBjQthTD-vcT2A,3011
|
|
105
112
|
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.
|
|
113
|
+
kumoai/utils/progress_logger.py,sha256=OR_4Yh__8ZPhBtSTMESFuFQbyennfWZuD6zjiaqzaLw,9608
|
|
114
|
+
kumoai/utils/sql.py,sha256=a9HT5IIUaXfbQaLbZ2HuuYHLBDev_cer1Tzif7xE-R4,121
|
|
115
|
+
kumoai-2.14.0.dev202512211732.dist-info/licenses/LICENSE,sha256=ZUilBDp--4vbhsEr6f_Upw9rnIx09zQ3K9fXQ0rfd6w,1111
|
|
116
|
+
kumoai-2.14.0.dev202512211732.dist-info/METADATA,sha256=iepUeGFV0MlqovuT7wkyO0LWyhcCH30pDoKoO-VVM4s,2628
|
|
117
|
+
kumoai-2.14.0.dev202512211732.dist-info/WHEEL,sha256=qV0EIPljj1XC_vuSatRWjn02nZIz3N1t8jsZz7HBr2U,101
|
|
118
|
+
kumoai-2.14.0.dev202512211732.dist-info/top_level.txt,sha256=YjU6UcmomoDx30vEXLsOU784ED7VztQOsFApk1SFwvs,7
|
|
119
|
+
kumoai-2.14.0.dev202512211732.dist-info/RECORD,,
|