fiddler-client 3.9.1__tar.gz → 3.10.0__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 (149) hide show
  1. fiddler-client-3.10.0/PKG-INFO +103 -0
  2. fiddler-client-3.10.0/PUBLIC.md +86 -0
  3. fiddler-client-3.10.0/fiddler/VERSION +1 -0
  4. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/__init__.py +2 -0
  5. fiddler-client-3.10.0/fiddler/connection.py +426 -0
  6. fiddler-client-3.10.0/fiddler/constants/alert_rule.py +209 -0
  7. fiddler-client-3.10.0/fiddler/constants/baseline.py +186 -0
  8. fiddler-client-3.10.0/fiddler/constants/dataset.py +145 -0
  9. fiddler-client-3.10.0/fiddler/constants/events.py +22 -0
  10. fiddler-client-3.10.0/fiddler/constants/job.py +250 -0
  11. fiddler-client-3.10.0/fiddler/constants/model.py +1046 -0
  12. fiddler-client-3.10.0/fiddler/constants/model_deployment.py +30 -0
  13. fiddler-client-3.10.0/fiddler/constants/xai.py +314 -0
  14. fiddler-client-3.10.0/fiddler/entities/alert_record.py +277 -0
  15. fiddler-client-3.10.0/fiddler/entities/alert_rule.py +593 -0
  16. fiddler-client-3.10.0/fiddler/entities/baseline.py +454 -0
  17. fiddler-client-3.10.0/fiddler/entities/custom_expression.py +440 -0
  18. fiddler-client-3.10.0/fiddler/entities/dataset.py +455 -0
  19. fiddler-client-3.10.0/fiddler/entities/job.py +436 -0
  20. fiddler-client-3.10.0/fiddler/entities/model.py +1230 -0
  21. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/entities/model_artifact.py +41 -4
  22. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/entities/model_deployment.py +41 -3
  23. fiddler-client-3.10.0/fiddler/entities/project.py +590 -0
  24. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/entities/surrogate.py +37 -4
  25. fiddler-client-3.10.0/fiddler/entities/webhook.py +299 -0
  26. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/entities/xai.py +43 -2
  27. fiddler-client-3.10.0/fiddler/exceptions.py +377 -0
  28. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/alert_rule.py +2 -1
  29. fiddler-client-3.10.0/fiddler/schemas/custom_features.py +382 -0
  30. fiddler-client-3.10.0/fiddler/schemas/model_deployment.py +82 -0
  31. fiddler-client-3.10.0/fiddler/schemas/model_schema.py +143 -0
  32. fiddler-client-3.10.0/fiddler/schemas/model_spec.py +117 -0
  33. fiddler-client-3.10.0/fiddler/schemas/model_task_params.py +74 -0
  34. fiddler-client-3.10.0/fiddler/schemas/xai.py +136 -0
  35. fiddler-client-3.10.0/fiddler/schemas/xai_params.py +55 -0
  36. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_alert_rule.py +25 -1
  37. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/utils/helpers.py +14 -8
  38. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/utils/logger.py +24 -4
  39. fiddler-client-3.10.0/fiddler_client.egg-info/PKG-INFO +103 -0
  40. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/setup.py +6 -4
  41. fiddler-client-3.9.1/PKG-INFO +0 -39
  42. fiddler-client-3.9.1/PUBLIC.md +0 -22
  43. fiddler-client-3.9.1/fiddler/VERSION +0 -1
  44. fiddler-client-3.9.1/fiddler/connection.py +0 -263
  45. fiddler-client-3.9.1/fiddler/constants/alert_rule.py +0 -39
  46. fiddler-client-3.9.1/fiddler/constants/baseline.py +0 -15
  47. fiddler-client-3.9.1/fiddler/constants/dataset.py +0 -7
  48. fiddler-client-3.9.1/fiddler/constants/events.py +0 -7
  49. fiddler-client-3.9.1/fiddler/constants/job.py +0 -13
  50. fiddler-client-3.9.1/fiddler/constants/model.py +0 -73
  51. fiddler-client-3.9.1/fiddler/constants/model_deployment.py +0 -15
  52. fiddler-client-3.9.1/fiddler/constants/xai.py +0 -20
  53. fiddler-client-3.9.1/fiddler/entities/alert_record.py +0 -113
  54. fiddler-client-3.9.1/fiddler/entities/alert_rule.py +0 -346
  55. fiddler-client-3.9.1/fiddler/entities/baseline.py +0 -256
  56. fiddler-client-3.9.1/fiddler/entities/custom_expression.py +0 -232
  57. fiddler-client-3.9.1/fiddler/entities/dataset.py +0 -144
  58. fiddler-client-3.9.1/fiddler/entities/job.py +0 -203
  59. fiddler-client-3.9.1/fiddler/entities/model.py +0 -613
  60. fiddler-client-3.9.1/fiddler/entities/project.py +0 -174
  61. fiddler-client-3.9.1/fiddler/entities/webhook.py +0 -151
  62. fiddler-client-3.9.1/fiddler/exceptions.py +0 -102
  63. fiddler-client-3.9.1/fiddler/schemas/custom_features.py +0 -148
  64. fiddler-client-3.9.1/fiddler/schemas/model_deployment.py +0 -37
  65. fiddler-client-3.9.1/fiddler/schemas/model_schema.py +0 -69
  66. fiddler-client-3.9.1/fiddler/schemas/model_spec.py +0 -53
  67. fiddler-client-3.9.1/fiddler/schemas/model_task_params.py +0 -23
  68. fiddler-client-3.9.1/fiddler/schemas/xai.py +0 -26
  69. fiddler-client-3.9.1/fiddler/schemas/xai_params.py +0 -11
  70. fiddler-client-3.9.1/fiddler_client.egg-info/PKG-INFO +0 -39
  71. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/LICENSE.txt +0 -0
  72. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/MANIFEST.in +0 -0
  73. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/README.md +0 -0
  74. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/configs.py +0 -0
  75. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/constants/__init__.py +0 -0
  76. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/constants/common.py +0 -0
  77. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/decorators.py +0 -0
  78. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/entities/__init__.py +0 -0
  79. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/entities/base.py +0 -0
  80. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/entities/events.py +0 -0
  81. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/entities/file.py +0 -0
  82. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/entities/organization.py +0 -0
  83. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/entities/user.py +0 -0
  84. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/libs/__init__.py +0 -0
  85. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/libs/aws.py +0 -0
  86. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/libs/http_client.py +0 -0
  87. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/libs/json_encoder.py +0 -0
  88. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/libs/semver.py +0 -0
  89. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/packtools/__init__.py +0 -0
  90. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/packtools/gem.py +0 -0
  91. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/packtools/keras_ig_helpers.py +0 -0
  92. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/packtools/project_attributions_helpers.py +0 -0
  93. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/packtools/template_model.py +0 -0
  94. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/__init__.py +0 -0
  95. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/alert_record.py +0 -0
  96. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/base.py +0 -0
  97. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/baseline.py +0 -0
  98. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/custom_expression.py +0 -0
  99. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/dataset.py +0 -0
  100. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/events.py +0 -0
  101. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/file.py +0 -0
  102. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/filter_query.py +0 -0
  103. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/job.py +0 -0
  104. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/model.py +0 -0
  105. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/organization.py +0 -0
  106. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/project.py +0 -0
  107. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/response.py +0 -0
  108. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/server_info.py +0 -0
  109. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/user.py +0 -0
  110. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/schemas/webhook.py +0 -0
  111. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/__init__.py +0 -0
  112. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/__init__.py +0 -0
  113. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_alert_record.py +0 -0
  114. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_baseline.py +0 -0
  115. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_custom_metric.py +0 -0
  116. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_dataset.py +0 -0
  117. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_events.py +0 -0
  118. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_files.py +0 -0
  119. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_generate_model.py +0 -0
  120. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_job.py +0 -0
  121. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_mixin.py +0 -0
  122. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_model.py +0 -0
  123. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_model_artifact.py +0 -0
  124. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_model_deployment.py +0 -0
  125. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_model_surrogate.py +0 -0
  126. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_project.py +0 -0
  127. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_segment.py +0 -0
  128. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_webhook.py +0 -0
  129. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/apis/test_xai.py +0 -0
  130. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/conftest.py +0 -0
  131. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/constants.py +0 -0
  132. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/test_connection.py +0 -0
  133. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/test_json_encoder.py +0 -0
  134. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/test_logger.py +0 -0
  135. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/test_sagemaker_auth.py +0 -0
  136. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/test_utils.py +0 -0
  137. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/tests/utils.py +0 -0
  138. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/utils/__init__.py +0 -0
  139. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/utils/column_generator.py +0 -0
  140. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/utils/decorators.py +0 -0
  141. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/utils/model_generator.py +0 -0
  142. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/utils/validations.py +0 -0
  143. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/utils/version.py +0 -0
  144. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler/version.py +0 -0
  145. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler_client.egg-info/SOURCES.txt +0 -0
  146. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler_client.egg-info/dependency_links.txt +0 -0
  147. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler_client.egg-info/requires.txt +0 -0
  148. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/fiddler_client.egg-info/top_level.txt +0 -0
  149. {fiddler-client-3.9.1 → fiddler-client-3.10.0}/setup.cfg +0 -0
