fiddler-client 3.3.0.dev1__tar.gz → 3.3.1__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 (116) hide show
  1. {fiddler_client-3.3.0.dev1/fiddler_client.egg-info → fiddler_client-3.3.1}/PKG-INFO +1 -1
  2. fiddler_client-3.3.1/fiddler/VERSION +1 -0
  3. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/decorators.py +1 -1
  4. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/alert_rule.py +14 -8
  5. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_alert_rule.py +20 -0
  6. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/test_logger.py +2 -2
  7. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1/fiddler_client.egg-info}/PKG-INFO +1 -1
  8. fiddler_client-3.3.0.dev1/fiddler/VERSION +0 -1
  9. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/LICENSE.txt +0 -0
  10. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/MANIFEST.in +0 -0
  11. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/PUBLIC.md +0 -0
  12. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/README.md +0 -0
  13. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/__init__.py +0 -0
  14. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/configs.py +0 -0
  15. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/connection.py +0 -0
  16. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/constants/__init__.py +0 -0
  17. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/constants/alert_rule.py +0 -0
  18. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/constants/baseline.py +0 -0
  19. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/constants/common.py +0 -0
  20. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/constants/dataset.py +0 -0
  21. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/constants/events.py +0 -0
  22. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/constants/job.py +0 -0
  23. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/constants/model.py +0 -0
  24. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/constants/model_deployment.py +0 -0
  25. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/constants/xai.py +0 -0
  26. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/__init__.py +0 -0
  27. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/alert_record.py +0 -0
  28. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/base.py +0 -0
  29. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/baseline.py +0 -0
  30. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/custom_expression.py +0 -0
  31. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/dataset.py +0 -0
  32. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/events.py +0 -0
  33. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/file.py +0 -0
  34. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/job.py +0 -0
  35. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/model.py +0 -0
  36. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/model_artifact.py +0 -0
  37. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/model_deployment.py +0 -0
  38. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/organization.py +0 -0
  39. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/project.py +0 -0
  40. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/surrogate.py +0 -0
  41. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/user.py +0 -0
  42. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/webhook.py +0 -0
  43. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/entities/xai.py +0 -0
  44. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/exceptions.py +0 -0
  45. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/libs/__init__.py +0 -0
  46. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/libs/http_client.py +0 -0
  47. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/libs/json_encoder.py +0 -0
  48. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/libs/semver.py +0 -0
  49. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/packtools/__init__.py +0 -0
  50. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/packtools/gem.py +0 -0
  51. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/packtools/keras_ig_helpers.py +0 -0
  52. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/packtools/project_attributions_helpers.py +0 -0
  53. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/packtools/template_model.py +0 -0
  54. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/__init__.py +0 -0
  55. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/alert_record.py +0 -0
  56. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/alert_rule.py +0 -0
  57. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/base.py +0 -0
  58. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/baseline.py +0 -0
  59. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/custom_expression.py +0 -0
  60. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/custom_features.py +0 -0
  61. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/dataset.py +0 -0
  62. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/events.py +0 -0
  63. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/file.py +0 -0
  64. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/filter_query.py +0 -0
  65. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/job.py +0 -0
  66. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/model.py +0 -0
  67. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/model_deployment.py +0 -0
  68. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/model_schema.py +0 -0
  69. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/model_spec.py +0 -0
  70. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/model_task_params.py +0 -0
  71. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/organization.py +0 -0
  72. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/project.py +0 -0
  73. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/response.py +0 -0
  74. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/server_info.py +0 -0
  75. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/user.py +0 -0
  76. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/webhook.py +0 -0
  77. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/xai.py +0 -0
  78. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/schemas/xai_params.py +0 -0
  79. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/__init__.py +0 -0
  80. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/__init__.py +0 -0
  81. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_alert_record.py +0 -0
  82. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_baseline.py +0 -0
  83. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_custom_metric.py +0 -0
  84. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_dataset.py +0 -0
  85. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_events.py +0 -0
  86. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_files.py +0 -0
  87. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_generate_model.py +0 -0
  88. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_job.py +0 -0
  89. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_mixin.py +0 -0
  90. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_model.py +0 -0
  91. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_model_artifact.py +0 -0
  92. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_model_deployment.py +0 -0
  93. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_model_surrogate.py +0 -0
  94. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_project.py +0 -0
  95. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_segment.py +0 -0
  96. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_webhook.py +0 -0
  97. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/apis/test_xai.py +0 -0
  98. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/conftest.py +0 -0
  99. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/constants.py +0 -0
  100. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/test_connection.py +0 -0
  101. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/test_json_encoder.py +0 -0
  102. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/test_utils.py +0 -0
  103. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/tests/utils.py +0 -0
  104. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/utils/__init__.py +0 -0
  105. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/utils/helpers.py +0 -0
  106. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/utils/logger.py +0 -0
  107. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/utils/model_generator.py +0 -0
  108. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/utils/validations.py +0 -0
  109. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/utils/version.py +0 -0
  110. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler/version.py +0 -0
  111. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler_client.egg-info/SOURCES.txt +0 -0
  112. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler_client.egg-info/dependency_links.txt +0 -0
  113. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler_client.egg-info/requires.txt +0 -0
  114. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/fiddler_client.egg-info/top_level.txt +0 -0
  115. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/setup.cfg +0 -0
  116. {fiddler_client-3.3.0.dev1 → fiddler_client-3.3.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fiddler-client
3
- Version: 3.3.0.dev1
3
+ Version: 3.3.1
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.3.1
@@ -39,7 +39,7 @@ def handle_api_error(func: _WrappedFuncType) -> _WrappedFuncType:
39
39
  error_resp = ErrorResponse(**e.response.json())
40
40
  except requests.JSONDecodeError:
41
41
  raise HttpError(
42
- message=f'Invalid response content-type - {e.response.content}'
42
+ message=f"Invalid response content-type - {e.response.content}" # type: ignore
43
43
  )
44
44
 
45
45
  if status_code == HTTPStatus.CONFLICT:
@@ -5,6 +5,8 @@ from datetime import datetime
5
5
  from typing import Any, Iterator
6
6
  from uuid import UUID
7
7
 
8
+ from pydantic import ValidationError
9
+
8
10
  from fiddler.constants.alert_rule import AlertCondition, BinSize, CompareTo, Priority
9
11
  from fiddler.decorators import handle_api_error
10
12
  from fiddler.entities.base import BaseEntity
@@ -276,14 +278,18 @@ class AlertRule(
276
278
 
277
279
  :return: NotificationConfig object
278
280
  """
279
- payload: dict[str, Any] = {}
280
- if emails is not None:
281
- payload['emails'] = emails
282
- if pagerduty_services is not None:
283
- payload['pagerduty_services'] = pagerduty_services
284
- payload['pagerduty_severity'] = pagerduty_severity
285
- if webhooks is not None:
286
- payload['webhooks'] = webhooks
281
+
282
+ # Validating input
283
+ try:
284
+ payload: dict[str, Any] = NotificationConfig(
285
+ emails=emails,
286
+ pagerduty_services=pagerduty_services,
287
+ pagerduty_severity=pagerduty_severity,
288
+ webhooks=webhooks,
289
+ ).dict()
290
+ except ValidationError as e:
291
+ logger.exception('Invalid input: The format of input is not correct')
292
+ raise e
287
293
  response = self._client().patch(
288
294
  url=self._get_notification_url(id_=self.id),
289
295
  data=payload,
@@ -5,6 +5,7 @@ from uuid import UUID
5
5
 
6
6
  import pytest
7
7
  import responses
8
+ from pydantic import ValidationError
8
9
 
9
10
  from fiddler.constants.alert_rule import AlertCondition, BinSize, CompareTo, Priority
10
11
  from fiddler.entities.alert_rule import AlertRule
@@ -349,12 +350,31 @@ def test_set_notifications() -> None:
349
350
  assert json.loads(resp.calls[0].request.body) == {
350
351
  'emails': TEST_EMAILS,
351
352
  'webhooks': TEST_WEBHOOKS,
353
+ 'pagerduty_services': None,
354
+ 'pagerduty_severity': None,
352
355
  }
353
356
  assert notifications == NotificationConfig(
354
357
  **ALERT_NOTIFICATION_API_RESPONSE_200['data']
355
358
  )
356
359
 
357
360
 
361
+ @responses.activate
362
+ def test_set_notifications_invalid_input(caplog) -> None:
363
+ responses.get(
364
+ url=f'{URL}/v3/alert-rules/{ALERT_RULE_ID}',
365
+ json=API_RESPONSE_200,
366
+ )
367
+
368
+ alert_rule = AlertRule.get(id_=ALERT_RULE_ID)
369
+
370
+ with pytest.raises(ValidationError):
371
+ alert_rule.set_notification_config(
372
+ emails=TEST_EMAILS[0],
373
+ webhooks=TEST_WEBHOOKS,
374
+ )
375
+ assert 'Invalid input: The format of input is not correct' in caplog.messages[0]
376
+
377
+
358
378
  @responses.activate
359
379
  def test_get_notifications() -> None:
360
380
  responses.get(
@@ -6,7 +6,7 @@ from fiddler.utils.logger import set_logging
6
6
 
7
7
  def test_set_logging() -> None:
8
8
  app_logger = logging.getLogger(LOGGER_NAME)
9
- assert len(app_logger.handlers) == 0
9
+ assert len(app_logger.handlers) == 2
10
10
 
11
11
  set_logging(level=logging.ERROR)
12
- assert len(app_logger.handlers) == 1
12
+ assert len(app_logger.handlers) == 3
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fiddler-client
3
- Version: 3.3.0.dev1
3
+ Version: 3.3.1
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.3.0.dev1