fiddler-client 3.3.1__tar.gz → 3.3.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 (116) hide show
  1. {fiddler_client-3.3.1/fiddler_client.egg-info → fiddler_client-3.3.2}/PKG-INFO +1 -1
  2. fiddler_client-3.3.2/fiddler/VERSION +1 -0
  3. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/alert_rule.py +1 -1
  4. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_alert_rule.py +109 -9
  5. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/constants.py +2 -0
  6. {fiddler_client-3.3.1 → fiddler_client-3.3.2/fiddler_client.egg-info}/PKG-INFO +1 -1
  7. fiddler_client-3.3.1/fiddler/VERSION +0 -1
  8. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/LICENSE.txt +0 -0
  9. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/MANIFEST.in +0 -0
  10. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/PUBLIC.md +0 -0
  11. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/README.md +0 -0
  12. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/__init__.py +0 -0
  13. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/configs.py +0 -0
  14. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/connection.py +0 -0
  15. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/constants/__init__.py +0 -0
  16. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/constants/alert_rule.py +0 -0
  17. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/constants/baseline.py +0 -0
  18. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/constants/common.py +0 -0
  19. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/constants/dataset.py +0 -0
  20. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/constants/events.py +0 -0
  21. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/constants/job.py +0 -0
  22. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/constants/model.py +0 -0
  23. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/constants/model_deployment.py +0 -0
  24. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/constants/xai.py +0 -0
  25. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/decorators.py +0 -0
  26. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/__init__.py +0 -0
  27. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/alert_record.py +0 -0
  28. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/base.py +0 -0
  29. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/baseline.py +0 -0
  30. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/custom_expression.py +0 -0
  31. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/dataset.py +0 -0
  32. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/events.py +0 -0
  33. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/file.py +0 -0
  34. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/job.py +0 -0
  35. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/model.py +0 -0
  36. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/model_artifact.py +0 -0
  37. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/model_deployment.py +0 -0
  38. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/organization.py +0 -0
  39. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/project.py +0 -0
  40. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/surrogate.py +0 -0
  41. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/user.py +0 -0
  42. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/webhook.py +0 -0
  43. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/entities/xai.py +0 -0
  44. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/exceptions.py +0 -0
  45. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/libs/__init__.py +0 -0
  46. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/libs/http_client.py +0 -0
  47. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/libs/json_encoder.py +0 -0
  48. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/libs/semver.py +0 -0
  49. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/packtools/__init__.py +0 -0
  50. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/packtools/gem.py +0 -0
  51. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/packtools/keras_ig_helpers.py +0 -0
  52. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/packtools/project_attributions_helpers.py +0 -0
  53. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/packtools/template_model.py +0 -0
  54. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/__init__.py +0 -0
  55. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/alert_record.py +0 -0
  56. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/alert_rule.py +0 -0
  57. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/base.py +0 -0
  58. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/baseline.py +0 -0
  59. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/custom_expression.py +0 -0
  60. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/custom_features.py +0 -0
  61. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/dataset.py +0 -0
  62. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/events.py +0 -0
  63. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/file.py +0 -0
  64. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/filter_query.py +0 -0
  65. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/job.py +0 -0
  66. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/model.py +0 -0
  67. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/model_deployment.py +0 -0
  68. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/model_schema.py +0 -0
  69. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/model_spec.py +0 -0
  70. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/model_task_params.py +0 -0
  71. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/organization.py +0 -0
  72. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/project.py +0 -0
  73. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/response.py +0 -0
  74. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/server_info.py +0 -0
  75. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/user.py +0 -0
  76. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/webhook.py +0 -0
  77. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/xai.py +0 -0
  78. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/schemas/xai_params.py +0 -0
  79. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/__init__.py +0 -0
  80. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/__init__.py +0 -0
  81. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_alert_record.py +0 -0
  82. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_baseline.py +0 -0
  83. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_custom_metric.py +0 -0
  84. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_dataset.py +0 -0
  85. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_events.py +0 -0
  86. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_files.py +0 -0
  87. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_generate_model.py +0 -0
  88. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_job.py +0 -0
  89. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_mixin.py +0 -0
  90. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_model.py +0 -0
  91. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_model_artifact.py +0 -0
  92. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_model_deployment.py +0 -0
  93. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_model_surrogate.py +0 -0
  94. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_project.py +0 -0
  95. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_segment.py +0 -0
  96. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_webhook.py +0 -0
  97. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/apis/test_xai.py +0 -0
  98. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/conftest.py +0 -0
  99. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/test_connection.py +0 -0
  100. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/test_json_encoder.py +0 -0
  101. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/test_logger.py +0 -0
  102. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/test_utils.py +0 -0
  103. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/tests/utils.py +0 -0
  104. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/utils/__init__.py +0 -0
  105. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/utils/helpers.py +0 -0
  106. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/utils/logger.py +0 -0
  107. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/utils/model_generator.py +0 -0
  108. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/utils/validations.py +0 -0
  109. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/utils/version.py +0 -0
  110. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler/version.py +0 -0
  111. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler_client.egg-info/SOURCES.txt +0 -0
  112. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler_client.egg-info/dependency_links.txt +0 -0
  113. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler_client.egg-info/requires.txt +0 -0
  114. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/fiddler_client.egg-info/top_level.txt +0 -0
  115. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/setup.cfg +0 -0
  116. {fiddler_client-3.3.1 → fiddler_client-3.3.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fiddler-client
3
- Version: 3.3.1
3
+ Version: 3.3.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.3.2
@@ -286,7 +286,7 @@ class AlertRule(
286
286
  pagerduty_services=pagerduty_services,
287
287
  pagerduty_severity=pagerduty_severity,
288
288
  webhooks=webhooks,
289
- ).dict()
289
+ ).dict(exclude_none=True)
290
290
  except ValidationError as e:
