SuperModelingFactory 0.6.1__tar.gz → 0.6.3__tar.gz

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 (113) hide show
  1. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Pipeline/feature_validation.py +19 -2
  2. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/WOE/WOE_Master.py +27 -4
  3. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/WOE/WOE_Master.pyi +1 -1
  4. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/WOE/WOE_Plot_Tool.py +18 -8
  5. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/__init__.py +1 -1
  6. {supermodelingfactory-0.6.1/SuperModelingFactory.egg-info → supermodelingfactory-0.6.3}/PKG-INFO +2 -2
  7. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/README.md +1 -1
  8. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3/SuperModelingFactory.egg-info}/PKG-INFO +2 -2
  9. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/pyproject.toml +1 -1
  10. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/setup.py +1 -1
  11. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/ExcelMaster/ExcelFormatTool.py +0 -0
  12. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/ExcelMaster/ExcelMaster.py +0 -0
  13. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/ExcelMaster/Template.py +0 -0
  14. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/ExcelMaster/Utility.py +0 -0
  15. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/ExcelMaster/__init__.py +0 -0
  16. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/LICENSE +0 -0
  17. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/MANIFEST.in +0 -0
  18. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/Binning_Tool.py +0 -0
  19. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/Binning_Tool.pyi +0 -0
  20. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/Check_DuckDB_Compatibility.py +0 -0
  21. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/Json_Data_Converter.py +0 -0
  22. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/Model_Registry_Tool.py +0 -0
  23. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/ODPS_Tool.py +0 -0
  24. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/Parallel_Engine.py +0 -0
  25. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/Parallel_ODPS_Manager.py +0 -0
  26. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/Proc_Compare.py +0 -0
  27. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/Slope_Tool.py +0 -0
  28. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/Slope_Tool.pyi +0 -0
  29. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/XOR_Encryptor.py +0 -0
  30. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/XOR_Encryptor.pyi +0 -0
  31. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/__init__.py +0 -0
  32. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/kDataFrame.py +0 -0
  33. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/kDataFrame.pyi +0 -0
  34. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/sample_weight_utils.py +0 -0
  35. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Core/utils.py +0 -0
  36. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Eval/Evaluation_Tool.py +0 -0
  37. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Eval/Evaluation_Tool.pyi +0 -0
  38. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Eval/Model_Eval_Tool.py +0 -0
  39. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Eval/Model_Eval_Tool.pyi +0 -0
  40. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Eval/__init__.py +0 -0
  41. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Eval/evaluate_model.py +0 -0
  42. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Eval/evaluate_model.pyi +0 -0
  43. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Eval/weighted_eval_utils.py +0 -0
  44. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Explainability/Coalition_Structure.py +0 -0
  45. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Explainability/Model_Explainer.py +0 -0
  46. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Explainability/__init__.py +0 -0
  47. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Feature/Distribution_Tool.py +0 -0
  48. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Feature/Distribution_Tool.pyi +0 -0
  49. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Feature/Feature_Insights.py +0 -0
  50. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Feature/Feature_Insights.pyi +0 -0
  51. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Feature/Feature_Screen.py +0 -0
  52. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Feature/PSI_Tool.py +0 -0
  53. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Feature/PSI_Tool.pyi +0 -0
  54. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Feature/WOE_Engine_Feature_Patch.py +0 -0
  55. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Feature/Weighted_Screen.py +0 -0
  56. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Feature/__init__.py +0 -0
  57. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Model/Backward_Tool.py +0 -0
  58. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Model/Backward_Tool.pyi +0 -0
  59. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Model/GBM_Search_Tool.py +0 -0
  60. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Model/GBM_Tool.py +0 -0
  61. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Model/GBM_Tool.pyi +0 -0
  62. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Model/LRM_Tool.py +0 -0
  63. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Model/LRM_Tool.pyi +0 -0
  64. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Model/__init__.py +0 -0
  65. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Pipeline/__init__.py +0 -0
  66. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Pipeline/_common.py +0 -0
  67. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Pipeline/credit_model.py +0 -0
  68. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Pipeline/field_meta.py +0 -0
  69. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Pipeline/mock_sample.py +0 -0
  70. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Pipeline/orchestrator.py +0 -0
  71. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Pipeline/reject_inference.py +0 -0
  72. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Pipeline/sample_analysis.py +0 -0
  73. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Pipeline/score_comparison.py +0 -0
  74. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Pipeline/score_consistency_uat.py +0 -0
  75. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Pipeline/screening_artifact.py +0 -0
  76. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Sample/Distribution_Adaptation.py +0 -0
  77. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Sample/Distribution_Adaptation.pyi +0 -0
  78. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Sample/Reject_Infer.py +0 -0
  79. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Sample/Reject_Infer.pyi +0 -0
  80. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Sample/Sample_Split.py +0 -0
  81. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Sample/Sample_Split.pyi +0 -0
  82. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/Sample/__init__.py +0 -0
  83. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/UAT/UAT_Consistency_Checker.py +0 -0
  84. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/UAT/__init__.py +0 -0
  85. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/WOE/WOE_Adapter.py +0 -0
  86. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/WOE/WOE_Adapter.pyi +0 -0
  87. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/WOE/WOE_Monotone_Binner.py +0 -0
  88. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/WOE/WOE_Monotone_Binner.pyi +0 -0
  89. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/WOE/WOE_Plot_Tool.pyi +0 -0
  90. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/WOE/WOE_Report_Builder.py +0 -0
  91. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/WOE/WOE_Report_Builder.pyi +0 -0
  92. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/WOE/WOE_Tool.py +0 -0
  93. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/WOE/WOE_Tool.pyi +0 -0
  94. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/WOE/__init__.py +0 -0
  95. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/WOE/plot_woe_tool.py +0 -0
  96. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/WOE/plot_woe_tool.pyi +0 -0
  97. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/_utils/__init__.py +0 -0
  98. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/_utils/nan_guard.py +0 -0
  99. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/_utils/robust.py +0 -0
  100. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/_utils/sentinels.py +0 -0
  101. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/ref_font/KaiTi.ttf +0 -0
  102. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/ref_font/WeiRuanYaHei.ttf +0 -0
  103. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/ref_font/__init__.py +0 -0
  104. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Modeling_Tool/ref_font/simsun.ttc +0 -0
  105. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Report/Report_Tool.py +0 -0
  106. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/Report/__init__.py +0 -0
  107. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/SuperModelingFactory.egg-info/SOURCES.txt +0 -0
  108. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/SuperModelingFactory.egg-info/dependency_links.txt +0 -0
  109. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/SuperModelingFactory.egg-info/not-zip-safe +0 -0
  110. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/SuperModelingFactory.egg-info/requires.txt +0 -0
  111. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/SuperModelingFactory.egg-info/top_level.txt +0 -0
  112. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/requirements.txt +0 -0
  113. {supermodelingfactory-0.6.1 → supermodelingfactory-0.6.3}/setup.cfg +0 -0
