ins-pricing 0.4.5__py3-none-any.whl → 0.5.0__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 (84) hide show
  1. ins_pricing/README.md +48 -22
  2. ins_pricing/__init__.py +142 -90
  3. ins_pricing/cli/BayesOpt_entry.py +52 -50
  4. ins_pricing/cli/BayesOpt_incremental.py +39 -105
  5. ins_pricing/cli/Explain_Run.py +31 -23
  6. ins_pricing/cli/Explain_entry.py +532 -579
  7. ins_pricing/cli/Pricing_Run.py +31 -23
  8. ins_pricing/cli/bayesopt_entry_runner.py +11 -9
  9. ins_pricing/cli/utils/cli_common.py +256 -256
  10. ins_pricing/cli/utils/cli_config.py +375 -375
  11. ins_pricing/cli/utils/import_resolver.py +382 -365
  12. ins_pricing/cli/utils/notebook_utils.py +340 -340
  13. ins_pricing/cli/watchdog_run.py +209 -201
  14. ins_pricing/frontend/__init__.py +10 -10
  15. ins_pricing/frontend/example_workflows.py +1 -1
  16. ins_pricing/governance/__init__.py +20 -20
  17. ins_pricing/governance/release.py +159 -159
  18. ins_pricing/modelling/__init__.py +147 -92
  19. ins_pricing/modelling/{core/bayesopt → bayesopt}/README.md +2 -2
  20. ins_pricing/modelling/{core/bayesopt → bayesopt}/__init__.py +64 -102
  21. ins_pricing/modelling/{core/bayesopt → bayesopt}/config_preprocess.py +562 -562
  22. ins_pricing/modelling/{core/bayesopt → bayesopt}/core.py +965 -964
  23. ins_pricing/modelling/{core/bayesopt → bayesopt}/model_explain_mixin.py +296 -296
  24. ins_pricing/modelling/{core/bayesopt → bayesopt}/model_plotting_mixin.py +482 -548
  25. ins_pricing/modelling/{core/bayesopt → bayesopt}/models/__init__.py +27 -27
  26. ins_pricing/modelling/{core/bayesopt → bayesopt}/models/model_ft_trainer.py +915 -913
  27. ins_pricing/modelling/{core/bayesopt → bayesopt}/models/model_gnn.py +788 -785
  28. ins_pricing/modelling/{core/bayesopt → bayesopt}/models/model_resn.py +448 -446
  29. ins_pricing/modelling/bayesopt/trainers/__init__.py +19 -0
  30. ins_pricing/modelling/{core/bayesopt → bayesopt}/trainers/trainer_base.py +1308 -1308
  31. ins_pricing/modelling/{core/bayesopt → bayesopt}/trainers/trainer_ft.py +3 -3
  32. ins_pricing/modelling/{core/bayesopt → bayesopt}/trainers/trainer_glm.py +197 -198
  33. ins_pricing/modelling/{core/bayesopt → bayesopt}/trainers/trainer_gnn.py +344 -344
  34. ins_pricing/modelling/{core/bayesopt → bayesopt}/trainers/trainer_resn.py +283 -283
  35. ins_pricing/modelling/{core/bayesopt → bayesopt}/trainers/trainer_xgb.py +346 -347
  36. ins_pricing/modelling/bayesopt/utils/__init__.py +67 -0
  37. ins_pricing/modelling/bayesopt/utils/constants.py +21 -0
  38. ins_pricing/modelling/bayesopt/utils/io_utils.py +7 -0
  39. ins_pricing/modelling/bayesopt/utils/losses.py +27 -0
  40. ins_pricing/modelling/bayesopt/utils/metrics_and_devices.py +17 -0
  41. ins_pricing/modelling/{core/bayesopt → bayesopt}/utils/torch_trainer_mixin.py +623 -623
  42. ins_pricing/modelling/{core/evaluation.py → evaluation.py} +113 -104
  43. ins_pricing/modelling/explain/__init__.py +55 -55
  44. ins_pricing/modelling/explain/metrics.py +27 -174
  45. ins_pricing/modelling/explain/permutation.py +237 -237
  46. ins_pricing/modelling/plotting/__init__.py +40 -36
  47. ins_pricing/modelling/plotting/compat.py +228 -0
  48. ins_pricing/modelling/plotting/curves.py +572 -572
  49. ins_pricing/modelling/plotting/diagnostics.py +163 -163
  50. ins_pricing/modelling/plotting/geo.py +362 -362
  51. ins_pricing/modelling/plotting/importance.py +121 -121
  52. ins_pricing/pricing/__init__.py +27 -27
  53. ins_pricing/production/__init__.py +35 -25
  54. ins_pricing/production/{predict.py → inference.py} +140 -57
  55. ins_pricing/production/monitoring.py +8 -21
  56. ins_pricing/reporting/__init__.py +11 -11
  57. ins_pricing/setup.py +1 -1
  58. ins_pricing/tests/production/test_inference.py +90 -0
  59. ins_pricing/utils/__init__.py +116 -83
  60. ins_pricing/utils/device.py +255 -255
  61. ins_pricing/utils/features.py +53 -0
  62. ins_pricing/utils/io.py +72 -0
  63. ins_pricing/{modelling/core/bayesopt/utils → utils}/losses.py +125 -129
  64. ins_pricing/utils/metrics.py +158 -24
  65. ins_pricing/utils/numerics.py +76 -0
  66. ins_pricing/utils/paths.py +9 -1
  67. {ins_pricing-0.4.5.dist-info → ins_pricing-0.5.0.dist-info}/METADATA +182 -182
  68. ins_pricing-0.5.0.dist-info/RECORD +131 -0
  69. ins_pricing/modelling/core/BayesOpt.py +0 -146
  70. ins_pricing/modelling/core/__init__.py +0 -1
  71. ins_pricing/modelling/core/bayesopt/trainers/__init__.py +0 -19
  72. ins_pricing/modelling/core/bayesopt/utils/__init__.py +0 -86
  73. ins_pricing/modelling/core/bayesopt/utils/constants.py +0 -183
  74. ins_pricing/modelling/core/bayesopt/utils/io_utils.py +0 -126
  75. ins_pricing/modelling/core/bayesopt/utils/metrics_and_devices.py +0 -555
  76. ins_pricing/modelling/core/bayesopt/utils.py +0 -105
  77. ins_pricing/modelling/core/bayesopt/utils_backup.py +0 -1503
  78. ins_pricing/tests/production/test_predict.py +0 -233
  79. ins_pricing-0.4.5.dist-info/RECORD +0 -130
  80. /ins_pricing/modelling/{core/bayesopt → bayesopt}/config_components.py +0 -0
  81. /ins_pricing/modelling/{core/bayesopt → bayesopt}/models/model_ft_components.py +0 -0
  82. /ins_pricing/modelling/{core/bayesopt → bayesopt}/utils/distributed_utils.py +0 -0
  83. {ins_pricing-0.4.5.dist-info → ins_pricing-0.5.0.dist-info}/WHEEL +0 -0
  84. {ins_pricing-0.4.5.dist-info → ins_pricing-0.5.0.dist-info}/top_level.txt +0 -0