291
291
  logger.exception('Invalid input: The format of input is not correct')
292
292
  raise e
@@ -1,5 +1,7 @@
1
1
  import json
2
2
  import logging
3
+ import uuid
4
+ from copy import deepcopy
3
5
  from http import HTTPStatus
4
6
  from uuid import UUID
5
7
 
@@ -24,6 +26,8 @@ from fiddler.tests.constants import (
24
26
  PROJECT_ID,
25
27
  PROJECT_NAME,
26
28
  TEST_EMAILS,
29
+ TEST_PAGERDUTY_SERVICES,
30
+ TEST_PAGERDUTY_SEVERITY,
27
31
  TEST_WEBHOOKS,
28
32
  URL,
29
33
  )
@@ -77,8 +81,8 @@ API_RESPONSE_200 = {
77
81
 
78
82
  ALERT_NOTIFICATION_API_RESPONSE_200 = {
79
83
  'data': {
80
- 'emails': TEST_EMAILS,
81
- 'webhooks': TEST_WEBHOOKS,
84
+ 'emails': [],
85
+ 'webhooks': [],
82
86
  'pagerduty_services': [],
83
87
  'pagerduty_severity': '',
84
88
  },
@@ -332,30 +336,126 @@ def test_disable_notifications(caplog) -> None:
332
336
 
333
337
 
334
338
  @responses.activate
335
- def test_set_notifications() -> None:
339
+ def test_set_notifications_email() -> None:
336
340
  responses.get(
337
341
  url=f'{URL}/v3/alert-rules/{ALERT_RULE_ID}',
338
342
  json=API_RESPONSE_200,
339
343
  )
340
344
 
341
345
  alert_rule = AlertRule.get(id_=ALERT_RULE_ID)
346
+ notification_resp = deepcopy(ALERT_NOTIFICATION_API_RESPONSE_200)
347
+ notification_resp['data']['emails'] = TEST_EMAILS
342
348
  resp = responses.patch(
343
349
  url=f'{URL}/v3/alert-rules/{ALERT_RULE_ID}/notification',
344
- json=ALERT_NOTIFICATION_API_RESPONSE_200,
350
+ json=notification_resp,
345
351
  )
346
352
  notifications = alert_rule.set_notification_config(
347
353
  emails=TEST_EMAILS,
348
- webhooks=TEST_WEBHOOKS,
349
354
  )
350
355
  assert json.loads(resp.calls[0].request.body) == {
351
356
  'emails': TEST_EMAILS,
357
+ }
358
+ assert notifications == notification_resp['data']
359
+
360
+ # Removing the emails from the notification config
361
+ notification_resp['data']['emails'] = []
362
+ resp = responses.patch(
363
+ url=f'{URL}/v3/alert-rules/{ALERT_RULE_ID}/notification',
364
+ json=notification_resp,
365
+ )
366
+ notifications = alert_rule.set_notification_config(
367
+ emails=[],
368
+ )
369
+ assert json.loads(resp.calls[0].request.body) == {
370
+ 'emails': [],
371
+ }
372
+ assert notifications == notification_resp['data']
373
+
374
+
375
+ @responses.activate
376
+ def test_set_notifications_pagerduty() -> None:
377
+ responses.get(
378
+ url=f'{URL}/v3/alert-rules/{ALERT_RULE_ID}',
379
+ json=API_RESPONSE_200,
380
+ )
381
+
382
+ alert_rule = AlertRule.get(id_=ALERT_RULE_ID)
383
+ notification_resp = deepcopy(ALERT_NOTIFICATION_API_RESPONSE_200)
384
+ notification_resp['data']['pagerduty_services'] = TEST_PAGERDUTY_SERVICES
385
+ notification_resp['data']['pagerduty_severity'] = TEST_PAGERDUTY_SEVERITY
386
+ resp = responses.patch(
387
+ url=f'{URL}/v3/alert-rules/{ALERT_RULE_ID}/notification',
388
+ json=notification_resp,
389
+ )
390
+ notifications = alert_rule.set_notification_config(
391
+ pagerduty_services=TEST_PAGERDUTY_SERVICES,
392
+ pagerduty_severity=TEST_PAGERDUTY_SEVERITY,
393
+ )
394
+
395
+ assert json.loads(resp.calls[0].request.body) == {
396
+ 'pagerduty_services': TEST_PAGERDUTY_SERVICES,
397
+ 'pagerduty_severity': TEST_PAGERDUTY_SEVERITY,
398
+ }
399
+ assert notifications == notification_resp['data']
400
+
401
+ # Removing the webhooks from the notification config
402
+ notification_resp['data']['pagerduty_services'] = []
403
+ notification_resp['data']['pagerduty_severity'] = ''
404
+ resp = responses.patch(
405
+ url=f'{URL}/v3/alert-rules/{ALERT_RULE_ID}/notification',
406
+ json=notification_resp,
407
+ )
408
+ notifications = alert_rule.set_notification_config(
409
+ pagerduty_services=[],
410
+ pagerduty_severity='',
411
+ )
412
+ assert json.loads(resp.calls[0].request.body) == {
413
+ 'pagerduty_services': [],
414
+ 'pagerduty_severity': '',
415
+ }
416
+ assert notifications == notification_resp['data']
417
+
418
+
419
+ @responses.activate
420
+ def test_set_notifications_webhooks() -> None:
421
+ responses.get(
422
+ url=f'{URL}/v3/alert-rules/{ALERT_RULE_ID}',
423
+ json=API_RESPONSE_200,
424
+ )
425
+
426
+ alert_rule = AlertRule.get(id_=ALERT_RULE_ID)
427
+ notification_resp = deepcopy(ALERT_NOTIFICATION_API_RESPONSE_200)
428
+ notification_resp['data']['webhooks'] = TEST_WEBHOOKS
429
+ resp = responses.patch(
430
+ url=f'{URL}/v3/alert-rules/{ALERT_RULE_ID}/notification',
431
+ json=notification_resp,
432
+ )
433
+ notifications = alert_rule.set_notification_config(
434
+ webhooks=TEST_WEBHOOKS,
435
+ )
436
+
437
+ notification_resp['data']['webhooks'] = [
438
+ uuid.UUID(webhook_uuid)
439
+ for webhook_uuid in notification_resp['data']['webhooks']
440
+ ]
441
+ assert json.loads(resp.calls[0].request.body) == {
352
442
  'webhooks': TEST_WEBHOOKS,
353
- 'pagerduty_services': None,
354
- 'pagerduty_severity': None,
355
443
  }
356
- assert notifications == NotificationConfig(
357
- **ALERT_NOTIFICATION_API_RESPONSE_200['data']
444
+ assert notifications == notification_resp['data']
445
+
446
+ # Removing the webhooks from the notification config
447
+ notification_resp['data']['webhooks'] = []
448
+ resp = responses.patch(
449
+ url=f'{URL}/v3/alert-rules/{ALERT_RULE_ID}/notification',
450
+ json=notification_resp,
358
451
  )
452
+ notifications = alert_rule.set_notification_config(
453
+ webhooks=[],
454
+ )
455
+ assert json.loads(resp.calls[0].request.body) == {
456
+ 'webhooks': [],
457
+ }
458
+ assert notifications == notification_resp['data']
359
459
 
360
460
 
361
461
  @responses.activate
@@ -21,6 +21,8 @@ DATASET_NAME = 'dataset3'
21
21
  BASELINE_ID = 'af05646f-0cef-4638-84c9-0d195df2575d'
22
22
  ALERT_RULE_ID = 'ed8f18e6-c319-4374-8884-71126a6bab85'
23
23
  TEST_EMAILS = ['test@fiddler.ai', 'admin@fiddler.ai']
24
+ TEST_PAGERDUTY_SERVICES = ['service1', 'service2']
25
+ TEST_PAGERDUTY_SEVERITY = 'critical'
24
26
  TEST_WEBHOOKS = [
25
27
  'e20bf4cc-d2cf-4540-baef-d96913b14f1b',
26
28
  '6e796fda-0111-4a72-82cd-f0f219e903e1',
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fiddler-client
3
- Version: 3.3.1
3
+ Version: 3.3.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.3.1
File without changes
File without changes
File without changes
File without changes