churnkit 0.75.1a3__py3-none-any.whl → 0.76.0a1__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 (41) hide show
  1. {churnkit-0.75.1a3.dist-info → churnkit-0.76.0a1.dist-info}/METADATA +5 -2
  2. {churnkit-0.75.1a3.dist-info → churnkit-0.76.0a1.dist-info}/RECORD +41 -40
  3. customer_retention/__init__.py +11 -1
  4. customer_retention/core/compat/__init__.py +3 -0
  5. customer_retention/core/config/__init__.py +43 -8
  6. customer_retention/core/config/experiments.py +20 -0
  7. customer_retention/generators/spec_generator/mlflow_pipeline_generator.py +222 -149
  8. customer_retention/integrations/adapters/factory.py +8 -5
  9. customer_retention/integrations/adapters/feature_store/base.py +1 -0
  10. customer_retention/integrations/adapters/feature_store/databricks.py +58 -10
  11. customer_retention/integrations/adapters/mlflow/base.py +8 -0
  12. customer_retention/integrations/adapters/mlflow/databricks.py +15 -2
  13. customer_retention/integrations/adapters/mlflow/local.py +7 -0
  14. customer_retention/integrations/databricks_init.py +141 -0
  15. customer_retention/stages/profiling/temporal_feature_analyzer.py +3 -3
  16. customer_retention/stages/profiling/temporal_feature_engineer.py +2 -2
  17. customer_retention/stages/profiling/temporal_pattern_analyzer.py +4 -3
  18. customer_retention/stages/profiling/time_series_profiler.py +5 -4
  19. customer_retention/stages/profiling/time_window_aggregator.py +3 -2
  20. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/00_start_here.ipynb +0 -0
  21. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/01_data_discovery.ipynb +0 -0
  22. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/01a_a_temporal_text_deep_dive.ipynb +0 -0
  23. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/01a_temporal_deep_dive.ipynb +0 -0
  24. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/01b_temporal_quality.ipynb +0 -0
  25. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/01c_temporal_patterns.ipynb +0 -0
  26. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/01d_event_aggregation.ipynb +0 -0
  27. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/02_column_deep_dive.ipynb +0 -0
  28. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/02a_text_columns_deep_dive.ipynb +0 -0
  29. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/03_quality_assessment.ipynb +0 -0
  30. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/04_relationship_analysis.ipynb +0 -0
  31. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/05_multi_dataset.ipynb +0 -0
  32. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/06_feature_opportunities.ipynb +0 -0
  33. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/07_modeling_readiness.ipynb +0 -0
  34. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/08_baseline_experiments.ipynb +0 -0
  35. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/09_business_alignment.ipynb +0 -0
  36. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/10_spec_generation.ipynb +0 -0
  37. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/11_scoring_validation.ipynb +0 -0
  38. {churnkit-0.75.1a3.data → churnkit-0.76.0a1.data}/data/share/churnkit/exploration_notebooks/12_view_documentation.ipynb +0 -0
  39. {churnkit-0.75.1a3.dist-info → churnkit-0.76.0a1.dist-info}/WHEEL +0 -0
  40. {churnkit-0.75.1a3.dist-info → churnkit-0.76.0a1.dist-info}/entry_points.txt +0 -0
  41. {churnkit-0.75.1a3.dist-info → churnkit-0.76.0a1.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: churnkit
3
- Version: 0.75.1a3
3
+ Version: 0.76.0a1
4
4
  Summary: Structured ML framework for customer churn prediction -- from exploration notebooks to production pipelines, locally or on Databricks.
5
5
  Project-URL: Homepage, https://github.com/aladjov/CR
6
6
  Project-URL: Documentation, https://github.com/aladjov/CR/wiki
@@ -164,12 +164,14 @@ It serves two audiences:
164
164
 
165
165
  ## Quick Start
166
166
 
167
- ### 1. Install
167
+ ### 1. Install (local)
168
168
 
169
169
  ```bash
170
170
  pip install "churnkit[ml]"
171
171
  ```
172
172
 
173
+ For **Databricks**, see the [Databricks Installation](https://github.com/aladjov/CR/wiki/Databricks-Installation) guide.
174
+
173
175
  ### 2. Bootstrap notebooks into your project
174
176
 
175
177
  ```bash
@@ -200,6 +202,7 @@ Detailed documentation lives in the [Wiki](https://github.com/aladjov/CR/wiki):
200
202
  | Topic | Wiki Page |
201
203
  |-------|-----------|
202
204
  | Installation options & environment setup | [Getting Started](https://github.com/aladjov/CR/wiki/Getting-Started) |
205
+ | Databricks install & `databricks_init()` setup | [Databricks Installation](https://github.com/aladjov/CR/wiki/Databricks-Installation) |
203
206
  | Medallion architecture & system design | [Architecture](https://github.com/aladjov/CR/wiki/Architecture) |
204
207
  | Notebook workflow & iteration tracking | [Exploration Loop](https://github.com/aladjov/CR/wiki/Exploration-Loop) |
205
208
  | Leakage-safe temporal data preparation | [Temporal Framework](https://github.com/aladjov/CR/wiki/Temporal-Framework) |
@@ -1,4 +1,4 @@
1
- customer_retention/__init__.py,sha256=9vKI748I497pRMAJl1x4_Th5hfFQRDfIHny7dk6gyQU,1114
1
+ customer_retention/__init__.py,sha256=khjH4K4e69Nc91vJZGDCbV4-ZXtvOjTTVFPVC4-HG5E,1406
2
2
  customer_retention/cli.py,sha256=Wdl540cZgu_9mV-hWmTV9jD3S8QTDR8Ik-5hQXYCvmg,2466
3
3
  customer_retention/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  customer_retention/analysis/jupyter_save_hook.py,sha256=iiNFIL83yOPX8BGUjCE6Pt5Kc8X-2adtE1_NZTMUaZQ,947
@@ -63,7 +63,7 @@ customer_retention/analysis/visualization/number_formatter.py,sha256=I1gUB0tEmfT
63
63
  customer_retention/artifacts/__init__.py,sha256=zTROqiS6zlkkuCZgR6YOB0Cvlsyr0TpRBYsOEorpDYw,118
64
64
  customer_retention/artifacts/fit_artifact_registry.py,sha256=aNfZC0Dgbc6jEwRR5keDEop9jo_tuL82hKO3ouCh5eY,5750
65
65
  customer_retention/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
- customer_retention/core/compat/__init__.py,sha256=dwamNiYIDzHEHpcmaphvR7wAwHslIqz6FoYjmQiR8Gg,7245
66
+ customer_retention/core/compat/__init__.py,sha256=mriOzKG3GTe_fNvnES39BuEzgBcYO2Qa0RcqgcTVpec,7283
67
67
  customer_retention/core/compat/detection.py,sha256=6W_1LefgQriBtRY2PnvSCUGDt0X63oIUEEVjFqG3qH0,2492
68
68
  customer_retention/core/compat/ops.py,sha256=L-tAh4A3UEfRvePS6rAbhqb0QtZ_bN-TV7ZWpTkMFLA,1809
69
69
  customer_retention/core/compat/pandas_backend.py,sha256=14JPoYTW6X-a3UwFaemhmPr8zi_GTdZnyitmqPQODR0,1839
@@ -82,9 +82,9 @@ customer_retention/core/components/components/profiler.py,sha256=Yz-vsTSS9UaLgXL
82
82
  customer_retention/core/components/components/trainer.py,sha256=C_6N7n7qpz3Ks62Ke5BjF_pwbv21DXfnsze1LFSUAPo,1579
83
83
  customer_retention/core/components/components/transformer.py,sha256=saEO6cRzKitUsmw-9fIweOKjydH64SOVvUKfcpsR5yk,1401
84
84
  customer_retention/core/components/components/validator.py,sha256=5IbUqPYhsvZBTRx0X3MKV2dvZrgTcI19MM9c5_9t2CU,1405
85
- customer_retention/core/config/__init__.py,sha256=H2V-_cQxqtqNV_bIjcV14FzW4lb16uaOgYWaHwU0-RA,1199
85
+ customer_retention/core/config/__init__.py,sha256=VXNmwSFG3wY6Budh82WRj26X07WCQKgl-M9sVwx8eds,1587
86
86
  customer_retention/core/config/column_config.py,sha256=rmMJFV4wK66q-DDQAJXe0EuXdrWd_6bg8s81NQQ54_A,3051
87
- customer_retention/core/config/experiments.py,sha256=LzMRQkaxhxCtNuhIfxpo6RSHSSME9Hqr6Y6Kz_F-BRc,2112
87
+ customer_retention/core/config/experiments.py,sha256=5te4MT6kRiMYB3IglIH4Wkqzl7rdEKOzZY_0t7UiDGg,2685
88
88
  customer_retention/core/config/pipeline_config.py,sha256=jriAcP-_UAlVTT_vVlWUPF97ieIguqlE5hrl9Ny0UiI,3675
89
89
  customer_retention/core/config/source_config.py,sha256=NnZUytq4NVvRVmp1ZtoFO_SiaIvSoJwkhw5WXy4Wi_c,2534
90
90
  customer_retention/core/utils/__init__.py,sha256=9b8SwZGiLP-glYwzcp-1aWCeTGIploAPokwITbUCneA,971
@@ -128,22 +128,23 @@ customer_retention/generators/pipeline_generator/renderer.py,sha256=bvGTU_AkRgFS
128
128
  customer_retention/generators/spec_generator/__init__.py,sha256=vojlxKgLGnLHH9DNolB8mgL0_FsIfSSLmuHPXyr8bYY,782
129
129
  customer_retention/generators/spec_generator/databricks_generator.py,sha256=o_qAik7mXuwzC9c7xUTkno5GHUmfHz5F2dIWqTcaDzw,15416
130
130
  customer_retention/generators/spec_generator/generic_generator.py,sha256=I_glnOOsXDbL_v_ffxkeKwSYm5MCEB5qF9WAAZ8Woho,13962
131
- customer_retention/generators/spec_generator/mlflow_pipeline_generator.py,sha256=8-iUBgGThRJM5EmfJUwEoy8hJGZb7dZfuO6eh_QRH7A,27614
131
+ customer_retention/generators/spec_generator/mlflow_pipeline_generator.py,sha256=LME87sjzP_MjOMA3NTxqRfOhCroUJAb40BAnSH4-I74,29866
132
132
  customer_retention/generators/spec_generator/pipeline_spec.py,sha256=c8v1SWgTdeGmNs96l1hOS0qx1B1ua0iwPhw1I5w9OIo,10705
133
133
  customer_retention/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
134
+ customer_retention/integrations/databricks_init.py,sha256=_JfwTBWJ6czydLR09dMQLKRXpj6PCAPWoFTgUPkx8uE,4660
134
135
  customer_retention/integrations/adapters/__init__.py,sha256=Fgdp0ESROTUHnOb2RN9Ubo0A4BdfoenOGuUz61lHz8g,583
135
136
  customer_retention/integrations/adapters/base.py,sha256=z6dVAowDKGogKsYGR7VMcLkS6VhcB9h4zgN1tilNYRg,254
136
- customer_retention/integrations/adapters/factory.py,sha256=guVxKe9NurLQmTetLPH65PBiVhbSpca7VN42Wq0IzFY,1108
137
+ customer_retention/integrations/adapters/factory.py,sha256=CMsqOeDozADbWnk8fzktZvAyL1FEmUjDMvfDCpLDVaU,1202
137
138
  customer_retention/integrations/adapters/feature_store/__init__.py,sha256=KQLLGfgwDOOvC-mhhCpVPIYjh7ruHF07V-cWUWvPfrU,300
138
- customer_retention/integrations/adapters/feature_store/base.py,sha256=lChCwvnW3TCWA0AZZULQknmWLhTYpCuVLDPt5QLEcxs,1867
139
- customer_retention/integrations/adapters/feature_store/databricks.py,sha256=bIjId_YsRSa3INL_P0obWvElEyEx5BLY30R5RG6Deoo,4589
139
+ customer_retention/integrations/adapters/feature_store/base.py,sha256=gSvlKOO86XFNxkcPvIVinFKR7v0Vyrsdhq8nmMH6m3o,1911
140
+ customer_retention/integrations/adapters/feature_store/databricks.py,sha256=LFWrYeZhhnelpmXqmjzQHXPs3jbRn1mpF3mktjlsoRU,5783
140
141
  customer_retention/integrations/adapters/feature_store/feast_adapter.py,sha256=rEQhLgwEURNsiJF2vsPNlenX5lwghW6ohVrESxoYcWk,4359
141
142
  customer_retention/integrations/adapters/feature_store/local.py,sha256=w6H587lHs2DKXpYfLBjIMGR20l_qRURa8Ykd4nanH7I,2995
142
143
  customer_retention/integrations/adapters/mlflow/__init__.py,sha256=G6CO9QNzz8XkPjA--_pGda4tXchUAqpNau7YjCD5Qb0,239
143
- customer_retention/integrations/adapters/mlflow/base.py,sha256=jcAzkA4vGkXtiVTYC6N5FsyvBkr1rJzbNfPXzMiYSM4,812
144
- customer_retention/integrations/adapters/mlflow/databricks.py,sha256=i2XIOYjslyqdQWPTSU8lCVbxzqdbE1rJTVajcZoWJtQ,2014
144
+ customer_retention/integrations/adapters/mlflow/base.py,sha256=WbonjcL5gM3X5dR4DTuGf0zkPN8xSYn-VWrzLw5DLyU,1026
145
+ customer_retention/integrations/adapters/mlflow/databricks.py,sha256=64vhoOD4dx3oVZdTr7DsU6n1BakSAFGCQgVM3AJ8ENU,2644
145
146
  customer_retention/integrations/adapters/mlflow/experiment_tracker.py,sha256=flBO9cXBr4tvw0qobfqGxSKThuL0oQO1L2Qla5oVBdE,7219
146
- customer_retention/integrations/adapters/mlflow/local.py,sha256=svwtJvqtAeqXUV2boIZ-S4qDfzNvu7L0czfIkpNpEiY,1864
147
+ customer_retention/integrations/adapters/mlflow/local.py,sha256=uSOg9lVmyPZOJP9xigrlSi4_sswIEHTESep5YGl25Dc,2193
147
148
  customer_retention/integrations/adapters/storage/__init__.py,sha256=2WtvUZWX-oyf6dasvaMHzqPCdIQnD2M-bCU88CAznhQ,162
148
149
  customer_retention/integrations/adapters/storage/base.py,sha256=C7PRzngbLUGJXIdvjz4_b-EIkOwWLSI7TDgfBGm-sTM,903
149
150
  customer_retention/integrations/adapters/storage/databricks.py,sha256=TS0Nf6Fw506nlTHj7mqPaU8sZ3SiMxqtJVDpzcqpZYY,2891
@@ -228,16 +229,16 @@ customer_retention/stages/profiling/segment_aware_outlier.py,sha256=PS5GXnf_g3D9
228
229
  customer_retention/stages/profiling/target_level_analyzer.py,sha256=XPhdHqTdK9zzBDqy-JyrTi6NFf07wRwIGsVEOAiR_dE,10491
229
230
  customer_retention/stages/profiling/temporal_analyzer.py,sha256=PXf4pYNcszp7N8_14MKFKXDku-fw2M_NLWN7jUsHd1Q,16102
230
231
  customer_retention/stages/profiling/temporal_coverage.py,sha256=r23s1qyB7o11ab_TTLOgb4q29OPA_crRshFpMLt4t_w,18561
231
- customer_retention/stages/profiling/temporal_feature_analyzer.py,sha256=Gl8GLxPlDIzh-shUYrePYnjzYQUwsBB-sB4Voqf69O8,32364
232
- customer_retention/stages/profiling/temporal_feature_engineer.py,sha256=kTp5avXNsGGCYF_TBUg4KpbzfL79zz50zQ7ywVOxPkg,27141
233
- customer_retention/stages/profiling/temporal_pattern_analyzer.py,sha256=-DBNhBfyEGhl0-rIgbpEGDJikyINDG55FP15JURKm_A,26814
232
+ customer_retention/stages/profiling/temporal_feature_analyzer.py,sha256=LAsIwIO0oM9UzaxsP95OEeOvT-tbLMM6pTfQv_IRe-8,32389
233
+ customer_retention/stages/profiling/temporal_feature_engineer.py,sha256=lmzbixJYDg3rXddrfeyke9_GVKWmiTOONIxhiLWTq_k,27159
234
+ customer_retention/stages/profiling/temporal_pattern_analyzer.py,sha256=G7iX9zyBV-F2uIHZFYY79_6CUmRIww9gwximCk1Ax0M,26850
234
235
  customer_retention/stages/profiling/temporal_quality_checks.py,sha256=SosW3omX2c025UIdlXpLEBJCsAsIvoGXMbxw6tzBocA,13750
235
236
  customer_retention/stages/profiling/temporal_target_analyzer.py,sha256=eeZlUhTWZfCftwgm_dySi1feRLuoU9SRLL_r_4jgN5g,8785
236
237
  customer_retention/stages/profiling/text_embedder.py,sha256=ck7WIq7pGC7xgEzMQr7fYdHcJegYR6wfdh3z32WUiK8,3038
237
238
  customer_retention/stages/profiling/text_processor.py,sha256=spdfwVSEU07aYbl2bIsg_INOBt3Js-IA15WVkjf1ask,4474
238
239
  customer_retention/stages/profiling/text_reducer.py,sha256=ilSuUAu0dHUyRGTNg8TzoCEd-EAyXKvoAm4uGqwlSQs,2409
239
- customer_retention/stages/profiling/time_series_profiler.py,sha256=RRpaHrd6CXzat6HTdowIFxoZQyzqC3LlO9y-q_tsv2g,10315
240
- customer_retention/stages/profiling/time_window_aggregator.py,sha256=SD53z3Itz2F3ptfYHRmlW4d7IbrXvJoJbsPw0VOoUWI,15909
240
+ customer_retention/stages/profiling/time_series_profiler.py,sha256=XZ2K1v2lI4If6sp-k1jnPQVt6MOvBzorB53IYXhmvok,10358
241
+ customer_retention/stages/profiling/time_window_aggregator.py,sha256=CCfKwh92zAmKupbFcin8t3GDhCEJQ4vW-k5tcZgZsfw,15938
241
242
  customer_retention/stages/profiling/type_detector.py,sha256=VgYHWcBGepyJKNdY1FKgb9scOaosN6fDY_-WiTjfoAg,14726
242
243
  customer_retention/stages/profiling/window_recommendation.py,sha256=Apd_PDFpo49HJJzldTcwzzgJjBzEfd8mbGboBwHhzGw,13354
243
244
  customer_retention/stages/temporal/__init__.py,sha256=f86XiSUMKQgeTLyOsu89IJcafOPjdBIR9bH_hhrY8b8,6135
@@ -276,27 +277,27 @@ customer_retention/transforms/artifact_store.py,sha256=FYLpDcv2N6-dUTX5RPEIK3aCW
276
277
  customer_retention/transforms/executor.py,sha256=oML5dCidxbW_q6YUkAwWcutYP6bIFB6IdD3BvemK45A,6304
277
278
  customer_retention/transforms/fitted.py,sha256=3pNvnae-P3t3bKMeZz1Bl0xww-feapIYdoeTY6aUtI8,3278
278
279
  customer_retention/transforms/ops.py,sha256=Xg2g9UOOudq_y9Hf3oWsjpqw3dEoykQR5pDSoyW8GX0,4294
279
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/00_start_here.ipynb,sha256=zCyhftEd3v9fc0Ta6wvA6b-9LcoGzRi8bS1tMZ3iu9w,21911
280
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/01_data_discovery.ipynb,sha256=up0X3oDJ5sAo1-tbqMyZj_f1h6D542G2uAxjVmtYCOI,46430
281
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/01a_a_temporal_text_deep_dive.ipynb,sha256=uai8T3iJSqOrabBQnVi8Z0k8zZGVgs_VVQWRHyXN8QU,33690
282
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/01a_temporal_deep_dive.ipynb,sha256=fC1ASNtvI8X1lAe-Lzcw3oX2cptDC-ymPeEtKKWhg20,67326
283
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/01b_temporal_quality.ipynb,sha256=RU5hxgrTVMZs1ytChVv1t49WpTO0Oj6B_Fu8g0xS0To,23039
284
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/01c_temporal_patterns.ipynb,sha256=ZGYfztP6JhOEwPmTYdC0l7w579fKXcNEJXq-PnCLc2I,153167
285
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/01d_event_aggregation.ipynb,sha256=-FT3SoBU0fhaZxGeTo-_UQl6riCrtoJaFnUg31opk64,63244
286
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/02_column_deep_dive.ipynb,sha256=mbP2LQWsXDyTsWg0bhrCBHEfHsEer_XOXRYV9f8JxAk,60250
287
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/02a_text_columns_deep_dive.ipynb,sha256=M9YN8yAjjuC6ZaUlc-rVqVLEkWd7Rc_GNILHS9qO3PU,29704
288
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/03_quality_assessment.ipynb,sha256=H49LLmn1PHbcbAvSQfteESRGk125QwkPI5qbLk3yZgc,68595
289
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/04_relationship_analysis.ipynb,sha256=Rr-B4-xg0ILuAIgztlZkiGJdTzLuNjOqBFxO8W4o9iU,78624
290
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/05_multi_dataset.ipynb,sha256=bBxkuZyTl1yZg4kMXO87WRjgZMhj_6hwLGX6m3XC270,62664
291
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/06_feature_opportunities.ipynb,sha256=cBJF5o4z3Z-dustQ4CVklnfTcQ8saG97tlgswWK9uWE,67409
292
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/07_modeling_readiness.ipynb,sha256=IiA04fyb-l097Glp3MtR03vPjQsZlS1Icg-hjEHa_Dg,28376
293
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/08_baseline_experiments.ipynb,sha256=KmjhnDf1JdpEiIcdfQ-ZFo_at6t9JRC30B6NmmvMBmg,34226
294
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/09_business_alignment.ipynb,sha256=tMNfGM7AH50N1ONzHhGW2HZLpQwraIxVzOiVnI-10X8,17214
295
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/10_spec_generation.ipynb,sha256=KeUdfL9Mvdi6023XpnfZ6oLEDNZaWiIHUfsAWig24mE,42847
296
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/11_scoring_validation.ipynb,sha256=5fi3eHMm03ZKZgdFAXMgydtZ3qX2TtR3L9bZS2MpWPE,49937
297
- churnkit-0.75.1a3.data/data/share/churnkit/exploration_notebooks/12_view_documentation.ipynb,sha256=aQF7CG8HxckqUKOKqnmZgMkSvfVzyO2LlYPrymLYjBY,4405
298
- churnkit-0.75.1a3.dist-info/METADATA,sha256=hYbCUfYKPP5jeW_YjZRN8j4M6msQHdApmOx7-KEJDmU,12736
299
- churnkit-0.75.1a3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
300
- churnkit-0.75.1a3.dist-info/entry_points.txt,sha256=swQFVe-jjgQSBJQNO2Ulkz2F5odaE-TsnlTor3HQBjw,70
301
- churnkit-0.75.1a3.dist-info/licenses/LICENSE,sha256=Bud8Oj25tnpoIuXCWW0xcSfmGPeEZAAHrDRoKdSYtZY,11344
302
- churnkit-0.75.1a3.dist-info/RECORD,,
280
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/00_start_here.ipynb,sha256=zCyhftEd3v9fc0Ta6wvA6b-9LcoGzRi8bS1tMZ3iu9w,21911
281
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/01_data_discovery.ipynb,sha256=up0X3oDJ5sAo1-tbqMyZj_f1h6D542G2uAxjVmtYCOI,46430
282
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/01a_a_temporal_text_deep_dive.ipynb,sha256=uai8T3iJSqOrabBQnVi8Z0k8zZGVgs_VVQWRHyXN8QU,33690
283
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/01a_temporal_deep_dive.ipynb,sha256=fC1ASNtvI8X1lAe-Lzcw3oX2cptDC-ymPeEtKKWhg20,67326
284
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/01b_temporal_quality.ipynb,sha256=RU5hxgrTVMZs1ytChVv1t49WpTO0Oj6B_Fu8g0xS0To,23039
285
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/01c_temporal_patterns.ipynb,sha256=ZGYfztP6JhOEwPmTYdC0l7w579fKXcNEJXq-PnCLc2I,153167
286
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/01d_event_aggregation.ipynb,sha256=-FT3SoBU0fhaZxGeTo-_UQl6riCrtoJaFnUg31opk64,63244
287
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/02_column_deep_dive.ipynb,sha256=mbP2LQWsXDyTsWg0bhrCBHEfHsEer_XOXRYV9f8JxAk,60250
288
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/02a_text_columns_deep_dive.ipynb,sha256=M9YN8yAjjuC6ZaUlc-rVqVLEkWd7Rc_GNILHS9qO3PU,29704
289
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/03_quality_assessment.ipynb,sha256=H49LLmn1PHbcbAvSQfteESRGk125QwkPI5qbLk3yZgc,68595
290
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/04_relationship_analysis.ipynb,sha256=Rr-B4-xg0ILuAIgztlZkiGJdTzLuNjOqBFxO8W4o9iU,78624
291
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/05_multi_dataset.ipynb,sha256=bBxkuZyTl1yZg4kMXO87WRjgZMhj_6hwLGX6m3XC270,62664
292
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/06_feature_opportunities.ipynb,sha256=cBJF5o4z3Z-dustQ4CVklnfTcQ8saG97tlgswWK9uWE,67409
293
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/07_modeling_readiness.ipynb,sha256=IiA04fyb-l097Glp3MtR03vPjQsZlS1Icg-hjEHa_Dg,28376
294
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/08_baseline_experiments.ipynb,sha256=KmjhnDf1JdpEiIcdfQ-ZFo_at6t9JRC30B6NmmvMBmg,34226
295
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/09_business_alignment.ipynb,sha256=tMNfGM7AH50N1ONzHhGW2HZLpQwraIxVzOiVnI-10X8,17214
296
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/10_spec_generation.ipynb,sha256=KeUdfL9Mvdi6023XpnfZ6oLEDNZaWiIHUfsAWig24mE,42847
297
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/11_scoring_validation.ipynb,sha256=5fi3eHMm03ZKZgdFAXMgydtZ3qX2TtR3L9bZS2MpWPE,49937
298
+ churnkit-0.76.0a1.data/data/share/churnkit/exploration_notebooks/12_view_documentation.ipynb,sha256=aQF7CG8HxckqUKOKqnmZgMkSvfVzyO2LlYPrymLYjBY,4405
299
+ churnkit-0.76.0a1.dist-info/METADATA,sha256=GJWHc_bnex7Wf2T8IfDd7SjfBFE3aS-ZgMXoNi82_R0,13005
300
+ churnkit-0.76.0a1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
301
+ churnkit-0.76.0a1.dist-info/entry_points.txt,sha256=swQFVe-jjgQSBJQNO2Ulkz2F5odaE-TsnlTor3HQBjw,70
302
+ churnkit-0.76.0a1.dist-info/licenses/LICENSE,sha256=Bud8Oj25tnpoIuXCWW0xcSfmGPeEZAAHrDRoKdSYtZY,11344
303
+ churnkit-0.76.0a1.dist-info/RECORD,,
@@ -17,7 +17,7 @@ Main module categories:
17
17
  llm_context, iteration)
18
18
  """
19
19
 
20
- __version__ = "0.75.1a3"
20
+ __version__ = "0.76.0a1"
21
21
 
22
22
  # Environment utilities (always available)
23
23
  from .core.compat import (
@@ -34,4 +34,14 @@ __all__ = [
34
34
  "is_spark_available",
35
35
  "is_databricks",
36
36
  "is_notebook",
37
+ # Databricks initialization
38
+ "databricks_init",
37
39
  ]
40
+
41
+
42
+ def __getattr__(name: str):
43
+ if name == "databricks_init":
44
+ from .integrations.databricks_init import databricks_init
45
+
46
+ return databricks_init
47
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
@@ -98,6 +98,8 @@ def merge(left: Any, right: Any, how: str = "inner", on: Any = None, **kwargs: A
98
98
  return pd.merge(left, right, how=how, on=on, **kwargs)
99
99
 
100
100
 
101
+ native_pd = _pandas
102
+
101
103
  Timestamp = _pandas.Timestamp
102
104
  Timedelta = _pandas.Timedelta
103
105
  DatetimeIndex = _pandas.DatetimeIndex
@@ -213,6 +215,7 @@ compat = PandasCompat()
213
215
 
214
216
  __all__ = [
215
217
  "pd",
218
+ "native_pd",
216
219
  "DataFrame",
217
220
  "Series",
218
221
  "Timestamp",
@@ -1,17 +1,25 @@
1
1
  from .column_config import ColumnConfig, ColumnType, DatasetGranularity
2
2
  from .experiments import (
3
+ CATALOG,
3
4
  DATA_DIR,
5
+ EXPERIMENT_NAME,
4
6
  EXPERIMENTS_DIR,
5
7
  FEATURE_STORE_DIR,
6
8
  FINDINGS_DIR,
7
9
  MLRUNS_DIR,
8
10
  OUTPUT_DIR,
11
+ SCHEMA,
12
+ WORKSPACE_PATH,
13
+ get_catalog,
9
14
  get_data_dir,
15
+ get_experiment_name,
10
16
  get_experiments_dir,
11
17
  get_feature_store_dir,
12
18
  get_findings_dir,
13
19
  get_mlruns_dir,
14
20
  get_notebook_experiments_dir,
21
+ get_schema,
22
+ get_workspace_path,
15
23
  setup_experiments_structure,
16
24
  )
17
25
  from .pipeline_config import (
@@ -27,13 +35,40 @@ from .pipeline_config import (
27
35
  from .source_config import DataSourceConfig, FileFormat, Grain, SourceType
28
36
 
29
37
  __all__ = [
30
- "ColumnType", "ColumnConfig", "DatasetGranularity",
31
- "SourceType", "FileFormat", "Grain", "DataSourceConfig",
32
- "DedupStrategy", "BronzeConfig", "SilverConfig", "GoldConfig",
33
- "ModelingConfig", "ValidationConfig", "PathConfig", "PipelineConfig",
34
- "EXPERIMENTS_DIR", "FINDINGS_DIR", "DATA_DIR", "MLRUNS_DIR",
35
- "FEATURE_STORE_DIR", "OUTPUT_DIR", "get_experiments_dir",
36
- "get_findings_dir", "get_data_dir", "get_mlruns_dir",
37
- "get_feature_store_dir", "get_notebook_experiments_dir",
38
+ "ColumnType",
39
+ "ColumnConfig",
40
+ "DatasetGranularity",
41
+ "SourceType",
42
+ "FileFormat",
43
+ "Grain",
44
+ "DataSourceConfig",
45
+ "DedupStrategy",
46
+ "BronzeConfig",
47
+ "SilverConfig",
48
+ "GoldConfig",
49
+ "ModelingConfig",
50
+ "ValidationConfig",
51
+ "PathConfig",
52
+ "PipelineConfig",
53
+ "CATALOG",
54
+ "SCHEMA",
55
+ "WORKSPACE_PATH",
56
+ "EXPERIMENT_NAME",
57
+ "EXPERIMENTS_DIR",
58
+ "FINDINGS_DIR",
59
+ "DATA_DIR",
60
+ "MLRUNS_DIR",
61
+ "FEATURE_STORE_DIR",
62
+ "OUTPUT_DIR",
63
+ "get_catalog",
64
+ "get_schema",
65
+ "get_workspace_path",
66
+ "get_experiment_name",
67
+ "get_experiments_dir",
68
+ "get_findings_dir",
69
+ "get_data_dir",
70
+ "get_mlruns_dir",
71
+ "get_feature_store_dir",
72
+ "get_notebook_experiments_dir",
38
73
  "setup_experiments_structure",
39
74
  ]
@@ -36,12 +36,32 @@ def get_feature_store_dir(default: Optional[str] = None) -> Path:
36
36
  return get_experiments_dir(default) / "feature_repo"
37
37
 
38
38
 
39
+ def get_catalog(default: str = "main") -> str:
40
+ return os.environ.get("CR_CATALOG", default)
41
+
42
+
43
+ def get_schema(default: str = "default") -> str:
44
+ return os.environ.get("CR_SCHEMA", default)
45
+
46
+
47
+ def get_workspace_path(default: str | None = None) -> str | None:
48
+ return os.environ.get("CR_WORKSPACE_PATH", default)
49
+
50
+
51
+ def get_experiment_name(default: str = "customer_retention") -> str:
52
+ return os.environ.get("CR_EXPERIMENT_NAME", default)
53
+
54
+
39
55
  EXPERIMENTS_DIR = get_experiments_dir()
40
56
  FINDINGS_DIR = get_findings_dir()
41
57
  DATA_DIR = get_data_dir()
42
58
  MLRUNS_DIR = get_mlruns_dir()
43
59
  FEATURE_STORE_DIR = get_feature_store_dir()
44
60
  OUTPUT_DIR = FINDINGS_DIR
61
+ CATALOG = get_catalog()
62
+ SCHEMA = get_schema()
63
+ WORKSPACE_PATH = get_workspace_path()
64
+ EXPERIMENT_NAME = get_experiment_name()
45
65
 
46
66
 
47
67
  def setup_experiments_structure(experiments_dir: Optional[Path] = None) -> None: