ins-pricing 0.1.6__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 (169) hide show
  1. ins_pricing/README.md +60 -0
  2. ins_pricing/__init__.py +102 -0
  3. ins_pricing/governance/README.md +18 -0
  4. ins_pricing/governance/__init__.py +20 -0
  5. ins_pricing/governance/approval.py +93 -0
  6. ins_pricing/governance/audit.py +37 -0
  7. ins_pricing/governance/registry.py +99 -0
  8. ins_pricing/governance/release.py +159 -0
  9. ins_pricing/modelling/BayesOpt.py +146 -0
  10. ins_pricing/modelling/BayesOpt_USAGE.md +925 -0
  11. ins_pricing/modelling/BayesOpt_entry.py +575 -0
  12. ins_pricing/modelling/BayesOpt_incremental.py +731 -0
  13. ins_pricing/modelling/Explain_Run.py +36 -0
  14. ins_pricing/modelling/Explain_entry.py +539 -0
  15. ins_pricing/modelling/Pricing_Run.py +36 -0
  16. ins_pricing/modelling/README.md +33 -0
  17. ins_pricing/modelling/__init__.py +44 -0
  18. ins_pricing/modelling/bayesopt/__init__.py +98 -0
  19. ins_pricing/modelling/bayesopt/config_preprocess.py +303 -0
  20. ins_pricing/modelling/bayesopt/core.py +1476 -0
  21. ins_pricing/modelling/bayesopt/models.py +2196 -0
  22. ins_pricing/modelling/bayesopt/trainers.py +2446 -0
  23. ins_pricing/modelling/bayesopt/utils.py +1021 -0
  24. ins_pricing/modelling/cli_common.py +136 -0
  25. ins_pricing/modelling/explain/__init__.py +55 -0
  26. ins_pricing/modelling/explain/gradients.py +334 -0
  27. ins_pricing/modelling/explain/metrics.py +176 -0
  28. ins_pricing/modelling/explain/permutation.py +155 -0
  29. ins_pricing/modelling/explain/shap_utils.py +146 -0
  30. ins_pricing/modelling/notebook_utils.py +284 -0
  31. ins_pricing/modelling/plotting/__init__.py +45 -0
  32. ins_pricing/modelling/plotting/common.py +63 -0
  33. ins_pricing/modelling/plotting/curves.py +572 -0
  34. ins_pricing/modelling/plotting/diagnostics.py +139 -0
  35. ins_pricing/modelling/plotting/geo.py +362 -0
  36. ins_pricing/modelling/plotting/importance.py +121 -0
  37. ins_pricing/modelling/run_logging.py +133 -0
  38. ins_pricing/modelling/tests/conftest.py +8 -0
  39. ins_pricing/modelling/tests/test_cross_val_generic.py +66 -0
  40. ins_pricing/modelling/tests/test_distributed_utils.py +18 -0
  41. ins_pricing/modelling/tests/test_explain.py +56 -0
  42. ins_pricing/modelling/tests/test_geo_tokens_split.py +49 -0
  43. ins_pricing/modelling/tests/test_graph_cache.py +33 -0
  44. ins_pricing/modelling/tests/test_plotting.py +63 -0
  45. ins_pricing/modelling/tests/test_plotting_library.py +150 -0
  46. ins_pricing/modelling/tests/test_preprocessor.py +48 -0
  47. ins_pricing/modelling/watchdog_run.py +211 -0
  48. ins_pricing/pricing/README.md +44 -0
  49. ins_pricing/pricing/__init__.py +27 -0
  50. ins_pricing/pricing/calibration.py +39 -0
  51. ins_pricing/pricing/data_quality.py +117 -0
  52. ins_pricing/pricing/exposure.py +85 -0
  53. ins_pricing/pricing/factors.py +91 -0
  54. ins_pricing/pricing/monitoring.py +99 -0
  55. ins_pricing/pricing/rate_table.py +78 -0
  56. ins_pricing/production/__init__.py +21 -0
  57. ins_pricing/production/drift.py +30 -0
  58. ins_pricing/production/monitoring.py +143 -0
  59. ins_pricing/production/scoring.py +40 -0
  60. ins_pricing/reporting/README.md +20 -0
  61. ins_pricing/reporting/__init__.py +11 -0
  62. ins_pricing/reporting/report_builder.py +72 -0
  63. ins_pricing/reporting/scheduler.py +45 -0
  64. ins_pricing/setup.py +41 -0
  65. ins_pricing v2/__init__.py +23 -0
  66. ins_pricing v2/governance/__init__.py +20 -0
  67. ins_pricing v2/governance/approval.py +93 -0
  68. ins_pricing v2/governance/audit.py +37 -0
  69. ins_pricing v2/governance/registry.py +99 -0
  70. ins_pricing v2/governance/release.py +159 -0
  71. ins_pricing v2/modelling/Explain_Run.py +36 -0
  72. ins_pricing v2/modelling/Pricing_Run.py +36 -0
  73. ins_pricing v2/modelling/__init__.py +151 -0
  74. ins_pricing v2/modelling/cli_common.py +141 -0
  75. ins_pricing v2/modelling/config.py +249 -0
  76. ins_pricing v2/modelling/config_preprocess.py +254 -0
  77. ins_pricing v2/modelling/core.py +741 -0
  78. ins_pricing v2/modelling/data_container.py +42 -0
  79. ins_pricing v2/modelling/explain/__init__.py +55 -0
  80. ins_pricing v2/modelling/explain/gradients.py +334 -0
  81. ins_pricing v2/modelling/explain/metrics.py +176 -0
  82. ins_pricing v2/modelling/explain/permutation.py +155 -0
  83. ins_pricing v2/modelling/explain/shap_utils.py +146 -0
  84. ins_pricing v2/modelling/features.py +215 -0
  85. ins_pricing v2/modelling/model_manager.py +148 -0
  86. ins_pricing v2/modelling/model_plotting.py +463 -0
  87. ins_pricing v2/modelling/models.py +2203 -0
  88. ins_pricing v2/modelling/notebook_utils.py +294 -0
  89. ins_pricing v2/modelling/plotting/__init__.py +45 -0
  90. ins_pricing v2/modelling/plotting/common.py +63 -0
  91. ins_pricing v2/modelling/plotting/curves.py +572 -0
  92. ins_pricing v2/modelling/plotting/diagnostics.py +139 -0
  93. ins_pricing v2/modelling/plotting/geo.py +362 -0
  94. ins_pricing v2/modelling/plotting/importance.py +121 -0
  95. ins_pricing v2/modelling/run_logging.py +133 -0
  96. ins_pricing v2/modelling/tests/conftest.py +8 -0
  97. ins_pricing v2/modelling/tests/test_cross_val_generic.py +66 -0
  98. ins_pricing v2/modelling/tests/test_distributed_utils.py +18 -0
  99. ins_pricing v2/modelling/tests/test_explain.py +56 -0
  100. ins_pricing v2/modelling/tests/test_geo_tokens_split.py +49 -0
  101. ins_pricing v2/modelling/tests/test_graph_cache.py +33 -0
  102. ins_pricing v2/modelling/tests/test_plotting.py +63 -0
  103. ins_pricing v2/modelling/tests/test_plotting_library.py +150 -0
  104. ins_pricing v2/modelling/tests/test_preprocessor.py +48 -0
  105. ins_pricing v2/modelling/trainers.py +2447 -0
  106. ins_pricing v2/modelling/utils.py +1020 -0
  107. ins_pricing v2/modelling/watchdog_run.py +211 -0
  108. ins_pricing v2/pricing/__init__.py +27 -0
  109. ins_pricing v2/pricing/calibration.py +39 -0
  110. ins_pricing v2/pricing/data_quality.py +117 -0
  111. ins_pricing v2/pricing/exposure.py +85 -0
  112. ins_pricing v2/pricing/factors.py +91 -0
  113. ins_pricing v2/pricing/monitoring.py +99 -0
  114. ins_pricing v2/pricing/rate_table.py +78 -0
  115. ins_pricing v2/production/__init__.py +21 -0
  116. ins_pricing v2/production/drift.py +30 -0
  117. ins_pricing v2/production/monitoring.py +143 -0
  118. ins_pricing v2/production/scoring.py +40 -0
  119. ins_pricing v2/reporting/__init__.py +11 -0
  120. ins_pricing v2/reporting/report_builder.py +72 -0
  121. ins_pricing v2/reporting/scheduler.py +45 -0
  122. ins_pricing v2/scripts/BayesOpt_incremental.py +722 -0
  123. ins_pricing v2/scripts/Explain_entry.py +545 -0
  124. ins_pricing v2/scripts/__init__.py +1 -0
  125. ins_pricing v2/scripts/train.py +568 -0
  126. ins_pricing v2/setup.py +55 -0
  127. ins_pricing v2/smoke_test.py +28 -0
  128. ins_pricing-0.1.6.dist-info/METADATA +78 -0
  129. ins_pricing-0.1.6.dist-info/RECORD +169 -0
  130. ins_pricing-0.1.6.dist-info/WHEEL +5 -0
  131. ins_pricing-0.1.6.dist-info/top_level.txt +4 -0
  132. user_packages/__init__.py +105 -0
  133. user_packages legacy/BayesOpt.py +5659 -0
  134. user_packages legacy/BayesOpt_entry.py +513 -0
  135. user_packages legacy/BayesOpt_incremental.py +685 -0
  136. user_packages legacy/Pricing_Run.py +36 -0
  137. user_packages legacy/Try/BayesOpt Legacy251213.py +3719 -0
  138. user_packages legacy/Try/BayesOpt Legacy251215.py +3758 -0
  139. user_packages legacy/Try/BayesOpt lagecy251201.py +3506 -0
  140. user_packages legacy/Try/BayesOpt lagecy251218.py +3992 -0
  141. user_packages legacy/Try/BayesOpt legacy.py +3280 -0
  142. user_packages legacy/Try/BayesOpt.py +838 -0
  143. user_packages legacy/Try/BayesOptAll.py +1569 -0
  144. user_packages legacy/Try/BayesOptAllPlatform.py +909 -0
  145. user_packages legacy/Try/BayesOptCPUGPU.py +1877 -0
  146. user_packages legacy/Try/BayesOptSearch.py +830 -0
  147. user_packages legacy/Try/BayesOptSearchOrigin.py +829 -0
  148. user_packages legacy/Try/BayesOptV1.py +1911 -0
  149. user_packages legacy/Try/BayesOptV10.py +2973 -0
  150. user_packages legacy/Try/BayesOptV11.py +3001 -0
  151. user_packages legacy/Try/BayesOptV12.py +3001 -0
  152. user_packages legacy/Try/BayesOptV2.py +2065 -0
  153. user_packages legacy/Try/BayesOptV3.py +2209 -0
  154. user_packages legacy/Try/BayesOptV4.py +2342 -0
  155. user_packages legacy/Try/BayesOptV5.py +2372 -0
  156. user_packages legacy/Try/BayesOptV6.py +2759 -0
  157. user_packages legacy/Try/BayesOptV7.py +2832 -0
  158. user_packages legacy/Try/BayesOptV8Codex.py +2731 -0
  159. user_packages legacy/Try/BayesOptV8Gemini.py +2614 -0
  160. user_packages legacy/Try/BayesOptV9.py +2927 -0
  161. user_packages legacy/Try/BayesOpt_entry legacy.py +313 -0
  162. user_packages legacy/Try/ModelBayesOptSearch.py +359 -0
  163. user_packages legacy/Try/ResNetBayesOptSearch.py +249 -0
  164. user_packages legacy/Try/XgbBayesOptSearch.py +121 -0
  165. user_packages legacy/Try/xgbbayesopt.py +523 -0
  166. user_packages legacy/__init__.py +19 -0
  167. user_packages legacy/cli_common.py +124 -0
  168. user_packages legacy/notebook_utils.py +228 -0
  169. user_packages legacy/watchdog_run.py +202 -0
