SuperModelingFactory 0.5.1__tar.gz → 0.5.2__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 (111) hide show
  1. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/ODPS_Tool.py +28 -5
  2. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/__init__.py +1 -1
  3. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/PKG-INFO +2 -2
  4. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/README.md +1 -1
  5. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/SuperModelingFactory.egg-info/PKG-INFO +2 -2
  6. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/pyproject.toml +1 -1
  7. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/setup.py +1 -1
  8. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/ExcelMaster/ExcelFormatTool.py +0 -0
  9. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/ExcelMaster/ExcelMaster.py +0 -0
  10. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/ExcelMaster/Template.py +0 -0
  11. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/ExcelMaster/Utility.py +0 -0
  12. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/ExcelMaster/__init__.py +0 -0
  13. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/LICENSE +0 -0
  14. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/MANIFEST.in +0 -0
  15. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/Binning_Tool.py +0 -0
  16. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/Binning_Tool.pyi +0 -0
  17. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/Check_DuckDB_Compatibility.py +0 -0
  18. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/Json_Data_Converter.py +0 -0
  19. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/Model_Registry_Tool.py +0 -0
  20. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/Parallel_Engine.py +0 -0
  21. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/Parallel_ODPS_Manager.py +0 -0
  22. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/Proc_Compare.py +0 -0
  23. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/Slope_Tool.py +0 -0
  24. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/Slope_Tool.pyi +0 -0
  25. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/XOR_Encryptor.py +0 -0
  26. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/XOR_Encryptor.pyi +0 -0
  27. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/__init__.py +0 -0
  28. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/kDataFrame.py +0 -0
  29. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/kDataFrame.pyi +0 -0
  30. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/sample_weight_utils.py +0 -0
  31. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Core/utils.py +0 -0
  32. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Eval/Evaluation_Tool.py +0 -0
  33. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Eval/Evaluation_Tool.pyi +0 -0
  34. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Eval/Model_Eval_Tool.py +0 -0
  35. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Eval/Model_Eval_Tool.pyi +0 -0
  36. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Eval/__init__.py +0 -0
  37. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Eval/evaluate_model.py +0 -0
  38. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Eval/evaluate_model.pyi +0 -0
  39. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Eval/weighted_eval_utils.py +0 -0
  40. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Explainability/Coalition_Structure.py +0 -0
  41. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Explainability/Model_Explainer.py +0 -0
  42. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Explainability/__init__.py +0 -0
  43. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Feature/Distribution_Tool.py +0 -0
  44. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Feature/Distribution_Tool.pyi +0 -0
  45. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Feature/Feature_Insights.py +0 -0
  46. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Feature/Feature_Insights.pyi +0 -0
  47. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Feature/Feature_Screen.py +0 -0
  48. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Feature/PSI_Tool.py +0 -0
  49. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Feature/PSI_Tool.pyi +0 -0
  50. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Feature/WOE_Engine_Feature_Patch.py +0 -0
  51. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Feature/Weighted_Screen.py +0 -0
  52. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Feature/__init__.py +0 -0
  53. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Model/Backward_Tool.py +0 -0
  54. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Model/Backward_Tool.pyi +0 -0
  55. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Model/GBM_Search_Tool.py +0 -0
  56. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Model/GBM_Tool.py +0 -0
  57. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Model/GBM_Tool.pyi +0 -0
  58. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Model/LRM_Tool.py +0 -0
  59. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Model/LRM_Tool.pyi +0 -0
  60. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Model/__init__.py +0 -0
  61. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Pipeline/__init__.py +0 -0
  62. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Pipeline/_common.py +0 -0
  63. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Pipeline/credit_model.py +0 -0
  64. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Pipeline/feature_validation.py +0 -0
  65. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Pipeline/mock_sample.py +0 -0
  66. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Pipeline/orchestrator.py +0 -0
  67. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Pipeline/reject_inference.py +0 -0
  68. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Pipeline/sample_analysis.py +0 -0
  69. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Pipeline/score_comparison.py +0 -0
  70. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Pipeline/score_consistency_uat.py +0 -0
  71. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Pipeline/screening_artifact.py +0 -0
  72. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Sample/Distribution_Adaptation.py +0 -0
  73. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Sample/Distribution_Adaptation.pyi +0 -0
  74. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Sample/Reject_Infer.py +0 -0
  75. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Sample/Reject_Infer.pyi +0 -0
  76. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Sample/Sample_Split.py +0 -0
  77. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Sample/Sample_Split.pyi +0 -0
  78. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/Sample/__init__.py +0 -0
  79. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/UAT/UAT_Consistency_Checker.py +0 -0
  80. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/UAT/__init__.py +0 -0
  81. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/WOE/WOE_Adapter.py +0 -0
  82. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/WOE/WOE_Adapter.pyi +0 -0
  83. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/WOE/WOE_Master.py +0 -0
  84. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/WOE/WOE_Master.pyi +0 -0
  85. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/WOE/WOE_Monotone_Binner.py +0 -0
  86. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/WOE/WOE_Monotone_Binner.pyi +0 -0
  87. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/WOE/WOE_Plot_Tool.py +0 -0
  88. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/WOE/WOE_Plot_Tool.pyi +0 -0
  89. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/WOE/WOE_Report_Builder.py +0 -0
  90. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/WOE/WOE_Report_Builder.pyi +0 -0
  91. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/WOE/WOE_Tool.py +0 -0
  92. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/WOE/WOE_Tool.pyi +0 -0
  93. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/WOE/__init__.py +0 -0
  94. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/WOE/plot_woe_tool.py +0 -0
  95. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/WOE/plot_woe_tool.pyi +0 -0
  96. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/_utils/__init__.py +0 -0
  97. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/_utils/robust.py +0 -0
  98. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/_utils/sentinels.py +0 -0
  99. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/ref_font/KaiTi.ttf +0 -0
  100. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/ref_font/WeiRuanYaHei.ttf +0 -0
  101. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/ref_font/__init__.py +0 -0
  102. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Modeling_Tool/ref_font/simsun.ttc +0 -0
  103. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Report/Report_Tool.py +0 -0
  104. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/Report/__init__.py +0 -0
  105. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/SuperModelingFactory.egg-info/SOURCES.txt +0 -0
  106. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/SuperModelingFactory.egg-info/dependency_links.txt +0 -0
  107. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/SuperModelingFactory.egg-info/not-zip-safe +0 -0
  108. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/SuperModelingFactory.egg-info/requires.txt +0 -0
  109. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/SuperModelingFactory.egg-info/top_level.txt +0 -0
  110. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/requirements.txt +0 -0
  111. {supermodelingfactory-0.5.1 → supermodelingfactory-0.5.2}/setup.cfg +0 -0