@@ -1243,11 +1243,28 @@ class FeatureValidationPipeline:
1243
1243
  engine.plot_woe_graph(str(base_dir / f"by_{group}"), group_name=group, _df_for_group=train)
1244
1244
  elif hasattr(engine, "plot_bivar_graph"):
1245
1245
  transformed = engine.transform(train)
1246
- engine.plot_bivar_graph(transformed, dirname=str(base_dir))
1246
+ # Explicit group=None: WOE_Master.plot_bivar_graph made `group`
1247
+ # optional in 0.6.2; passing it explicitly documents intent and
1248
+ # keeps the call correct even on older WOE_Master builds where
1249
+ # `group` was positional (would raise TypeError there — which
1250
+ # is what the 0.6.2 logger.warning below now surfaces instead
1251
+ # of the pre-0.6.2 silent swallow).
1252
+ engine.plot_bivar_graph(transformed, group=None, dirname=str(base_dir))
1247
1253
  for group in cfg.woe_plot_groups:
1248
1254
  if group in transformed.columns:
1249
1255
  engine.plot_bivar_graph(transformed, group=group, dirname=str(base_dir / f"by_{group}"))
1250
- except Exception:
1256
+ except Exception as exc:
1257
+ # Never silently swallow: pre-0.6.2 a bare `except: return` here
1258
+ # hid the equal_freq blind-spot for the entire 0.5.x/0.6.0 line.
1259
+ engine_name = adapter.get_engine_name() if adapter is not None else "<unknown>"
1260
+ _logger.warning(
1261
+ "WOE plot generation failed and was skipped. "
1262
+ "engine=%s target=%s output_dir=%s error=%r",
1263
+ engine_name,
1264
+ target,
1265
+ str(base_dir),
1266
+ exc,
1267
+ )
1251
1268
  return