@@ -1,233 +0,0 @@
1
- """Tests for production prediction module."""
2
-
3
- import json
4
- from pathlib import Path
5
- from unittest.mock import Mock, patch, MagicMock
6
-
7
- import numpy as np
8
- import pandas as pd
9
- import pytest
10
-
11
- from ins_pricing.exceptions import ConfigurationError, ModelLoadError, PredictionError
12
-
13
-
14
- # Mock the production.predict module since it may have heavy dependencies
15
- pytest.importorskip("ins_pricing.production.predict", reason="predict module not available")
16
-
17
-
18
- @pytest.fixture
19
- def sample_config():
20
- """Sample configuration for predictor."""
21
- return {
22
- "model_name": "test_model",
23
- "task_type": "regression",
24
- "base_dir": "/tmp/models",
25
- "feature_names": ["age", "premium", "region"],
26
- "model_type": "xgboost"
27
- }
28
-
29
-
30
- @pytest.fixture
31
- def sample_data():
32
- """Sample input data for predictions."""
33
- return pd.DataFrame({
34
- "age": [25, 30, 35, 40],
35
- "premium": [100.0, 150.0, 200.0, 250.0],
36
- "region": ["A", "B", "A", "C"]
37
- })
38
-
39
-
40
- class TestConfigValidation:
41
- """Test configuration validation for predictors."""
42
-
43
- def test_missing_config_file(self, tmp_path):
44
- """Test error when config file doesn't exist."""
45
- from ins_pricing.production.predict import load_predictor_from_config
46
-
47
- config_path = tmp_path / "nonexistent.json"
48
-
49
- with pytest.raises((FileNotFoundError, ModelLoadError)):
50
- load_predictor_from_config(config_path)
51
-
52
- def test_invalid_json_config(self, tmp_path):
53
- """Test error when config file contains invalid JSON."""
54
- from ins_pricing.production.predict import load_predictor_from_config
55
-
56
- config_path = tmp_path / "invalid.json"
57
- config_path.write_text("{ invalid json }")
58
-
59
- with pytest.raises((ConfigurationError, json.JSONDecodeError)):
60
- load_predictor_from_config(config_path)
61
-
62
- def test_missing_required_fields(self, tmp_path):
63
- """Test error when required config fields are missing."""
64
- from ins_pricing.production.predict import load_predictor_from_config
65
-
66
- config_path = tmp_path / "incomplete.json"
67
- config_path.write_text(json.dumps({"model_name": "test"}))
68
-
69
- with pytest.raises(ConfigurationError):
70
- load_predictor_from_config(config_path)
71
-
72
-
73
- class TestPredictorLoading:
74
- """Test predictor loading functionality."""
75
-
76
- @patch('ins_pricing.production.predict.load_model')
77
- def test_load_valid_predictor(self, mock_load_model, tmp_path, sample_config):
78
- """Test loading a valid predictor."""
79
- from ins_pricing.production.predict import load_predictor_from_config
80
-
81
- # Setup
82
- config_path = tmp_path / "config.json"
83
- config_path.write_text(json.dumps(sample_config))
84
- mock_load_model.return_value = Mock()
85
-
86
- # Execute
87
- predictor = load_predictor_from_config(config_path)
88
-
89
- # Verify
90
- assert predictor is not None
91
- assert predictor['config']['model_name'] == "test_model"
92
-
93
- def test_load_missing_model_file(self, tmp_path, sample_config):
94
- """Test error when model file is missing."""
95
- from ins_pricing.production.predict import load_predictor_from_config
96
-
97
- config_path = tmp_path / "config.json"
98
- config_path.write_text(json.dumps(sample_config))
99
-
100
- with pytest.raises(ModelLoadError):
101
- load_predictor_from_config(config_path)
102
-
103
-
104
- class TestPrediction:
105
- """Test prediction functionality."""
106
-
107
- @patch('ins_pricing.production.predict.load_model')
108
- def test_predict_on_valid_data(self, mock_load_model, sample_data):
109
- """Test prediction on valid input data."""
110
- from ins_pricing.production.predict import predict
111
-
112
- # Setup mock model
113
- mock_model = Mock()
114
- mock_model.predict.return_value = np.array([100, 150, 200, 250])
115
- mock_load_model.return_value = mock_model
116
-
117
- predictor = {
118
- 'model': mock_model,
119
- 'config': {'feature_names': ["age", "premium", "region"]}
120
- }
121
-
122
- # Execute
123
- predictions = predict(predictor, sample_data)
124
-
125
- # Verify
126
- assert len(predictions) == len(sample_data)
127
- assert all(isinstance(p, (int, float, np.number)) for p in predictions)
128
-
129
- def test_predict_missing_features(self, sample_data):
130
- """Test error when input data is missing required features."""
131
- from ins_pricing.production.predict import predict
132
- from ins_pricing.utils.validation import validate_required_columns
133
-
134
- predictor = {
135
- 'model': Mock(),
136
- 'config': {'feature_names': ["age", "premium", "region", "missing_col"]}
137
- }
138
-
139
- # Should raise validation error for missing column
140
- with pytest.raises(PredictionError):
141
- validate_required_columns(
142
- sample_data,
143
- predictor['config']['feature_names'],
144
- df_name="input_data"
145
- )
146
-
147
- def test_predict_empty_dataframe(self):
148
- """Test prediction on empty DataFrame."""
149
- from ins_pricing.production.predict import predict
150
- from ins_pricing.utils.validation import validate_dataframe_not_empty
151
-
152
- empty_df = pd.DataFrame()
153
- predictor = {'model': Mock(), 'config': {}}
154
-
155
- with pytest.raises(PredictionError):
156
- validate_dataframe_not_empty(empty_df, df_name="input_data")
157
-
158
-
159
- class TestBatchScoring:
160
- """Test batch scoring functionality."""
161
-
162
- @patch('ins_pricing.production.predict.load_predictor_from_config')
163
- @patch('ins_pricing.production.predict.predict')
164
- def test_batch_score_success(self, mock_predict, mock_load, sample_data, tmp_path):
165
- """Test successful batch scoring."""
166
- from ins_pricing.production.predict import batch_score
167
-
168
- # Setup
169
- mock_load.return_value = {'model': Mock(), 'config': {}}
170
- mock_predict.return_value = np.array([100, 150, 200, 250])
171
-
172
- output_path = tmp_path / "predictions.csv"
173
-
174
- # Execute
175
- batch_score(
176
- config_path=tmp_path / "config.json",
177
- input_data=sample_data,
178
- output_path=output_path
179
- )
180
-
181
- # Verify
182
- assert output_path.exists()
183
- results = pd.read_csv(output_path)
184
- assert "predictions" in results.columns
185
-
186
- def test_batch_score_large_data(self, tmp_path):
187
- """Test batch scoring with large dataset."""
188
- from ins_pricing.production.predict import batch_score
189
-
190
- # Create large dataset
191
- large_data = pd.DataFrame({
192
- "age": np.random.randint(20, 70, size=10000),
193
- "premium": np.random.uniform(100, 500, size=10000),
194
- "region": np.random.choice(["A", "B", "C"], size=10000)
195
- })
196
-
197
- with patch('ins_pricing.production.predict.load_predictor_from_config') as mock_load:
198
- with patch('ins_pricing.production.predict.predict') as mock_predict:
199
- mock_load.return_value = {'model': Mock(), 'config': {}}
200
- mock_predict.return_value = np.random.uniform(50, 300, size=10000)
201
-
202
- output_path = tmp_path / "large_predictions.csv"
203
- batch_score(
204
- config_path=tmp_path / "config.json",
205
- input_data=large_data,
206
- output_path=output_path
207
- )
208
-
209
- assert output_path.exists()
210
-
211
-
212
- class TestModelVersioning:
213
- """Test model versioning functionality."""
214
-
215
- def test_version_compatibility_check(self):
216
- """Test version compatibility checking."""
217
- # Test that predictor checks model version compatibility
218
- pass # Implement based on actual version checking logic
219
-
220
- def test_load_different_model_versions(self):
221
- """Test loading different versions of the same model."""
222
- pass # Implement based on actual versioning system
223
-
224
-
225
- @pytest.mark.integration
226
- class TestPredictionIntegration:
227
- """Integration tests for prediction pipeline."""
228
-
229
- @pytest.mark.skipif(not Path("test_models").exists(), reason="Test models not available")
230
- def test_end_to_end_prediction(self):
231
- """Test complete prediction pipeline from config to output."""
232
- # This would require actual model artifacts
233
- pass
@@ -1,130 +0,0 @@
1
- ins_pricing/README.md,sha256=lmT3UhGMxWtM_FCmg8elQZIgaFTEhoZYTTv_Iq26eJY,2770
2
- ins_pricing/__init__.py,sha256=46j1wCdLVrgrofeBwKl-3NXTxzjbTv-w3KjW-dyKGiY,2622
3
- ins_pricing/exceptions.py,sha256=5fZavPV4zNJ7wPC75L215KkHXX9pRrfDAYZOdSKJMGo,4778
4
- ins_pricing/setup.py,sha256=gAnzDOPPzmun2x7Is9inR5MX7XE7_bHJc9VIQqGmMNo,1702
5
- ins_pricing/cli/BayesOpt_entry.py,sha256=6UBVxu36O3bXn1WC-BBi-l_W9_MqEoHmDGnwwDKNo5Q,1594
6
- ins_pricing/cli/BayesOpt_incremental.py,sha256=WR2DJSVsCfUvR6_0xc-2vss85CB4m0bIiB_xjRRxqSE,36809
7
- ins_pricing/cli/Explain_Run.py,sha256=gEPQjqHiXyXlCTKjUzwSvbAn5_h74ABgb_sEGs-YHVE,664
8
- ins_pricing/cli/Explain_entry.py,sha256=xS23x31qRvXqy2Wvo21wbkxmPRLHy77aZbtjY-J59NA,23570
9
- ins_pricing/cli/Pricing_Run.py,sha256=qZribQ_ku4NK4oIvlrLJdM-jyyKtIUoCbbvo8Wh_RQ4,711
10
- ins_pricing/cli/__init__.py,sha256=F296f1J_tBPv33lDJQ6LaN_CPwMJTMtOuTsMof0dr2o,50
11
- ins_pricing/cli/bayesopt_entry_runner.py,sha256=JERCqHcS50lcA1dIP8RiA-7xsjfIQD8ZXWLyUAq5Nqk,55261
12
- ins_pricing/cli/watchdog_run.py,sha256=ehUkN9VqsQkxc6YC_WLanU6Pu-ers-nvPEtCaJ9UsgY,6188
13
- ins_pricing/cli/utils/__init__.py,sha256=u3kt1B27OiuOEgw6PQN-fNs9vNiAjdPyybsRQsZkM_I,54
14
- ins_pricing/cli/utils/cli_common.py,sha256=CgMnN_0NQQt7Bh5RjClOydz0LzU2TBmIOsFa3KxYQOQ,8254
15
- ins_pricing/cli/utils/cli_config.py,sha256=TC8fR1XdQIbaojbeac7dESj7TmCKSfpZTbLvJrkJLEY,13247
16
- ins_pricing/cli/utils/evaluation_context.py,sha256=0zuDOcVzkWiuj4HyAT0psaAfEbSqpDXEGXSjxztHY6E,9485
17
- ins_pricing/cli/utils/import_resolver.py,sha256=Ut-SBN4F2sw8O7B3GveMoZn4__1IGwljvxC4sLU0tpk,12531
18
- ins_pricing/cli/utils/notebook_utils.py,sha256=xjSjn6z4_x2vfX1SV4X_VG0jXdK1KJzWJ5tJ4CHFxy0,12037
19
- ins_pricing/cli/utils/run_logging.py,sha256=V3Wh2EV6c1Mo0QTvfe4hl2J4LOR6bdQsT210o__YBWk,3677
20
- ins_pricing/frontend/README.md,sha256=MKQuVtwpvrOKBJhcz9wgVtMc-jKERYATRNDIj-hA78Y,17551
21
- ins_pricing/frontend/__init__.py,sha256=KeL6QbUGAzWKbjGyZi_u7p289Zv5yslRCNZ6wHWY63Q,335
22
- ins_pricing/frontend/app.py,sha256=DBrnewX5RUjuJXGEezihZJcDnp-tEeA-fCuTeqAFEqU,38484
23
- ins_pricing/frontend/config_builder.py,sha256=GNeEe7-Xt-WLakKlbdbQOE82ogWWwEFaKQ5LxxZeLFc,12261
24
- ins_pricing/frontend/example_config.json,sha256=aDXH9_5bVlIclwMWH5WfgK572LVuraNbj4565o3d71k,741
25
- ins_pricing/frontend/example_workflows.py,sha256=7iuFOIhN6l__3AVDkhDU7zvi2oWx_Z9lktpATPM336s,36813
26
- ins_pricing/frontend/ft_workflow.py,sha256=CWrviErHEjZ2NPibIbPh69AYKPVkn-mXY7uncPihn-0,11206
27
- ins_pricing/frontend/runner.py,sha256=0OB7C04PHpU04VrzZlEE-zOWrbdk5aztRck2BXKzbTc,13471
28
- ins_pricing/governance/README.md,sha256=XnXLS5RPzWhEiicJ3WtGmpN935jppHhPftA9Lo2DPnQ,511
29
- ins_pricing/governance/__init__.py,sha256=d8tiDhOvHvAvgSohY1xv0vuEeHj8Gl1apQtw7ryEKM0,517
30
- ins_pricing/governance/approval.py,sha256=cjJQjU1ziR-d-9wVSXyMyX6S5zijJqDWERZNxjqGAUE,2879
31
- ins_pricing/governance/audit.py,sha256=f0aw-LaOxH5NGzxwczeLrGMJcxO-JDRn99BpI55KRn4,1040
32
- ins_pricing/governance/registry.py,sha256=2uxQL6qMGY5IYWJti9MpaV_auvL--piJaasFrX20ghk,3139
33
- ins_pricing/governance/release.py,sha256=ltyFIdeKbwj9fnEDxcQCURaQ5Zc_j0mqXFPNunmX_NQ,4743
34
- ins_pricing/modelling/README.md,sha256=4q3CykeFcXo5FILGD2EtoX2yYVV0EbrYW-hwgcySBN0,2157
35
- ins_pricing/modelling/__init__.py,sha256=0tiXRE3rAwSxHT0dSaosWf_vGd7FpRA_kHW6dclr4PA,2710
36
- ins_pricing/modelling/core/BayesOpt.py,sha256=i2tB3c6EeucjKAsHyicGDNU7DVVCTihg-TgSoM1y18E,3332
37
- ins_pricing/modelling/core/__init__.py,sha256=bF5OWfK_mfg5P2oz2jid3MGi9uA13fpqKK-DbPkuci0,54
38
- ins_pricing/modelling/core/evaluation.py,sha256=wEMWdzs12vPnDo5t183ORMDA6APuc5g6g9Uyfd6GVi8,3905
39
- ins_pricing/modelling/core/bayesopt/README.md,sha256=vNTYu5Jk425-RpyVZg_W4PRPWBy6pULYlQHks1a0S2Y,1625
40
- ins_pricing/modelling/core/bayesopt/__init__.py,sha256=nj6IA0r7D5U5-hYyiwXmcp_bEtoU-hRJ_prdtRmLMg0,2070
41
- ins_pricing/modelling/core/bayesopt/config_components.py,sha256=OjRyM1EuSXL9_3THD1nGLRsioJs7lO_ZKVZDkUA3LX8,12156
42
- ins_pricing/modelling/core/bayesopt/config_preprocess.py,sha256=lAsdvLr-H7ajkyRElcKvAQn4ZWEOqkpDqb6ZBsdesfc,22157
43
- ins_pricing/modelling/core/bayesopt/core.py,sha256=RvnP3yIy-FOQUFdONVfJQxnI7hhNbPTKNQaqhtXd928,44640
44
- ins_pricing/modelling/core/bayesopt/model_explain_mixin.py,sha256=jCk1zPpwgwBBCndaq-A0_cQnc4RHueh2p5cAuE9ArTo,11620
45
- ins_pricing/modelling/core/bayesopt/model_plotting_mixin.py,sha256=lD0rUvWV4eWatmTzMrmAUm2Flj8uAOa3R9S2JyYV94k,21807
46
- ins_pricing/modelling/core/bayesopt/utils.py,sha256=fTDqBHCxsOVte0QhPqnMw8vkefIvkppufIRkt9iHqjU,2852
47
- ins_pricing/modelling/core/bayesopt/utils_backup.py,sha256=5RKizpR3j6KwR87WqqaXPtgjQXWPW4vM75sIkx38SSM,57924
48
- ins_pricing/modelling/core/bayesopt/models/__init__.py,sha256=vFFCkGnO6rm50TbxR6QekKKQjq-NW4UFwog6fng8-p8,700
49
- ins_pricing/modelling/core/bayesopt/models/model_ft_components.py,sha256=oDhmJQ26zF0PhoDC5Z2McA-JpLbXFQjSREqy0w_hWlQ,11883
50
- ins_pricing/modelling/core/bayesopt/models/model_ft_trainer.py,sha256=jk9pm7IzVLG8YYOneW1DPsULulbF9PQ9nNJ8EOlHF5I,39754
51
- ins_pricing/modelling/core/bayesopt/models/model_gnn.py,sha256=blCTgML-fMkHDerzwoJZPw2XnEvuwVR_U5t0YWE1lZI,32901
52
- ins_pricing/modelling/core/bayesopt/models/model_resn.py,sha256=Pddu0q04Sz8RwKqjP0fv4xXWd6KobwMsD47sCDBbB-Y,17581
53
- ins_pricing/modelling/core/bayesopt/trainers/__init__.py,sha256=ODYKjT-v4IDxu4ohGLCXY8r1-pMME9LAaNx6pmj5_38,481
54
- ins_pricing/modelling/core/bayesopt/trainers/trainer_base.py,sha256=DOam1HLsslNQlhQt88j6LWCZekioaNzw2PbKzLwtszY,55687
55
- ins_pricing/modelling/core/bayesopt/trainers/trainer_ft.py,sha256=o8uyDvEsJ3NrVy-VRo7c3DoKcJQsFSK4vY29vYMkrSk,37093
56
- ins_pricing/modelling/core/bayesopt/trainers/trainer_glm.py,sha256=gMhx9IX9nz-rsf-zi9UYMtViBPD1nmQ5r8XVPGU21Ys,7912
57
- ins_pricing/modelling/core/bayesopt/trainers/trainer_gnn.py,sha256=vJbQTm-3ByBguZYz4gvYhXeWbUa0L7z7mxaxoamGsic,14259
58
- ins_pricing/modelling/core/bayesopt/trainers/trainer_resn.py,sha256=MaxCvmyybE72H38akOA_rNW3Rx9Mxb229ZRJaqIzWTA,11855
59
- ins_pricing/modelling/core/bayesopt/trainers/trainer_xgb.py,sha256=NlEqH0wxe5frwxXNTeymWX5_qC3_rIzF3QjDZz4RBMg,13752
60
- ins_pricing/modelling/core/bayesopt/utils/__init__.py,sha256=dbf4DrWOH4rABOuaZdBF7drYOBH5prjvM0TexT6DYyg,1911
61
- ins_pricing/modelling/core/bayesopt/utils/constants.py,sha256=0ihYxGlJ8tIElYvkhIDe5FfJShegvu29WZ_Xvfqa0iE,5790
62
- ins_pricing/modelling/core/bayesopt/utils/distributed_utils.py,sha256=cu01dHyYE5EREbmtJgCHSH6z5mQIqajz8_-oWZV6zVc,5787
63
- ins_pricing/modelling/core/bayesopt/utils/io_utils.py,sha256=vXDlAc_taCG2joxnC6wu0jVYA76UhRbX9OT_5z_im-E,3857
64
- ins_pricing/modelling/core/bayesopt/utils/losses.py,sha256=yn3ggeM1NRkCzcTt_Nef_EvpD6Pb_jGs49bj-VV4uWU,3894
65
- ins_pricing/modelling/core/bayesopt/utils/metrics_and_devices.py,sha256=kfQZnGE8FvGfl7WsTFShGGIA_sQhp5Th9mrwUXphiNQ,21200
66
- ins_pricing/modelling/core/bayesopt/utils/torch_trainer_mixin.py,sha256=qxSAP4vQC-JTHTZ7SDPZx7ZKyJKLwcAOP0IWr4GA_l4,25881
67
- ins_pricing/modelling/explain/__init__.py,sha256=CPoGzGu8TTO3FOXjxoXC13VkuIDCf3YTH6L3BqJq3Ok,1171
68
- ins_pricing/modelling/explain/gradients.py,sha256=9TqCws_p49nFxVMcjVxe4KCZ7frezeL0uV_LCdoM5yo,11088
69
- ins_pricing/modelling/explain/metrics.py,sha256=K_xOY7ZrHWhbJ79RNB7eXN3VXeTe8vq68ZLH2BlZufA,5389
70
- ins_pricing/modelling/explain/permutation.py,sha256=TeVlhz7FWyPsaZwEP3BSLa0BZgdOq74coZqnadkGaPw,9333
71
- ins_pricing/modelling/explain/shap_utils.py,sha256=70zRIHPPdoECFOFQeBTRxLZF-6sjaGJBNMIRS4_kmVI,10462
72
- ins_pricing/modelling/plotting/__init__.py,sha256=BBQKcE7IYUYObFrjpSnfNS6rmzc80Lae7oEqxKz-vEk,1058
73
- ins_pricing/modelling/plotting/common.py,sha256=_kFq7JMA0LnKIp4bqAFvr-24VaHjj9pegDMm1qP9_7Y,1439
74
- ins_pricing/modelling/plotting/curves.py,sha256=fEnoeHAVvLPI5HXadNLUoWygmHtNWCngynLdZK868NQ,18398
75
- ins_pricing/modelling/plotting/diagnostics.py,sha256=AlkBtHuezRoDgMeXm56A1bK6Kn0rWOBy4Uts_xOocrs,5164
76
- ins_pricing/modelling/plotting/geo.py,sha256=sRJTYOcAphNFM-oww4qbw9MoZneBCJtur96sYuqSNkw,11009
77
- ins_pricing/modelling/plotting/importance.py,sha256=xs3l9uW_rCrakoA__fanIph6DK2jN_DugsKASAzteJU,3666
78
- ins_pricing/pricing/README.md,sha256=PEcyw5oDkqJHOqnNdzBdbbpZwG4SOlnhMwY-owwQ0GI,1064
79
- ins_pricing/pricing/__init__.py,sha256=XFplK3zkxPyNQZJd1Gn6_VvpwHLedMqxAd_Vn9tqsTE,881
80
- ins_pricing/pricing/calibration.py,sha256=cx9fbDoOnNEMGPH6Js1EDMfVwy9J7zf_90yuNwD7W6I,6196
81
- ins_pricing/pricing/data_quality.py,sha256=8FecBE60cABsTZE7HETuoKCEOXIrirGAFgg5wQCZrmU,4043
82
- ins_pricing/pricing/exposure.py,sha256=rw8kKZ_1QdeGTCm13ck9NXrRBPt6TunxRw2s_qkHYkg,2575
83
- ins_pricing/pricing/factors.py,sha256=1cqDqdXRLb9-yt-x60f0lPWdgAAOvk7slnawVIKcWDo,6573
84
- ins_pricing/pricing/monitoring.py,sha256=GnfF2g1C9KzDks9ELBykfAd0zzVBUvjuTWoffa7aGbI,613
85
- ins_pricing/pricing/rate_table.py,sha256=llDW95i7gR6cCtGFwcGqgpgFvOOPCURaJWmuQw1oce8,2473
86
- ins_pricing/production/__init__.py,sha256=plUjyiwxrzHDDgXKezyGp9UHOg7Mav4f0ryXYtNmbfs,885
87
- ins_pricing/production/drift.py,sha256=q_oE_h2NbVETTBkh9QUu8Y68ERuFFcrfKpOb3zBcvsA,383
88
- ins_pricing/production/monitoring.py,sha256=A6Hyc5WSKhFkDZOIrqmFteuDee75CdcwdTq644vrk-U,4836
89
- ins_pricing/production/predict.py,sha256=Robvp63tlxqWJhgiZ3BoC4slX8qYJRh4GrM4L4BGycw,24571
90
- ins_pricing/production/preprocess.py,sha256=cl20X0rVcKNCjVJswB8SdHffMgox6Qga4Ac29L6pW5g,9404
91
- ins_pricing/production/scoring.py,sha256=yFmMmbYb7w_RC4uZOCMnAjLMRcjXQWIuT1nsfu-bwuc,1379
92
- ins_pricing/reporting/README.md,sha256=kTVdB6pNewwh1HlCHrI2SzWTgprtQoQprLRQ2qLdgNA,486
93
- ins_pricing/reporting/__init__.py,sha256=Se5Cdomv9_RwkIDizkw1yx4iCMcjhjTHb4pZK6K895c,242
94
- ins_pricing/reporting/report_builder.py,sha256=53ZFqGUx2isAoigT5IDwvXkek67zN7-6IgKeGpJhO7c,2241
95
- ins_pricing/reporting/scheduler.py,sha256=9koG_1cmWvLqrS66uzMJuAlYI2VTkynV19ssB2TtcKU,1336
96
- ins_pricing/tests/governance/__init__.py,sha256=5Nxg4_dIxY_J58_x2QOXrrRgw6L51Md0Wnt5Up-chqg,39
97
- ins_pricing/tests/governance/test_audit.py,sha256=ubybXSTVILPN4VxQ2fMnG6oPNv4LjJJE3EsQ53NYdLU,1702
98
- ins_pricing/tests/governance/test_registry.py,sha256=TvkNMLHViNuopjjho6oETwZ9d6MNaNM1xbL6URPDKSk,4602
99
- ins_pricing/tests/governance/test_release.py,sha256=Cdo6prZ0xlioAP2AYHodzgASEIa6ZCLjbXW9Me2RGKk,2347
100
- ins_pricing/tests/modelling/conftest.py,sha256=0KUXnkTgIGEIsf0J4uzIx5Kq4JkDyFo81Mv0qvIzW9k,180
101
- ins_pricing/tests/modelling/test_cross_val_generic.py,sha256=iLZOFmdyrycB15lFWoQphkFlEjzZTozQXTLVOHLw2Qg,1721
102
- ins_pricing/tests/modelling/test_distributed_utils.py,sha256=9cStpDw7jPdQwmm0Po-G2tB04uzSR1CoOUZMLuB61yI,466
103
- ins_pricing/tests/modelling/test_explain.py,sha256=NZqKYuL-eSf9eC5ttjcMirfOc48ORMXZQm5PjmYk4jY,1445
104
- ins_pricing/tests/modelling/test_geo_tokens_split.py,sha256=Ti57IynKB0aWOosr0g2RcZlDZyZC012XZ-hm6tWXBJg,1554
105
- ins_pricing/tests/modelling/test_graph_cache.py,sha256=QEI5cLLtQ9_zwRR50KqUf8qxo9Jcp1WLxIGs4dSoMNk,821
106
- ins_pricing/tests/modelling/test_plotting.py,sha256=4gJax72l40fQrjyJQLOgUmaT6xn6zXpujEaFNeHVwGw,1911
107
- ins_pricing/tests/modelling/test_plotting_library.py,sha256=SB5RjKTaPydK848V0xpqEaJtEWhRv6ZfnHmnnzjaPh4,4079
108
- ins_pricing/tests/modelling/test_preprocessor.py,sha256=FqbKltV803Pd-ZY1xBc4XF1T-INDuUliaVcMIDPmBxI,1438
109
- ins_pricing/tests/pricing/__init__.py,sha256=SVfgUYBlCmc4wjYLMRX5xPFgQZxTS3aHBOA_Cx1aJg4,36
110
- ins_pricing/tests/pricing/test_calibration.py,sha256=hLZuSWOH4t9WKcQ-2srvYp4P5ldr1Yh1dhl7s61vMp8,2420
111
- ins_pricing/tests/pricing/test_exposure.py,sha256=CrpSncVce-PGt2XzjOX6qV0SA22vKPUv1u8RlKQjt_g,2054
112
- ins_pricing/tests/pricing/test_factors.py,sha256=NTE7lz1RWChhoRt2K5003DoNRqG_Gu4X1Aauy2NexOg,5093
113
- ins_pricing/tests/pricing/test_rate_table.py,sha256=ICHfAQsC9TaxXbQVKM5AvBaJXRTVY723Vaz1XOWNMW8,1250
114
- ins_pricing/tests/production/__init__.py,sha256=WFWlvBVdjg-E-nKaiJ8VTKNELYufJusufpij1p1xwso,39
115
- ins_pricing/tests/production/test_monitoring.py,sha256=jettbaVLH4a3efLWeiQ6FFukGEw7mmz6_AeYhYX0caQ,11409
116
- ins_pricing/tests/production/test_predict.py,sha256=PNamNzb-KNbLtT8xbBkwWOcmJC1gXvxj2nnc7dR5fyc,8193
117
- ins_pricing/tests/production/test_preprocess.py,sha256=tsHYANwJjNlaSo8O4qiwqBvMOMtwmtZymRFm6UrODrE,11084
118
- ins_pricing/tests/production/test_scoring.py,sha256=fKz2tJomodrRt333apCrjtyJCwg9RHRbWm0lvcU6xm0,9848
119
- ins_pricing/utils/__init__.py,sha256=ovtolxOvlYp_1SOxZ35OPBdn7JB2O4idzRSQgIlzCvc,2339
120
- ins_pricing/utils/device.py,sha256=fePvqSaOkzHMBbrHCXAOCKRwdcR8YtiGI5K8Q3ljXJc,7543
121
- ins_pricing/utils/logging.py,sha256=_AKB4ErmvygwGLtu7Ai7ESemj6Hh8FTgh4cs8j_gVW4,2258
122
- ins_pricing/utils/metrics.py,sha256=p4g6S1umtXh5-W9I86YJV7qlJm63ik0GvgsDW91kmQw,9313
123
- ins_pricing/utils/paths.py,sha256=o_tBiclFvBci4cYg9WANwKPxrMcglEdOjDP-EZgGjdQ,8749
124
- ins_pricing/utils/profiling.py,sha256=kmbykHLcYywlZxAf_aVU8HXID3zOvUcBoO5Q58AijhA,11132
125
- ins_pricing/utils/torch_compat.py,sha256=UrRsqx2qboDG8WE0OmxNOi08ojwE-dCxTQh0N2s3Rgw,2441
126
- ins_pricing/utils/validation.py,sha256=4Tw9VUJPk0N-WO3YUqZP-xXRl1Xpubkm0vi3WzzZrv4,13348
127
- ins_pricing-0.4.5.dist-info/METADATA,sha256=hPEBGaROhj_R7RTIT0fc4J5oeVaImalZYp8DNSC0rG8,5891
128
- ins_pricing-0.4.5.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
129
- ins_pricing-0.4.5.dist-info/top_level.txt,sha256=haZuNQpHKNBEPZx3NjLnHp8pV3I_J9QG8-HyJn00FA0,12
130
- ins_pricing-0.4.5.dist-info/RECORD,,