fiddler-client 3.11.0.dev3__tar.gz → 3.12.0rc1__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 (124) hide show
  1. {fiddler_client-3.11.0.dev3/fiddler_client.egg-info → fiddler_client-3.12.0rc1}/PKG-INFO +21 -26
  2. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/PUBLIC.md +8 -9
  3. fiddler_client-3.12.0rc1/fiddler/VERSION +1 -0
  4. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/connection.py +3 -3
  5. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/decorators.py +3 -3
  6. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/alert_rule.py +3 -3
  7. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/baseline.py +2 -2
  8. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/custom_expression.py +1 -1
  9. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/dataset.py +1 -1
  10. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/events.py +102 -14
  11. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/model.py +179 -49
  12. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/model_artifact.py +1 -1
  13. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/project.py +1 -1
  14. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/surrogate.py +1 -1
  15. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/webhook.py +1 -1
  16. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/xai.py +69 -19
  17. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/packtools/project_attributions_helpers.py +25 -25
  18. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/alert_record.py +5 -5
  19. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/alert_rule.py +13 -13
  20. fiddler_client-3.12.0rc1/fiddler/schemas/base.py +9 -0
  21. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/baseline.py +6 -6
  22. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/custom_expression.py +1 -1
  23. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/custom_features.py +23 -20
  24. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/dataset.py +1 -1
  25. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/file.py +1 -1
  26. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/job.py +3 -3
  27. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/model.py +7 -7
  28. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/model_deployment.py +8 -8
  29. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/model_schema.py +1 -4
  30. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/model_spec.py +8 -3
  31. fiddler_client-3.12.0rc1/fiddler/schemas/server_info.py +23 -0
  32. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/user.py +1 -1
  33. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/webhook.py +1 -1
  34. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/xai.py +8 -8
  35. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/xai_params.py +1 -1
  36. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_alert_rule.py +7 -7
  37. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_baseline.py +2 -2
  38. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_custom_metric.py +2 -2
  39. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_dataset.py +2 -2
  40. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_events.py +137 -0
  41. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_model.py +162 -9
  42. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_project.py +3 -3
  43. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_segment.py +2 -2
  44. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_webhook.py +2 -2
  45. fiddler_client-3.12.0rc1/fiddler/tests/artifact_test_dir/package.py +17 -0
  46. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/test_sagemaker_auth.py +9 -9
  47. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/test_utils.py +2 -2
  48. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1/fiddler_client.egg-info}/PKG-INFO +21 -26
  49. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler_client.egg-info/SOURCES.txt +2 -2
  50. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler_client.egg-info/requires.txt +4 -5
  51. fiddler_client-3.12.0rc1/pyproject.toml +87 -0
  52. fiddler_client-3.11.0.dev3/MANIFEST.in +0 -2
  53. fiddler_client-3.11.0.dev3/fiddler/VERSION +0 -1
  54. fiddler_client-3.11.0.dev3/fiddler/schemas/base.py +0 -8
  55. fiddler_client-3.11.0.dev3/fiddler/schemas/server_info.py +0 -18
  56. fiddler_client-3.11.0.dev3/setup.py +0 -47
  57. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/LICENSE.txt +0 -0
  58. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/README.md +0 -0
  59. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/__init__.py +0 -0
  60. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/configs.py +0 -0
  61. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/constants/__init__.py +0 -0
  62. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/constants/alert_rule.py +0 -0
  63. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/constants/baseline.py +0 -0
  64. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/constants/common.py +0 -0
  65. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/constants/dataset.py +0 -0
  66. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/constants/events.py +0 -0
  67. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/constants/job.py +0 -0
  68. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/constants/model.py +0 -0
  69. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/constants/model_deployment.py +0 -0
  70. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/constants/xai.py +0 -0
  71. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/__init__.py +0 -0
  72. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/alert_record.py +0 -0
  73. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/base.py +0 -0
  74. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/file.py +0 -0
  75. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/job.py +0 -0
  76. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/model_deployment.py +0 -0
  77. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/organization.py +0 -0
  78. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/entities/user.py +0 -0
  79. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/exceptions.py +0 -0
  80. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/libs/__init__.py +0 -0
  81. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/libs/aws.py +0 -0
  82. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/libs/http_client.py +0 -0
  83. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/libs/json_encoder.py +0 -0
  84. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/libs/semver.py +0 -0
  85. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/packtools/__init__.py +0 -0
  86. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/packtools/gem.py +0 -0
  87. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/packtools/keras_ig_helpers.py +0 -0
  88. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/packtools/template_model.py +0 -0
  89. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/__init__.py +0 -0
  90. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/events.py +0 -0
  91. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/filter_query.py +0 -0
  92. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/model_task_params.py +0 -0
  93. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/organization.py +0 -0
  94. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/project.py +0 -0
  95. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/schemas/response.py +0 -0
  96. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/__init__.py +0 -0
  97. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/__init__.py +0 -0
  98. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_alert_record.py +0 -0
  99. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_files.py +0 -0
  100. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_generate_model.py +0 -0
  101. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_job.py +0 -0
  102. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_mixin.py +0 -0
  103. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_model_artifact.py +0 -0
  104. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_model_deployment.py +0 -0
  105. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_model_surrogate.py +0 -0
  106. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/apis/test_xai.py +0 -0
  107. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/conftest.py +0 -0
  108. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/constants.py +0 -0
  109. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/test_connection.py +0 -0
  110. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/test_json_encoder.py +0 -0
  111. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/test_logger.py +0 -0
  112. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/tests/utils.py +0 -0
  113. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/utils/__init__.py +0 -0
  114. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/utils/column_generator.py +0 -0
  115. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/utils/decorators.py +0 -0
  116. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/utils/helpers.py +0 -0
  117. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/utils/logger.py +0 -0
  118. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/utils/model_generator.py +0 -0
  119. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/utils/validations.py +0 -0
  120. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/utils/version.py +0 -0
  121. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler/version.py +0 -0
  122. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler_client.egg-info/dependency_links.txt +0 -0
  123. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/fiddler_client.egg-info/top_level.txt +0 -0
  124. {fiddler_client-3.11.0.dev3 → fiddler_client-3.12.0rc1}/setup.cfg +0 -0