1252
1269
 
1253
1270
  def _build_selection_config(self) -> Any:
@@ -426,26 +426,49 @@ class WOE_Master(object):
426
426
 
427
427
  self.woe_dict.update(new_woe_dict)
428
428
 
429
- def plot_bivar_graph(self, data, group, dirname, varlist=None):
429
+ def plot_bivar_graph(self, data, group=None, dirname=None, varlist=None):
430
430
  """Plot bivariate WOE comparison graph.
431
431
 
432
432
  Args:
433
433
  data: pandas.DataFrame, data for plotting
434
- group: str, grouping variable name for distinguishing curves
435
- dirname: str, subdirectory name for saving (under graph_save_dir)
434
+ group: str or None, grouping variable name for distinguishing curves.
435
+ When ``None`` a single ungrouped curve per variable is drawn
436
+ and no ``by_<group>`` output is produced. Prior to 0.6.2 this
437
+ was a required positional argument, which silently broke
438
+ ungrouped callers (see `_plot_woe` in
439
+ `Modeling_Tool.Pipeline.feature_validation`). 0.6.3 also
440
+ fixes ``WOE_Plot_Tool.get_bivar_graph``: the ``if group:``
441
+ guard there was moved up to wrap the summary/align/plot
442
+ triplet — the guard used to sit *after* an unconditional
443
+ ``data.groupby([None])`` that raised TypeError on ungrouped
444
+ calls.
445
+ dirname: str, subdirectory name for saving (under graph_save_dir).
446
+ Required in practice; kept keyword-only-in-practice by keeping
447
+ the ``group`` slot second for backward compatibility with any
448
+ pre-0.6.2 positional caller.
436
449
  varlist: list, variables to plot (default: self.varlist)
437
450
  Returns:
438
451
  None, saves images directly
439
452
  """
453
+ if dirname is None:
454
+ raise TypeError("plot_bivar_graph() missing required argument: 'dirname'")
440
455
  if varlist is None:
441
456
  varlist = self.varlist
442
457
 
458
+ save_dir = os.path.join(self.graph_save_dir, dirname)
459
+ # matplotlib does not create parent directories on save. Historically
460
+ # callers were expected to `make_dirs(save_dir)` first; feature_validation
461
+ # only creates the base `figs/woe/<target>` and misses per-subdirectory
462
+ # nesting. Since this method already owns the composed path, own the
463
+ # `mkdir` too — avoids FileNotFoundError on the very first PNG write.
464
+ os.makedirs(save_dir, exist_ok=True)
465
+
443
466
  get_bivar_graph(data=data,
444
467
  varlist=varlist,
445
468
  sep=self.dep,
446
469
  ref_woe_table=self.get_mapping_table(),
447
470
  group=group,
448
- save_dir=os.path.join(self.graph_save_dir, dirname))
471
+ save_dir=save_dir)
449
472
 
450
473
 
451
474
  # =============================================================================
@@ -32,7 +32,7 @@ class WOE_Master(object):
32
32
  def save_mapping_table(self, save_dir): ...
33
33
  def transform(self, data = None, varlist = None): ...
34
34
  def update_woe(self, varlist, nbins = 10, equal_freq = True, tree_binning_seed = None, chi2_config = None, precision = 5, min_bin_prop = 0.05, include_missing = True, fillna = None, spec_values = []): ...
35
- def plot_bivar_graph(self, data, group, dirname, varlist = None): ...
35
+ def plot_bivar_graph(self, data, group = None, dirname = None, varlist = None): ...
36
36
  def load_mapping_table(mapping_table_csv): ...
37
37
  def get_mapping_table(woe_dict): ...
38
38
  def save_mapping_table(woe_dict, save_dir): ...
