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.
- {churnkit-0.76.0a1.dist-info → churnkit-0.76.0a2.dist-info}/METADATA +1 -1
- {churnkit-0.76.0a1.dist-info → churnkit-0.76.0a2.dist-info}/RECORD +29 -29
- customer_retention/__init__.py +1 -1
- customer_retention/integrations/databricks_init.py +12 -0
- customer_retention/stages/profiling/temporal_pattern_analyzer.py +0 -1
- customer_retention/stages/profiling/time_series_profiler.py +0 -1
- customer_retention/stages/profiling/time_window_aggregator.py +0 -1
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/00_start_here.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/01_data_discovery.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/01a_a_temporal_text_deep_dive.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/01a_temporal_deep_dive.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/01b_temporal_quality.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/01c_temporal_patterns.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/01d_event_aggregation.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/02_column_deep_dive.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/02a_text_columns_deep_dive.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/03_quality_assessment.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/04_relationship_analysis.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/05_multi_dataset.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/06_feature_opportunities.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/07_modeling_readiness.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/08_baseline_experiments.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/09_business_alignment.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/10_spec_generation.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/11_scoring_validation.ipynb +0 -0
- {churnkit-0.76.0a1.data → churnkit-0.76.0a2.data}/data/share/churnkit/exploration_notebooks/12_view_documentation.ipynb +0 -0
- {churnkit-0.76.0a1.dist-info → churnkit-0.76.0a2.dist-info}/WHEEL +0 -0
- {churnkit-0.76.0a1.dist-info → churnkit-0.76.0a2.dist-info}/entry_points.txt +0 -0
- {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.
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
241
|
-
customer_retention/stages/profiling/time_window_aggregator.py,sha256=
|
|
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.
|
|
281
|
-
churnkit-0.76.
|
|
282
|
-
churnkit-0.76.
|
|
283
|
-
churnkit-0.76.
|
|
284
|
-
churnkit-0.76.
|
|
285
|
-
churnkit-0.76.
|
|
286
|
-
churnkit-0.76.
|
|
287
|
-
churnkit-0.76.
|
|
288
|
-
churnkit-0.76.
|
|
289
|
-
churnkit-0.76.
|
|
290
|
-
churnkit-0.76.
|
|
291
|
-
churnkit-0.76.
|
|
292
|
-
churnkit-0.76.
|
|
293
|
-
churnkit-0.76.
|
|
294
|
-
churnkit-0.76.
|
|
295
|
-
churnkit-0.76.
|
|
296
|
-
churnkit-0.76.
|
|
297
|
-
churnkit-0.76.
|
|
298
|
-
churnkit-0.76.
|
|
299
|
-
churnkit-0.76.
|
|
300
|
-
churnkit-0.76.
|
|
301
|
-
churnkit-0.76.
|
|
302
|
-
churnkit-0.76.
|
|
303
|
-
churnkit-0.76.
|
|
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,,
|
customer_retention/__init__.py
CHANGED
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|