@@ -1,35 +1,31 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fiddler-client
3
- Version: 3.11.0.dev3
3
+ Version: 3.12.0rc1
4
4
  Summary: Python client for Fiddler Platform
5
- Home-page: https://fiddler.ai
6
5
  Author: Fiddler Labs
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://fiddler.ai
7
8
  Classifier: Programming Language :: Python :: 3
8
- Classifier: License :: OSI Approved :: Apache Software License
9
+ Classifier: Programming Language :: Python :: 3.10
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: Programming Language :: Python :: 3.14
9
14
  Classifier: Operating System :: OS Independent
10
- Requires-Python: >3.10.0
15
+ Requires-Python: >=3.10
11
16
  Description-Content-Type: text/markdown
12
17
  License-File: LICENSE.txt
13
- Requires-Dist: pip>=21.0
14
18
  Requires-Dist: requests<3
15
19
  Requires-Dist: requests-toolbelt
16
- Requires-Dist: pydantic>=1.10.17
17
- Requires-Dist: deprecated==1.2.18
20
+ Requires-Dist: pydantic>=2.0
21
+ Requires-Dist: deprecated>=1.2.18
18
22
  Requires-Dist: tqdm
19
23
  Requires-Dist: simplejson>=3.17.0
20
24
  Requires-Dist: pyyaml
21
25
  Requires-Dist: typing-extensions<5,>=4.6.0
22
- Requires-Dist: pandas==3.0.0
23
- Requires-Dist: pyarrow>=15.0.0
24
- Dynamic: author
25
- Dynamic: classifier
26
- Dynamic: description
27
- Dynamic: description-content-type
28
- Dynamic: home-page
26
+ Requires-Dist: pandas>=2.1.0
27
+ Requires-Dist: pyarrow>=17.0.0
29
28
  Dynamic: license-file
30
- Dynamic: requires-dist
31
- Dynamic: requires-python
32
- Dynamic: summary
33
29
 
34
30
  # fiddler-client
35
31
 
@@ -62,7 +58,7 @@ pip install fiddler-client
62
58
 
63
59
  ## Requirements
64
60
 
65
- - Python 3.9 or higher
61
+ - Python 3.10 or higher
66
62
  - pip 19.0 or higher (latest release preferred)
67
63
 
68
64
  ## Quick Start
