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.
Files changed (27) hide show
  1. {churnkit-0.75.0a1.dist-info → churnkit-0.75.0a3.dist-info}/METADATA +1 -1
  2. {churnkit-0.75.0a1.dist-info → churnkit-0.75.0a3.dist-info}/RECORD +27 -27
  3. customer_retention/__init__.py +1 -1
  4. customer_retention/cli.py +3 -3
  5. customer_retention/generators/notebook_generator/project_init.py +26 -8
  6. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/00_start_here.ipynb +0 -0
  7. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/01_data_discovery.ipynb +0 -0
  8. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/01a_a_temporal_text_deep_dive.ipynb +0 -0
  9. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/01a_temporal_deep_dive.ipynb +0 -0
  10. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/01b_temporal_quality.ipynb +0 -0
  11. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/01c_temporal_patterns.ipynb +0 -0
  12. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/01d_event_aggregation.ipynb +0 -0
  13. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/02_column_deep_dive.ipynb +0 -0
  14. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/02a_text_columns_deep_dive.ipynb +0 -0
  15. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/03_quality_assessment.ipynb +0 -0
  16. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/04_relationship_analysis.ipynb +0 -0
  17. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/05_multi_dataset.ipynb +0 -0
  18. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/06_feature_opportunities.ipynb +0 -0
  19. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/07_modeling_readiness.ipynb +0 -0
  20. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/08_baseline_experiments.ipynb +0 -0
  21. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/09_business_alignment.ipynb +0 -0
  22. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/10_spec_generation.ipynb +0 -0
  23. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/11_scoring_validation.ipynb +0 -0
  24. {churnkit-0.75.0a1.data → churnkit-0.75.0a3.data}/data/share/churnkit/exploration_notebooks/12_view_documentation.ipynb +0 -0
  25. {churnkit-0.75.0a1.dist-info → churnkit-0.75.0a3.dist-info}/WHEEL +0 -0
  26. {churnkit-0.75.0a1.dist-info → churnkit-0.75.0a3.dist-info}/entry_points.txt +0 -0
  27. {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.0a1
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=jUBt-Uje1o_YtThpQHDBMoP1aR6fx31Q9zLQNZPh2Ag,1114
2
- customer_retention/cli.py,sha256=mkKVenlAqsMgnr1XNIu12TkO0cqyHMILg2zjAdQLgYk,2442
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=gDJN5gH5xSpOrlKkdQaIFXQDIO6UKZKYgouSIG4BKf4,5588
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.0a1.data/data/share/churnkit/exploration_notebooks/00_start_here.ipynb,sha256=GvWqC8sZROCKdue2SuEEenZE36zTT6Qo5Ntn4oL66mw,21909
280
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/01_data_discovery.ipynb,sha256=DRZqtXvNu2KylseGfX0fuCuz5sFxLhRkvdnGH5TxT9o,46434
281
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/01a_a_temporal_text_deep_dive.ipynb,sha256=uai8T3iJSqOrabBQnVi8Z0k8zZGVgs_VVQWRHyXN8QU,33690
282
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/01a_temporal_deep_dive.ipynb,sha256=8s_JK6Dq1VE6mwUHJH2B3kizLZVD0iMQFgYtMArfHuk,67322
283
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/01b_temporal_quality.ipynb,sha256=xmbgKfWk0T0VcpfyxafsZfQwJV-nGlXH7KFsCCHg4ns,23037
284
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/01c_temporal_patterns.ipynb,sha256=Jg9MxezUrmvYtV9Jg0M1IbX7QWeRZW5l8FDv0hlh2sM,153163
285
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/01d_event_aggregation.ipynb,sha256=E7pBamAW_ChoUszssVEuNsWldn4ap40niJTzQmn-amk,63243
286
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/02_column_deep_dive.ipynb,sha256=dEbN2tR7bMArgj_lY56JY5cKLCFI4MpY_4Tv7_NwSO8,60251
287
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/02a_text_columns_deep_dive.ipynb,sha256=M9YN8yAjjuC6ZaUlc-rVqVLEkWd7Rc_GNILHS9qO3PU,29704
288
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/03_quality_assessment.ipynb,sha256=JJOCZeugEqGZbVulXF3W07ftxIoXmJb2r1U3yFRJMTg,68600
289
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/04_relationship_analysis.ipynb,sha256=cKs0J_Yjb7BKTAC_gnxFenrPPD_aUmYSCiZA10-hSxM,78622
290
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/05_multi_dataset.ipynb,sha256=HveFZnqIfBb0dY6IbXZDa1Bj2Xat1067Ip0bsJLoA7M,62667
291
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/06_feature_opportunities.ipynb,sha256=O4XIgV1SpNYpvi_08qtqwCd05XdGlA-ZaOEl6tI7eeA,67409
292
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/07_modeling_readiness.ipynb,sha256=KNRtShdXyJnMnDlBIAnOoLvzzdMzc_TiQ_ug0J7n6kI,28376
293
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/08_baseline_experiments.ipynb,sha256=YXYZLtG9wul69Nj6IOk39yfQ4SRhL502Zn5ynHVdotA,34228
294
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/09_business_alignment.ipynb,sha256=sAtCIaFQ1IHWuvzc55WmY7SGsPqZntE8HHn5Q0qcTpA,17216
295
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/10_spec_generation.ipynb,sha256=g_ott0EhnVVPltgTvJeSboavY-4IJaLKvzs71AMbTtw,42843
296
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/11_scoring_validation.ipynb,sha256=z5xpgh0BHJQ2-3cQk6PwlQ7roGpMvXyJZr8v_YfAsW8,49938
297
- churnkit-0.75.0a1.data/data/share/churnkit/exploration_notebooks/12_view_documentation.ipynb,sha256=kIjL-z1mt3cshgawIROZLPMsQBBEhxOYUoXXDNARR8w,4407
298
- churnkit-0.75.0a1.dist-info/METADATA,sha256=VH1Ta1yAlp_mFuwiLtBXGTvig0qBQLo_xlVEEvyDPV4,12737
299
- churnkit-0.75.0a1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
300
- churnkit-0.75.0a1.dist-info/entry_points.txt,sha256=swQFVe-jjgQSBJQNO2Ulkz2F5odaE-TsnlTor3HQBjw,70
301
- churnkit-0.75.0a1.dist-info/licenses/LICENSE,sha256=Bud8Oj25tnpoIuXCWW0xcSfmGPeEZAAHrDRoKdSYtZY,11344
302
- churnkit-0.75.0a1.dist-info/RECORD,,
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,,
@@ -17,7 +17,7 @@ Main module categories:
17
17
  llm_context, iteration)
18
18
  """
19
19
 
20
- __version__ = "0.75.0a1"
20
+ __version__ = "0.75.0a3"
21
21
 
22
22
  # Environment utilities (always available)
23
23
  from .core.compat import (
customer_retention/cli.py CHANGED
@@ -65,11 +65,11 @@ Examples:
65
65
 
66
66
  # Initialize project using library
67
67
  try:
68
- initializer = ProjectInitializer(output_dir)
69
- initializer.initialize(
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.9"
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
- possible_paths = [
147
- Path(__file__).parent.parent.parent.parent / "exploration_notebooks",
148
- Path("exploration_notebooks"),
149
- ]
150
- for path in possible_paths:
151
- if path.exists():
152
- return path
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: