fiddler-client 2.4.0.dev2__tar.gz → 2.5.0.dev2__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 (203) hide show
  1. {fiddler-client-2.4.0.dev2/fiddler_client.egg-info → fiddler-client-2.5.0.dev2}/PKG-INFO +15 -5
  2. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/PUBLIC.md +14 -4
  3. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/__init__.py +2 -0
  4. fiddler-client-2.5.0.dev2/fiddler/_version.py +1 -0
  5. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/api/alert_mixin.py +51 -1
  6. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/api/webhooks_mixin.py +6 -8
  7. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/core_objects.py +76 -26
  8. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schema/alert.py +9 -2
  9. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schemas/custom_features.py +44 -1
  10. fiddler-client-2.5.0.dev2/fiddler3/__init__.py +122 -0
  11. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/configs.py +3 -0
  12. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/connection.py +68 -1
  13. fiddler-client-2.5.0.dev2/fiddler3/constants/alert_rule.py +30 -0
  14. fiddler-client-2.5.0.dev2/fiddler3/constants/events.py +7 -0
  15. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/constants/model.py +9 -0
  16. fiddler-client-2.5.0.dev2/fiddler3/entities/alert_record.py +106 -0
  17. fiddler-client-2.5.0.dev2/fiddler3/entities/alert_rule.py +323 -0
  18. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/entities/base.py +2 -16
  19. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/entities/baseline.py +21 -15
  20. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/entities/dataset.py +1 -1
  21. fiddler-client-2.5.0.dev2/fiddler3/entities/events.py +136 -0
  22. fiddler-client-2.5.0.dev2/fiddler3/entities/file.py +162 -0
  23. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/entities/model.py +141 -24
  24. fiddler-client-2.5.0.dev2/fiddler3/entities/model_artifact.py +178 -0
  25. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/entities/model_deployment.py +12 -1
  26. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/entities/project.py +2 -2
  27. fiddler-client-2.4.0.dev2/fiddler3/entities/model_surrogate.py → fiddler-client-2.5.0.dev2/fiddler3/entities/surrogate.py +27 -29
  28. fiddler-client-2.5.0.dev2/fiddler3/entities/webhook.py +128 -0
  29. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/entities/xai.py +271 -5
  30. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/libs/http_client.py +1 -1
  31. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/libs/json_encoder.py +1 -1
  32. fiddler-client-2.5.0.dev2/fiddler3/schemas/alert_record.py +27 -0
  33. fiddler-client-2.5.0.dev2/fiddler3/schemas/alert_rule.py +39 -0
  34. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/custom_features.py +68 -12
  35. fiddler-client-2.5.0.dev2/fiddler3/schemas/events.py +15 -0
  36. fiddler-client-2.5.0.dev2/fiddler3/schemas/file.py +23 -0
  37. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/model.py +1 -6
  38. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/model_deployment.py +5 -4
  39. fiddler-client-2.5.0.dev2/fiddler3/schemas/webhook.py +23 -0
  40. fiddler-client-2.5.0.dev2/fiddler3/tests/apis/test_alert_record.py +99 -0
  41. fiddler-client-2.5.0.dev2/fiddler3/tests/apis/test_alert_rule.py +393 -0
  42. fiddler-client-2.5.0.dev2/fiddler3/tests/apis/test_events.py +169 -0
  43. fiddler-client-2.5.0.dev2/fiddler3/tests/apis/test_files.py +164 -0
  44. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/apis/test_model.py +60 -9
  45. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/apis/test_model_artifact.py +21 -0
  46. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/apis/test_project.py +3 -3
  47. fiddler-client-2.5.0.dev2/fiddler3/tests/apis/test_webhook.py +257 -0
  48. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/apis/test_xai.py +233 -1
  49. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/conftest.py +2 -2
  50. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/constants.py +5 -0
  51. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/test_connection.py +24 -1
  52. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/test_json_encoder.py +2 -2
  53. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/utils/helpers.py +20 -0
  54. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2/fiddler_client.egg-info}/PKG-INFO +15 -5
  55. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler_client.egg-info/SOURCES.txt +18 -3
  56. fiddler-client-2.5.0.dev2/tests/fiddler/__init__.py +0 -0
  57. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_alert.py +95 -5
  58. fiddler-client-2.5.0.dev2/tests/fiddler/utils/__init__.py +0 -0
  59. fiddler-client-2.4.0.dev2/fiddler/_version.py +0 -1
  60. fiddler-client-2.4.0.dev2/fiddler3/__init__.py +0 -39
  61. fiddler-client-2.4.0.dev2/fiddler3/entities/__init__.py +0 -7
  62. fiddler-client-2.4.0.dev2/fiddler3/entities/helpers.py +0 -21
  63. fiddler-client-2.4.0.dev2/fiddler3/entities/model_artifact.py +0 -350
  64. fiddler-client-2.4.0.dev2/fiddler3/schemas/__init__.py +0 -9
  65. fiddler-client-2.4.0.dev2/fiddler3/schemas/model_artifact.py +0 -6
  66. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/LICENSE.txt +0 -0
  67. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/MANIFEST.in +0 -0
  68. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/README.md +0 -0
  69. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/api/__init__.py +0 -0
  70. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/api/api.py +0 -0
  71. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/api/baseline_mixin.py +0 -0
  72. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/api/custom_metrics_mixin.py +0 -0
  73. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/api/dataset_mixin.py +0 -0
  74. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/api/events_mixin.py +0 -0
  75. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/api/explainability_mixin.py +0 -0
  76. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/api/helpers.py +0 -0
  77. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/api/job_mixin.py +0 -0
  78. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/api/model_artifact_deploy.py +0 -0
  79. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/api/model_deployment_mixin.py +0 -0
  80. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/api/model_mixin.py +0 -0
  81. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/api/project_mixin.py +0 -0
  82. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/api/segments_mixin.py +0 -0
  83. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/assets/__init__.py +0 -0
  84. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/assets/pg_reserved_words.py +0 -0
  85. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/constants.py +0 -0
  86. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/exceptions.py +0 -0
  87. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/libs/__init__.py +0 -0
  88. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/libs/http_client.py +0 -0
  89. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/packtools/__init__.py +0 -0
  90. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/packtools/gem.py +0 -0
  91. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/packtools/keras_ig_helpers.py +0 -0
  92. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/packtools/project_attributions_helpers.py +0 -0
  93. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/packtools/template_model.py +0 -0
  94. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schema/__init__.py +0 -0
  95. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schema/base.py +0 -0
  96. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schema/baseline.py +0 -0
  97. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schema/custom_metric.py +0 -0
  98. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schema/dataset.py +0 -0
  99. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schema/events.py +0 -0
  100. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schema/job.py +0 -0
  101. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schema/model.py +0 -0
  102. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schema/model_deployment.py +0 -0
  103. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schema/project.py +0 -0
  104. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schema/segment.py +0 -0
  105. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schema/server_info.py +0 -0
  106. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schema/user.py +0 -0
  107. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schema/webhook.py +0 -0
  108. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/schemas/__init__.py +0 -0
  109. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/utils/__init__.py +0 -0
  110. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/utils/decorators.py +0 -0
  111. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/utils/formatting.py +0 -0
  112. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/utils/general_checks.py +0 -0
  113. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/utils/helpers.py +0 -0
  114. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/utils/logger.py +0 -0
  115. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/utils/pandas_helper.py +0 -0
  116. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/utils/response_handler.py +0 -0
  117. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/utils/semver_version.py +0 -0
  118. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/utils/validations.py +0 -0
  119. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/utils/validator.py +0 -0
  120. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/validators/__init__.py +0 -0
  121. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler/validators/dataset_validator.py +0 -0
  122. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/constants/__init__.py +0 -0
  123. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/constants/baseline.py +0 -0
  124. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/constants/common.py +0 -0
  125. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/constants/dataset.py +0 -0
  126. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/constants/job.py +0 -0
  127. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/constants/model_deployment.py +0 -0
  128. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/constants/xai.py +0 -0
  129. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/decorators.py +0 -0
  130. {fiddler-client-2.4.0.dev2/fiddler3/libs → fiddler-client-2.5.0.dev2/fiddler3/entities}/__init__.py +0 -0
  131. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/entities/job.py +0 -0
  132. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/entities/organization.py +0 -0
  133. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/entities/user.py +0 -0
  134. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/exceptions.py +0 -0
  135. {fiddler-client-2.4.0.dev2/fiddler3/tests → fiddler-client-2.5.0.dev2/fiddler3/libs}/__init__.py +0 -0
  136. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/libs/semver.py +0 -0
  137. {fiddler-client-2.4.0.dev2/fiddler3/tests/apis → fiddler-client-2.5.0.dev2/fiddler3/schemas}/__init__.py +0 -0
  138. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/base.py +0 -0
  139. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/baseline.py +0 -0
  140. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/dataset.py +0 -0
  141. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/deployment_params.py +0 -0
  142. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/filter_query.py +0 -0
  143. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/job.py +0 -0
  144. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/model_schema.py +0 -0
  145. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/model_spec.py +0 -0
  146. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/model_task_params.py +0 -0
  147. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/organization.py +0 -0
  148. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/project.py +0 -0
  149. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/response.py +0 -0
  150. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/server_info.py +0 -0
  151. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/user.py +0 -0
  152. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/xai.py +0 -0
  153. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/schemas/xai_params.py +0 -0
  154. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2/fiddler3}/tests/__init__.py +0 -0
  155. {fiddler-client-2.4.0.dev2/tests/fiddler → fiddler-client-2.5.0.dev2/fiddler3/tests/apis}/__init__.py +0 -0
  156. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/apis/test_baseline.py +0 -0
  157. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/apis/test_dataset.py +0 -0
  158. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/apis/test_generate_schema.py +0 -0
  159. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/apis/test_job.py +0 -0
  160. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/apis/test_mixin.py +0 -0
  161. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/apis/test_model_deployment.py +0 -0
  162. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/apis/test_model_surrogate.py +0 -0
  163. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/test_logger.py +0 -0
  164. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/test_utils.py +0 -0
  165. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/tests/utils.py +0 -0
  166. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/utils/__init__.py +0 -0
  167. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/utils/logger.py +0 -0
  168. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/utils/model_schema_generator.py +0 -0
  169. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/utils/validations.py +0 -0
  170. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/utils/version.py +0 -0
  171. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler3/version.py +0 -0
  172. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler_client.egg-info/dependency_links.txt +0 -0
  173. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler_client.egg-info/requires.txt +0 -0
  174. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/fiddler_client.egg-info/top_level.txt +0 -0
  175. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/setup.cfg +0 -0
  176. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/setup.py +0 -0
  177. {fiddler-client-2.4.0.dev2/tests/fiddler/utils → fiddler-client-2.5.0.dev2/tests}/__init__.py +0 -0
  178. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/base.py +0 -0
  179. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/helper.py +0 -0
  180. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_add_model.py +0 -0
  181. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_baseline.py +0 -0
  182. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_check_version_decorator.py +0 -0
  183. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_custom_features.py +0 -0
  184. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_custom_metrics.py +0 -0
  185. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_dataset_api.py +0 -0
  186. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_events_api.py +0 -0
  187. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_exceptions.py +0 -0
  188. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_explainability_apis.py +0 -0
  189. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_file_upload.py +0 -0
  190. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_helpers.py +0 -0
  191. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_job.py +0 -0
  192. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_model.py +0 -0
  193. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_project.py +0 -0
  194. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_response_handler.py +0 -0
  195. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_segments.py +0 -0
  196. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_upload_dataset.py +0 -0
  197. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_validations.py +0 -0
  198. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/test_webhook.py +0 -0
  199. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/utils/test_general_checks.py +0 -0
  200. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/utils/test_pandas.py +0 -0
  201. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/fiddler/utils/tests_utils.py +0 -0
  202. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/test_object_inference.py +0 -0
  203. {fiddler-client-2.4.0.dev2 → fiddler-client-2.5.0.dev2}/tests/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fiddler-client