@@ -84,11 +80,10 @@ for project in fdl.Project.list():
84
80
  ## Documentation
85
81
 
86
82
  * 📚 [Complete Documentation](https://docs.fiddler.ai/)
87
- * 🚀 [Getting Started with LLMs](https://docs.fiddler.ai/first-steps/getting-started-with-llm-monitoring)
88
- * [LLM Quick Start Guide](https://docs.fiddler.ai/tutorials-and-quick-starts/llm-and-genai/simple-llm-monitoring)
89
- * 🚀 [Getting Started with ML](https://docs.fiddler.ai/first-steps/getting-started-with-ml-model-observability)
90
- * [ML Quick Start Guide](https://docs.fiddler.ai/tutorials-and-quick-starts/ml-observability/quick-start)
91
- * 📖 [API Reference](https://docs.fiddler.ai/reference/about-the-fiddler-client)
83
+ * 🚀 [Getting Started with LLMs](https://docs.fiddler.ai/getting-started/llm-monitoring)
84
+ * 🚀 [Getting Started with ML](https://docs.fiddler.ai/getting-started/ml-observability)
85
+ * 🤖 [Getting Started with Agentic Monitoring](https://docs.fiddler.ai/getting-started/agentic-monitoring)
86
+ * 📖 [API Reference](https://docs.fiddler.ai/api/fiddler-python-client-sdk/python-client)
92
87
  * 💡 [Example Notebooks](https://github.com/fiddler-labs/fiddler-examples)
93
88
 
94
89
  ## Example Notebooks
@@ -103,12 +98,12 @@ Check out our [GitHub repository](https://github.com/fiddler-labs/fiddler-exampl
103
98
 
104
99
  ## Version History
105
100
 
106
- See our [release notes](https://docs.fiddler.ai/history/python-client-history) for detailed version history.
101
+ See our [release notes](https://docs.fiddler.ai/changelog/release-notes/python-sdk) for detailed version history.
107
102
 
108
103
  ## Support
109
104
 
110
- - 📧 Email: [support@fiddler.ai](support@fiddler.ai)
111
- - 💬 Community: [Join our Slack](https://www.fiddler.ai/slack)
105
+ - 📧 Email: [support@fiddler.ai](mailto:support@fiddler.ai)
106
+ - 💬 Community: [Join our Slack](https://www.fiddler.ai/slackinvite)
112
107
 
113
108
  ## License
114
109
 
@@ -29,7 +29,7 @@ pip install fiddler-client
29
29
 
30
30
  ## Requirements
31
31
 
32
- - Python 3.9 or higher
32
+ - Python 3.10 or higher
33
33
  - pip 19.0 or higher (latest release preferred)
34
34
 
35
35
  ## Quick Start
@@ -51,11 +51,10 @@ for project in fdl.Project.list():
51
51
  ## Documentation
52
52
 
53
53
  * 📚 [Complete Documentation](https://docs.fiddler.ai/)
54
- * 🚀 [Getting Started with LLMs](https://docs.fiddler.ai/first-steps/getting-started-with-llm-monitoring)
55
- * [LLM Quick Start Guide](https://docs.fiddler.ai/tutorials-and-quick-starts/llm-and-genai/simple-llm-monitoring)
56
- * 🚀 [Getting Started with ML](https://docs.fiddler.ai/first-steps/getting-started-with-ml-model-observability)
57
- * [ML Quick Start Guide](https://docs.fiddler.ai/tutorials-and-quick-starts/ml-observability/quick-start)
58
- * 📖 [API Reference](https://docs.fiddler.ai/reference/about-the-fiddler-client)
54
+ * 🚀 [Getting Started with LLMs](https://docs.fiddler.ai/getting-started/llm-monitoring)
55
+ * 🚀 [Getting Started with ML](https://docs.fiddler.ai/getting-started/ml-observability)
56
+ * 🤖 [Getting Started with Agentic Monitoring](https://docs.fiddler.ai/getting-started/agentic-monitoring)
57
+ * 📖 [API Reference](https://docs.fiddler.ai/api/fiddler-python-client-sdk/python-client)
59
58
  * 💡 [Example Notebooks](https://github.com/fiddler-labs/fiddler-examples)
60
59
 
61
60
  ## Example Notebooks
@@ -70,12 +69,12 @@ Check out our [GitHub repository](https://github.com/fiddler-labs/fiddler-exampl
70
69
 
71
70
  ## Version History
72
71
 
73
- See our [release notes](https://docs.fiddler.ai/history/python-client-history) for detailed version history.
72
+ See our [release notes](https://docs.fiddler.ai/changelog/release-notes/python-sdk) for detailed version history.
74
73
 
75
74
  ## Support
76
75
 
77
- - 📧 Email: [support@fiddler.ai](support@fiddler.ai)
78
- - 💬 Community: [Join our Slack](https://www.fiddler.ai/slack)
76
+ - 📧 Email: [support@fiddler.ai](mailto:support@fiddler.ai)
77
+ - 💬 Community: [Join our Slack](https://www.fiddler.ai/slackinvite)
79
78
 
80
79
  ## License
81
80
 
@@ -0,0 +1 @@
1
+ 3.12.0rc1
@@ -36,7 +36,7 @@ class Connection:
36
36
 
37
37
  Attributes:
38
38
  url: Base URL of the Fiddler platform instance
39
- token: Authentication token for API access
39
+ token: API key obtained from the Fiddler UI Credentials tab (named ``token`` for backward compatibility)
40
40
  proxies: Optional proxy configuration for HTTP requests
41
41
  timeout: HTTP request timeout settings
42
42
  verify: Whether to verify SSL/TLS certificates
@@ -87,7 +87,7 @@ class Connection:
87
87
 
88
88
  Args:
89
89
  url: The base URL to your Fiddler platform instance
90
- token: Authentication token obtained from the Fiddler UI
90
+ token: API key obtained from the Fiddler UI Credentials tab
91
91
  proxies: Dictionary mapping protocol to proxy URL for HTTP requests
92
92
  timeout: HTTP request timeout settings (float or tuple of connect/read timeouts)
93
93
  verify: Whether to verify server's TLS certificate (default: True)
@@ -346,7 +346,7 @@ def init( # pylint: disable=too-many-arguments
346
346
 
347
347
  Args:
348
348
  url: The base URL to your Fiddler platform instance
349
- token: Authentication token obtained from the Fiddler UI Credentials tab
349
+ token: API key obtained from the Fiddler UI Credentials tab
350
350
  proxies: Dictionary mapping protocol to proxy URL for HTTP requests
351
351
  timeout: HTTP request timeout settings (float or tuple of connect/read timeouts)
352
352
  verify: Whether to verify server's TLS certificate (default: True)
@@ -3,7 +3,7 @@ from functools import wraps
3
3
  from http import HTTPStatus
4
4
  from typing import Any, Callable, TypeVar, cast
5
5
 
6
- import pydantic.v1
6
+ import pydantic
7
7
  import requests
8
8
 
9
9
  from fiddler.exceptions import ApiError, Conflict, HttpError, NotFound, Unsupported
@@ -26,7 +26,7 @@ def handle_api_error(func: _WrappedFuncType) -> _WrappedFuncType: # noqa: C901
26
26
  # This often is premature use of `json()`. Calling code should
27
27
  # first check the response for the expected status code, and only
28
28
  # then attempt JSON-deserialization.
29
- raise HttpError(message=f'Invalid JSON response - {e.doc}') # type: ignore
29
+ raise HttpError(message=f'Invalid JSON response - {e.doc}')
30
30
  except requests.HTTPError as http_exc:
31
31
  # Note(JP): when we're here it means we got an HTTP response.
32
32
  # That's how this exception is documented.
@@ -57,7 +57,7 @@ def handle_api_error(func: _WrappedFuncType) -> _WrappedFuncType: # noqa: C901
57
57
  try:
58
58
  # https://github.com/fiddler-labs/fiddler/issues/9314
59
59
  error_resp = ErrorResponse(**http_exc.response.json())
60
- except pydantic.v1.ValidationError:
60
+ except pydantic.ValidationError:
61
61
  # We couldn't turn the HTTP error response into an object
62
62
  # satisfying model='ErrorResponse'. Now, instead of exposing
63
63
  # this to users as a pydantic.ValidationError (which is kinda
@@ -73,7 +73,7 @@ from datetime import datetime
73
73
  from typing import Any, Iterator
74
74
  from uuid import UUID
75
75
 
76
- from pydantic.v1 import ValidationError
76
+ from pydantic import ValidationError
77
77
 
78
78
  from fiddler.constants.alert_rule import (
79
79
  AlertCondition,
@@ -457,7 +457,7 @@ class AlertRule(
457
457
  )
458
458
 
459
459
  _filter = QueryCondition(rules=rules)
460
- params: dict[str, Any] = {'filter': _filter.json()}
460
+ params: dict[str, Any] = {'filter': _filter.model_dump_json()}
461
461
 
462
462
  if ordering:
463
463
  params['ordering'] = ','.join(ordering)
@@ -568,7 +568,7 @@ class AlertRule(
568
568
  pagerduty_services=pagerduty_services,
569
569
  pagerduty_severity=pagerduty_severity,
570
570
  webhooks=webhooks,
571
- ).dict(exclude_none=True)
571
+ ).model_dump(exclude_none=True)
572
572
  except ValidationError as e:
573
573
  logger.exception('Invalid input: The format of input is not correct')
574
574
  raise e
@@ -356,7 +356,7 @@ class Baseline(BaseEntity, ModelCompactMixin, ProjectCompactMixin, DatasetCompac
356
356
 
357
357
  response = cls._client().get(
358
358
  url=cls._get_url(),
359
- params={'filter': _filter.json()},
359
+ params={'filter': _filter.model_dump_json()},
360
360
  )
361
361
  if response.json()['data']['total'] == 0:
362
362
  raise_not_found('Baseline not found for the given identifier')
@@ -389,7 +389,7 @@ class Baseline(BaseEntity, ModelCompactMixin, ProjectCompactMixin, DatasetCompac
389
389
  )
390
390
 
391
391
  _filter = QueryCondition(rules=rules)
392
- params: dict[str, Any] = {'filter': _filter.json()}
392
+ params: dict[str, Any] = {'filter': _filter.model_dump_json()}
393
393
 
394
394
  url = f'/v3/models/{model_id}/baselines'
395
395
  for baseline in cls._paginate(url=url, params=params):
@@ -254,7 +254,7 @@ class CustomExpression(BaseEntity, ModelCompactMixin, ProjectCompactMixin):
254
254
  ]
255
255
  )
256
256
  params: dict[str, Any] = {
257
- "filter": _filter.json(),
257
+ "filter": _filter.model_dump_json(),
258
258
  }
259
259
 
260
260
  response = cls._client().get(
@@ -284,7 +284,7 @@ class Dataset(BaseEntity, ProjectCompactMixin):
284
284
 
285
285
  response = cls._client().get(
286
286
  url=cls._get_url(),
287
- params={'filter': _filter.json()},
287
+ params={'filter': _filter.model_dump_json()},
288
288
  )
289
289
 
290
290
  if response.json()['data']['total'] == 0:
@@ -3,8 +3,9 @@ from __future__ import annotations
3
3
  import logging
4
4
  import os
5
5
  import tempfile
6
+ import warnings
6
7
  from pathlib import Path
7
- from typing import Any, Callable
8
+ from typing import Any
8
9
  from uuid import UUID
9
10
 
10
11
  import pandas as pd
@@ -43,7 +44,11 @@ class EventPublisher(ConnectionMixin):
43
44
  update: bool = False,
44
45
  ) -> list[UUID] | Job:
45
46
  """
46
- Publish Pre-production or Production data
47
+ Publish Pre-production or Production data.
48
+
49
+ .. deprecated::
50
+ Use :meth:`publish_stream` for streaming events (list of dicts)
51
+ or :meth:`publish_batch` for batch publishing (file path or DataFrame).
47
52
 
48
53
  :param source: one of:
49
54
  Path or str path: path for data file.
@@ -55,29 +60,112 @@ class EventPublisher(ConnectionMixin):
55
60
 
56
61
  :return: list[UUID] for list of dicts source and Job object for file path or dataframe source.
57
62
  """
63
+ warnings.warn(
64
+ 'publish() is deprecated. Use publish_stream() for streaming events '
65
+ '(list of dicts) or publish_batch() for batch publishing '
66
+ '(file path or DataFrame).',
67
+ DeprecationWarning,
68
+ stacklevel=2,
69
+ )
58
70
 
59
- publish_method = self._get_publish_method(source=source)
71
+ if isinstance(source, list):
72
+ return self._publish_stream(
73
+ source=source,
74
+ environment=environment,
75
+ dataset_name=dataset_name,
76
+ update=update,
77
+ )
60
78
 
61
- return publish_method(
79
+ return self._publish_batch(
62
80
  source=source,
63
81
  environment=environment,
64
82
  dataset_name=dataset_name,
65
83
  update=update,
66
84
  )
67
85
 
68
- def _get_publish_method(
69
- self, source: list[dict[str, Any]] | str | Path | pd.DataFrame
70
- ) -> Callable:
71
- if isinstance(source, (str, Path)):
72
- return self._publish_file
86
+ @handle_api_error
87
+ def publish_stream(
88
+ self,
89
+ events: list[dict[str, Any]],
90
+ environment: EnvType = EnvType.PRODUCTION,
91
+ dataset_name: str | None = None,
92
+ update: bool = False,
93
+ ) -> list[UUID]:
94
+ """
95
+ Publish events via streaming.
96
+
97
+ Sends events synchronously to Fiddler. Events are written to an
98
+ in-memory queue and asynchronously persisted.
73
99
 
100
+ :param events: List of event dicts matching the model schema.
101
+ :param environment: Either EnvType.PRE_PRODUCTION or EnvType.PRODUCTION
102
+ :param dataset_name: Name of the dataset. Not supported for EnvType.PRODUCTION
103
+ :param update: flag indicating if the events are updates to previously published rows
104
+
105
+ :return: list[UUID] of published event IDs.
106
+ """
107
+ return self._publish_stream(
108
+ source=events,
109
+ environment=environment,
110
+ dataset_name=dataset_name,
111
+ update=update,
112
+ )
113
+
114
+ @handle_api_error
115
+ def publish_batch(
116
+ self,
117
+ source: str | Path | pd.DataFrame,
118
+ environment: EnvType = EnvType.PRODUCTION,
119
+ dataset_name: str | None = None,
120
+ update: bool = False,
121
+ ) -> Job:
122
+ """
123
+ Publish data via batch upload.
124
+
125
+ Uploads data as a file and kicks off an asynchronous server-side job.
126
+ Use the returned Job object to track progress.
127
+
128
+ :param source: One of:
129
+ - str or Path: path to a CSV or Parquet file.
130
+ - pd.DataFrame: events dataframe (converted to Parquet/CSV internally).
131
+ :param environment: Either EnvType.PRE_PRODUCTION or EnvType.PRODUCTION
132
+ :param dataset_name: Name of the dataset. Not supported for EnvType.PRODUCTION
133
+ :param update: flag indicating if the events are updates to previously published rows
134
+
135
+ :return: Job object for tracking the async upload.
136
+ """
137
+ return self._publish_batch(
138
+ source=source,
139
+ environment=environment,
140
+ dataset_name=dataset_name,
141
+ update=update,
142
+ )
143
+
144
+ def _publish_batch(
145
+ self,
146
+ source: str | Path | pd.DataFrame,
147
+ environment: EnvType = EnvType.PRODUCTION,
148
+ dataset_name: str | None = None,
149
+ update: bool = False,
150
+ ) -> Job:
151
+ """Internal dispatch for batch publishing."""
74
152
  if isinstance(source, pd.DataFrame):
75
- return self._publish_df
153
+ return self._publish_df(
154
+ source=source,
155
+ environment=environment,
156
+ dataset_name=dataset_name,
157
+ update=update,
158
+ )
76
159
 
77
- if isinstance(source, list):
78
- return self._publish_stream
160
+ if isinstance(source, (str, Path)):
161
+ return self._publish_file(
162
+ source=source,
163
+ environment=environment,
164
+ dataset_name=dataset_name,
165
+ update=update,
166
+ )
79
167
 
80
- raise ValueError(f'Unsupported source - {type(source)}')
168
+ raise ValueError(f'Unsupported batch source type - {type(source)}')
81
169
 
82
170
  def _publish_df(
83
171
  self,
@@ -188,7 +276,7 @@ class EventPublisher(ConnectionMixin):
188
276
  return method(
189
277
  url='/v3/events',
190
278
  data={
191
- 'source': source.dict(),
279
+ 'source': source.model_dump(),
192
280
  'model_id': self.model_id,
193
281
  'env_type': environment,
194
282
  'env_name': dataset_name,