aeri-python 4.0.0__py3-none-any.whl

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 (391) hide show
  1. aeri/__init__.py +72 -0
  2. aeri/_client/_validation.py +204 -0
  3. aeri/_client/attributes.py +188 -0
  4. aeri/_client/client.py +3761 -0
  5. aeri/_client/constants.py +65 -0
  6. aeri/_client/datasets.py +302 -0
  7. aeri/_client/environment_variables.py +158 -0
  8. aeri/_client/get_client.py +149 -0
  9. aeri/_client/observe.py +661 -0
  10. aeri/_client/propagation.py +475 -0
  11. aeri/_client/resource_manager.py +510 -0
  12. aeri/_client/span.py +1519 -0
  13. aeri/_client/span_filter.py +76 -0
  14. aeri/_client/span_processor.py +206 -0
  15. aeri/_client/utils.py +132 -0
  16. aeri/_task_manager/media_manager.py +331 -0
  17. aeri/_task_manager/media_upload_consumer.py +44 -0
  18. aeri/_task_manager/media_upload_queue.py +12 -0
  19. aeri/_task_manager/score_ingestion_consumer.py +208 -0
  20. aeri/_task_manager/task_manager.py +475 -0
  21. aeri/_utils/__init__.py +19 -0
  22. aeri/_utils/environment.py +34 -0
  23. aeri/_utils/error_logging.py +47 -0
  24. aeri/_utils/parse_error.py +99 -0
  25. aeri/_utils/prompt_cache.py +188 -0
  26. aeri/_utils/request.py +137 -0
  27. aeri/_utils/serializer.py +205 -0
  28. aeri/api/.fern/metadata.json +14 -0
  29. aeri/api/__init__.py +836 -0
  30. aeri/api/annotation_queues/__init__.py +82 -0
  31. aeri/api/annotation_queues/client.py +1111 -0
  32. aeri/api/annotation_queues/raw_client.py +2288 -0
  33. aeri/api/annotation_queues/types/__init__.py +84 -0
  34. aeri/api/annotation_queues/types/annotation_queue.py +28 -0
  35. aeri/api/annotation_queues/types/annotation_queue_assignment_request.py +16 -0
  36. aeri/api/annotation_queues/types/annotation_queue_item.py +34 -0
  37. aeri/api/annotation_queues/types/annotation_queue_object_type.py +26 -0
  38. aeri/api/annotation_queues/types/annotation_queue_status.py +22 -0
  39. aeri/api/annotation_queues/types/create_annotation_queue_assignment_response.py +18 -0
  40. aeri/api/annotation_queues/types/create_annotation_queue_item_request.py +25 -0
  41. aeri/api/annotation_queues/types/create_annotation_queue_request.py +20 -0
  42. aeri/api/annotation_queues/types/delete_annotation_queue_assignment_response.py +14 -0
  43. aeri/api/annotation_queues/types/delete_annotation_queue_item_response.py +15 -0
  44. aeri/api/annotation_queues/types/paginated_annotation_queue_items.py +17 -0
  45. aeri/api/annotation_queues/types/paginated_annotation_queues.py +17 -0
  46. aeri/api/annotation_queues/types/update_annotation_queue_item_request.py +15 -0
  47. aeri/api/blob_storage_integrations/__init__.py +73 -0
  48. aeri/api/blob_storage_integrations/client.py +550 -0
  49. aeri/api/blob_storage_integrations/raw_client.py +976 -0
  50. aeri/api/blob_storage_integrations/types/__init__.py +77 -0
  51. aeri/api/blob_storage_integrations/types/blob_storage_export_frequency.py +26 -0
  52. aeri/api/blob_storage_integrations/types/blob_storage_export_mode.py +26 -0
  53. aeri/api/blob_storage_integrations/types/blob_storage_integration_deletion_response.py +14 -0
  54. aeri/api/blob_storage_integrations/types/blob_storage_integration_file_type.py +26 -0
  55. aeri/api/blob_storage_integrations/types/blob_storage_integration_response.py +64 -0
  56. aeri/api/blob_storage_integrations/types/blob_storage_integration_status_response.py +50 -0
  57. aeri/api/blob_storage_integrations/types/blob_storage_integration_type.py +26 -0
  58. aeri/api/blob_storage_integrations/types/blob_storage_integrations_response.py +15 -0
  59. aeri/api/blob_storage_integrations/types/blob_storage_sync_status.py +47 -0
  60. aeri/api/blob_storage_integrations/types/create_blob_storage_integration_request.py +91 -0
  61. aeri/api/client.py +679 -0
  62. aeri/api/comments/__init__.py +44 -0
  63. aeri/api/comments/client.py +407 -0
  64. aeri/api/comments/raw_client.py +750 -0
  65. aeri/api/comments/types/__init__.py +46 -0
  66. aeri/api/comments/types/create_comment_request.py +47 -0
  67. aeri/api/comments/types/create_comment_response.py +17 -0
  68. aeri/api/comments/types/get_comments_response.py +17 -0
  69. aeri/api/commons/__init__.py +210 -0
  70. aeri/api/commons/errors/__init__.py +56 -0
  71. aeri/api/commons/errors/access_denied_error.py +12 -0
  72. aeri/api/commons/errors/error.py +12 -0
  73. aeri/api/commons/errors/method_not_allowed_error.py +12 -0
  74. aeri/api/commons/errors/not_found_error.py +12 -0
  75. aeri/api/commons/errors/unauthorized_error.py +12 -0
  76. aeri/api/commons/types/__init__.py +190 -0
  77. aeri/api/commons/types/base_score.py +90 -0
  78. aeri/api/commons/types/base_score_v1.py +70 -0
  79. aeri/api/commons/types/boolean_score.py +26 -0
  80. aeri/api/commons/types/boolean_score_v1.py +26 -0
  81. aeri/api/commons/types/categorical_score.py +26 -0
  82. aeri/api/commons/types/categorical_score_v1.py +26 -0
  83. aeri/api/commons/types/comment.py +36 -0
  84. aeri/api/commons/types/comment_object_type.py +30 -0
  85. aeri/api/commons/types/config_category.py +15 -0
  86. aeri/api/commons/types/correction_score.py +26 -0
  87. aeri/api/commons/types/create_score_value.py +5 -0
  88. aeri/api/commons/types/dataset.py +49 -0
  89. aeri/api/commons/types/dataset_item.py +58 -0
  90. aeri/api/commons/types/dataset_run.py +63 -0
  91. aeri/api/commons/types/dataset_run_item.py +40 -0
  92. aeri/api/commons/types/dataset_run_with_items.py +19 -0
  93. aeri/api/commons/types/dataset_status.py +22 -0
  94. aeri/api/commons/types/map_value.py +11 -0
  95. aeri/api/commons/types/model.py +125 -0
  96. aeri/api/commons/types/model_price.py +14 -0
  97. aeri/api/commons/types/model_usage_unit.py +42 -0
  98. aeri/api/commons/types/numeric_score.py +17 -0
  99. aeri/api/commons/types/numeric_score_v1.py +17 -0
  100. aeri/api/commons/types/observation.py +142 -0
  101. aeri/api/commons/types/observation_level.py +30 -0
  102. aeri/api/commons/types/observation_v2.py +235 -0
  103. aeri/api/commons/types/observations_view.py +89 -0
  104. aeri/api/commons/types/pricing_tier.py +91 -0
  105. aeri/api/commons/types/pricing_tier_condition.py +68 -0
  106. aeri/api/commons/types/pricing_tier_input.py +76 -0
  107. aeri/api/commons/types/pricing_tier_operator.py +42 -0
  108. aeri/api/commons/types/score.py +201 -0
  109. aeri/api/commons/types/score_config.py +66 -0
  110. aeri/api/commons/types/score_config_data_type.py +26 -0
  111. aeri/api/commons/types/score_data_type.py +30 -0
  112. aeri/api/commons/types/score_source.py +26 -0
  113. aeri/api/commons/types/score_v1.py +131 -0
  114. aeri/api/commons/types/session.py +25 -0
  115. aeri/api/commons/types/session_with_traces.py +15 -0
  116. aeri/api/commons/types/trace.py +84 -0
  117. aeri/api/commons/types/trace_with_details.py +43 -0
  118. aeri/api/commons/types/trace_with_full_details.py +45 -0
  119. aeri/api/commons/types/usage.py +59 -0
  120. aeri/api/core/__init__.py +111 -0
  121. aeri/api/core/api_error.py +23 -0
  122. aeri/api/core/client_wrapper.py +141 -0
  123. aeri/api/core/datetime_utils.py +30 -0
  124. aeri/api/core/enum.py +20 -0
  125. aeri/api/core/file.py +70 -0
  126. aeri/api/core/force_multipart.py +18 -0
  127. aeri/api/core/http_client.py +711 -0
  128. aeri/api/core/http_response.py +55 -0
  129. aeri/api/core/http_sse/__init__.py +48 -0
  130. aeri/api/core/http_sse/_api.py +114 -0
  131. aeri/api/core/http_sse/_decoders.py +66 -0
  132. aeri/api/core/http_sse/_exceptions.py +7 -0
  133. aeri/api/core/http_sse/_models.py +17 -0
  134. aeri/api/core/jsonable_encoder.py +102 -0
  135. aeri/api/core/pydantic_utilities.py +310 -0
  136. aeri/api/core/query_encoder.py +60 -0
  137. aeri/api/core/remove_none_from_dict.py +11 -0
  138. aeri/api/core/request_options.py +35 -0
  139. aeri/api/core/serialization.py +282 -0
  140. aeri/api/dataset_items/__init__.py +52 -0
  141. aeri/api/dataset_items/client.py +499 -0
  142. aeri/api/dataset_items/raw_client.py +973 -0
  143. aeri/api/dataset_items/types/__init__.py +50 -0
  144. aeri/api/dataset_items/types/create_dataset_item_request.py +37 -0
  145. aeri/api/dataset_items/types/delete_dataset_item_response.py +17 -0
  146. aeri/api/dataset_items/types/paginated_dataset_items.py +17 -0
  147. aeri/api/dataset_run_items/__init__.py +43 -0
  148. aeri/api/dataset_run_items/client.py +323 -0
  149. aeri/api/dataset_run_items/raw_client.py +547 -0
  150. aeri/api/dataset_run_items/types/__init__.py +44 -0
  151. aeri/api/dataset_run_items/types/create_dataset_run_item_request.py +51 -0
  152. aeri/api/dataset_run_items/types/paginated_dataset_run_items.py +17 -0
  153. aeri/api/datasets/__init__.py +55 -0
  154. aeri/api/datasets/client.py +661 -0
  155. aeri/api/datasets/raw_client.py +1368 -0
  156. aeri/api/datasets/types/__init__.py +53 -0
  157. aeri/api/datasets/types/create_dataset_request.py +31 -0
  158. aeri/api/datasets/types/delete_dataset_run_response.py +14 -0
  159. aeri/api/datasets/types/paginated_dataset_runs.py +17 -0
  160. aeri/api/datasets/types/paginated_datasets.py +17 -0
  161. aeri/api/health/__init__.py +44 -0
  162. aeri/api/health/client.py +112 -0
  163. aeri/api/health/errors/__init__.py +42 -0
  164. aeri/api/health/errors/service_unavailable_error.py +13 -0
  165. aeri/api/health/raw_client.py +227 -0
  166. aeri/api/health/types/__init__.py +40 -0
  167. aeri/api/health/types/health_response.py +30 -0
  168. aeri/api/ingestion/__init__.py +169 -0
  169. aeri/api/ingestion/client.py +221 -0
  170. aeri/api/ingestion/raw_client.py +293 -0
  171. aeri/api/ingestion/types/__init__.py +169 -0
  172. aeri/api/ingestion/types/base_event.py +27 -0
  173. aeri/api/ingestion/types/create_event_body.py +14 -0
  174. aeri/api/ingestion/types/create_event_event.py +15 -0
  175. aeri/api/ingestion/types/create_generation_body.py +40 -0
  176. aeri/api/ingestion/types/create_generation_event.py +15 -0
  177. aeri/api/ingestion/types/create_observation_event.py +15 -0
  178. aeri/api/ingestion/types/create_span_body.py +19 -0
  179. aeri/api/ingestion/types/create_span_event.py +15 -0
  180. aeri/api/ingestion/types/ingestion_error.py +17 -0
  181. aeri/api/ingestion/types/ingestion_event.py +155 -0
  182. aeri/api/ingestion/types/ingestion_response.py +17 -0
  183. aeri/api/ingestion/types/ingestion_success.py +15 -0
  184. aeri/api/ingestion/types/ingestion_usage.py +8 -0
  185. aeri/api/ingestion/types/observation_body.py +53 -0
  186. aeri/api/ingestion/types/observation_type.py +54 -0
  187. aeri/api/ingestion/types/open_ai_completion_usage_schema.py +26 -0
  188. aeri/api/ingestion/types/open_ai_response_usage_schema.py +24 -0
  189. aeri/api/ingestion/types/open_ai_usage.py +28 -0
  190. aeri/api/ingestion/types/optional_observation_body.py +36 -0
  191. aeri/api/ingestion/types/score_body.py +75 -0
  192. aeri/api/ingestion/types/score_event.py +15 -0
  193. aeri/api/ingestion/types/sdk_log_body.py +14 -0
  194. aeri/api/ingestion/types/sdk_log_event.py +15 -0
  195. aeri/api/ingestion/types/trace_body.py +36 -0
  196. aeri/api/ingestion/types/trace_event.py +15 -0
  197. aeri/api/ingestion/types/update_event_body.py +14 -0
  198. aeri/api/ingestion/types/update_generation_body.py +40 -0
  199. aeri/api/ingestion/types/update_generation_event.py +15 -0
  200. aeri/api/ingestion/types/update_observation_event.py +15 -0
  201. aeri/api/ingestion/types/update_span_body.py +19 -0
  202. aeri/api/ingestion/types/update_span_event.py +15 -0
  203. aeri/api/ingestion/types/usage_details.py +10 -0
  204. aeri/api/legacy/__init__.py +61 -0
  205. aeri/api/legacy/client.py +105 -0
  206. aeri/api/legacy/metrics_v1/__init__.py +40 -0
  207. aeri/api/legacy/metrics_v1/client.py +214 -0
  208. aeri/api/legacy/metrics_v1/raw_client.py +322 -0
  209. aeri/api/legacy/metrics_v1/types/__init__.py +40 -0
  210. aeri/api/legacy/metrics_v1/types/metrics_response.py +19 -0
  211. aeri/api/legacy/observations_v1/__init__.py +43 -0
  212. aeri/api/legacy/observations_v1/client.py +523 -0
  213. aeri/api/legacy/observations_v1/raw_client.py +759 -0
  214. aeri/api/legacy/observations_v1/types/__init__.py +44 -0
  215. aeri/api/legacy/observations_v1/types/observations.py +17 -0
  216. aeri/api/legacy/observations_v1/types/observations_views.py +17 -0
  217. aeri/api/legacy/raw_client.py +13 -0
  218. aeri/api/legacy/score_v1/__init__.py +43 -0
  219. aeri/api/legacy/score_v1/client.py +329 -0
  220. aeri/api/legacy/score_v1/raw_client.py +545 -0
  221. aeri/api/legacy/score_v1/types/__init__.py +44 -0
  222. aeri/api/legacy/score_v1/types/create_score_request.py +75 -0
  223. aeri/api/legacy/score_v1/types/create_score_response.py +17 -0
  224. aeri/api/llm_connections/__init__.py +55 -0
  225. aeri/api/llm_connections/client.py +311 -0
  226. aeri/api/llm_connections/raw_client.py +541 -0
  227. aeri/api/llm_connections/types/__init__.py +53 -0
  228. aeri/api/llm_connections/types/llm_adapter.py +38 -0
  229. aeri/api/llm_connections/types/llm_connection.py +77 -0
  230. aeri/api/llm_connections/types/paginated_llm_connections.py +17 -0
  231. aeri/api/llm_connections/types/upsert_llm_connection_request.py +69 -0
  232. aeri/api/media/__init__.py +58 -0
  233. aeri/api/media/client.py +427 -0
  234. aeri/api/media/raw_client.py +739 -0
  235. aeri/api/media/types/__init__.py +56 -0
  236. aeri/api/media/types/get_media_response.py +55 -0
  237. aeri/api/media/types/get_media_upload_url_request.py +51 -0
  238. aeri/api/media/types/get_media_upload_url_response.py +28 -0
  239. aeri/api/media/types/media_content_type.py +232 -0
  240. aeri/api/media/types/patch_media_body.py +43 -0
  241. aeri/api/metrics/__init__.py +40 -0
  242. aeri/api/metrics/client.py +422 -0
  243. aeri/api/metrics/raw_client.py +530 -0
  244. aeri/api/metrics/types/__init__.py +40 -0
  245. aeri/api/metrics/types/metrics_v2response.py +19 -0
  246. aeri/api/models/__init__.py +43 -0
  247. aeri/api/models/client.py +523 -0
  248. aeri/api/models/raw_client.py +993 -0
  249. aeri/api/models/types/__init__.py +44 -0
  250. aeri/api/models/types/create_model_request.py +103 -0
  251. aeri/api/models/types/paginated_models.py +17 -0
  252. aeri/api/observations/__init__.py +43 -0
  253. aeri/api/observations/client.py +522 -0
  254. aeri/api/observations/raw_client.py +641 -0
  255. aeri/api/observations/types/__init__.py +44 -0
  256. aeri/api/observations/types/observations_v2meta.py +21 -0
  257. aeri/api/observations/types/observations_v2response.py +28 -0
  258. aeri/api/opentelemetry/__init__.py +67 -0
  259. aeri/api/opentelemetry/client.py +276 -0
  260. aeri/api/opentelemetry/raw_client.py +291 -0
  261. aeri/api/opentelemetry/types/__init__.py +65 -0
  262. aeri/api/opentelemetry/types/otel_attribute.py +27 -0
  263. aeri/api/opentelemetry/types/otel_attribute_value.py +46 -0
  264. aeri/api/opentelemetry/types/otel_resource.py +24 -0
  265. aeri/api/opentelemetry/types/otel_resource_span.py +32 -0
  266. aeri/api/opentelemetry/types/otel_scope.py +34 -0
  267. aeri/api/opentelemetry/types/otel_scope_span.py +28 -0
  268. aeri/api/opentelemetry/types/otel_span.py +76 -0
  269. aeri/api/opentelemetry/types/otel_trace_response.py +16 -0
  270. aeri/api/organizations/__init__.py +73 -0
  271. aeri/api/organizations/client.py +756 -0
  272. aeri/api/organizations/raw_client.py +1707 -0
  273. aeri/api/organizations/types/__init__.py +71 -0
  274. aeri/api/organizations/types/delete_membership_request.py +16 -0
  275. aeri/api/organizations/types/membership_deletion_response.py +17 -0
  276. aeri/api/organizations/types/membership_request.py +18 -0
  277. aeri/api/organizations/types/membership_response.py +20 -0
  278. aeri/api/organizations/types/membership_role.py +30 -0
  279. aeri/api/organizations/types/memberships_response.py +15 -0
  280. aeri/api/organizations/types/organization_api_key.py +31 -0
  281. aeri/api/organizations/types/organization_api_keys_response.py +19 -0
  282. aeri/api/organizations/types/organization_project.py +25 -0
  283. aeri/api/organizations/types/organization_projects_response.py +15 -0
  284. aeri/api/projects/__init__.py +67 -0
  285. aeri/api/projects/client.py +760 -0
  286. aeri/api/projects/raw_client.py +1577 -0
  287. aeri/api/projects/types/__init__.py +65 -0
  288. aeri/api/projects/types/api_key_deletion_response.py +18 -0
  289. aeri/api/projects/types/api_key_list.py +23 -0
  290. aeri/api/projects/types/api_key_response.py +30 -0
  291. aeri/api/projects/types/api_key_summary.py +35 -0
  292. aeri/api/projects/types/organization.py +22 -0
  293. aeri/api/projects/types/project.py +34 -0
  294. aeri/api/projects/types/project_deletion_response.py +15 -0
  295. aeri/api/projects/types/projects.py +15 -0
  296. aeri/api/prompt_version/__init__.py +4 -0
  297. aeri/api/prompt_version/client.py +157 -0
  298. aeri/api/prompt_version/raw_client.py +264 -0
  299. aeri/api/prompts/__init__.py +100 -0
  300. aeri/api/prompts/client.py +550 -0
  301. aeri/api/prompts/raw_client.py +987 -0
  302. aeri/api/prompts/types/__init__.py +96 -0
  303. aeri/api/prompts/types/base_prompt.py +42 -0
  304. aeri/api/prompts/types/chat_message.py +17 -0
  305. aeri/api/prompts/types/chat_message_type.py +15 -0
  306. aeri/api/prompts/types/chat_message_with_placeholders.py +8 -0
  307. aeri/api/prompts/types/chat_prompt.py +15 -0
  308. aeri/api/prompts/types/create_chat_prompt_request.py +37 -0
  309. aeri/api/prompts/types/create_chat_prompt_type.py +15 -0
  310. aeri/api/prompts/types/create_prompt_request.py +8 -0
  311. aeri/api/prompts/types/create_text_prompt_request.py +36 -0
  312. aeri/api/prompts/types/create_text_prompt_type.py +15 -0
  313. aeri/api/prompts/types/placeholder_message.py +16 -0
  314. aeri/api/prompts/types/placeholder_message_type.py +15 -0
  315. aeri/api/prompts/types/prompt.py +58 -0
  316. aeri/api/prompts/types/prompt_meta.py +35 -0
  317. aeri/api/prompts/types/prompt_meta_list_response.py +17 -0
  318. aeri/api/prompts/types/prompt_type.py +20 -0
  319. aeri/api/prompts/types/text_prompt.py +14 -0
  320. aeri/api/scim/__init__.py +94 -0
  321. aeri/api/scim/client.py +686 -0
  322. aeri/api/scim/raw_client.py +1528 -0
  323. aeri/api/scim/types/__init__.py +92 -0
  324. aeri/api/scim/types/authentication_scheme.py +20 -0
  325. aeri/api/scim/types/bulk_config.py +22 -0
  326. aeri/api/scim/types/empty_response.py +16 -0
  327. aeri/api/scim/types/filter_config.py +17 -0
  328. aeri/api/scim/types/resource_meta.py +17 -0
  329. aeri/api/scim/types/resource_type.py +27 -0
  330. aeri/api/scim/types/resource_types_response.py +21 -0
  331. aeri/api/scim/types/schema_extension.py +17 -0
  332. aeri/api/scim/types/schema_resource.py +19 -0
  333. aeri/api/scim/types/schemas_response.py +21 -0
  334. aeri/api/scim/types/scim_email.py +16 -0
  335. aeri/api/scim/types/scim_feature_support.py +14 -0
  336. aeri/api/scim/types/scim_name.py +14 -0
  337. aeri/api/scim/types/scim_user.py +24 -0
  338. aeri/api/scim/types/scim_users_list_response.py +25 -0
  339. aeri/api/scim/types/service_provider_config.py +36 -0
  340. aeri/api/scim/types/user_meta.py +20 -0
  341. aeri/api/score_configs/__init__.py +44 -0
  342. aeri/api/score_configs/client.py +526 -0
  343. aeri/api/score_configs/raw_client.py +1012 -0
  344. aeri/api/score_configs/types/__init__.py +46 -0
  345. aeri/api/score_configs/types/create_score_config_request.py +46 -0
  346. aeri/api/score_configs/types/score_configs.py +17 -0
  347. aeri/api/score_configs/types/update_score_config_request.py +53 -0
  348. aeri/api/scores/__init__.py +76 -0
  349. aeri/api/scores/client.py +420 -0
  350. aeri/api/scores/raw_client.py +656 -0
  351. aeri/api/scores/types/__init__.py +76 -0
  352. aeri/api/scores/types/get_scores_response.py +17 -0
  353. aeri/api/scores/types/get_scores_response_data.py +211 -0
  354. aeri/api/scores/types/get_scores_response_data_boolean.py +15 -0
  355. aeri/api/scores/types/get_scores_response_data_categorical.py +15 -0
  356. aeri/api/scores/types/get_scores_response_data_correction.py +15 -0
  357. aeri/api/scores/types/get_scores_response_data_numeric.py +15 -0
  358. aeri/api/scores/types/get_scores_response_trace_data.py +38 -0
  359. aeri/api/sessions/__init__.py +40 -0
  360. aeri/api/sessions/client.py +262 -0
  361. aeri/api/sessions/raw_client.py +500 -0
  362. aeri/api/sessions/types/__init__.py +40 -0
  363. aeri/api/sessions/types/paginated_sessions.py +17 -0
  364. aeri/api/trace/__init__.py +44 -0
  365. aeri/api/trace/client.py +728 -0
  366. aeri/api/trace/raw_client.py +1208 -0
  367. aeri/api/trace/types/__init__.py +46 -0
  368. aeri/api/trace/types/delete_trace_response.py +14 -0
  369. aeri/api/trace/types/sort.py +14 -0
  370. aeri/api/trace/types/traces.py +17 -0
  371. aeri/api/utils/__init__.py +44 -0
  372. aeri/api/utils/pagination/__init__.py +40 -0
  373. aeri/api/utils/pagination/types/__init__.py +40 -0
  374. aeri/api/utils/pagination/types/meta_response.py +38 -0
  375. aeri/batch_evaluation.py +1643 -0
  376. aeri/experiment.py +1044 -0
  377. aeri/langchain/CallbackHandler.py +1377 -0
  378. aeri/langchain/__init__.py +5 -0
  379. aeri/langchain/utils.py +212 -0
  380. aeri/logger.py +28 -0
  381. aeri/media.py +352 -0
  382. aeri/model.py +477 -0
  383. aeri/openai.py +1124 -0
  384. aeri/py.typed +0 -0
  385. aeri/span_filter.py +17 -0
  386. aeri/types.py +79 -0
  387. aeri/version.py +3 -0
  388. aeri_python-4.0.0.dist-info/METADATA +51 -0
  389. aeri_python-4.0.0.dist-info/RECORD +391 -0
  390. aeri_python-4.0.0.dist-info/WHEEL +4 -0
  391. aeri_python-4.0.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,44 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ import typing
