kumoai 2.13.0.dev202511211730__py3-none-any.whl → 2.15.0.dev202601131732__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.
Files changed (59) hide show
  1. kumoai/__init__.py +35 -26
  2. kumoai/_version.py +1 -1
  3. kumoai/client/client.py +6 -0
  4. kumoai/client/jobs.py +26 -0
  5. kumoai/client/pquery.py +6 -2
  6. kumoai/connector/utils.py +44 -9
  7. kumoai/experimental/rfm/__init__.py +70 -68
  8. kumoai/experimental/rfm/authenticate.py +3 -4
  9. kumoai/experimental/rfm/backend/__init__.py +0 -0
  10. kumoai/experimental/rfm/backend/local/__init__.py +42 -0
  11. kumoai/experimental/rfm/{local_graph_store.py → backend/local/graph_store.py} +65 -127
  12. kumoai/experimental/rfm/backend/local/sampler.py +312 -0
  13. kumoai/experimental/rfm/backend/local/table.py +113 -0
  14. kumoai/experimental/rfm/backend/snow/__init__.py +37 -0
  15. kumoai/experimental/rfm/backend/snow/sampler.py +407 -0
  16. kumoai/experimental/rfm/backend/snow/table.py +245 -0
  17. kumoai/experimental/rfm/backend/sqlite/__init__.py +32 -0
  18. kumoai/experimental/rfm/backend/sqlite/sampler.py +454 -0
  19. kumoai/experimental/rfm/backend/sqlite/table.py +184 -0
  20. kumoai/experimental/rfm/base/__init__.py +30 -0
  21. kumoai/experimental/rfm/base/column.py +152 -0
  22. kumoai/experimental/rfm/base/expression.py +44 -0
  23. kumoai/experimental/rfm/base/mapper.py +69 -0
  24. kumoai/experimental/rfm/base/sampler.py +783 -0
  25. kumoai/experimental/rfm/base/source.py +19 -0
  26. kumoai/experimental/rfm/base/sql_sampler.py +385 -0
  27. kumoai/experimental/rfm/base/table.py +722 -0
  28. kumoai/experimental/rfm/base/utils.py +36 -0
  29. kumoai/experimental/rfm/{local_graph.py → graph.py} +581 -154
  30. kumoai/experimental/rfm/infer/__init__.py +8 -0
  31. kumoai/experimental/rfm/infer/dtype.py +84 -0
  32. kumoai/experimental/rfm/infer/multicategorical.py +1 -1
  33. kumoai/experimental/rfm/infer/pkey.py +128 -0
  34. kumoai/experimental/rfm/infer/stype.py +35 -0
  35. kumoai/experimental/rfm/infer/time_col.py +63 -0
  36. kumoai/experimental/rfm/pquery/executor.py +27 -27
  37. kumoai/experimental/rfm/pquery/pandas_executor.py +30 -32
  38. kumoai/experimental/rfm/relbench.py +76 -0
  39. kumoai/experimental/rfm/rfm.py +783 -481
  40. kumoai/experimental/rfm/sagemaker.py +15 -7
  41. kumoai/experimental/rfm/task_table.py +292 -0
  42. kumoai/pquery/predictive_query.py +10 -6
  43. kumoai/pquery/training_table.py +16 -2
  44. kumoai/testing/decorators.py +1 -1
  45. kumoai/testing/snow.py +50 -0
  46. kumoai/trainer/distilled_trainer.py +175 -0
  47. kumoai/utils/__init__.py +3 -2
  48. kumoai/utils/display.py +87 -0
  49. kumoai/utils/progress_logger.py +192 -13
  50. kumoai/utils/sql.py +3 -0
  51. {kumoai-2.13.0.dev202511211730.dist-info → kumoai-2.15.0.dev202601131732.dist-info}/METADATA +10 -8
  52. {kumoai-2.13.0.dev202511211730.dist-info → kumoai-2.15.0.dev202601131732.dist-info}/RECORD +55 -30
  53. kumoai/experimental/rfm/local_graph_sampler.py +0 -182
  54. kumoai/experimental/rfm/local_pquery_driver.py +0 -689
  55. kumoai/experimental/rfm/local_table.py +0 -545
  56. kumoai/experimental/rfm/utils.py +0 -344
  57. {kumoai-2.13.0.dev202511211730.dist-info → kumoai-2.15.0.dev202601131732.dist-info}/WHEEL +0 -0
  58. {kumoai-2.13.0.dev202511211730.dist-info → kumoai-2.15.0.dev202601131732.dist-info}/licenses/LICENSE +0 -0
  59. {kumoai-2.13.0.dev202511211730.dist-info → kumoai-2.15.0.dev202601131732.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,36 @@
1
+ import warnings
2
+
3
+ import pandas as pd
4
+ import pyarrow as pa
5
+
6
+
7
+ def is_datetime(ser: pd.Series) -> bool:
8
+ r"""Check whether a :class:`pandas.Series` holds datetime values."""
9
+ if isinstance(ser.dtype, pd.ArrowDtype):
10
+ dtype = ser.dtype.pyarrow_dtype
11
+ return (pa.types.is_timestamp(dtype) or pa.types.is_date(dtype)
12
+ or pa.types.is_time(dtype))
13
+
14
+ return pd.api.types.is_datetime64_any_dtype(ser)
15
+
16
+
17
+ def to_datetime(ser: pd.Series) -> pd.Series:
18
+ """Converts a :class:`pandas.Series` to ``datetime64[ns]`` format."""
19
+ if isinstance(ser.dtype, pd.ArrowDtype):
20
+ ser = pd.Series(ser.to_numpy(), index=ser.index, name=ser.name)
21
+
22
+ if not pd.api.types.is_datetime64_any_dtype(ser):
23
+ with warnings.catch_warnings():
24
+ warnings.filterwarnings(
25
+ 'ignore',
26
+ message='Could not infer format',
27
+ )
28
+ ser = pd.to_datetime(ser, errors='coerce')
29
+
30
+ if isinstance(ser.dtype, pd.DatetimeTZDtype):
31
+ ser = ser.dt.tz_localize(None)
32
+
33
+ if ser.dtype != 'datetime64[ns]':
34
+ ser = ser.astype('datetime64[ns]')
35
+
36
+ return ser