@@ -548,15 +548,25 @@ def get_bivar_graph(data, varlist, sep, ref_woe_table, save_dir, group=None, woe
548
548
  plot_woe(woe_df, to_show=False, save_dir=save_dir, fig_name = f"{var}.png")
549
549
 
550
550
  ################ Group WOE Table Plot ##########################
551
- grp_woe_res = get_mapped_woe_summary(data = data,
552
- ref_woe_table = ref_woe_table,
553
- tgt_name = sep,
554
- varlist = varlist,
555
- grp_name=[group])
556
-
557
- grp_woe_res = align_bin_num(woe_table = ref_woe_table, grp_woe_df = grp_woe_res, grp_name = [group])
558
-
551
+ # 0.6.3: the `if group:` guard was moved UP to wrap the summary + align
552
+ # + plot triplet. Pre-0.6.3 the get_mapped_woe_summary / align_bin_num
553
+ # calls executed unconditionally with grp_name=[None], causing
554
+ # data.groupby([None]) → TypeError: 'NoneType' object is not callable
555
+ # inside get_mapped_woe_summary. The old `if group:` guard only wrapped
556
+ # the plot loop, so it never got a chance to gate the crash.
557
+ #
558
+ # Symptom in 0.6.2 pipelines: equal_freq WOE plot base-call raised
559
+ # TypeError, the caller's try/except turned it into a logger.warning,
560
+ # and the subsequent `for group in cfg.woe_plot_groups` loop was
561
+ # skipped — so by_<group>/*.png was never emitted for equal_freq.
559
562
  if group:
563
+ grp_woe_res = get_mapped_woe_summary(data = data,
564
+ ref_woe_table = ref_woe_table,
565
+ tgt_name = sep,
566
+ varlist = varlist,
567
+ grp_name=[group])
568
+
569
+ grp_woe_res = align_bin_num(woe_table = ref_woe_table, grp_woe_df = grp_woe_res, grp_name = [group])
560
570
 
561
571
  for var in varlist:
562
572
  var = var.replace(woe_suffix, "")
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  __author__ = "Jingkai Sun"
4
- __version__ = "0.6.1"
4
+ __version__ = "0.6.3"
5
5
 
6
6
  from ._utils import SMF_MISSING_BIN
7
7
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SuperModelingFactory
3
- Version: 0.6.1
3
+ Version: 0.6.3
4
4
  Summary: Credit risk modeling factory: WOE binning, scorecards, LightGBM, Excel reporting.
5
5
  Home-page: https://github.com/Kyle-J-Sun/SuperModelingFactory
6
6
  Author: Kyle Sun
@@ -265,7 +265,7 @@ em.close_workbook()
265
265
 
266
266
  ## 版本
267
267
 
268
- - **Version**: 0.6.1
268
+ - **Version**: 0.6.3
269
269
  - **Author**: Jingkai Sun
270
270
 
271
271
  ## 许可证
@@ -208,7 +208,7 @@ em.close_workbook()
208
208
 
209
209
  ## 版本
210
210
 
211
- - **Version**: 0.6.1
211
+ - **Version**: 0.6.3
212
212
  - **Author**: Jingkai Sun
213
213
 
214
214
  ## 许可证
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SuperModelingFactory
3
- Version: 0.6.1
3
+ Version: 0.6.3
4
4
  Summary: Credit risk modeling factory: WOE binning, scorecards, LightGBM, Excel reporting.
5
5
  Home-page: https://github.com/Kyle-J-Sun/SuperModelingFactory
6
6
  Author: Kyle Sun
@@ -265,7 +265,7 @@ em.close_workbook()
265
265
 
266
266
  ## 版本
267
267
 
268
- - **Version**: 0.6.1
268
+ - **Version**: 0.6.3
269
269
  - **Author**: Jingkai Sun
270
270
 
271
271
  ## 许可证
@@ -12,7 +12,7 @@ build-backend = "setuptools.build_meta"
12
12
 
13
13
  [project]
14
14
  name = "SuperModelingFactory"
15
- version = "0.6.1"
15
+ version = "0.6.3"
16
16
  description = "Credit risk modeling factory: WOE binning, scorecards, LightGBM, Excel reporting."
17
17
  readme = "README.md"
18
18
  requires-python = ">=3.10"
@@ -15,7 +15,7 @@ def _read(path: str) -> str:
15
15
 
16
16
  setup(
17
17
  name="SuperModelingFactory",
18
- version=os.environ.get("SMF_VERSION", "0.6.1"),
18
+ version=os.environ.get("SMF_VERSION", "0.6.3"),
19
19
  description="Credit risk modeling factory: WOE binning, scorecards, LightGBM, Excel reporting.",
20
20
  long_description=_read("README.md"),
21
21
  long_description_content_type="text/markdown",