3
- Version: 2.4.0.dev2
3
+ Version: 2.5.0.dev2
4
4
  Summary: Python client for Fiddler Service
5
5
  Home-page: https://fiddler.ai
6
6
  Author: Fiddler Labs
@@ -42,9 +42,17 @@ Documentation for the API can be found [here](https://docs.fiddler.ai/reference/
42
42
 
43
43
  Version History
44
44
  -------------
45
+ ### 2.5.0
46
+ - #### **New Features**
47
+ - Add support for enrichments
48
+ - Allow pausing multiple alerts at once
49
+ - Add percentage violation metrics for alert
50
+
45
51
  ### 2.4.0
46
- - #### **New Features**
47
- - Support for enrichments
52
+ - ### **New Features**
53
+ - Add support for segments
54
+ - #### **Modifications**
55
+ - Ensure `TextEmbedding` and `ImageEmbedding` is supported for vectors in metadata
48
56
 
49
57
  ### 2.3.0
50
58
  - #### **New Features**
@@ -57,8 +65,10 @@ Version History
57
65
  - Relax pydantic version to allow any version between 1.9 and 2
58
66
 
59
67
  ### 2.2.0
60
- - #### **New Features**
61
- - Support segments
68
+ - #### **Modifications**
69
+ - `add_custom_metric()` supports an optional `description` parameter
70
+ - `fql` is renamed to `definition` in `add_custom_metric()`
71
+ - A new `get_custom_metric()` function to get details about a single custom metric.
62
72
 
63
73
  ### 2.1.2
64
74
  - #### **Modifications**
@@ -19,9 +19,17 @@ Documentation for the API can be found [here](https://docs.fiddler.ai/reference/
19
19
 
20
20
  Version History
21
21
  -------------
22
+ ### 2.5.0
23
+ - #### **New Features**
24
+ - Add support for enrichments
25
+ - Allow pausing multiple alerts at once
26
+ - Add percentage violation metrics for alert
27
+
22
28
  ### 2.4.0
23
- - #### **New Features**
24
- - Support for enrichments
29
+ - ### **New Features**
30
+ - Add support for segments
31
+ - #### **Modifications**
32
+ - Ensure `TextEmbedding` and `ImageEmbedding` is supported for vectors in metadata
25
33
 
26
34
  ### 2.3.0
27
35
  - #### **New Features**
@@ -34,8 +42,10 @@ Version History
34
42
  - Relax pydantic version to allow any version between 1.9 and 2
35
43
 
36
44
  ### 2.2.0
37
- - #### **New Features**
38
- - Support segments
45
+ - #### **Modifications**
46
+ - `add_custom_metric()` supports an optional `description` parameter
47
+ - `fql` is renamed to `definition` in `add_custom_metric()`
48
+ - A new `get_custom_metric()` function to get details about a single custom metric.
39
49
 
40
50
  ### 2.1.2
41
51
  - #### **Modifications**
@@ -50,6 +50,7 @@ from fiddler.schemas.custom_features import (
50
50
  Multivariate,
51
51
  TextEmbedding,
52
52
  VectorFeature,
53
+ Enrichment,
53
54
  )
54
55
  from fiddler.utils import ColorLogger
55
56
  from fiddler.utils.logger import get_logger
@@ -71,6 +72,7 @@ __all__ = [
71
72
  'VectorFeature',
72
73
  'TextEmbedding',
73
74
  'ImageEmbedding',
75
+ 'Enrichment',
74
76
  'ColorLogger',
75
77
  'DatasetInfo',
76
78
  'DataType',
@@ -0,0 +1 @@
1
+ __version__ = '2.5.0.dev2'
@@ -6,6 +6,8 @@ from typing import Any, Dict, List, Optional, Union
6
6
 
7
7
  from pydantic import parse_obj_as
8
8
 
9
+ import fiddler3
10
+ from fiddler3.entities.model import Model
9
11
  from fiddler.libs.http_client import RequestClient
10
12
  from fiddler.schema.alert import (
11
13
  AlertCondition,
@@ -38,6 +40,8 @@ class AlertMixin:
38
40
  client: RequestClient
39
41
  organization_name: str
40
42
  server_info: ServerInfo
43
+ url: str
44
+ auth_token: str
41
45
 
42
46
  @handle_api_error_response
43
47
  def add_alert_rule(
@@ -61,7 +65,7 @@ class AlertMixin:
61
65
  warning_threshold: Optional[float] = None,
62
66
  notifications_config: Optional[Dict[str, Any]] = None,
63
67
  ) -> AlertRule:
64
- """
68
+ f"""
65
69
  To add an alert rule
66
70
 
67
71
  :param project_id: Unique project name for which the alert rule is created
@@ -488,3 +492,49 @@ class AlertMixin:
488
492
  },
489
493
  'webhooks': webhooks_dict,
490
494
  }
495
+
496
+ def update_alert_notification_status(
497
+ self,
498
+ notification_status: bool,
499
+ alert_config_ids: Optional[list[str]] = None,
500
+ model_id: Optional[str] = None,
501
+ ) -> list[AlertRuleWithNotifications]:
502
+ """
503
+ To enable/disable the notifications for a list of Alert Ids or for a given Model Id.
504
+ Either the Alert Ids should be given or the Model Id, but not both.
505
+ :param notification_status: The value of notification status for an alert
506
+ :param alert_config_ids: List of Alert Ids, on which we need to update notification
507
+ :param model_id: The Model Id which for whom we want to update all alerts.
508
+ :return: List of updated Alert Rules.
509
+ """
510
+ if not alert_config_ids and not model_id:
511
+ raise ValueError('Either alert_config_ids or model_id must be specified')
512
+ elif alert_config_ids and model_id:
513
+ raise ValueError(
514
+ 'Either alert_config_ids or model_id should be specified, not both.'
515
+ )
516
+
517
+ updated_alert_configs: list[AlertRuleWithNotifications] = []
518
+ alert_ids: list[str] = []
519
+
520
+ if alert_config_ids:
521
+ # verify that all the alert-configs are valid
522
+ for alert_id in alert_config_ids:
523
+ self.client.get(
524
+ url=f'alert-configs/{alert_id}',
525
+ )
526
+ alert_ids = alert_config_ids
527
+
528
+ if model_id:
529
+ fiddler3.init(url=self.url, token=self.auth_token)
530
+ model: Model = Model.get(id_=model_id)
531
+ alerts: list[AlertRule] = self.get_alert_rules(model_id=model.name)
532
+ alert_ids = [alert.alert_rule_uuid for alert in alerts]
533
+
534
+ for alert_id in alert_ids:
535
+ updated_alert_configs.append(
536
+ self.update_alert_rule(
537
+ alert_config_uuid=alert_id, enable_notification=notification_status
538
+ )
539
+ )
540
+ return updated_alert_configs
@@ -1,5 +1,5 @@
1
1
  from http import HTTPStatus
2
- from typing import List
2
+ from typing import Dict, List
3
3
 
4
4
  from pydantic import parse_obj_as
5
5
 
@@ -80,13 +80,11 @@ class WebhookMixin:
80
80
 
81
81
  :returns: Updated `Webhook` object.
82
82
  """
83
- request_body = Webhook(
84
- uuid=uuid,
85
- organization_name=self.organization_name,
86
- name=name,
87
- url=url,
88
- provider=provider,
89
- ).dict()
83
+ request_body: Dict[str, str] = {
84
+ 'name': name,
85
+ 'url': url,
86
+ 'provider': provider,
87
+ }
90
88
  response = self.client.patch(
91
89
  url=f'webhooks/{uuid}',
92
90
  data=request_body,
@@ -28,6 +28,7 @@ from pandas.api.types import CategoricalDtype
28
28
 
29
29
  from fiddler.schemas.custom_features import (
30
30
  CustomFeature,
31
+ Enrichment,
31
32
  ImageEmbedding,
32
33
  Multivariate,
33
34
  TextEmbedding,
@@ -1231,10 +1232,10 @@ class ModelInfo:
1231
1232
  'The custom_features argument only accepts a list of CustomFeature objects.'
1232
1233
  )
1233
1234
 
1234
- available_cols = (
1235
- self.get_input_names()
1236
- + self.get_target_names()
1237
- + self.get_metadata_names()
1235
+ available_cols: Set[str] = set().union(
1236
+ self.get_input_names(),
1237
+ self.get_target_names(),
1238
+ self.get_metadata_names(),
1238
1239
  )
1239
1240
 
1240
1241
  numeric_cols = self.get_input_pandas_dtypes()
@@ -1243,19 +1244,18 @@ class ModelInfo:
1243
1244
  if self.targets:
1244
1245
  numeric_cols.update(self.get_target_pandas_dtypes())
1245
1246
 
1246
- valid_numeric_names = [
1247
+ valid_numeric_names = set(
1247
1248
  k
1248
1249
  for k, v in numeric_cols.items()
1249
1250
  if v in (DataType.INTEGER.value, DataType.FLOAT.value)
1250
- ]
1251
-
1252
- valid_vector_cols = [
1251
+ )
1252
+ valid_vector_cols = set(
1253
1253
  vec_col.name
1254
1254
  for vec_col in (self.inputs or []) + (self.metadata or [])
1255
1255
  if vec_col.data_type.is_vector()
1256
- ]
1256
+ )
1257
1257
 
1258
- unique_cf_names = []
1258
+ valid_cf_names, valid_enrichment_names = set(), set()
1259
1259
  for feature in self.custom_features:
1260
1260
  if not isinstance(feature, CustomFeature):
1261
1261
  raise ValueError(
@@ -1267,42 +1267,92 @@ class ModelInfo:
1267
1267
  f'A column name "{feature.name}" already exists in the dataset. Please use a different name for custom feature {feature}.'
1268
1268
  )
1269
1269
 
1270
- if feature.name in unique_cf_names:
1270
+ if feature.name in valid_cf_names:
1271
1271
  raise ValueError(
1272
1272
  f'Multiple custom features are defined with the same name {feature.name}.'
1273
1273
  )
1274
- else:
1275
- unique_cf_names.append(feature.name)
1274
+ if isinstance(feature, Enrichment):
1275
+ valid_enrichment_names.add(feature.name)
1276
+ valid_cf_names.add(feature.name)
1276
1277
 
1278
+ for feature in self.custom_features:
1277
1279
  if isinstance(feature, Multivariate):
1278
1280
  self.validate_multivariate_cf(feature, valid_numeric_names)
1279
1281
  elif isinstance(feature, TextEmbedding):
1280
- self.validate_text_embedding_cf(
1282
+ self.validate_embedding_cf(
1281
1283
  feature,
1282
1284
  available_cols,
1283
1285
  valid_vector_cols,
1286
+ valid_enrichment_names,
1287
+ )
1288
+ elif isinstance(feature, ImageEmbedding):
1289
+ self.validate_embedding_cf(
1290
+ feature,
1291
+ available_cols,
1292
+ valid_vector_cols,
1293
+ [],
1284
1294
  )
1285
1295
  elif isinstance(feature, VectorFeature):
1286
1296
  self.validate_vector_cf(feature, valid_vector_cols)
1297
+ elif isinstance(feature, Enrichment):
1298
+ self.validate_enrichment_cf(feature, available_cols, valid_cf_names)
1287
1299
 
1288
- def validate_text_embedding_cf(
1300
+ def validate_enrichment_cf(
1289
1301
  self,
1290
- feature: TextEmbedding,
1291
- available_cols: List[str],
1292
- valid_vector_cols: List[str],
1302
+ feature: Enrichment,
1303
+ available_cols: Iterable[str],
1304
+ valid_cf_names: Iterable[str],
1293
1305
  ) -> None:
1294
- if feature.column not in valid_vector_cols:
1306
+ if not feature.columns:
1295
1307
  raise ValueError(
1296
- f"Column '{feature.column}' defined in {feature.name} ({feature.__class__.__name__}) does not exist or not of type vector."
1308
+ f'{feature.name} ({feature.__class__.__name__}) must specify at least one enrichment/column/custom feature in columns.'
1297
1309
  )
1310
+ for column in feature.columns:
1311
+ if column == feature.name:
1312
+ raise ValueError(
1313
+ f'{feature.name} ({feature.__class__.__name__}) cannot depend on itself.'
1314
+ )
1315
+ if column not in valid_cf_names and column not in available_cols:
1316
+ raise ValueError(
1317
+ f"Column '{column}' defined in {feature.name} ({feature.__class__.__name__}) does not exist in the data, as a custom feature or as an enrichment."
1318
+ )
1298
1319
 
1299
- if feature.source_column not in available_cols:
1300
- raise ValueError(
1301
- f'{feature.name} ({feature.__class__.__name__}) needs to specify source_col.'
1302
- )
1320
+ def validate_embedding_cf(
1321
+ self,
1322
+ feature: Union[TextEmbedding, ImageEmbedding],
1323
+ available_cols: Iterable[str],
1324
+ valid_vector_cols: Iterable[str],
1325
+ valid_enrichment_names: Iterable[str],
1326
+ ) -> None:
1327
+ if isinstance(feature, TextEmbedding):
1328
+ if not feature.n_tags:
1329
+ raise ValueError(
1330
+ f'{feature.name} ({feature.__class__.__name__}) must specify a number of tags.'
1331
+ )
1332
+
1333
+ if feature.n_tags < 0:
1334
+ raise ValueError(
1335
+ f'{feature.name} ({feature.__class__.__name__}) must specify a non-negative number of tags.'
1336
+ )
1337
+
1338
+ if feature.column not in valid_vector_cols:
1339
+ # we require either a column or source_column
1340
+ if not feature.source_column:
1341
+ raise ValueError(
1342
+ f'{feature.name} ({feature.__class__.__name__}) needs to specify source_column.'
1343
+ )
1344
+ if feature.source_column not in available_cols:
1345
+ raise ValueError(
1346
+ f'source_column {feature.source_column} defined in {feature.name} ({feature.__class__.__name__}) does not exist or cannot be used as a source column.'
1347
+ )
1348
+ # column could be the result of an enrichment
1349
+ if feature.column not in valid_enrichment_names:
1350
+ raise ValueError(
1351
+ f"Column/Enrichment'{feature.column}' defined in {feature.name} ({feature.__class__.__name__}) does not exist or not of type vector."
1352
+ )
1303
1353
 
1304
1354
  def validate_vector_cf(
1305
- self, feature: VectorFeature, valid_vector_cols: List[str]
1355
+ self, feature: VectorFeature, valid_vector_cols: Iterable[str]
1306
1356
  ) -> None:
1307
1357
  if feature.column not in valid_vector_cols:
1308
1358
  raise ValueError(
@@ -1310,7 +1360,7 @@ class ModelInfo:
1310
1360
  )
1311
1361
 
1312
1362
  def validate_multivariate_cf(
1313
- self, feature: Multivariate, valid_numeric_names: List[str]
1363
+ self, feature: Multivariate, valid_numeric_names: Iterable[str]
1314
1364
  ) -> None:
1315
1365
  if len(feature.columns or []) < 2:
1316
1366
  raise ValueError(
@@ -34,6 +34,12 @@ class Metric(str, enum.Enum):
34
34
  MISSING_VALUE = 'null_violation_count'
35
35
  RANGE_VIOLATION = 'range_violation_count'
36
36
  TYPE_VIOLATION = 'type_violation_count'
37
+ ANY_VIOLATION = 'any_violation_count'
38
+
39
+ MISSING_VALUE_PCT = 'null_violation_percentage'
40
+ RANGE_VIOLATION_PCT = 'range_violation_percentage'
41
+ TYPE_VIOLATION_PCT = 'type_violation_percentage'
42
+ ANY_VIOLATION_PCT = 'any_violation_percentage'
37
43
 
38
44
  ## Performance metrics
39
45
  # Binary Classification
@@ -47,7 +53,6 @@ class Metric(str, enum.Enum):
47
53
  CALIBRATED_THRESHOLD = 'calibrated_threshold'
48
54
  GMEAN = 'geometric_mean'
49
55
  LOG_LOSS = 'log_loss'
50
-
51
56
 
52
57
  # Regression
53
58
  R2 = 'r2'
@@ -192,7 +197,7 @@ class AlertRule(BaseDataSchema):
192
197
  time_bucket: Optional[int]
193
198
  alert_type_display_name: str
194
199
  metric_display_name: str
195
- enable_notification: bool
200
+ enable_notification: Optional[bool]
196
201
 
197
202
  @root_validator(pre=True)
198
203
  def set_feature_names(cls, values: dict) -> dict:
@@ -224,4 +229,6 @@ class TriggeredAlerts(BaseDataSchema):
224
229
  message: str
225
230
  multi_col_values: Optional[Dict[str, float]]
226
231
  feature_name: Optional[str]
232
+ alert_record_main_version: Optional[int]
233
+ alert_record_sub_version: Optional[int]
227
234
  segment: Optional[Segment]
@@ -1,7 +1,7 @@
1
1
  from enum import Enum
2
2
  from typing import Any, Dict, List, Optional, Type, TypeVar
3
3
 
4
- from pydantic import BaseModel, Extra
4
+ from pydantic import BaseModel, Extra, validator
5
5
 
6
6
  CustomFeatureTypeVar = TypeVar('CustomFeatureTypeVar', bound='CustomFeature')
7
7
  DEFAULT_NUM_CLUSTERS = 5
@@ -22,6 +22,12 @@ class CustomFeature(BaseModel):
22
22
  n_clusters: Optional[int] = DEFAULT_NUM_CLUSTERS
23
23
  centroids: Optional[List] = None
24
24
 
25
+ @validator('n_clusters')
26
+ def validate_n_clusters(cls, value: int) -> int: # noqa: N805
27
+ if value < 0:
28
+ raise ValueError('n_clusters must be greater than 0')
29
+ return value
30
+
25
31
  class Config:
26
32
  allow_mutation = False
27
33
  extra = Extra.forbid
@@ -47,6 +53,8 @@ class CustomFeature(BaseModel):
47
53
  return TextEmbedding.parse_obj(deserialized_json)
48
54
  elif feature_type == CustomFeatureType.FROM_IMAGE_EMBEDDING:
49
55
  return ImageEmbedding.parse_obj(deserialized_json)
56
+ elif feature_type == CustomFeatureType.ENRICHMENT:
57
+ return Enrichment.parse_obj(deserialized_json)
50
58
  else:
51
59
  raise ValueError(f'Unsupported feature type: {feature_type}')
52
60
 
@@ -64,6 +72,10 @@ class CustomFeature(BaseModel):
64
72
  return_dict['source_column'] = self.source_column
65
73
  if isinstance(self, TextEmbedding):
66
74
  return_dict['n_tags'] = self.n_tags
75
+ elif isinstance(self, Enrichment):
76
+ return_dict['columns'] = self.columns
77
+ return_dict['enrichment'] = self.enrichment
78
+ return_dict['config'] = self.config
67
79
  else:
68
80
  raise ValueError(f'Unsupported feature type: {self.type} {type(self)}')
69
81
 
@@ -75,6 +87,12 @@ class Multivariate(CustomFeature):
75
87
  columns: List[str]
76
88
  monitor_components: bool = False
77
89
 
90
+ @validator('columns')
91
+ def validate_columns(cls, value: List[str]) -> List[str]: # noqa: N805
92
+ if len(value) < 2:
93
+ raise ValueError('Multivariate features must have at least 2 columns')
94
+ return value
95
+
78
96
 
79
97
  class VectorFeature(CustomFeature):
80
98
  type: CustomFeatureType = CustomFeatureType.FROM_VECTOR
@@ -86,6 +104,31 @@ class TextEmbedding(VectorFeature):
86
104
  type: CustomFeatureType = CustomFeatureType.FROM_TEXT_EMBEDDING
87
105
  n_tags: Optional[int] = DEFAULT_NUM_TAGS
88
106
 
107
+ @validator('source_column')
108
+ def validate_source_column(cls, value: str) -> str: # noqa: N805
109
+ if value is None:
110
+ raise ValueError('source_column must be specified')
111
+ return value
112
+
113
+ @validator('n_tags')
114
+ def validate_n_tags(cls, value: int) -> int: # noqa: N805
115
+ if value < 1:
116
+ raise ValueError('n_tags must be greater than 0')
117
+ return value
118
+
89
119
 
90
120
  class ImageEmbedding(VectorFeature):
91
121
  type: CustomFeatureType = CustomFeatureType.FROM_IMAGE_EMBEDDING
122
+
123
+ @validator('source_column')
124
+ def validate_source_column(cls, value: str) -> str: # noqa: N805
125
+ if value is None:
126
+ raise ValueError('source_column must be specified')
127
+ return value
128
+
129
+
130
+ class Enrichment(CustomFeature):
131
+ type: CustomFeatureType = CustomFeatureType.ENRICHMENT
132
+ columns: List[str]
133
+ enrichment: str
134
+ config: Dict[str, Any] = {}
@@ -0,0 +1,122 @@
1
+ from fiddler3.connection import Connection, ConnectionMixin, init # noqa
2
+ from fiddler3.constants.alert_rule import ( # noqa
3
+ AlertCondition,
4
+ BinSize,
5
+ CompareTo,
6
+ Priority,
7
+ )
8
+ from fiddler3.constants.baseline import BaselineType, WindowSize # noqa
9
+ from fiddler3.constants.dataset import EnvType # noqa
10
+ from fiddler3.constants.job import JobStatus # noqa
11
+ from fiddler3.constants.model import ( # noqa
12
+ ArtifactStatus,
13
+ CustomFeatureType,
14
+ DataType,
15
+ ModelInputType,
16
+ ModelTask,
17
+ )
18
+ from fiddler3.constants.model_deployment import ArtifactType, DeploymentType # noqa
19
+ from fiddler3.constants.xai import ExplainMethod # noqa
20
+ from fiddler3.entities.alert_record import AlertRecord # noqa
21
+ from fiddler3.entities.alert_rule import AlertRule # noqa
22
+ from fiddler3.entities.baseline import Baseline # noqa
23
+ from fiddler3.entities.dataset import Dataset # noqa
24
+ from fiddler3.entities.file import File # noqa
25
+ from fiddler3.entities.job import Job # noqa
26
+ from fiddler3.entities.model import Model # noqa
27
+ from fiddler3.entities.model_deployment import ModelDeployment # noqa
28
+ from fiddler3.entities.project import Project # noqa
29
+ from fiddler3.entities.webhook import Webhook # noqa
30
+ from fiddler3.exceptions import ( # noqa
31
+ ApiError,
32
+ AsyncJobFailed,
33
+ Conflict,
34
+ ConnectionError,
35
+ ConnectionTimeout,
36
+ HttpError,
37
+ IncompatibleClient,
38
+ NotFound,
39
+ Unsupported,
40
+ )
41
+ from fiddler3.schemas.custom_features import ( # noqa
42
+ CustomFeature,
43
+ Enrichment,
44
+ ImageEmbedding,
45
+ Multivariate,
46
+ TextEmbedding,
47
+ VectorFeature,
48
+ )
49
+ from fiddler3.schemas.dataset import EnvType # noqa
50
+ from fiddler3.schemas.deployment_params import DeploymentParams # noqa
51
+ from fiddler3.schemas.model_schema import ModelSchema # noqa
52
+ from fiddler3.schemas.model_spec import ModelSpec # noqa
53
+ from fiddler3.schemas.model_task_params import ModelTaskParams # noqa
54
+ from fiddler3.schemas.xai import ( # noqa
55
+ DatasetDataSource,
56
+ EventIdDataSource,
57
+ RowDataSource,
58
+ SqlSliceQueryDataSource,
59
+ )
60
+ from fiddler3.schemas.xai_params import XaiParams # noqa
61
+ from fiddler3.utils.logger import set_logging # noqa
62
+
63
+ __all__ = [
64
+ 'Connection',
65
+ 'ConnectionMixin',
66
+ 'init',
67
+ # Constants
68
+ 'AlertCondition',
69
+ 'ArtifactStatus',
70
+ 'ArtifactType',
71
+ 'BaselineType',
72
+ 'BinSize',
73
+ 'CompareTo',
74
+ 'DataType',
75
+ 'DeploymentType',
76
+ 'EnvType',
77
+ 'ExplainMethod',
78
+ 'JobStatus',
79
+ 'ModelInputType',
80
+ 'ModelTask',
81
+ 'Priority',
82
+ 'WindowSize',
83
+ # Schemas
84
+ 'CustomFeature',
85
+ 'DatasetDataSource',
86
+ 'DeploymentParams',
87
+ 'Enrichment',
88
+ 'EventIdDataSource',
89
+ 'ImageEmbedding',
90
+ 'ModelSchema',
91
+ 'ModelSpec',
92
+ 'ModelTaskParams',
93
+ 'Multivariate',
94
+ 'RowDataSource',
95
+ 'SqlSliceQueryDataSource',
96
+ 'TextEmbedding',
97
+ 'VectorFeature',
98
+ 'XaiParams',
99
+ # Entities
100
+ 'AlertRecord',
101
+ 'AlertRule',
102
+ 'Baseline',
103
+ 'Dataset',
104
+ 'File',
105
+ 'Job',
106
+ 'Model',
107
+ 'ModelDeployment',
108
+ 'Project',
109
+ 'Webhook',
110
+ # Exceptions
111
+ 'NotFound',
112
+ 'Conflict',
113
+ 'IncompatibleClient',
114
+ 'AsyncJobFailed',
115
+ 'Unsupported',
116
+ 'HttpError',
117
+ 'ConnectionTimeout',
118
+ 'ConnectionError',
119
+ 'ApiError',
120
+ # Utilities
121
+ 'set_logging',
122
+ ]
@@ -3,3 +3,6 @@ MIN_SERVER_VERSION = '23.7.0' # @TODO: Change this before 3.0 release
3
3
  DEFAULT_PAGE_SIZE = 50
4
4
  JOB_POLL_INTERVAL = 3
5
5
  JOB_WAIT_TIMEOUT = 1800
6
+ STREAM_EVENT_LIMIT = 1000
7
+ DEFAULT_NUM_CLUSTERS = 5
8
+ DEFAULT_NUM_TAGS = 5