6
+ from importlib import import_module
7
+
8
+ if typing.TYPE_CHECKING:
9
+ from .observations import Observations
10
+ from .observations_views import ObservationsViews
11
+ _dynamic_imports: typing.Dict[str, str] = {
12
+ "Observations": ".observations",
13
+ "ObservationsViews": ".observations_views",
14
+ }
15
+
16
+
17
+ def __getattr__(attr_name: str) -> typing.Any:
18
+ module_name = _dynamic_imports.get(attr_name)
19
+ if module_name is None:
20
+ raise AttributeError(
21
+ f"No {attr_name} found in _dynamic_imports for module name -> {__name__}"
22
+ )
23
+ try:
24
+ module = import_module(module_name, __package__)
25
+ if module_name == f".{attr_name}":
26
+ return module
27
+ else:
28
+ return getattr(module, attr_name)
29
+ except ImportError as e:
30
+ raise ImportError(
31
+ f"Failed to import {attr_name} from {module_name}: {e}"
32
+ ) from e
33
+ except AttributeError as e:
34
+ raise AttributeError(
35
+ f"Failed to get {attr_name} from {module_name}: {e}"
36
+ ) from e
37
+
38
+
39
+ def __dir__():
40
+ lazy_attrs = list(_dynamic_imports.keys())
41
+ return sorted(lazy_attrs)
42
+
43
+
44
+ __all__ = ["Observations", "ObservationsViews"]
@@ -0,0 +1,17 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ....commons.types.observation import Observation
7
+ from ....core.pydantic_utilities import UniversalBaseModel
8
+ from ....utils.pagination.types.meta_response import MetaResponse
9
+
10
+
11
+ class Observations(UniversalBaseModel):
12
+ data: typing.List[Observation]
13
+ meta: MetaResponse
14
+
15
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
16
+ extra="allow", frozen=True
17
+ )
@@ -0,0 +1,17 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ....commons.types.observations_view import ObservationsView
7
+ from ....core.pydantic_utilities import UniversalBaseModel
8
+ from ....utils.pagination.types.meta_response import MetaResponse
9
+
10
+
11
+ class ObservationsViews(UniversalBaseModel):
12
+ data: typing.List[ObservationsView]
13
+ meta: MetaResponse
14
+
15
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
16
+ extra="allow", frozen=True
17
+ )
@@ -0,0 +1,13 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
4
+
5
+
6
+ class RawLegacyClient:
7
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
8
+ self._client_wrapper = client_wrapper
9
+
10
+
11
+ class AsyncRawLegacyClient:
12
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
13
+ self._client_wrapper = client_wrapper
@@ -0,0 +1,43 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ import typing
6
+ from importlib import import_module
7
+
8
+ if typing.TYPE_CHECKING:
9
+ from .types import CreateScoreRequest, CreateScoreResponse
10
+ _dynamic_imports: typing.Dict[str, str] = {
11
+ "CreateScoreRequest": ".types",
12
+ "CreateScoreResponse": ".types",
13
+ }
14
+
15
+
16
+ def __getattr__(attr_name: str) -> typing.Any:
17
+ module_name = _dynamic_imports.get(attr_name)
18
+ if module_name is None:
19
+ raise AttributeError(
20
+ f"No {attr_name} found in _dynamic_imports for module name -> {__name__}"
21
+ )
22
+ try:
23
+ module = import_module(module_name, __package__)
24
+ if module_name == f".{attr_name}":
25
+ return module
26
+ else:
27
+ return getattr(module, attr_name)
28
+ except ImportError as e:
29
+ raise ImportError(
30
+ f"Failed to import {attr_name} from {module_name}: {e}"
31
+ ) from e
32
+ except AttributeError as e:
33
+ raise AttributeError(
34
+ f"Failed to get {attr_name} from {module_name}: {e}"
35
+ ) from e
36
+
37
+
38
+ def __dir__():
39
+ lazy_attrs = list(_dynamic_imports.keys())
40
+ return sorted(lazy_attrs)
41
+
42
+
43
+ __all__ = ["CreateScoreRequest", "CreateScoreResponse"]
@@ -0,0 +1,329 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ from ...commons.types.create_score_value import CreateScoreValue
6
+ from ...commons.types.score_data_type import ScoreDataType
7
+ from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
+ from ...core.request_options import RequestOptions
9
+ from .raw_client import AsyncRawScoreV1Client, RawScoreV1Client
10
+ from .types.create_score_response import CreateScoreResponse
11
+
12
+ # this is used as the default value for optional parameters
13
+ OMIT = typing.cast(typing.Any, ...)
14
+
15
+
16
+ class ScoreV1Client:
17
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
18
+ self._raw_client = RawScoreV1Client(client_wrapper=client_wrapper)
19
+
20
+ @property
21
+ def with_raw_response(self) -> RawScoreV1Client:
22
+ """
23
+ Retrieves a raw implementation of this client that returns raw responses.
24
+
25
+ Returns
26
+ -------
27
+ RawScoreV1Client
28
+ """
29
+ return self._raw_client
30
+
31
+ def create(
32
+ self,
33
+ *,
34
+ name: str,
35
+ value: CreateScoreValue,
36
+ id: typing.Optional[str] = OMIT,
37
+ trace_id: typing.Optional[str] = OMIT,
38
+ session_id: typing.Optional[str] = OMIT,
39
+ observation_id: typing.Optional[str] = OMIT,
40
+ dataset_run_id: typing.Optional[str] = OMIT,
41
+ comment: typing.Optional[str] = OMIT,
42
+ metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
43
+ environment: typing.Optional[str] = OMIT,
44
+ queue_id: typing.Optional[str] = OMIT,
45
+ data_type: typing.Optional[ScoreDataType] = OMIT,
46
+ config_id: typing.Optional[str] = OMIT,
47
+ request_options: typing.Optional[RequestOptions] = None,
48
+ ) -> CreateScoreResponse:
49
+ """
50
+ Create a score (supports both trace and session scores)
51
+
52
+ Parameters
53
+ ----------
54
+ name : str
55
+
56
+ value : CreateScoreValue
57
+ The value of the score. Must be passed as string for categorical scores, and numeric for boolean and numeric scores. Boolean score values must equal either 1 or 0 (true or false)
58
+
59
+ id : typing.Optional[str]
60
+
61
+ trace_id : typing.Optional[str]
62
+
63
+ session_id : typing.Optional[str]
64
+
65
+ observation_id : typing.Optional[str]
66
+
67
+ dataset_run_id : typing.Optional[str]
68
+
69
+ comment : typing.Optional[str]
70
+
71
+ metadata : typing.Optional[typing.Dict[str, typing.Any]]
72
+
73
+ environment : typing.Optional[str]
74
+ The environment of the score. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'aeri'.
75
+
76
+ queue_id : typing.Optional[str]
77
+ The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
78
+
79
+ data_type : typing.Optional[ScoreDataType]
80
+ The data type of the score. When passing a configId this field is inferred. Otherwise, this field must be passed or will default to numeric.
81
+
82
+ config_id : typing.Optional[str]
83
+ Reference a score config on a score. The unique aeri identifier of a score config. When passing this field, the dataType and stringValue fields are automatically populated.
84
+
85
+ request_options : typing.Optional[RequestOptions]
86
+ Request-specific configuration.
87
+
88
+ Returns
89
+ -------
90
+ CreateScoreResponse
91
+
92
+ Examples
93
+ --------
94
+ from aeri import AeriAPI
95
+
96
+ client = AeriAPI(
97
+ x_aeri_sdk_name="YOUR_X_AERI_SDK_NAME",
98
+ x_aeri_sdk_version="YOUR_X_AERI_SDK_VERSION",
99
+ x_aeri_public_key="YOUR_X_AERI_PUBLIC_KEY",
100
+ username="YOUR_USERNAME",
101
+ password="YOUR_PASSWORD",
102
+ base_url="https://yourhost.com/path/to/api",
103
+ )
104
+ client.legacy.score_v1.create(
105
+ name="name",
106
+ value=1.1,
107
+ )
108
+ """
109
+ _response = self._raw_client.create(
110
+ name=name,
111
+ value=value,
112
+ id=id,
113
+ trace_id=trace_id,
114
+ session_id=session_id,
115
+ observation_id=observation_id,
116
+ dataset_run_id=dataset_run_id,
117
+ comment=comment,
118
+ metadata=metadata,
119
+ environment=environment,
120
+ queue_id=queue_id,
121
+ data_type=data_type,
122
+ config_id=config_id,
123
+ request_options=request_options,
124
+ )
125
+ return _response.data
126
+
127
+ def delete(
128
+ self, score_id: str, *, request_options: typing.Optional[RequestOptions] = None
129
+ ) -> None:
130
+ """
131
+ Delete a score (supports both trace and session scores)
132
+
133
+ Parameters
134
+ ----------
135
+ score_id : str
136
+ The unique aeri identifier of a score
137
+
138
+ request_options : typing.Optional[RequestOptions]
139
+ Request-specific configuration.
140
+
141
+ Returns
142
+ -------
143
+ None
144
+
145
+ Examples
146
+ --------
147
+ from aeri import AeriAPI
148
+
149
+ client = AeriAPI(
150
+ x_aeri_sdk_name="YOUR_X_AERI_SDK_NAME",
151
+ x_aeri_sdk_version="YOUR_X_AERI_SDK_VERSION",
152
+ x_aeri_public_key="YOUR_X_AERI_PUBLIC_KEY",
153
+ username="YOUR_USERNAME",
154
+ password="YOUR_PASSWORD",
155
+ base_url="https://yourhost.com/path/to/api",
156
+ )
157
+ client.legacy.score_v1.delete(
158
+ score_id="scoreId",
159
+ )
160
+ """
161
+ _response = self._raw_client.delete(score_id, request_options=request_options)
162
+ return _response.data
163
+
164
+
165
+ class AsyncScoreV1Client:
166
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
167
+ self._raw_client = AsyncRawScoreV1Client(client_wrapper=client_wrapper)
168
+
169
+ @property
170
+ def with_raw_response(self) -> AsyncRawScoreV1Client:
171
+ """
172
+ Retrieves a raw implementation of this client that returns raw responses.
173
+
174
+ Returns
175
+ -------
176
+ AsyncRawScoreV1Client
177
+ """
178
+ return self._raw_client
179
+
180
+ async def create(
181
+ self,
182
+ *,
183
+ name: str,
184
+ value: CreateScoreValue,
185
+ id: typing.Optional[str] = OMIT,
186
+ trace_id: typing.Optional[str] = OMIT,
187
+ session_id: typing.Optional[str] = OMIT,
188
+ observation_id: typing.Optional[str] = OMIT,
189
+ dataset_run_id: typing.Optional[str] = OMIT,
190
+ comment: typing.Optional[str] = OMIT,
191
+ metadata: typing.Optional[typing.Dict[str, typing.Any]] = OMIT,
192
+ environment: typing.Optional[str] = OMIT,
193
+ queue_id: typing.Optional[str] = OMIT,
194
+ data_type: typing.Optional[ScoreDataType] = OMIT,
195
+ config_id: typing.Optional[str] = OMIT,
196
+ request_options: typing.Optional[RequestOptions] = None,
197
+ ) -> CreateScoreResponse:
198
+ """
199
+ Create a score (supports both trace and session scores)
200
+
201
+ Parameters
202
+ ----------
203
+ name : str
204
+
205
+ value : CreateScoreValue
206
+ The value of the score. Must be passed as string for categorical scores, and numeric for boolean and numeric scores. Boolean score values must equal either 1 or 0 (true or false)
207
+
208
+ id : typing.Optional[str]
209
+
210
+ trace_id : typing.Optional[str]
211
+
212
+ session_id : typing.Optional[str]
213
+
214
+ observation_id : typing.Optional[str]
215
+
216
+ dataset_run_id : typing.Optional[str]
217
+
218
+ comment : typing.Optional[str]
219
+
220
+ metadata : typing.Optional[typing.Dict[str, typing.Any]]
221
+
222
+ environment : typing.Optional[str]
223
+ The environment of the score. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'aeri'.
224
+
225
+ queue_id : typing.Optional[str]
226
+ The annotation queue referenced by the score. Indicates if score was initially created while processing annotation queue.
227
+
228
+ data_type : typing.Optional[ScoreDataType]
229
+ The data type of the score. When passing a configId this field is inferred. Otherwise, this field must be passed or will default to numeric.
230
+
231
+ config_id : typing.Optional[str]
232
+ Reference a score config on a score. The unique aeri identifier of a score config. When passing this field, the dataType and stringValue fields are automatically populated.
233
+
234
+ request_options : typing.Optional[RequestOptions]
235
+ Request-specific configuration.
236
+
237
+ Returns
238
+ -------
239
+ CreateScoreResponse
240
+
241
+ Examples
242
+ --------
243
+ import asyncio
244
+
245
+ from aeri import AsyncAeriAPI
246
+
247
+ client = AsyncAeriAPI(
248
+ x_aeri_sdk_name="YOUR_X_AERI_SDK_NAME",
249
+ x_aeri_sdk_version="YOUR_X_AERI_SDK_VERSION",
250
+ x_aeri_public_key="YOUR_X_AERI_PUBLIC_KEY",
251
+ username="YOUR_USERNAME",
252
+ password="YOUR_PASSWORD",
253
+ base_url="https://yourhost.com/path/to/api",
254
+ )
255
+
256
+
257
+ async def main() -> None:
258
+ await client.legacy.score_v1.create(
259
+ name="name",
260
+ value=1.1,
261
+ )
262
+
263
+
264
+ asyncio.run(main())
265
+ """
266
+ _response = await self._raw_client.create(
267
+ name=name,
268
+ value=value,
269
+ id=id,
270
+ trace_id=trace_id,
271
+ session_id=session_id,
272
+ observation_id=observation_id,
273
+ dataset_run_id=dataset_run_id,
274
+ comment=comment,
275
+ metadata=metadata,
276
+ environment=environment,
277
+ queue_id=queue_id,
278
+ data_type=data_type,
279
+ config_id=config_id,
280
+ request_options=request_options,
281
+ )
282
+ return _response.data
283
+
284
+ async def delete(
285
+ self, score_id: str, *, request_options: typing.Optional[RequestOptions] = None
286
+ ) -> None:
287
+ """
288
+ Delete a score (supports both trace and session scores)
289
+
290
+ Parameters
291
+ ----------
292
+ score_id : str
293
+ The unique aeri identifier of a score
294
+
295
+ request_options : typing.Optional[RequestOptions]
296
+ Request-specific configuration.
297
+
298
+ Returns
299
+ -------
300
+ None
301
+
302
+ Examples
303
+ --------
304
+ import asyncio
305
+
306
+ from aeri import AsyncAeriAPI
307
+
308
+ client = AsyncAeriAPI(
309
+ x_aeri_sdk_name="YOUR_X_AERI_SDK_NAME",
310
+ x_aeri_sdk_version="YOUR_X_AERI_SDK_VERSION",
311
+ x_aeri_public_key="YOUR_X_AERI_PUBLIC_KEY",
312
+ username="YOUR_USERNAME",
313
+ password="YOUR_PASSWORD",
314
+ base_url="https://yourhost.com/path/to/api",
315
+ )
316
+
317
+
318
+ async def main() -> None:
319
+ await client.legacy.score_v1.delete(
320
+ score_id="scoreId",
321
+ )
322
+
323
+
324
+ asyncio.run(main())
325
+ """
326
+ _response = await self._raw_client.delete(
327
+ score_id, request_options=request_options
328
+ )
329
+ return _response.data