fiddler-client 3.8.0__tar.gz → 3.8.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 (119) hide show
  1. {fiddler-client-3.8.0/fiddler_client.egg-info → fiddler-client-3.8.2}/PKG-INFO +1 -1
  2. fiddler-client-3.8.2/fiddler/VERSION +1 -0
  3. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/alert_rule.py +4 -0
  4. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/libs/http_client.py +3 -3
  5. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/alert_rule.py +1 -0
  6. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_alert_rule.py +49 -23
  7. {fiddler-client-3.8.0 → fiddler-client-3.8.2/fiddler_client.egg-info}/PKG-INFO +1 -1
  8. fiddler-client-3.8.0/fiddler/VERSION +0 -1
  9. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/LICENSE.txt +0 -0
  10. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/MANIFEST.in +0 -0
  11. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/PUBLIC.md +0 -0
  12. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/README.md +0 -0
  13. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/__init__.py +0 -0
  14. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/configs.py +0 -0
  15. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/connection.py +0 -0
  16. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/constants/__init__.py +0 -0
  17. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/constants/alert_rule.py +0 -0
  18. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/constants/baseline.py +0 -0
  19. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/constants/common.py +0 -0
  20. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/constants/dataset.py +0 -0
  21. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/constants/events.py +0 -0
  22. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/constants/job.py +0 -0
  23. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/constants/model.py +0 -0
  24. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/constants/model_deployment.py +0 -0
  25. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/constants/xai.py +0 -0
  26. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/decorators.py +0 -0
  27. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/__init__.py +0 -0
  28. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/alert_record.py +0 -0
  29. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/base.py +0 -0
  30. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/baseline.py +0 -0
  31. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/custom_expression.py +0 -0
  32. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/dataset.py +0 -0
  33. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/events.py +0 -0
  34. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/file.py +0 -0
  35. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/job.py +0 -0
  36. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/model.py +0 -0
  37. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/model_artifact.py +0 -0
  38. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/model_deployment.py +0 -0
  39. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/organization.py +0 -0
  40. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/project.py +0 -0
  41. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/surrogate.py +0 -0
  42. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/user.py +0 -0
  43. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/webhook.py +0 -0
  44. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/entities/xai.py +0 -0
  45. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/exceptions.py +0 -0
  46. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/libs/__init__.py +0 -0
  47. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/libs/aws.py +0 -0
  48. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/libs/json_encoder.py +0 -0
  49. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/libs/semver.py +0 -0
  50. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/packtools/__init__.py +0 -0
  51. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/packtools/gem.py +0 -0
  52. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/packtools/keras_ig_helpers.py +0 -0
  53. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/packtools/project_attributions_helpers.py +0 -0
  54. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/packtools/template_model.py +0 -0
  55. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/__init__.py +0 -0
  56. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/alert_record.py +0 -0
  57. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/base.py +0 -0
  58. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/baseline.py +0 -0
  59. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/custom_expression.py +0 -0
  60. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/custom_features.py +0 -0
  61. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/dataset.py +0 -0
  62. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/events.py +0 -0
  63. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/file.py +0 -0
  64. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/filter_query.py +0 -0
  65. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/job.py +0 -0
  66. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/model.py +0 -0
  67. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/model_deployment.py +0 -0
  68. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/model_schema.py +0 -0
  69. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/model_spec.py +0 -0
  70. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/model_task_params.py +0 -0
  71. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/organization.py +0 -0
  72. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/project.py +0 -0
  73. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/response.py +0 -0
  74. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/server_info.py +0 -0
  75. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/user.py +0 -0
  76. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/webhook.py +0 -0
  77. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/xai.py +0 -0
  78. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/schemas/xai_params.py +0 -0
  79. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/__init__.py +0 -0
  80. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/__init__.py +0 -0
  81. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_alert_record.py +0 -0
  82. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_baseline.py +0 -0
  83. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_custom_metric.py +0 -0
  84. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_dataset.py +0 -0
  85. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_events.py +0 -0
  86. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_files.py +0 -0
  87. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_generate_model.py +0 -0
  88. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_job.py +0 -0
  89. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_mixin.py +0 -0
  90. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_model.py +0 -0
  91. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_model_artifact.py +0 -0
  92. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_model_deployment.py +0 -0
  93. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_model_surrogate.py +0 -0
  94. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_project.py +0 -0
  95. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_segment.py +0 -0
  96. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_webhook.py +0 -0
  97. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/apis/test_xai.py +0 -0
  98. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/conftest.py +0 -0
  99. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/constants.py +0 -0
  100. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/test_connection.py +0 -0
  101. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/test_json_encoder.py +0 -0
  102. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/test_logger.py +0 -0
  103. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/test_sagemaker_auth.py +0 -0
  104. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/test_utils.py +0 -0
  105. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/tests/utils.py +0 -0
  106. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/utils/__init__.py +0 -0
  107. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/utils/decorators.py +0 -0
  108. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/utils/helpers.py +0 -0
  109. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/utils/logger.py +0 -0
  110. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/utils/model_generator.py +0 -0
  111. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/utils/validations.py +0 -0
  112. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/utils/version.py +0 -0
  113. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler/version.py +0 -0
  114. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler_client.egg-info/SOURCES.txt +0 -0
  115. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler_client.egg-info/dependency_links.txt +0 -0
  116. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler_client.egg-info/requires.txt +0 -0
  117. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/fiddler_client.egg-info/top_level.txt +0 -0
  118. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/setup.cfg +0 -0
  119. {fiddler-client-3.8.0 → fiddler-client-3.8.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fiddler-client
3
- Version: 3.8.0
3
+ Version: 3.8.2
4
4
  Summary: Python client for Fiddler Platform
5
5
  Home-page: https://fiddler.ai
6
6
  Author: Fiddler Labs
@@ -0,0 +1 @@
1
+ 3.8.2
@@ -48,6 +48,7 @@ class AlertRule(
48
48
  segment_id: UUID | str | None = None,
49
49
  compare_bin_delta: int | None = None,
50
50
  evaluation_delay: int = 0,
51
+ category: str | None = None,
51
52
  ) -> None:
52
53
  """Construct a alert rule instance."""
53
54
  self.name = name
@@ -65,6 +66,7 @@ class AlertRule(
65
66
  self.condition = condition
66
67
  self.bin_size = bin_size
67
68
  self.segment_id = segment_id
69
+ self.category = category
68
70
 
69
71
  self.id: UUID | None = None
70
72
  self.project_id: UUID | None = None
@@ -110,6 +112,7 @@ class AlertRule(
110
112
  segment_id=resp_obj.segment.id if resp_obj.segment else None,
111
113
  compare_bin_delta=resp_obj.compare_bin_delta,
112
114
  evaluation_delay=resp_obj.evaluation_delay,
115
+ category=resp_obj.category
113
116
  )
114
117
 
115
118
  # Add remaining fields
@@ -240,6 +243,7 @@ class AlertRule(
240
243
  'feature_names': self.columns,
241
244
  'compare_bin_delta': self.compare_bin_delta,
242
245
  'evaluation_delay': self.evaluation_delay,
246
+ 'category': self.category,
243
247
  }
244
248
  if self.baseline_id:
245
249
  payload['baseline_id'] = self.baseline_id
@@ -268,7 +268,7 @@ class RequestClient:
268
268
  # message as part of the new exception message.
269
269
  raise BaseError(
270
270
  f'{method} {url}: giving up after {cycle} attempt(s) / {timer() - t0:.2f} s'
271
- + f', last error: {last_exception}'
271
+ + f', last error: {last_exception}. Timeout can be increased by setting it in fdl.init()'
272
272
  ) from last_exception
273
273
 
274
274
  def _make_request_retry_guts(
@@ -375,7 +375,7 @@ class RequestClient:
375
375
  resp = self.session.send(req, **kwargs)
376
376
  except requests.exceptions.RequestException as exc:
377
377
  if retry_strategy == 'off':
378
- log.info('%s error after %.1f s: %s', logpfx, timer() - t0, exc)
378
+ log.info('%s error after %.1f s: %s . Timeout can be increased by setting it in fdl.init()', logpfx, timer() - t0, exc)
379
379
  # Do not retry, let the caller deal with this exception.
380
380
  raise
381
381
 
@@ -401,7 +401,7 @@ class RequestClient:
401
401
 
402
402
  # Convention: returning the exception tells the caller to retry.
403
403
  log.info(
404
- '%s retryable error after %.1f s: %s',
404
+ '%s retryable error after %.1f s: %s . Timeout can be increased by setting it in fdl.init()',
405
405
  logpfx,
406
406
  timer() - t0,
407
407
  exc,
@@ -38,6 +38,7 @@ class AlertRuleResp(BaseModel):
38
38
  threshold_type: Union[str, AlertThresholdAlgo]
39
39
  critical_threshold: Optional[float]
40
40
  warning_threshold: Optional[float]
41
+ category: Optional[str]
41
42
 
42
43
  created_at: datetime
43
44
  updated_at: datetime
@@ -18,10 +18,6 @@ from fiddler.constants.alert_rule import (
18
18
  from fiddler.entities.alert_rule import AlertRule
19
19
  from fiddler.exceptions import NotFound
20
20
  from fiddler.schemas.alert_rule import NotificationConfig
21
- from fiddler.tests.apis.test_baseline import (
22
- API_RESPONSE_200 as BASELINE_API_RESPONSE_200,
23
- )
24
- from fiddler.tests.apis.test_model import API_RESPONSE_200 as MODEL_API_RESPONSE_200
25
21
  from fiddler.tests.constants import (
26
22
  ALERT_RULE_ID,
27
23
  BASELINE_ID,
@@ -258,22 +254,14 @@ def test_delete_alert_rule_not_found() -> None:
258
254
 
259
255
 
260
256
  @responses.activate
261
- def test_add_alert_rule_success(mocker) -> None:
262
- responses.get(
263
- url=f'{URL}/v3/models/{MODEL_ID}',
264
- json=MODEL_API_RESPONSE_200,
265
- )
266
- responses.get(
267
- url=f'{URL}/v3/baselines/{BASELINE_ID}',
268
- json=BASELINE_API_RESPONSE_200,
269
- )
257
+ def test_add_alert_rule_success_manual_thresholds(mocker) -> None:
270
258
  responses.post(
271
259
  url=f'{URL}/v3/alert-rules',
272
260
  json=API_RESPONSE_200,
273
261
  )
274
262
 
275
263
  # Test with manual threshold
276
- alert_rule_manual_threshold = AlertRule(
264
+ alert_rule_1 = AlertRule(
277
265
  name='alert_name',
278
266
  model_id=MODEL_ID,
279
267
  metric_id='drift',
@@ -288,16 +276,54 @@ def test_add_alert_rule_success(mocker) -> None:
288
276
  evaluation_delay=10,
289
277
  ).create()
290
278
 
291
- assert isinstance(alert_rule_manual_threshold, AlertRule)
292
- assert alert_rule_manual_threshold.id == UUID(ALERT_RULE_ID)
293
- assert alert_rule_manual_threshold.model.id == UUID(MODEL_ID)
294
- assert alert_rule_manual_threshold.project_id == UUID(PROJECT_ID)
295
- assert alert_rule_manual_threshold.evaluation_delay == 10
296
- assert alert_rule_manual_threshold.threshold_type == AlertThresholdAlgo.MANUAL.value
297
- assert alert_rule_manual_threshold.critical_threshold == 2.0
298
- assert alert_rule_manual_threshold.warning_threshold == 1.0
279
+ assert isinstance(alert_rule_1, AlertRule)
280
+ assert alert_rule_1.id == UUID(ALERT_RULE_ID)
281
+ assert alert_rule_1.model.id == UUID(MODEL_ID)
282
+ assert alert_rule_1.project_id == UUID(PROJECT_ID)
283
+ assert alert_rule_1.evaluation_delay == 10
284
+ assert alert_rule_1.threshold_type == AlertThresholdAlgo.MANUAL.value
285
+ assert alert_rule_1.critical_threshold == 2.0
286
+ assert alert_rule_1.warning_threshold == 1.0
299
287
 
300
- # Test with auto threshold
288
+ # create one alert rule with category field
289
+ mocker.patch.dict(
290
+ API_RESPONSE_200['data'],
291
+ {
292
+ 'metric_id': 'frequency',
293
+ 'feature_names': ['geography'],
294
+ 'category': 'France',
295
+ },
296
+ )
297
+ alert_rule_2 = AlertRule(
298
+ name='alert_name',
299
+ model_id=MODEL_ID,
300
+ metric_id='frequency',
301
+ priority=Priority.HIGH,
302
+ compare_to=CompareTo.RAW_VALUE,
303
+ condition=AlertCondition.GREATER,
304
+ bin_size=BinSize.HOUR,
305
+ threshold_type=AlertThresholdAlgo.MANUAL.value,
306
+ critical_threshold=2.0,
307
+ warning_threshold=1.0,
308
+ evaluation_delay=10,
309
+ columns=['geography'],
310
+ category='France',
311
+ ).create()
312
+
313
+ assert isinstance(alert_rule_2, AlertRule)
314
+ assert alert_rule_2.id == UUID(ALERT_RULE_ID)
315
+ assert alert_rule_2.model.id == UUID(MODEL_ID)
316
+ assert alert_rule_2.project_id == UUID(PROJECT_ID)
317
+ assert alert_rule_2.evaluation_delay == 10
318
+ assert alert_rule_2.threshold_type == AlertThresholdAlgo.MANUAL.value
319
+ assert alert_rule_2.critical_threshold == 2.0
320
+ assert alert_rule_2.warning_threshold == 1.0
321
+ assert alert_rule_2.columns == ['geography']
322
+ assert alert_rule_2.category == 'France'
323
+
324
+
325
+ @responses.activate
326
+ def test_add_alert_rule_success_auto_thresholds(mocker) -> None:
301
327
  mocker.patch.dict(
302
328
  API_RESPONSE_200['data'],
303
329
  {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fiddler-client
3
- Version: 3.8.0
3
+ Version: 3.8.2
4
4
  Summary: Python client for Fiddler Platform
5
5
  Home-page: https://fiddler.ai
6
6
  Author: Fiddler Labs
@@ -1 +0,0 @@
1
- 3.8.0
File without changes
File without changes
File without changes
File without changes