@@ -17,6 +17,28 @@ pd.options.mode.chained_assignment = None # default='warn'
17
17
 
18
18
  logging.basicConfig(level=logging.INFO, format="%(message)s")
19
19
 
20
+
21
+ def _split_odps_table_name(table_name):
22
+ """Return (qualifier, bare table name) for ODPS table identifiers.
23
+
24
+ MaxCompute accepts a project-qualified source in ``ALTER TABLE`` but the
25
+ ``RENAME TO`` target must be the bare table name within the same project.
26
+ """
27
+ table_name = str(table_name)
28
+ if "." not in table_name:
29
+ return "", table_name
30
+ qualifier, bare_name = table_name.rsplit(".", 1)
31
+ return qualifier, bare_name
32
+
33
+
34
+ def _make_related_odps_table_name(table_name, suffix):
35
+ qualifier, bare_name = _split_odps_table_name(table_name)
36
+ related_bare = f"{bare_name}{suffix}"
37
+ if qualifier:
38
+ return f"{qualifier}.{related_bare}", related_bare
39
+ return related_bare, related_bare
40
+
41
+
20
42
  class ODPSRunner(object):
21
43
  _wide_schema_patch_lock = threading.RLock()
22
44
  _wide_schema_patch_ref_count = 0
@@ -292,8 +314,9 @@ class ODPSRunner(object):
292
314
  # Atomic swap path (default from 0.4.2). If any step before the final
293
315
  # swap fails, the original table is untouched.
294
316
  ts = datetime.now().strftime('%Y%m%d%H%M%S%f')
295
- tmp_name = f"{table_name}__tmp_{ts}"
296
- old_name = f"{table_name}__old_{ts}"
317
+ _, target_rename_name = _split_odps_table_name(table_name)
318
+ tmp_name, _ = _make_related_odps_table_name(table_name, f"__tmp_{ts}")
319
+ old_name, old_rename_name = _make_related_odps_table_name(table_name, f"__old_{ts}")
297
320
 
298
321
  # Step 1: write data into the temp table. If this fails, drop the
299
322
  # partial temp table and re-raise; the target table is untouched.
@@ -321,7 +344,7 @@ class ODPSRunner(object):
321
344
  target_exists = self.o.exist_table(table_name)
322
345
  if target_exists:
323
346
  try:
324
- self.o.run_sql(f"ALTER TABLE {table_name} RENAME TO {old_name};")
347
+ self.o.run_sql(f"ALTER TABLE {table_name} RENAME TO {old_rename_name};")
325
348
  except Exception:
326
349
  # Rename of the live target failed — do not touch it. Drop the
327
350
  # tmp table so we don't leak it, then re-raise.
@@ -334,13 +357,13 @@ class ODPSRunner(object):
334
357
  raise
335
358
 
336
359
  try:
337
- self.o.run_sql(f"ALTER TABLE {tmp_name} RENAME TO {table_name};")
360
+ self.o.run_sql(f"ALTER TABLE {tmp_name} RENAME TO {target_rename_name};")
338
361
  except Exception:
339
362
  # tmp -> target rename failed. If we already moved the original,
340
363
  # try to restore it so the caller is not left with a missing table.
341
364
  if target_exists:
342
365
  try:
343
- self.o.run_sql(f"ALTER TABLE {old_name} RENAME TO {table_name};")
366
+ self.o.run_sql(f"ALTER TABLE {old_name} RENAME TO {target_rename_name};")
344
367
  logger.warning(
345
368
  f"upload_df: swap of {tmp_name} -> {table_name} failed; restored original from {old_name}"
346
369
  )
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  __author__ = "Jingkai Sun"
4
- __version__ = "0.5.1"
4
+ __version__ = "0.5.2"
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.5.1
3
+ Version: 0.5.2
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.4.1
268
+ - **Version**: 0.5.2
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.4.1
211
+ - **Version**: 0.5.2
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.5.1
3
+ Version: 0.5.2
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.4.1
268
+ - **Version**: 0.5.2
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.5.1"
15
+ version = "0.5.2"
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.5.1"),
18
+ version=os.environ.get("SMF_VERSION", "0.5.2"),
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",