@@ -0,0 +1,78 @@
1
+ Metadata-Version: 2.4
2
+ Name: ins_pricing
3
+ Version: 0.1.6
4
+ Summary: Reusable modelling, pricing, governance, and reporting utilities.
5
+ Author: meishi125478
6
+ License: Proprietary
7
+ Keywords: pricing,insurance,bayesopt,ml
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3 :: Only
10
+ Classifier: Programming Language :: Python :: 3.9
11
+ Classifier: License :: Other/Proprietary License
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Intended Audience :: Developers
14
+ Requires-Python: >=3.9
15
+ Description-Content-Type: text/markdown
16
+ Requires-Dist: numpy>=1.20
17
+ Requires-Dist: pandas>=1.4
18
+ Requires-Dist: torch>=1.13
19
+ Requires-Dist: optuna>=3.0
20
+ Requires-Dist: xgboost>=1.6
21
+ Requires-Dist: scikit-learn>=1.1
22
+ Requires-Dist: statsmodels>=0.13
23
+ Requires-Dist: joblib>=1.2
24
+ Requires-Dist: matplotlib>=3.5
25
+ Requires-Dist: shap>=0.41
26
+ Requires-Dist: contextily>=1.3
27
+ Requires-Dist: pynndescent>=0.5
28
+ Requires-Dist: torch-geometric>=2.3
29
+
30
+ # Ins-Pricing Overview
31
+
32
+ This repository contains risk modeling and optimization notebooks, scripts, and a reusable training framework. The main module is `ins_pricing/modelling/bayesopt`.
33
+
34
+ ## Top-level structure
35
+
36
+ - `Auto Info/`: vehicle info crawling, preprocessing, and embedding experiments
37
+ - `GLM and LGB/`: GLM/LightGBM modeling experiments
38
+ - `OpenAI/`: OpenAI notebook prototypes
39
+ - `Python Code/`: runnable scripts and utilities
40
+ - `others/`: temporary or miscellaneous notebooks
41
+ - `ins_pricing/`: reusable training framework and CLI tools (BayesOpt subpackage)
42
+ - `user_packages legacy/`: historical snapshot
43
+
44
+ Note: `ins_pricing/modelling/demo/` is kept in the repo only and is not shipped in the PyPI package.
45
+
46
+ ## Quickstart
47
+
48
+ Run the following commands from the repo root:
49
+
50
+ ```bash
51
+ python -m venv .venv
52
+ source .venv/bin/activate # Windows: .\\.venv\\Scripts\\activate
53
+ pip install pandas scikit-learn lightgbm seaborn matplotlib
54
+ ```
55
+
56
+ Start notebooks:
57
+
58
+ ```bash
59
+ jupyter lab
60
+ ```
61
+
62
+ ## BayesOpt entry points
63
+
64
+ - CLI batch training: `python ins_pricing/modelling/BayesOpt_entry.py --config-json <path>`
65
+ - Incremental training: `python ins_pricing/modelling/BayesOpt_incremental.py --config-json <path>`
66
+ - Python API: `from ins_pricing.modelling import BayesOptModel`
67
+
68
+ ## Tests
69
+
70
+ ```bash
71
+ pytest -q
72
+ ```
73
+
74
+ ## Data and outputs
75
+
76
+ - Put shared data under `data/` (create it if needed).
77
+ - Training outputs are written to `plot/`, `Results/`, and `model/` by default.
78
+ - Keep secrets and large files outside the repo and use environment variables or `.env`.
@@ -0,0 +1,169 @@
1
+ ins_pricing/README.md,sha256=vufPPg719SZzrtcplnIN5BJvBsXKzIgxCUeCrWUzobM,2495
2
+ ins_pricing/__init__.py,sha256=hhZymgqtvilNC4WrZFXuT3-o0INSoVuRR-HA5EqyGAY,3085
3
+ ins_pricing/setup.py,sha256=XR-IDIJtpBABtT95oMksZq_9Sr0DB_pzCiXH7rg-zw4,1237
4
+ ins_pricing/governance/README.md,sha256=XnXLS5RPzWhEiicJ3WtGmpN935jppHhPftA9Lo2DPnQ,511
5
+ ins_pricing/governance/__init__.py,sha256=d8tiDhOvHvAvgSohY1xv0vuEeHj8Gl1apQtw7ryEKM0,517
6
+ ins_pricing/governance/approval.py,sha256=cjJQjU1ziR-d-9wVSXyMyX6S5zijJqDWERZNxjqGAUE,2879
7
+ ins_pricing/governance/audit.py,sha256=f0aw-LaOxH5NGzxwczeLrGMJcxO-JDRn99BpI55KRn4,1040
8
+ ins_pricing/governance/registry.py,sha256=2uxQL6qMGY5IYWJti9MpaV_auvL--piJaasFrX20ghk,3139
9
+ ins_pricing/governance/release.py,sha256=ltyFIdeKbwj9fnEDxcQCURaQ5Zc_j0mqXFPNunmX_NQ,4743
10
+ ins_pricing/modelling/BayesOpt.py,sha256=i2tB3c6EeucjKAsHyicGDNU7DVVCTihg-TgSoM1y18E,3332
11
+ ins_pricing/modelling/BayesOpt_USAGE.md,sha256=x_CXot3RvGRYtt2xU2lrEfmtTbh2KGTryC3BJEZaoBw,39333
12
+ ins_pricing/modelling/BayesOpt_entry.py,sha256=55odKaWpnFJzdNuEGzZMkvqawgsb-WVgc8Y8464MscY,21577
13
+ ins_pricing/modelling/BayesOpt_incremental.py,sha256=yE3qTXV63c8Jy8aKlY0vtx-Grv5uUbN-tuWRBk_osPE,28564
14
+ ins_pricing/modelling/Explain_Run.py,sha256=y-OKxmT475iRtDBukXh7jwiBiRmjh7ywCVhRFKk4EZw,962
15
+ ins_pricing/modelling/Explain_entry.py,sha256=e7EviU2fIWwyBsmoTq2ZM_rDKjZypQnFH68Q_rZVz1U,21330
16
+ ins_pricing/modelling/Pricing_Run.py,sha256=4BrUHhy4auzlbXopdocMV0Qn9_1b1Rjheq_sc5wM6D0,1009
17
+ ins_pricing/modelling/README.md,sha256=hRgDZotkNsdVgIvzAraKja_Id3m7TZJM_3-qtbkMdyM,1770
18
+ ins_pricing/modelling/__init__.py,sha256=bVDP11zjYvx6-nLwn2Gpa7qAriYVyjkBqaC569ww7RE,1228
19
+ ins_pricing/modelling/cli_common.py,sha256=RcClZFdnvLDy7oo4DQ034ggaL-0_4pWcboKwXAUdkzQ,4506
20
+ ins_pricing/modelling/notebook_utils.py,sha256=but3_avtrNFEKfG8YtfJisNfABVbpYjkHDzD1ZpJSDo,10611
21
+ ins_pricing/modelling/run_logging.py,sha256=V3Wh2EV6c1Mo0QTvfe4hl2J4LOR6bdQsT210o__YBWk,3677
22
+ ins_pricing/modelling/watchdog_run.py,sha256=-gv72vcZqTYCvtDgnQTbSUWH_3icmraf7F09IX8_etI,6176
23
+ ins_pricing/modelling/bayesopt/__init__.py,sha256=5WGZeQI9B1P9OXQUgq7XogcjAbv2oXnp076bW16e_ss,1955
24
+ ins_pricing/modelling/bayesopt/config_preprocess.py,sha256=3CP_zsCcZnCTb2qXkvFNStL6lKNYeOT3uNypVw8bB4I,12326
25
+ ins_pricing/modelling/bayesopt/core.py,sha256=I6pNKIhYTLGe4WxDWxX5lOd6Of99vub_HL3P57qjpwE,63897
26
+ ins_pricing/modelling/bayesopt/models.py,sha256=ajUTKoaumz1mKYnT3Toi7tUHkNO1Wlqex8kpoI2cv2I,90892
27
+ ins_pricing/modelling/bayesopt/trainers.py,sha256=bHwr5iHCB-TgcvGaAZRWOPZLFLSkTHLDYW2mCArvDcc,103641
28
+ ins_pricing/modelling/bayesopt/utils.py,sha256=B837DYa5-6IY6A0_e-NiZY-VAJKUaQFMWEQ-LDLx1yI,41815
29
+ ins_pricing/modelling/explain/__init__.py,sha256=CPoGzGu8TTO3FOXjxoXC13VkuIDCf3YTH6L3BqJq3Ok,1171
30
+ ins_pricing/modelling/explain/gradients.py,sha256=9TqCws_p49nFxVMcjVxe4KCZ7frezeL0uV_LCdoM5yo,11088
31
+ ins_pricing/modelling/explain/metrics.py,sha256=K_xOY7ZrHWhbJ79RNB7eXN3VXeTe8vq68ZLH2BlZufA,5389
32
+ ins_pricing/modelling/explain/permutation.py,sha256=YErQQtCbYzv3AbaWgOb3vvrUBRgjA-_iTZrJPBFGnxU,5616
33
+ ins_pricing/modelling/explain/shap_utils.py,sha256=IkijzxBeawyDIXiVxUUkvcC0MrHnttSKsMYOjM-wt-k,4353
34
+ ins_pricing/modelling/plotting/__init__.py,sha256=BBQKcE7IYUYObFrjpSnfNS6rmzc80Lae7oEqxKz-vEk,1058
35
+ ins_pricing/modelling/plotting/common.py,sha256=_kFq7JMA0LnKIp4bqAFvr-24VaHjj9pegDMm1qP9_7Y,1439
36
+ ins_pricing/modelling/plotting/curves.py,sha256=hGjpuALDwO0wDyWkIsBHZ4rqDGwPnkNdDZCIdgLW4II,18419
37
+ ins_pricing/modelling/plotting/diagnostics.py,sha256=Tb1duBgLJRU_apK_1a68SxsgCgg_KJ4tHazi8wPOx1Y,4267
38
+ ins_pricing/modelling/plotting/geo.py,sha256=sRJTYOcAphNFM-oww4qbw9MoZneBCJtur96sYuqSNkw,11009
39
+ ins_pricing/modelling/plotting/importance.py,sha256=xs3l9uW_rCrakoA__fanIph6DK2jN_DugsKASAzteJU,3666
40
+ ins_pricing/modelling/tests/conftest.py,sha256=0KUXnkTgIGEIsf0J4uzIx5Kq4JkDyFo81Mv0qvIzW9k,180
41
+ ins_pricing/modelling/tests/test_cross_val_generic.py,sha256=iLZOFmdyrycB15lFWoQphkFlEjzZTozQXTLVOHLw2Qg,1721
42
+ ins_pricing/modelling/tests/test_distributed_utils.py,sha256=9cStpDw7jPdQwmm0Po-G2tB04uzSR1CoOUZMLuB61yI,466
43
+ ins_pricing/modelling/tests/test_explain.py,sha256=NZqKYuL-eSf9eC5ttjcMirfOc48ORMXZQm5PjmYk4jY,1445
44
+ ins_pricing/modelling/tests/test_geo_tokens_split.py,sha256=Ti57IynKB0aWOosr0g2RcZlDZyZC012XZ-hm6tWXBJg,1554
45
+ ins_pricing/modelling/tests/test_graph_cache.py,sha256=QEI5cLLtQ9_zwRR50KqUf8qxo9Jcp1WLxIGs4dSoMNk,821
46
+ ins_pricing/modelling/tests/test_plotting.py,sha256=OdN9YJGBauQtl5Il75YNpOAxN405Hx9gZwkwf7_hh5U,1868
47
+ ins_pricing/modelling/tests/test_plotting_library.py,sha256=SB5RjKTaPydK848V0xpqEaJtEWhRv6ZfnHmnnzjaPh4,4079
48
+ ins_pricing/modelling/tests/test_preprocessor.py,sha256=FqbKltV803Pd-ZY1xBc4XF1T-INDuUliaVcMIDPmBxI,1438
49
+ ins_pricing/pricing/README.md,sha256=PEcyw5oDkqJHOqnNdzBdbbpZwG4SOlnhMwY-owwQ0GI,1064
50
+ ins_pricing/pricing/__init__.py,sha256=XFplK3zkxPyNQZJd1Gn6_VvpwHLedMqxAd_Vn9tqsTE,881
51
+ ins_pricing/pricing/calibration.py,sha256=9j_kDW5Fxb9weDMaaRJE0QjAhT98lL0Ifhls6VIRnY0,1158
52
+ ins_pricing/pricing/data_quality.py,sha256=8FecBE60cABsTZE7HETuoKCEOXIrirGAFgg5wQCZrmU,4043
53
+ ins_pricing/pricing/exposure.py,sha256=rw8kKZ_1QdeGTCm13ck9NXrRBPt6TunxRw2s_qkHYkg,2575
54
+ ins_pricing/pricing/factors.py,sha256=RqZRXvW70rKkTIOxtK4MGeyDD3PrOFJ19hVc6rLYFzQ,2937
55
+ ins_pricing/pricing/monitoring.py,sha256=sGkPICaBYYwZPKGJtIeg6aURGs0dLhCBNudCTFeh3R4,3271
56
+ ins_pricing/pricing/rate_table.py,sha256=llDW95i7gR6cCtGFwcGqgpgFvOOPCURaJWmuQw1oce8,2473
57
+ ins_pricing/production/__init__.py,sha256=KLENzYi7WmVUMrL-GrvXK7tF5r_SCMq1-xLYUxk0URE,403
58
+ ins_pricing/production/drift.py,sha256=PwJk6dde9AEn-59PvF62f3_b3fQk4yeG5SQCh8F-c_A,774
59
+ ins_pricing/production/monitoring.py,sha256=A6Hyc5WSKhFkDZOIrqmFteuDee75CdcwdTq644vrk-U,4836
60
+ ins_pricing/production/scoring.py,sha256=yFmMmbYb7w_RC4uZOCMnAjLMRcjXQWIuT1nsfu-bwuc,1379
61
+ ins_pricing/reporting/README.md,sha256=kTVdB6pNewwh1HlCHrI2SzWTgprtQoQprLRQ2qLdgNA,486
62
+ ins_pricing/reporting/__init__.py,sha256=Se5Cdomv9_RwkIDizkw1yx4iCMcjhjTHb4pZK6K895c,242
63
+ ins_pricing/reporting/report_builder.py,sha256=53ZFqGUx2isAoigT5IDwvXkek67zN7-6IgKeGpJhO7c,2241
64
+ ins_pricing/reporting/scheduler.py,sha256=9koG_1cmWvLqrS66uzMJuAlYI2VTkynV19ssB2TtcKU,1336
65
+ ins_pricing v2/__init__.py,sha256=Dt60WIr47kXjTz6xfE5Y_PEGlFwlYpB79KAolY-4jV8,672
66
+ ins_pricing v2/setup.py,sha256=xtN89Fchm9cZZzkeHzam8ju5k4U0pkQWYirsB22O9Po,1690
67
+ ins_pricing v2/smoke_test.py,sha256=kpqFpF-29wr35wMpL0YI_EP87xxbr7wONi7Zzc71OFE,1034
68
+ ins_pricing v2/governance/__init__.py,sha256=d8tiDhOvHvAvgSohY1xv0vuEeHj8Gl1apQtw7ryEKM0,517
69
+ ins_pricing v2/governance/approval.py,sha256=cjJQjU1ziR-d-9wVSXyMyX6S5zijJqDWERZNxjqGAUE,2879
70
+ ins_pricing v2/governance/audit.py,sha256=f0aw-LaOxH5NGzxwczeLrGMJcxO-JDRn99BpI55KRn4,1040
71
+ ins_pricing v2/governance/registry.py,sha256=2uxQL6qMGY5IYWJti9MpaV_auvL--piJaasFrX20ghk,3139
72
+ ins_pricing v2/governance/release.py,sha256=ltyFIdeKbwj9fnEDxcQCURaQ5Zc_j0mqXFPNunmX_NQ,4743
73
+ ins_pricing v2/modelling/Explain_Run.py,sha256=y-OKxmT475iRtDBukXh7jwiBiRmjh7ywCVhRFKk4EZw,962
74
+ ins_pricing v2/modelling/Pricing_Run.py,sha256=4BrUHhy4auzlbXopdocMV0Qn9_1b1Rjheq_sc5wM6D0,1009
75
+ ins_pricing v2/modelling/__init__.py,sha256=csrWBr8eaSstDhkAUK1Gyxmunjb3wHhNdWX-Ce2Uylk,3559
76
+ ins_pricing v2/modelling/cli_common.py,sha256=ynitazjJ1brbQ5t0u9w9xNwhngNRTANSecl-KnOtVh0,4679
77
+ ins_pricing v2/modelling/config.py,sha256=HVibEHzUzPYIFhZUEixI_3vG16nGb014jKWzz5bYKZI,8881
78
+ ins_pricing v2/modelling/config_preprocess.py,sha256=53B-5wiQxVwtm2YOqSjPRFh_N70M3NzgutV0Fm0PUZI,10268
79
+ ins_pricing v2/modelling/core.py,sha256=Pi898qZziIcK5VeHBCU3BRPNh27elV2mdYs9yfOYVEk,32120
80
+ ins_pricing v2/modelling/data_container.py,sha256=jOvZNEWRvY2pxHCwWI1YWN1XWUP7r4fKG5fu1-fTdgk,1657
81
+ ins_pricing v2/modelling/features.py,sha256=OzyR_RRVkESpzvrlq6o7VCweudgOT7574ZpMZDcdTUs,8862
82
+ ins_pricing v2/modelling/model_manager.py,sha256=UaIDi3f3BcXo_QIS3jdS77n6OAaGtIQI4NUYCPPTroc,7039
83
+ ins_pricing v2/modelling/model_plotting.py,sha256=cQfimNGdzvN3fweAx1L2NGus0MODpTNtNiS_c_7M_FE,16620
84
+ ins_pricing v2/modelling/models.py,sha256=WTzkgx4JaClf-N458gpvyqW_cf6KozBFAM_FfGvKNic,91183
85
+ ins_pricing v2/modelling/notebook_utils.py,sha256=zPyHjsyUWl-aDJwxPzpQrXrFjZzWA7yepYsQ0lFKnTY,10638
86
+ ins_pricing v2/modelling/run_logging.py,sha256=V3Wh2EV6c1Mo0QTvfe4hl2J4LOR6bdQsT210o__YBWk,3677
87
+ ins_pricing v2/modelling/trainers.py,sha256=ejIhdgZxrMkSX-8Dt_ClzeED8iscCrf05VKiXHa9wQs,103676
88
+ ins_pricing v2/modelling/utils.py,sha256=An-4yDrRChxyGP1bg9T2xxEsVPJPwAhzGyO_DZ5rf4M,41741
89
+ ins_pricing v2/modelling/watchdog_run.py,sha256=-gv72vcZqTYCvtDgnQTbSUWH_3icmraf7F09IX8_etI,6176
90
+ ins_pricing v2/modelling/explain/__init__.py,sha256=CPoGzGu8TTO3FOXjxoXC13VkuIDCf3YTH6L3BqJq3Ok,1171
91
+ ins_pricing v2/modelling/explain/gradients.py,sha256=9TqCws_p49nFxVMcjVxe4KCZ7frezeL0uV_LCdoM5yo,11088
92
+ ins_pricing v2/modelling/explain/metrics.py,sha256=K_xOY7ZrHWhbJ79RNB7eXN3VXeTe8vq68ZLH2BlZufA,5389
93
+ ins_pricing v2/modelling/explain/permutation.py,sha256=YErQQtCbYzv3AbaWgOb3vvrUBRgjA-_iTZrJPBFGnxU,5616
94
+ ins_pricing v2/modelling/explain/shap_utils.py,sha256=IkijzxBeawyDIXiVxUUkvcC0MrHnttSKsMYOjM-wt-k,4353
95
+ ins_pricing v2/modelling/plotting/__init__.py,sha256=BBQKcE7IYUYObFrjpSnfNS6rmzc80Lae7oEqxKz-vEk,1058
96
+ ins_pricing v2/modelling/plotting/common.py,sha256=_kFq7JMA0LnKIp4bqAFvr-24VaHjj9pegDMm1qP9_7Y,1439
97
+ ins_pricing v2/modelling/plotting/curves.py,sha256=hGjpuALDwO0wDyWkIsBHZ4rqDGwPnkNdDZCIdgLW4II,18419
98
+ ins_pricing v2/modelling/plotting/diagnostics.py,sha256=Tb1duBgLJRU_apK_1a68SxsgCgg_KJ4tHazi8wPOx1Y,4267
99
+ ins_pricing v2/modelling/plotting/geo.py,sha256=sRJTYOcAphNFM-oww4qbw9MoZneBCJtur96sYuqSNkw,11009
100
+ ins_pricing v2/modelling/plotting/importance.py,sha256=xs3l9uW_rCrakoA__fanIph6DK2jN_DugsKASAzteJU,3666
101
+ ins_pricing v2/modelling/tests/conftest.py,sha256=0KUXnkTgIGEIsf0J4uzIx5Kq4JkDyFo81Mv0qvIzW9k,180
102
+ ins_pricing v2/modelling/tests/test_cross_val_generic.py,sha256=iLZOFmdyrycB15lFWoQphkFlEjzZTozQXTLVOHLw2Qg,1721
103
+ ins_pricing v2/modelling/tests/test_distributed_utils.py,sha256=9cStpDw7jPdQwmm0Po-G2tB04uzSR1CoOUZMLuB61yI,466
104
+ ins_pricing v2/modelling/tests/test_explain.py,sha256=NZqKYuL-eSf9eC5ttjcMirfOc48ORMXZQm5PjmYk4jY,1445
105
+ ins_pricing v2/modelling/tests/test_geo_tokens_split.py,sha256=Ti57IynKB0aWOosr0g2RcZlDZyZC012XZ-hm6tWXBJg,1554
106
+ ins_pricing v2/modelling/tests/test_graph_cache.py,sha256=QEI5cLLtQ9_zwRR50KqUf8qxo9Jcp1WLxIGs4dSoMNk,821
107
+ ins_pricing v2/modelling/tests/test_plotting.py,sha256=OdN9YJGBauQtl5Il75YNpOAxN405Hx9gZwkwf7_hh5U,1868
108
+ ins_pricing v2/modelling/tests/test_plotting_library.py,sha256=SB5RjKTaPydK848V0xpqEaJtEWhRv6ZfnHmnnzjaPh4,4079
109
+ ins_pricing v2/modelling/tests/test_preprocessor.py,sha256=FqbKltV803Pd-ZY1xBc4XF1T-INDuUliaVcMIDPmBxI,1438
110
+ ins_pricing v2/pricing/__init__.py,sha256=XFplK3zkxPyNQZJd1Gn6_VvpwHLedMqxAd_Vn9tqsTE,881
111
+ ins_pricing v2/pricing/calibration.py,sha256=9j_kDW5Fxb9weDMaaRJE0QjAhT98lL0Ifhls6VIRnY0,1158
112
+ ins_pricing v2/pricing/data_quality.py,sha256=8FecBE60cABsTZE7HETuoKCEOXIrirGAFgg5wQCZrmU,4043
113
+ ins_pricing v2/pricing/exposure.py,sha256=rw8kKZ_1QdeGTCm13ck9NXrRBPt6TunxRw2s_qkHYkg,2575
114
+ ins_pricing v2/pricing/factors.py,sha256=RqZRXvW70rKkTIOxtK4MGeyDD3PrOFJ19hVc6rLYFzQ,2937
115
+ ins_pricing v2/pricing/monitoring.py,sha256=sGkPICaBYYwZPKGJtIeg6aURGs0dLhCBNudCTFeh3R4,3271
116
+ ins_pricing v2/pricing/rate_table.py,sha256=llDW95i7gR6cCtGFwcGqgpgFvOOPCURaJWmuQw1oce8,2473
117
+ ins_pricing v2/production/__init__.py,sha256=KLENzYi7WmVUMrL-GrvXK7tF5r_SCMq1-xLYUxk0URE,403
118
+ ins_pricing v2/production/drift.py,sha256=PwJk6dde9AEn-59PvF62f3_b3fQk4yeG5SQCh8F-c_A,774
119
+ ins_pricing v2/production/monitoring.py,sha256=A6Hyc5WSKhFkDZOIrqmFteuDee75CdcwdTq644vrk-U,4836
120
+ ins_pricing v2/production/scoring.py,sha256=yFmMmbYb7w_RC4uZOCMnAjLMRcjXQWIuT1nsfu-bwuc,1379
121
+ ins_pricing v2/reporting/__init__.py,sha256=Se5Cdomv9_RwkIDizkw1yx4iCMcjhjTHb4pZK6K895c,242
122
+ ins_pricing v2/reporting/report_builder.py,sha256=53ZFqGUx2isAoigT5IDwvXkek67zN7-6IgKeGpJhO7c,2241
123
+ ins_pricing v2/reporting/scheduler.py,sha256=9koG_1cmWvLqrS66uzMJuAlYI2VTkynV19ssB2TtcKU,1336
124
+ ins_pricing v2/scripts/BayesOpt_incremental.py,sha256=L6pKQqA_Crl0U7pLSgRBAR66TQjxeRm5R0BjACwrULo,28139
125
+ ins_pricing v2/scripts/Explain_entry.py,sha256=84uqBShImbwkjKInPjsI0zGY_NCxMznUjXZSMYBfT5I,21459
126
+ ins_pricing v2/scripts/__init__.py,sha256=xquWzO2DHKf6zh7btqAcD98T4bCTYT6NhCHspushwWs,49
127
+ ins_pricing v2/scripts/train.py,sha256=8MDpLpW74UfF79rS9TfWT5NrTtE7yjPD7u3GoduGJqI,21173
128
+ user_packages/__init__.py,sha256=2A4JJiIriqlBBQf-ssnV40BMEY_MW07x01v5fVZLEPI,3217
129
+ user_packages legacy/BayesOpt.py,sha256=T8gisEsAWDOB0Pt-fGnH1GsEyGPKBYK2cBjlGbFC6bk,240270
130
+ user_packages legacy/BayesOpt_entry.py,sha256=xOy8mFNk5jIrR_qTKqVV-BEt9zm9UA4lzu52Mm4E7ik,19123
131
+ user_packages legacy/BayesOpt_incremental.py,sha256=Br291-4UrkQ6du2MU8iEguSFJ170cNjT2Gx-gUVCQgk,26699
132
+ user_packages legacy/Pricing_Run.py,sha256=iRJlW0Nr7lq594x_zhzfIK3duFrn92V1Cbug7hyrB2M,1011
133
+ user_packages legacy/__init__.py,sha256=_fuBWcyZWl6fPOClsZH_lvDhFIOWFzvnuA8Drp05txc,370
134
+ user_packages legacy/cli_common.py,sha256=U5vgmoedlZiSMVGt2rDjKEl_ge6hg3EIHwnkHgV0rdk,3963
135
+ user_packages legacy/notebook_utils.py,sha256=Jx9271qsdMUnWi0ep1zM6PqMYVjRiQtnJJo-h-HsoM0,8483
136
+ user_packages legacy/watchdog_run.py,sha256=8uI0tVtU3r1bnFgED5eg-ZOBBYKV9_qCrBWlQRHSuAM,5813
137
+ user_packages legacy/Try/BayesOpt Legacy251213.py,sha256=YAr6bnt58mh5Z6AfXsWjL7fyANmrLbxa6V3dacGQn5o,155961
138
+ user_packages legacy/Try/BayesOpt Legacy251215.py,sha256=R2mjaTONhI23lP2WmKu0axoFSynh0wZMeUoycpuD_Rw,155164
139
+ user_packages legacy/Try/BayesOpt lagecy251201.py,sha256=Gc6guUXudWvT6GxSbLw7P6Xu2vrtzuLTne3YskQ4O5U,145225
140
+ user_packages legacy/Try/BayesOpt lagecy251218.py,sha256=ZY6mShf05q1Ex1lGJZwBfoegFvHrM61ZF8an2j024Kk,165573
141
+ user_packages legacy/Try/BayesOpt legacy.py,sha256=NM9-oGwePnOo7tn9EUZM_Hf_irK9fEe5PEfsGrG3Cw4,132232
142
+ user_packages legacy/Try/BayesOpt.py,sha256=JDJq3KFA_Q7G2qvI4hlXB5wXnXrL6Pr_wb7nLQhiB8c,35210
143
+ user_packages legacy/Try/BayesOptAll.py,sha256=EkAL57wef53DLRCKOpniB4fy4tE-I-sKz9zjt4_X_bU,60324
144
+ user_packages legacy/Try/BayesOptAllPlatform.py,sha256=gMlOCwhWUATyzRcuqHReX9GuF_c-s0UH5Zl3xbHOkG4,37932
145
+ user_packages legacy/Try/BayesOptCPUGPU.py,sha256=xZnVo7l98Z0QC3sxrbw2SYYVXwml9TCz9rmt8a3t1YQ,71388
146
+ user_packages legacy/Try/BayesOptSearch.py,sha256=JwnPBCzLIUFVyJWHisTTfv1VPWXgK0izzyw6jgnREgU,35260
147
+ user_packages legacy/Try/BayesOptSearchOrigin.py,sha256=dgEoAUhEQBaSXcf6MzIwwJ29QatQvyhGY_S3sP0w6Js,35270
148
+ user_packages legacy/Try/BayesOptV1.py,sha256=sBRR9DhKlMB6IGtpVcx_HXpMbaU5BlgdulV8OhI2LaI,72794
149
+ user_packages legacy/Try/BayesOptV10.py,sha256=rqLgRZ9dYuCuCsH4so-cwPFhCFp7iPcjVhX6kST7AG4,119129
150
+ user_packages legacy/Try/BayesOptV11.py,sha256=2Un-ezvXwSgsefB_2-4ZJumazyChJBAff21FJkyqe3w,120405
151
+ user_packages legacy/Try/BayesOptV12.py,sha256=D1k-2R-GTAdHrOpD9t7VrjSKsAKWx4rc_k_mT0a13Ls,120417
152
+ user_packages legacy/Try/BayesOptV2.py,sha256=RkcHVE6whi63tatiV1wRF25LYPiYll9kWUmYACuHqR0,79754
153
+ user_packages legacy/Try/BayesOptV3.py,sha256=1Jdyc_CyUTHKeI_3NE3tCrbWe849eToublYsaqVzXg0,83634
154
+ user_packages legacy/Try/BayesOptV4.py,sha256=mcp4MeouEhc85WouvvljRMH40eetlvPw0TEJQ6IMjwA,89606
155
+ user_packages legacy/Try/BayesOptV5.py,sha256=eU5n6m9-A5Qph86Bv42oy3IcfF6di8EaFoc9fyf5gaY,90449
156
+ user_packages legacy/Try/BayesOptV6.py,sha256=rwvCb_HKoXREj7kcrvS5PRzI2-WyqW2tVDiUw9alIQo,106994
157
+ user_packages legacy/Try/BayesOptV7.py,sha256=EncqnYSmdGjyPKuqzpBprfuliZQBMyCVanSltHm5wqc,110011
158
+ user_packages legacy/Try/BayesOptV8Codex.py,sha256=9q_1hkSQYXlms_wHkdePQ_EJyXTAEIHbmN6AfYK8MBE,106975
159
+ user_packages legacy/Try/BayesOptV8Gemini.py,sha256=zNohNNKGEGTwi5Kw-p4JiY-1cJQKGF9sIv0f_Qu0xd8,105429
160
+ user_packages legacy/Try/BayesOptV9.py,sha256=17iUm9ogxh2vH1rJI5UH2Czkcv1bH-Cd4uJ-devpO1c,117273
161
+ user_packages legacy/Try/BayesOpt_entry legacy.py,sha256=vFd8nY73HAQVGGsfyjemXsv6Vzt3vji1dHBuCSfKbI0,10163
162
+ user_packages legacy/Try/ModelBayesOptSearch.py,sha256=Co--dkbKxqpl-2tP9zEYmcEosYtOrAxarypNi2svVoc,16772
163
+ user_packages legacy/Try/ResNetBayesOptSearch.py,sha256=mp38lBs-TE3lAc8t8o4He5y1iwGIgrlPerurh_xRmqs,10942
164
+ user_packages legacy/Try/XgbBayesOptSearch.py,sha256=pWjlyT5FSK4zNnng0ZrpTIF5o-wBwuavxFA0LE4B4oE,5534
165
+ user_packages legacy/Try/xgbbayesopt.py,sha256=Vow-wrxcwozbTDPKJcl3ZzYgShd-4oks5Kzs74kXUvA,22754
166
+ ins_pricing-0.1.6.dist-info/METADATA,sha256=BdFcF8ZnrYmHwnYJvw3lYTUQgsBTc3hmrWZO7WK5xng,2498
167
+ ins_pricing-0.1.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
168
+ ins_pricing-0.1.6.dist-info/top_level.txt,sha256=6mjdDA6oNYWJHThb2nxv7G5RRpfkVnNcKq7RSLtQNdU,62
169
+ ins_pricing-0.1.6.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,4 @@
1
+ ins_pricing
2
+ ins_pricing v2
3
+ user_packages
4
+ user_packages legacy
@@ -0,0 +1,105 @@
1
+ from __future__ import annotations
2
+
3
+ from importlib import import_module
4
+ from pathlib import Path
5
+ import sys
6
+ import types
7
+
8
+ _TARGET_PACKAGE = import_module("ins_pricing")
9
+ __path__ = _TARGET_PACKAGE.__path__
10
+
11
+ _ROOT_SUBPACKAGES = {
12
+ "modelling": "ins_pricing.modelling",
13
+ "pricing": "ins_pricing.pricing",
14
+ "production": "ins_pricing.production",
15
+ "governance": "ins_pricing.governance",
16
+ "reporting": "ins_pricing.reporting",
17
+ }
18
+
19
+ _MODELLING_EXPORTS = {
20
+ "BayesOptConfig",
21
+ "BayesOptModel",
22
+ "IOUtils",
23
+ "TrainingUtils",
24
+ "free_cuda",
25
+ }
26
+
27
+ _LAZY_SUBMODULES = {
28
+ "bayesopt": "ins_pricing.modelling.bayesopt",
29
+ "plotting": "ins_pricing.modelling.plotting",
30
+ "explain": "ins_pricing.modelling.explain",
31
+ "BayesOpt": "ins_pricing.modelling.BayesOpt",
32
+ "BayesOpt_entry": "ins_pricing.modelling.BayesOpt_entry",
33
+ "BayesOpt_incremental": "ins_pricing.modelling.BayesOpt_incremental",
34
+ "Explain_entry": "ins_pricing.modelling.Explain_entry",
35
+ "Explain_Run": "ins_pricing.modelling.Explain_Run",
36
+ "Pricing_Run": "ins_pricing.modelling.Pricing_Run",
37
+ "cli_common": "ins_pricing.modelling.cli_common",
38
+ "notebook_utils": "ins_pricing.modelling.notebook_utils",
39
+ "watchdog_run": "ins_pricing.modelling.watchdog_run",
40
+ }
41
+
42
+ _PACKAGE_PATHS = {
43
+ "bayesopt": Path(_TARGET_PACKAGE.__file__).resolve().parent / "modelling" / "bayesopt",
44
+ "plotting": Path(_TARGET_PACKAGE.__file__).resolve().parent / "modelling" / "plotting",
45
+ "explain": Path(_TARGET_PACKAGE.__file__).resolve().parent / "modelling" / "explain",
46
+ }
47
+
48
+ __all__ = sorted(
49
+ set(_ROOT_SUBPACKAGES)
50
+ | set(_MODELLING_EXPORTS)
51
+ | set(_LAZY_SUBMODULES)
52
+ )
53
+
54
+
55
+ def _lazy_module(name: str, target: str, package_path: Path | None = None) -> types.ModuleType:
56
+ proxy = types.ModuleType(name)
57
+ if package_path is not None:
58
+ proxy.__path__ = [str(package_path)]
59
+
60
+ def _load():
61
+ module = import_module(target)
62
+ sys.modules[name] = module
63
+ return module
64
+
65
+ def __getattr__(attr: str):
66
+ module = _load()
67
+ return getattr(module, attr)
68
+
69
+ def __dir__() -> list[str]:
70
+ module = _load()
71
+ return sorted(set(dir(module)))
72
+
73
+ proxy.__getattr__ = __getattr__ # type: ignore[attr-defined]
74
+ proxy.__dir__ = __dir__ # type: ignore[attr-defined]
75
+ return proxy
76
+
77
+
78
+ def _install_proxy(alias: str, target: str) -> None:
79
+ module_name = f"{__name__}.{alias}"
80
+ if module_name in sys.modules:
81
+ return
82
+ proxy = _lazy_module(module_name, target, _PACKAGE_PATHS.get(alias))
83
+ sys.modules[module_name] = proxy
84
+ globals()[alias] = proxy
85
+
86
+
87
+ for _alias, _target in _LAZY_SUBMODULES.items():
88
+ _install_proxy(_alias, _target)
89
+
90
+
91
+ def __getattr__(name: str):
92
+ if name in _ROOT_SUBPACKAGES:
93
+ module = import_module(_ROOT_SUBPACKAGES[name])
94
+ globals()[name] = module
95
+ return module
96
+ if name in _MODELLING_EXPORTS:
97
+ module = import_module("ins_pricing.modelling")
98
+ value = getattr(module, name)
99
+ globals()[name] = value
100
+ return value
101
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
102
+
103
+
104
+ def __dir__() -> list[str]:
105
+ return sorted(set(__all__) | set(globals().keys()))