churnkit 0.75.0a1__py3-none-any.whl → 0.75.0a3__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.75.0a1.dist-info → churnkit-0.75.0a3.dist-info}/METADATA +1 -1
- {churnkit-0.75.0a1.dist-info → churnkit-0.75.0a3.dist-info}/RECORD +27 -27
- customer_retention/__init__.py +1 -1
- customer_retention/cli.py +3 -3
- customer_retention/generators/notebook_generator/project_init.py +26 -8
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/00_start_here.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/01_data_discovery.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/01a_a_temporal_text_deep_dive.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/01a_temporal_deep_dive.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/01b_temporal_quality.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/01c_temporal_patterns.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/01d_event_aggregation.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/02_column_deep_dive.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/02a_text_columns_deep_dive.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/03_quality_assessment.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/04_relationship_analysis.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/05_multi_dataset.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/06_feature_opportunities.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/07_modeling_readiness.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/08_baseline_experiments.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/09_business_alignment.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/10_spec_generation.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/11_scoring_validation.ipynb +0 -0
- {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/12_view_documentation.ipynb +0 -0
- {churnkit-0.75.0a1.dist-info → churnkit-0.75.0a3.dist-info}/WHEEL +0 -0
- {churnkit-0.75.0a1.dist-info → churnkit-0.75.0a3.dist-info}/entry_points.txt +0 -0
- {churnkit-0.75.0a1.dist-info → churnkit-0.75.0a3.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: churnkit
|
|
3
|
-
Version: 0.75.
|
|
3
|
+
Version: 0.75.0a3
|
|
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,5 +1,5 @@
|
|
|
1
|
-
customer_retention/__init__.py,sha256=
|
|
2
|
-
customer_retention/cli.py,sha256=
|
|
1
|
+
customer_retention/__init__.py,sha256=_NUgKIWKnGZ58WdDbvwbjPPK_5z3_HpB4V5uZJRVlX8,1114
|
|
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
|
|
5
5
|
customer_retention/analysis/notebook_html_exporter.py,sha256=AMOTcD6nZncM4MPdVS1Kn4WF2YoaOoODMI2X48oEZ24,4491
|
|
@@ -98,7 +98,7 @@ customer_retention/generators/notebook_generator/cell_builder.py,sha256=vDY6ipsN
|
|
|
98
98
|
customer_retention/generators/notebook_generator/config.py,sha256=nijppxLGsOGv8DafZaSUddGfLuIHHfcaVJw21AUhF5c,1321
|
|
99
99
|
customer_retention/generators/notebook_generator/databricks_generator.py,sha256=bEZh3zPNr9u_tqtHPYa420WGbYd_Elgw4C5tWK_aCzk,1980
|
|
100
100
|
customer_retention/generators/notebook_generator/local_generator.py,sha256=1IoO2C9PXws1CAvaAgK-oHQkMy75JXUMg_syDYT-eY4,1965
|
|
101
|
-
customer_retention/generators/notebook_generator/project_init.py,sha256=
|
|
101
|
+
customer_retention/generators/notebook_generator/project_init.py,sha256=c9MNQ0izJDcCHvxg587hsXgkjmNmqNc1DN1ll6aaFak,6461
|
|
102
102
|
customer_retention/generators/notebook_generator/runner.py,sha256=SRA8TEs29NwKWhfj0Y9N3JnphvKeQ87PH7Yp5BxT3-I,5691
|
|
103
103
|
customer_retention/generators/notebook_generator/script_generator.py,sha256=ljf3rNg3TgW9kmyfTMFZpsP8D7Z2O-dLMS-FNfhR8z4,4623
|
|
104
104
|
customer_retention/generators/notebook_generator/stages/__init__.py,sha256=clNgtDXeMWceOarAnj0i8-TS8i9x_iJ13_BOhxX9Zyg,855
|
|
@@ -276,27 +276,27 @@ customer_retention/transforms/artifact_store.py,sha256=FYLpDcv2N6-dUTX5RPEIK3aCW
|
|
|
276
276
|
customer_retention/transforms/executor.py,sha256=oML5dCidxbW_q6YUkAwWcutYP6bIFB6IdD3BvemK45A,6304
|
|
277
277
|
customer_retention/transforms/fitted.py,sha256=3pNvnae-P3t3bKMeZz1Bl0xww-feapIYdoeTY6aUtI8,3278
|
|
278
278
|
customer_retention/transforms/ops.py,sha256=URkQcFyb9tYzteuIFR-pOyT47vnFqx95EciaQtKrdjU,4284
|
|
279
|
-
churnkit-0.75.
|
|
280
|
-
churnkit-0.75.
|
|
281
|
-
churnkit-0.75.
|
|
282
|
-
churnkit-0.75.
|
|
283
|
-
churnkit-0.75.
|
|
284
|
-
churnkit-0.75.
|
|
285
|
-
churnkit-0.75.
|
|
286
|
-
churnkit-0.75.
|
|
287
|
-
churnkit-0.75.
|
|
288
|
-
churnkit-0.75.
|
|
289
|
-
churnkit-0.75.
|
|
290
|
-
churnkit-0.75.
|
|
291
|
-
churnkit-0.75.
|
|
292
|
-
churnkit-0.75.
|
|
293
|
-
churnkit-0.75.
|
|
294
|
-
churnkit-0.75.
|
|
295
|
-
churnkit-0.75.
|
|
296
|
-
churnkit-0.75.
|
|
297
|
-
churnkit-0.75.
|
|
298
|
-
churnkit-0.75.
|
|
299
|
-
churnkit-0.75.
|
|
300
|
-
churnkit-0.75.
|
|
301
|
-
churnkit-0.75.
|
|
302
|
-
churnkit-0.75.
|
|
279
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/00_start_here.ipynb,sha256=GvWqC8sZROCKdue2SuEEenZE36zTT6Qo5Ntn4oL66mw,21909
|
|
280
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/01_data_discovery.ipynb,sha256=DRZqtXvNu2KylseGfX0fuCuz5sFxLhRkvdnGH5TxT9o,46434
|
|
281
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/01a_a_temporal_text_deep_dive.ipynb,sha256=uai8T3iJSqOrabBQnVi8Z0k8zZGVgs_VVQWRHyXN8QU,33690
|
|
282
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/01a_temporal_deep_dive.ipynb,sha256=8s_JK6Dq1VE6mwUHJH2B3kizLZVD0iMQFgYtMArfHuk,67322
|
|
283
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/01b_temporal_quality.ipynb,sha256=xmbgKfWk0T0VcpfyxafsZfQwJV-nGlXH7KFsCCHg4ns,23037
|
|
284
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/01c_temporal_patterns.ipynb,sha256=Jg9MxezUrmvYtV9Jg0M1IbX7QWeRZW5l8FDv0hlh2sM,153163
|
|
285
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/01d_event_aggregation.ipynb,sha256=E7pBamAW_ChoUszssVEuNsWldn4ap40niJTzQmn-amk,63243
|
|
286
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/02_column_deep_dive.ipynb,sha256=dEbN2tR7bMArgj_lY56JY5cKLCFI4MpY_4Tv7_NwSO8,60251
|
|
287
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/02a_text_columns_deep_dive.ipynb,sha256=M9YN8yAjjuC6ZaUlc-rVqVLEkWd7Rc_GNILHS9qO3PU,29704
|
|
288
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/03_quality_assessment.ipynb,sha256=JJOCZeugEqGZbVulXF3W07ftxIoXmJb2r1U3yFRJMTg,68600
|
|
289
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/04_relationship_analysis.ipynb,sha256=cKs0J_Yjb7BKTAC_gnxFenrPPD_aUmYSCiZA10-hSxM,78622
|
|
290
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/05_multi_dataset.ipynb,sha256=HveFZnqIfBb0dY6IbXZDa1Bj2Xat1067Ip0bsJLoA7M,62667
|
|
291
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/06_feature_opportunities.ipynb,sha256=O4XIgV1SpNYpvi_08qtqwCd05XdGlA-ZaOEl6tI7eeA,67409
|
|
292
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/07_modeling_readiness.ipynb,sha256=KNRtShdXyJnMnDlBIAnOoLvzzdMzc_TiQ_ug0J7n6kI,28376
|
|
293
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/08_baseline_experiments.ipynb,sha256=YXYZLtG9wul69Nj6IOk39yfQ4SRhL502Zn5ynHVdotA,34228
|
|
294
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/09_business_alignment.ipynb,sha256=sAtCIaFQ1IHWuvzc55WmY7SGsPqZntE8HHn5Q0qcTpA,17216
|
|
295
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/10_spec_generation.ipynb,sha256=g_ott0EhnVVPltgTvJeSboavY-4IJaLKvzs71AMbTtw,42843
|
|
296
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/11_scoring_validation.ipynb,sha256=z5xpgh0BHJQ2-3cQk6PwlQ7roGpMvXyJZr8v_YfAsW8,49938
|
|
297
|
+
churnkit-0.75.0a3.data/data/share/churnkit/exploration_notebooks/12_view_documentation.ipynb,sha256=kIjL-z1mt3cshgawIROZLPMsQBBEhxOYUoXXDNARR8w,4407
|
|
298
|
+
churnkit-0.75.0a3.dist-info/METADATA,sha256=lQIZJ7CLPcMAMfu0Jjj8ZsN20QvgTK4EuIIqAsOAFL8,12737
|
|
299
|
+
churnkit-0.75.0a3.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
300
|
+
churnkit-0.75.0a3.dist-info/entry_points.txt,sha256=swQFVe-jjgQSBJQNO2Ulkz2F5odaE-TsnlTor3HQBjw,70
|
|
301
|
+
churnkit-0.75.0a3.dist-info/licenses/LICENSE,sha256=Bud8Oj25tnpoIuXCWW0xcSfmGPeEZAAHrDRoKdSYtZY,11344
|
|
302
|
+
churnkit-0.75.0a3.dist-info/RECORD,,
|
customer_retention/__init__.py
CHANGED
customer_retention/cli.py
CHANGED
|
@@ -65,11 +65,11 @@ Examples:
|
|
|
65
65
|
|
|
66
66
|
# Initialize project using library
|
|
67
67
|
try:
|
|
68
|
-
initializer = ProjectInitializer(
|
|
69
|
-
|
|
70
|
-
project_name=args.name,
|
|
68
|
+
initializer = ProjectInitializer(
|
|
69
|
+
project_name=args.name or output_dir.name,
|
|
71
70
|
platforms=platforms,
|
|
72
71
|
)
|
|
72
|
+
initializer.initialize(str(output_dir))
|
|
73
73
|
|
|
74
74
|
print("\n" + "=" * 50)
|
|
75
75
|
print("Done!")
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import shutil
|
|
2
|
+
import sys
|
|
2
3
|
from dataclasses import dataclass
|
|
3
4
|
from pathlib import Path
|
|
4
5
|
from typing import Dict, List, Optional
|
|
@@ -116,7 +117,7 @@ build/
|
|
|
116
117
|
name = "{self.project_name}"
|
|
117
118
|
version = "0.1.0"
|
|
118
119
|
description = "Customer retention analysis using churnkit framework"
|
|
119
|
-
requires-python = ">=3.
|
|
120
|
+
requires-python = ">=3.10"
|
|
120
121
|
|
|
121
122
|
dependencies = [
|
|
122
123
|
"churnkit",
|
|
@@ -143,13 +144,30 @@ dev = [
|
|
|
143
144
|
return copied
|
|
144
145
|
|
|
145
146
|
def _get_exploration_source_dir(self) -> Optional[Path]:
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
147
|
+
# 1. Development / editable install: notebooks live in the source tree
|
|
148
|
+
dev_path = Path(__file__).parent.parent.parent.parent / "exploration_notebooks"
|
|
149
|
+
if dev_path.is_dir():
|
|
150
|
+
return dev_path
|
|
151
|
+
|
|
152
|
+
# 2. Installed package: resolve from package metadata RECORD.
|
|
153
|
+
# Works across pip, conda, uv, pipx — any PEP 376 compliant installer.
|
|
154
|
+
try:
|
|
155
|
+
from importlib.metadata import distribution
|
|
156
|
+
dist = distribution("churnkit")
|
|
157
|
+
for f in dist.files or []:
|
|
158
|
+
if str(f).endswith("exploration_notebooks/00_start_here.ipynb"):
|
|
159
|
+
resolved = Path(dist.locate_file(f)).resolve()
|
|
160
|
+
if resolved.parent.is_dir():
|
|
161
|
+
return resolved.parent
|
|
162
|
+
except Exception:
|
|
163
|
+
pass
|
|
164
|
+
|
|
165
|
+
# 3. Fallback: common shared-data location under sys.prefix
|
|
166
|
+
# (covers cases where RECORD is missing, e.g. conda --no-record)
|
|
167
|
+
prefix_path = Path(sys.prefix) / "share" / "churnkit" / "exploration_notebooks"
|
|
168
|
+
if prefix_path.is_dir():
|
|
169
|
+
return prefix_path
|
|
170
|
+
|
|
153
171
|
return None
|
|
154
172
|
|
|
155
173
|
def _generate_orchestration(self, project_path: Path) -> None:
|
|
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
|