churnkit 0.76.0a1__py3-none-any.whl → 0.76.0a2__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 (29) hide show
  1. {churnkit-0.76.0a1.dist-info → churnkit-0.76.0a2.dist-info}/METADATA +1 -1
  2. {churnkit-0.76.0a1.dist-info → churnkit-0.76.0a2.dist-info}/RECORD +29 -29
  3. customer_retention/__init__.py +1 -1
  4. customer_retention/integrations/databricks_init.py +12 -0
  5. customer_retention/stages/profiling/temporal_pattern_analyzer.py +0 -1
  6. customer_retention/stages/profiling/time_series_profiler.py +0 -1
  7. customer_retention/stages/profiling/time_window_aggregator.py +0 -1
  8. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/00_start_here.ipynb +0 -0
  9. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/01_data_discovery.ipynb +0 -0
  10. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/01a_a_temporal_text_deep_dive.ipynb +0 -0
  11. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/01a_temporal_deep_dive.ipynb +0 -0
  12. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/01b_temporal_quality.ipynb +0 -0
  13. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/01c_temporal_patterns.ipynb +0 -0
  14. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/01d_event_aggregation.ipynb +0 -0
  15. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/02_column_deep_dive.ipynb +0 -0
  16. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/02a_text_columns_deep_dive.ipynb +0 -0
  17. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/03_quality_assessment.ipynb +0 -0
  18. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/04_relationship_analysis.ipynb +0 -0
  19. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/05_multi_dataset.ipynb +0 -0
  20. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/06_feature_opportunities.ipynb +0 -0
  21. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/07_modeling_readiness.ipynb +0 -0
  22. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/08_baseline_experiments.ipynb +0 -0
  23. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/09_business_alignment.ipynb +0 -0
  24. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/10_spec_generation.ipynb +0 -0
  25. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/11_scoring_validation.ipynb +0 -0
  26. {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/12_view_documentation.ipynb +0 -0
  27. {churnkit-0.76.0a1.dist-info → churnkit-0.76.0a2.dist-info}/WHEEL +0 -0
  28. {churnkit-0.76.0a1.dist-info → churnkit-0.76.0a2.dist-info}/entry_points.txt +0 -0
  29. {churnkit-0.76.0a1.dist-info → churnkit-0.76.0a2.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: churnkit
3
- Version: 0.76.0a1
3
+ Version: 0.76.0a2
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
@@ -1,4 +1,4 @@
1
- customer_retention/__init__.py,sha256=khjH4K4e69Nc91vJZGDCbV4-ZXtvOjTTVFPVC4-HG5E,1406
1
+ customer_retention/__init__.py,sha256=_2Xm1LfdrPFRcCH7DZRdJNnSx5Aw24yrHt-5M3jJ4o0,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
@@ -131,7 +131,7 @@ customer_retention/generators/spec_generator/generic_generator.py,sha256=I_glnOO
131
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
+ customer_retention/integrations/databricks_init.py,sha256=GBfPbaVsjR9gL-cIlok2O2OEFGqHUS27N5nSREAdbfA,5139
135
135
  customer_retention/integrations/adapters/__init__.py,sha256=Fgdp0ESROTUHnOb2RN9Ubo0A4BdfoenOGuUz61lHz8g,583
136
136
  customer_retention/integrations/adapters/base.py,sha256=z6dVAowDKGogKsYGR7VMcLkS6VhcB9h4zgN1tilNYRg,254
137
137
  customer_retention/integrations/adapters/factory.py,sha256=CMsqOeDozADbWnk8fzktZvAyL1FEmUjDMvfDCpLDVaU,1202
@@ -231,14 +231,14 @@ customer_retention/stages/profiling/temporal_analyzer.py,sha256=PXf4pYNcszp7N8_1
231
231
  customer_retention/stages/profiling/temporal_coverage.py,sha256=r23s1qyB7o11ab_TTLOgb4q29OPA_crRshFpMLt4t_w,18561
232
232
  customer_retention/stages/profiling/temporal_feature_analyzer.py,sha256=LAsIwIO0oM9UzaxsP95OEeOvT-tbLMM6pTfQv_IRe-8,32389
233
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
+ customer_retention/stages/profiling/temporal_pattern_analyzer.py,sha256=e6wdllvfIYaYUmtbD4iZryeBxgVeZgvKFjGp086flx8,26842
235
235
  customer_retention/stages/profiling/temporal_quality_checks.py,sha256=SosW3omX2c025UIdlXpLEBJCsAsIvoGXMbxw6tzBocA,13750
236
236
  customer_retention/stages/profiling/temporal_target_analyzer.py,sha256=eeZlUhTWZfCftwgm_dySi1feRLuoU9SRLL_r_4jgN5g,8785
237
237
  customer_retention/stages/profiling/text_embedder.py,sha256=ck7WIq7pGC7xgEzMQr7fYdHcJegYR6wfdh3z32WUiK8,3038
238
238
  customer_retention/stages/profiling/text_processor.py,sha256=spdfwVSEU07aYbl2bIsg_INOBt3Js-IA15WVkjf1ask,4474
239
239
  customer_retention/stages/profiling/text_reducer.py,sha256=ilSuUAu0dHUyRGTNg8TzoCEd-EAyXKvoAm4uGqwlSQs,2409
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
240
+ customer_retention/stages/profiling/time_series_profiler.py,sha256=keM3trqbkHLU-n5cG8Kblm-N2R2zO2cH1JaDz2OaIrs,10350
241
+ customer_retention/stages/profiling/time_window_aggregator.py,sha256=bClD3wfwt_p4yGzNx-4F1TgHzkt-E5HokRzukyb7Q5M,15930
242
242
  customer_retention/stages/profiling/type_detector.py,sha256=VgYHWcBGepyJKNdY1FKgb9scOaosN6fDY_-WiTjfoAg,14726
243
243
  customer_retention/stages/profiling/window_recommendation.py,sha256=Apd_PDFpo49HJJzldTcwzzgJjBzEfd8mbGboBwHhzGw,13354
244
244
  customer_retention/stages/temporal/__init__.py,sha256=f86XiSUMKQgeTLyOsu89IJcafOPjdBIR9bH_hhrY8b8,6135
@@ -277,27 +277,27 @@ customer_retention/transforms/artifact_store.py,sha256=FYLpDcv2N6-dUTX5RPEIK3aCW
277
277
  customer_retention/transforms/executor.py,sha256=oML5dCidxbW_q6YUkAwWcutYP6bIFB6IdD3BvemK45A,6304
278
278
  customer_retention/transforms/fitted.py,sha256=3pNvnae-P3t3bKMeZz1Bl0xww-feapIYdoeTY6aUtI8,3278
279
279
  customer_retention/transforms/ops.py,sha256=Xg2g9UOOudq_y9Hf3oWsjpqw3dEoykQR5pDSoyW8GX0,4294
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,,
280
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/00_start_here.ipynb,sha256=zCyhftEd3v9fc0Ta6wvA6b-9LcoGzRi8bS1tMZ3iu9w,21911
281
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/01_data_discovery.ipynb,sha256=up0X3oDJ5sAo1-tbqMyZj_f1h6D542G2uAxjVmtYCOI,46430
282
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/01a_a_temporal_text_deep_dive.ipynb,sha256=uai8T3iJSqOrabBQnVi8Z0k8zZGVgs_VVQWRHyXN8QU,33690
283
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/01a_temporal_deep_dive.ipynb,sha256=fC1ASNtvI8X1lAe-Lzcw3oX2cptDC-ymPeEtKKWhg20,67326
284
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/01b_temporal_quality.ipynb,sha256=RU5hxgrTVMZs1ytChVv1t49WpTO0Oj6B_Fu8g0xS0To,23039
285
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/01c_temporal_patterns.ipynb,sha256=ZGYfztP6JhOEwPmTYdC0l7w579fKXcNEJXq-PnCLc2I,153167
286
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/01d_event_aggregation.ipynb,sha256=-FT3SoBU0fhaZxGeTo-_UQl6riCrtoJaFnUg31opk64,63244
287
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/02_column_deep_dive.ipynb,sha256=mbP2LQWsXDyTsWg0bhrCBHEfHsEer_XOXRYV9f8JxAk,60250
288
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/02a_text_columns_deep_dive.ipynb,sha256=M9YN8yAjjuC6ZaUlc-rVqVLEkWd7Rc_GNILHS9qO3PU,29704
289
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/03_quality_assessment.ipynb,sha256=H49LLmn1PHbcbAvSQfteESRGk125QwkPI5qbLk3yZgc,68595
290
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/04_relationship_analysis.ipynb,sha256=Rr-B4-xg0ILuAIgztlZkiGJdTzLuNjOqBFxO8W4o9iU,78624
291
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/05_multi_dataset.ipynb,sha256=bBxkuZyTl1yZg4kMXO87WRjgZMhj_6hwLGX6m3XC270,62664
292
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/06_feature_opportunities.ipynb,sha256=cBJF5o4z3Z-dustQ4CVklnfTcQ8saG97tlgswWK9uWE,67409
293
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/07_modeling_readiness.ipynb,sha256=IiA04fyb-l097Glp3MtR03vPjQsZlS1Icg-hjEHa_Dg,28376
294
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/08_baseline_experiments.ipynb,sha256=KmjhnDf1JdpEiIcdfQ-ZFo_at6t9JRC30B6NmmvMBmg,34226
295
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/09_business_alignment.ipynb,sha256=tMNfGM7AH50N1ONzHhGW2HZLpQwraIxVzOiVnI-10X8,17214
296
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/10_spec_generation.ipynb,sha256=KeUdfL9Mvdi6023XpnfZ6oLEDNZaWiIHUfsAWig24mE,42847
297
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/11_scoring_validation.ipynb,sha256=5fi3eHMm03ZKZgdFAXMgydtZ3qX2TtR3L9bZS2MpWPE,49937
298
+ churnkit-0.76.0a2.data/data/share/churnkit/exploration_notebooks/12_view_documentation.ipynb,sha256=aQF7CG8HxckqUKOKqnmZgMkSvfVzyO2LlYPrymLYjBY,4405
299
+ churnkit-0.76.0a2.dist-info/METADATA,sha256=WOR-FRJn2potqTnvywJS8eT2thS7Y1-7uZLGVwymkwE,13005
300
+ churnkit-0.76.0a2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
301
+ churnkit-0.76.0a2.dist-info/entry_points.txt,sha256=swQFVe-jjgQSBJQNO2Ulkz2F5odaE-TsnlTor3HQBjw,70
302
+ churnkit-0.76.0a2.dist-info/licenses/LICENSE,sha256=Bud8Oj25tnpoIuXCWW0xcSfmGPeEZAAHrDRoKdSYtZY,11344
303
+ churnkit-0.76.0a2.dist-info/RECORD,,
@@ -17,7 +17,7 @@ Main module categories:
17
17
  llm_context, iteration)
18
18
  """
19
19
 
20
- __version__ = "0.76.0a1"
20
+ __version__ = "0.76.0a2"
21
21
 
22
22
  # Environment utilities (always available)
23
23
  from .core.compat import (
@@ -40,6 +40,7 @@ def databricks_init(
40
40
  _validate_databricks_environment()
41
41
  _set_environment_variables(catalog, schema, workspace_path)
42
42
  resolved_experiment_name = experiment_name or _resolve_experiment_name_from_notebook_path()
43
+ resolved_experiment_name = _make_absolute_experiment_path(resolved_experiment_name, workspace_path)
43
44
  _set_experiment_name_env_var(resolved_experiment_name)
44
45
  _configure_mlflow_experiment(resolved_experiment_name)
45
46
  notebooks_copied: list[str] = []
@@ -97,6 +98,17 @@ def _get_dbutils() -> Any | None:
97
98
  return None
98
99
 
99
100
 
101
+ def _make_absolute_experiment_path(experiment_name: str, workspace_path: str | None) -> str:
102
+ if experiment_name.startswith("/"):
103
+ return experiment_name
104
+ if not workspace_path:
105
+ return experiment_name
106
+ base = workspace_path.removeprefix("/Workspace")
107
+ if not base.startswith("/"):
108
+ base = f"/{base}"
109
+ return f"{base}/{experiment_name}"
110
+
111
+
100
112
  def _configure_mlflow_experiment(experiment_name: str) -> None:
101
113
  try:
102
114
  import mlflow
@@ -11,7 +11,6 @@ from customer_retention.core.compat import (
11
11
  cut,
12
12
  ensure_datetime_column,
13
13
  native_pd,
14
- pd,
15
14
  safe_to_datetime,
16
15
  to_pandas,
17
16
  )
@@ -8,7 +8,6 @@ from customer_retention.core.compat import (
8
8
  Timestamp,
9
9
  ensure_datetime_column,
10
10
  native_pd,
11
- pd,
12
11
  to_pandas,
13
12
  )
14
13
 
@@ -13,7 +13,6 @@ from customer_retention.core.compat import (
13
13
  ensure_datetime_column,
14
14
  is_numeric_dtype,
15
15
  native_pd,
16
- pd,
17
16
  to_pandas,
18
17
  )
19
18