@@ -0,0 +1,103 @@
1
+ Metadata-Version: 2.1
2
+ Name: fiddler-client
3
+ Version: 3.10.0
4
+ Summary: Python client for Fiddler Platform
5
+ Home-page: https://fiddler.ai
6
+ Author: Fiddler Labs
7
+ License: UNKNOWN
8
+ Platform: UNKNOWN
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: License :: OSI Approved :: Apache Software License
11
+ Classifier: Operating System :: OS Independent
12
+ Requires-Python: >3.9.0
13
+ Description-Content-Type: text/markdown
14
+ License-File: LICENSE.txt
15
+
16
+ # fiddler-client
17
+
18
+ [![Python Version](https://img.shields.io/pypi/pyversions/fiddler-client.svg)](https://pypi.org/project/fiddler-client/)
19
+ [![PyPI Version](https://img.shields.io/pypi/v/fiddler-client.svg)](https://pypi.org/project/fiddler-client/)
20
+ [![License](https://img.shields.io/pypi/l/fiddler-client.svg)](https://pypi.org/project/fiddler-client/)
21
+
22
+ The official Python client for [Fiddler](https://www.fiddler.ai), the enterprise-grade AI Observability platform. Monitor, analyze, and protect your ML models, LLMs, GenAI applications, and AI Agents in production.
23
+
24
+ ## Platform Features
25
+
26
+ - 🚀 **Easy Integration** - Simple Python API for model and GenAI application onboarding
27
+ - 📊 **Real-time Monitoring** - Stream production events for drift detection, performance tracking, and anomaly detection
28
+ - 🎯 **Data Drift & Integrity** - Detect distribution changes, data quality issues, and schema violations
29
+ - 📈 **Custom Metrics** - Define and track business KPIs, custom performance metrics, and model-specific measurements
30
+ - 🔍 **Data Segments** - Analyze model behavior across cohorts with custom segments and slices
31
+ - 🤖 **GenAI & LLM Monitoring** - Track hallucinations, toxicity, PII leakage, prompt injection, and response quality
32
+ - 🛡️ **Guardrails** - Real-time protection against unsafe outputs and policy violations in LLM applications
33
+ - 📊 **Enrichments** - Add embeddings, sentiment, topics, and other ML-derived features to your data
34
+ - 🔄 **Model Comparison** - Compare performance across model versions, champion/challenger analysis
35
+ - 🎨 **Custom Dashboards** - Build tailored monitoring views with charts, alerts, and analytics
36
+ - 🔔 **Smart Alerts** - Multi-channel notifications (Slack, Email, PagerDuty) with customizable thresholds
37
+ - 🤝 **MLOps Integrations** - Native support for MLflow, SageMaker, Vertex AI, and other platforms
38
+
39
+ ## Installation
40
+
41
+ ```bash
42
+ pip install fiddler-client
43
+ ```
44
+
45
+ ## Requirements
46
+
47
+ - Python 3.9 or higher
48
+ - pip 19.0 or higher (latest release preferred)
49
+
50
+ ## Quick Start
51
+
52
+ ```python
53
+ import fiddler as fdl
54
+
55
+ # Initialize the client
56
+ fdl.init(
57
+ url='https://your-company.fiddler.ai',
58
+ token='your-api-token'
59
+ )
60
+
61
+ # List the existing projects
62
+ for project in fdl.Project.list():
63
+ print(project.name)
64
+ ```
65
+
66
+ ## Documentation
67
+
68
+ * 📚 [Complete Documentation](https://docs.fiddler.ai/)
69
+ * 🚀 [Getting Started with LLMs](https://docs.fiddler.ai/first-steps/getting-started-with-llm-monitoring)
70
+ * [LLM Quick Start Guide](https://docs.fiddler.ai/tutorials-and-quick-starts/llm-and-genai/simple-llm-monitoring)
71
+ * 🚀 [Getting Started with ML](https://docs.fiddler.ai/first-steps/getting-started-with-ml-model-observability)
72
+ * [ML Quick Start Guide](https://docs.fiddler.ai/tutorials-and-quick-starts/ml-observability/quick-start)
73
+ * 📖 [API Reference](https://docs.fiddler.ai/reference/about-the-fiddler-client)
74
+ * 💡 [Example Notebooks](https://github.com/fiddler-labs/fiddler-examples)
75
+
76
+ ## Example Notebooks
77
+
78
+ Check out our [GitHub repository](https://github.com/fiddler-labs/fiddler-examples) for Jupyter notebooks demonstrating:
79
+
80
+ - Model onboarding and monitoring setup
81
+ - Drift detection and root cause analysis
82
+ - Custom metrics and alerting
83
+ - LLM and GenAI monitoring
84
+ - Integration with popular ML frameworks
85
+
86
+ ## Version History
87
+
88
+ See our [release notes](https://docs.fiddler.ai/history/python-client-history) for detailed version history.
89
+
90
+ ## Support
91
+
92
+ - 📧 Email: [support@fiddler.ai](support@fiddler.ai)
93
+ - 💬 Community: [Join our Slack](https://www.fiddler.ai/slack)
94
+
95
+ ## License
96
+
97
+ This package is proprietary software. Please refer to your Fiddler license agreement for terms of use.
98
+
99
+ ---
100
+
101
+ **Want to see Fiddler in action?** [Request a demo](https://www.fiddler.ai/demo)
102
+
103
+
@@ -0,0 +1,86 @@
1
+ # fiddler-client
2
+
3
+ [![Python Version](https://img.shields.io/pypi/pyversions/fiddler-client.svg)](https://pypi.org/project/fiddler-client/)
4
+ [![PyPI Version](https://img.shields.io/pypi/v/fiddler-client.svg)](https://pypi.org/project/fiddler-client/)
5
+ [![License](https://img.shields.io/pypi/l/fiddler-client.svg)](https://pypi.org/project/fiddler-client/)
6
+
7
+ The official Python client for [Fiddler](https://www.fiddler.ai), the enterprise-grade AI Observability platform. Monitor, analyze, and protect your ML models, LLMs, GenAI applications, and AI Agents in production.
8
+
9
+ ## Platform Features
10
+
11
+ - 🚀 **Easy Integration** - Simple Python API for model and GenAI application onboarding
12
+ - 📊 **Real-time Monitoring** - Stream production events for drift detection, performance tracking, and anomaly detection
13
+ - 🎯 **Data Drift & Integrity** - Detect distribution changes, data quality issues, and schema violations
14
+ - 📈 **Custom Metrics** - Define and track business KPIs, custom performance metrics, and model-specific measurements
15
+ - 🔍 **Data Segments** - Analyze model behavior across cohorts with custom segments and slices
16
+ - 🤖 **GenAI & LLM Monitoring** - Track hallucinations, toxicity, PII leakage, prompt injection, and response quality
17
+ - 🛡️ **Guardrails** - Real-time protection against unsafe outputs and policy violations in LLM applications
18
+ - 📊 **Enrichments** - Add embeddings, sentiment, topics, and other ML-derived features to your data
19
+ - 🔄 **Model Comparison** - Compare performance across model versions, champion/challenger analysis
20
+ - 🎨 **Custom Dashboards** - Build tailored monitoring views with charts, alerts, and analytics
21
+ - 🔔 **Smart Alerts** - Multi-channel notifications (Slack, Email, PagerDuty) with customizable thresholds
22
+ - 🤝 **MLOps Integrations** - Native support for MLflow, SageMaker, Vertex AI, and other platforms
23
+
24
+ ## Installation
25
+
26
+ ```bash
27
+ pip install fiddler-client
28
+ ```
29
+
30
+ ## Requirements
31
+
32
+ - Python 3.9 or higher
33
+ - pip 19.0 or higher (latest release preferred)
34
+
35
+ ## Quick Start
36
+
37
+ ```python
38
+ import fiddler as fdl
39
+
40
+ # Initialize the client
41
+ fdl.init(
42
+ url='https://your-company.fiddler.ai',
43
+ token='your-api-token'
44
+ )
45
+
46
+ # List the existing projects
47
+ for project in fdl.Project.list():
48
+ print(project.name)
49
+ ```
50
+
51
+ ## Documentation
52
+
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)
59
+ * 💡 [Example Notebooks](https://github.com/fiddler-labs/fiddler-examples)
60
+
61
+ ## Example Notebooks
62
+
63
+ Check out our [GitHub repository](https://github.com/fiddler-labs/fiddler-examples) for Jupyter notebooks demonstrating:
64
+
65
+ - Model onboarding and monitoring setup
66
+ - Drift detection and root cause analysis
67
+ - Custom metrics and alerting
68
+ - LLM and GenAI monitoring
69
+ - Integration with popular ML frameworks
70
+
71
+ ## Version History
72
+
73
+ See our [release notes](https://docs.fiddler.ai/history/python-client-history) for detailed version history.
74
+
75
+ ## Support
76
+
77
+ - 📧 Email: [support@fiddler.ai](support@fiddler.ai)
78
+ - 💬 Community: [Join our Slack](https://www.fiddler.ai/slack)
79
+
80
+ ## License
81
+
82
+ This package is proprietary software. Please refer to your Fiddler license agreement for terms of use.
83
+
84
+ ---
85
+
86
+ **Want to see Fiddler in action?** [Request a demo](https://www.fiddler.ai/demo)
@@ -0,0 +1 @@
1
+ 3.10.0
@@ -61,6 +61,7 @@ from fiddler.schemas.xai import ( # noqa
61
61
  )
62
62
  from fiddler.schemas.xai_params import XaiParams # noqa
63
63
  from fiddler.utils.helpers import group_by # noqa
64
+ from fiddler.utils.column_generator import create_columns_from_df # noqa
64
65
  from fiddler.utils.logger import set_logging # noqa
65
66
  from fiddler.version import __version__ # noqa
66
67
 
@@ -144,4 +145,5 @@ __all__ = [
144
145
  # Utilities
145
146
  'set_logging',
146
147
  'group_by',
148
+ 'create_columns_from_df',
147
149
  ]
@@ -0,0 +1,426 @@
1
+ from __future__ import annotations
2
+
3
+ import logging
4
+ from functools import cached_property
5
+ from uuid import UUID
6
+
7
+ import fiddler.utils.logger
8
+ from fiddler.configs import MIN_SERVER_VERSION
9
+ from fiddler.constants.common import (
10
+ CLIENT_NAME,
11
+ FIDDLER_CLIENT_NAME_HEADER,
12
+ FIDDLER_CLIENT_VERSION_HEADER,
13
+ )
14
+ from fiddler.decorators import handle_api_error
15
+ from fiddler.exceptions import IncompatibleClient
16
+ from fiddler.libs.http_client import RequestClient
17
+ from fiddler.schemas.server_info import ServerInfo, Version
18
+ from fiddler.utils.version import match_semver
19
+ from fiddler.version import __version__
20
+
21
+ log = logging.getLogger(__name__)
22
+
23
+
24
+ class Connection:
25
+ """Manages authenticated connections to the Fiddler platform.
26
+
27
+ The Connection class handles all aspects of connecting to and communicating
28
+ with the Fiddler platform, including authentication, HTTP client management,
29
+ server version compatibility checking, and organization context management.
30
+
31
+ This class provides the foundation for all API interactions with Fiddler,
32
+ managing connection parameters, authentication tokens, and ensuring proper
33
+ communication protocols are established.
34
+
35
+ Attributes:
36
+ url: Base URL of the Fiddler platform instance
37
+ token: Authentication token for API access
38
+ proxies: Optional proxy configuration for HTTP requests
39
+ timeout: HTTP request timeout settings
40
+ verify: Whether to verify SSL/TLS certificates
41
+ request_headers: HTTP headers including authentication and client info
42
+ client: Cached HTTP client instance for making requests
43
+ server_info: Cached server information and metadata
44
+ server_version: Version of the connected Fiddler server
45
+ organization_name: Name of the connected organization
46
+ organization_id: UUID of the connected organization
47
+
48
+ Examples:
49
+ Creating a basic connection:
50
+
51
+ connection = Connection(
52
+ url="https://your-fiddler-instance.com",
53
+ token="your-auth-token"
54
+ )
55
+
56
+ Creating a connection with custom timeout and proxy:
57
+
58
+ connection = Connection(
59
+ url="https://your-fiddler-instance.com",
60
+ token="your-auth-token",
61
+ timeout=(5.0, 30.0), # (connect_timeout, read_timeout)
62
+ proxies={"https": "https://proxy.company.com:8080"}
63
+ )
64
+
65
+ Creating a connection without SSL verification:
66
+
67
+ connection = Connection(
68
+ url="https://your-fiddler-instance.com",
69
+ token="your-auth-token",
70
+ verify=False, # Not recommended for production
71
+ validate=False # Skip version compatibility check
72
+ )
73
+ """
74
+ def __init__( # pylint: disable=too-many-arguments
75
+ self,
76
+ url: str,
77
+ token: str,
78
+ proxies: dict | None = None,
79
+ timeout: float | tuple[float, float] | None = None,
80
+ verify: bool = True,
81
+ validate: bool = True,
82
+ ) -> None:
83
+ """Initialize a connection to the Fiddler platform.
84
+
85
+ Args:
86
+ url: The base URL to your Fiddler platform instance
87
+ token: Authentication token obtained from the Fiddler UI
88
+ proxies: Dictionary mapping protocol to proxy URL for HTTP requests
89
+ timeout: HTTP request timeout settings (float or tuple of connect/read timeouts)
90
+ verify: Whether to verify server's TLS certificate (default: True)
91
+ validate: Whether to validate server/client version compatibility (default: True)
92
+
93
+ Raises:
94
+ ValueError: If url or token parameters are empty
95
+ IncompatibleClient: If server version is incompatible with client version
96
+ """
97
+
98
+ self.url = url
99
+ self.token = token
100
+ self.proxies = proxies
101
+ self.timeout = timeout
102
+ self.verify = verify
103
+
104
+ if not url:
105
+ raise ValueError('`url` is empty')
106
+
107
+ if not token:
108
+ raise ValueError('`token` is empty')
109
+
110
+ self.request_headers = {
111
+ 'Authorization': f'Bearer {token}',
112
+ FIDDLER_CLIENT_NAME_HEADER: CLIENT_NAME,
113
+ FIDDLER_CLIENT_VERSION_HEADER: __version__,
114
+ }
115
+
116
+ if validate:
117
+ self._check_server_version()
118
+ self._check_version_compatibility()
119
+
120
+ @cached_property
121
+ def client(self) -> RequestClient:
122
+ """Get the HTTP request client instance for API communication.
123
+
124
+ Returns:
125
+ RequestClient: Configured HTTP client with authentication headers,
126
+ proxy settings, and timeout configurations.
127
+ """
128
+ return RequestClient(
129
+ base_url=self.url,
130
+ headers=self.request_headers,
131
+ proxies=self.proxies,
132
+ verify=self.verify,
133
+ timeout_override=self.timeout,
134
+ )
135
+
136
+ @cached_property
137
+ def server_info(self) -> ServerInfo:
138
+ """Get server information and metadata from the Fiddler platform.
139
+
140
+ Returns:
141
+ ServerInfo: Server information including version, organization details,
142
+ and platform configuration.
143
+ """
144
+ return self._get_server_info()
145
+
146
+ @cached_property
147
+ def server_version(self) -> Version:
148
+ """Get the semantic version of the connected Fiddler server.
149
+
150
+ Returns:
151
+ Version: Semantic version object representing the server version.
152
+ """
153
+ return self.server_info.server_version
154
+
155
+ @cached_property
156
+ def organization_name(self) -> str:
157
+ """Get the name of the connected organization.
158
+
159
+ Returns:
160
+ str: Name of the organization associated with this connection.
161
+ """
162
+ return self.server_info.organization.name
163
+
164
+ @cached_property
165
+ def organization_id(self) -> UUID:
166
+ """Get the UUID of the connected organization.
167
+
168
+ Returns:
169
+ UUID: Unique identifier of the organization associated with this connection.
170
+ """
171
+ return self.server_info.organization.id
172
+
173
+ @handle_api_error
174
+ def _get_server_info(self) -> ServerInfo:
175
+ """Retrieve server information from the Fiddler platform.
176
+
177
+ Returns:
178
+ ServerInfo: Server information including version and organization details.
179
+
180
+ Raises:
181
+ ApiError: If the server info request fails.
182
+ """
183
+
184
+ # Tight-ish timeout.
185
+ response = self.client.get(url='/v3/server-info', timeout=(5, 15))
186
+
187
+ return ServerInfo(**response.json().get('data'))
188
+
189
+ @handle_api_error
190
+ def _check_version_compatibility(self) -> None:
191
+ """Check whether the client version is compatible with the Fiddler platform version.
192
+
193
+ Raises:
194
+ ApiError: If the version compatibility check fails.
195
+ IncompatibleClient: If the client version is not compatible with the server.
196
+ """
197
+
198
+ self.client.get(
199
+ url='/v3/version-compatibility',
200
+ params={
201
+ 'client_version': __version__,
202
+ 'client_name': CLIENT_NAME,
203
+ },
204
+ timeout=(5, 15),
205
+ )
206
+
207
+ def _check_server_version(self) -> None:
208
+ """Check whether the Fiddler platform version is compatible with the client version.
209
+
210
+ Raises:
211
+ IncompatibleClient: If the server version is below the minimum required version.
212
+ """
213
+ if match_semver(self.server_version, f'>={MIN_SERVER_VERSION}'):
214
+ return
215
+
216
+ raise IncompatibleClient(server_version=str(self.server_version))
217
+
218
+
219
+ class ConnectionMixin:
220
+ """Mixin class providing connection-related functionality to other classes.
221
+
222
+ ConnectionMixin provides a standardized way for other classes to access
223
+ the global Fiddler connection instance and its associated properties.
224
+ This mixin enables classes throughout the Fiddler client to access
225
+ connection details, HTTP client functionality, and organization context
226
+ without directly managing connection state.
227
+
228
+ This pattern ensures consistent access to connection resources across
229
+ all client components while maintaining a clean separation of concerns.
230
+
231
+ Methods:
232
+ _conn: Access to the global Connection instance
233
+ _client: Access to the HTTP client for API requests
234
+ organization_name: Property access to organization name
235
+ organization_id: Property access to organization UUID
236
+ get_organization_name: Class method to retrieve organization name
237
+ get_organization_id: Class method to retrieve organization UUID
238
+
239
+ Examples:
240
+ Using ConnectionMixin in a custom class:
241
+
242
+ class CustomModel(ConnectionMixin):
243
+ def fetch_data(self):
244
+ # Access HTTP client through mixin
245
+ response = self._client().get('/api/data')
246
+ return response.json()
247
+
248
+ def get_org_info(self):
249
+ # Access organization info through mixin
250
+ return {
251
+ 'name': self.organization_name,
252
+ 'id': str(self.organization_id)
253
+ }
254
+
255
+ Using class methods without instantiation:
256
+
257
+ org_name = SomeEntityClass.get_organization_name()
258
+ org_id = SomeEntityClass.get_organization_id()
259
+ """
260
+ @classmethod
261
+ def _conn(cls) -> Connection:
262
+ """Get the global Fiddler connection instance.
263
+
264
+ Returns:
265
+ Connection: The singleton Connection instance used throughout the client.
266
+
267
+ Raises:
268
+ AssertionError: If no connection has been initialized via fiddler.init().
269
+ """
270
+ from fiddler import conn # pylint: disable=import-outside-toplevel
271
+
272
+ assert conn is not None
273
+ return conn
274
+
275
+ @classmethod
276
+ def _client(cls) -> RequestClient:
277
+ """Get the HTTP request client from the global connection.
278
+
279
+ Returns:
280
+ RequestClient: HTTP client instance for making API requests.
281
+ """
282
+ return cls._conn().client
283
+
284
+ @property
285
+ def organization_name(self) -> str:
286
+ """Get the organization name from the connection.
287
+
288
+ Returns:
289
+ str: Name of the organization associated with the current connection.
290
+ """
291
+ return self._conn().server_info.organization.name
292
+
293
+ @property
294
+ def organization_id(self) -> UUID:
295
+ """Get the organization UUID from the connection.
296
+
297
+ Returns:
298
+ UUID: Unique identifier of the organization associated with the current connection.
299
+ """
300
+ return self._conn().server_info.organization.id
301
+
302
+ @classmethod
303
+ def get_organization_name(cls) -> str:
304
+ """Get the organization name from the global connection.
305
+
306
+ Returns:
307
+ str: Name of the organization associated with the current connection.
308
+ """
309
+ return cls._conn().server_info.organization.name
310
+
311
+ @classmethod
312
+ def get_organization_id(cls) -> UUID:
313
+ """Get the organization UUID from the global connection.
314
+
315
+ Returns:
316
+ UUID: Unique identifier of the organization associated with the current connection.
317
+ """
318
+ return cls._conn().server_info.organization.id
319
+
320
+
321
+ def init( # pylint: disable=too-many-arguments
322
+ url: str,
323
+ token: str,
324
+ proxies: dict | None = None,
325
+ timeout: float | tuple[float, float] | None = None,
326
+ verify: bool = True,
327
+ validate: bool = True,
328
+ auto_attach_log_handler: bool = True,
329
+ ) -> None:
330
+ """Initialize the Fiddler client with connection parameters and global configuration.
331
+
332
+ This function establishes a connection to the Fiddler platform and configures
333
+ the global client state. It handles authentication, server compatibility
334
+ validation, logging setup, and creates the singleton connection instance
335
+ used throughout the client library.
336
+
337
+ The function also configures automatic retry strategies for HTTP requests,
338
+ sets up logging handlers if needed, and supports AWS SageMaker partner
339
+ application authentication.
340
+
341
+ Args:
342
+ url: The base URL to your Fiddler platform instance
343
+ token: Authentication token obtained from the Fiddler UI Credentials tab
344
+ proxies: Dictionary mapping protocol to proxy URL for HTTP requests
345
+ timeout: HTTP request timeout settings (float or tuple of connect/read timeouts)
346
+ verify: Whether to verify server's TLS certificate (default: True)
347
+ validate: Whether to validate server/client version compatibility (default: True)
348
+ auto_attach_log_handler: Whether to automatically attach log handler to stderr (default: True)
349
+
350
+ Raises:
351
+ ValueError: If url or token parameters are empty
352
+ IncompatibleClient: If server version is incompatible with client version
353
+ ConnectionError: If unable to connect to the Fiddler platform
354
+
355
+ Examples:
356
+ Basic initialization:
357
+
358
+ import fiddler as fdl
359
+
360
+ fdl.init(
361
+ url="https://your-fiddler-instance.com",
362
+ token="your-auth-token"
363
+ )
364
+
365
+ Initialization with custom timeout and proxy:
366
+
367
+ fdl.init(
368
+ url="https://your-fiddler-instance.com",
369
+ token="your-auth-token",
370
+ timeout=(10.0, 60.0), # 10s connect, 60s read timeout
371
+ proxies={"https": "https://proxy.company.com:8080"}
372
+ )
373
+
374
+ Initialization for development with relaxed settings:
375
+
376
+ fdl.init(
377
+ url="https://dev-fiddler-instance.com",
378
+ token="dev-token",
379
+ verify=False, # Skip SSL verification
380
+ validate=False, # Skip version compatibility check
381
+ auto_attach_log_handler=False # Custom logging setup
382
+ )
383
+
384
+ AWS SageMaker partner app initialization:
385
+
386
+ import os
387
+ os.environ["AWS_PARTNER_APP_AUTH"] = "true"
388
+ os.environ["AWS_PARTNER_APP_ARN"] = "your-partner-app-arn"
389
+ os.environ["AWS_PARTNER_APP_URL"] = "your-partner-app-url"
390
+
391
+ fdl.init(
392
+ url="https://your-fiddler-instance.com",
393
+ token="sagemaker-token"
394
+ )
395
+
396
+ Note:
397
+ The client implements automatic retry strategies for transient failures.
398
+ Configure retry duration via FIDDLER_CLIENT_RETRY_MAX_DURATION_SECONDS
399
+ environment variable (default: 300 seconds).
400
+
401
+ Logging is performed under the 'fiddler' namespace at INFO level.
402
+ If no root logger is configured, a stderr handler is automatically
403
+ attached unless auto_attach_log_handler=False.
404
+ """
405
+ from fiddler import _set_conn # pylint: disable=import-outside-toplevel
406
+
407
+ # If this library is imported into an interpreter that has a root logger
408
+ # configured (with handler(s) attached) then just propagate log messages
409
+ # into that hierarchy, and do not attach a handler to the 'fiddler' logger.
410
+ if not logging.getLogger().handlers and auto_attach_log_handler:
411
+ fiddler.utils.logger._attach_handler()
412
+ log.info(
413
+ 'attached stderr handler to logger: auto_attach_log_handler=True, and root logger not configured'
414
+ )
415
+
416
+ # Singleton object in Python interpreter.
417
+ conn = Connection(
418
+ url=url,
419
+ token=token,
420
+ proxies=proxies,
421
+ timeout=timeout,
422
+ verify=verify,
423
+ validate=validate,
424
+ )
425
+
426
+ _set_conn(conn_=conn)