agenta 0.45.0__tar.gz → 0.45.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of agenta might be problematic. Click here for more details.

Files changed (255) hide show
  1. {agenta-0.45.0 → agenta-0.45.2}/PKG-INFO +1 -1
  2. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/decorators/tracing.py +3 -1
  3. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/litellm/mockllm.py +12 -4
  4. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/litellm/mocks/__init__.py +22 -1
  5. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/middleware/config.py +15 -9
  6. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/tracing/processors.py +22 -16
  7. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/tracing/tracing.py +55 -34
  8. {agenta-0.45.0 → agenta-0.45.2}/pyproject.toml +1 -1
  9. {agenta-0.45.0 → agenta-0.45.2}/README.md +0 -0
  10. {agenta-0.45.0 → agenta-0.45.2}/agenta/__init__.py +0 -0
  11. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/Readme.md +0 -0
  12. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/__init__.py +0 -0
  13. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/access_control/__init__.py +0 -0
  14. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/access_control/client.py +0 -0
  15. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/admin/__init__.py +0 -0
  16. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/admin/client.py +0 -0
  17. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/api_keys/__init__.py +0 -0
  18. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/api_keys/client.py +0 -0
  19. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/apps/__init__.py +0 -0
  20. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/apps/client.py +0 -0
  21. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/bases/__init__.py +0 -0
  22. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/bases/client.py +0 -0
  23. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/configs/__init__.py +0 -0
  24. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/configs/client.py +0 -0
  25. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/containers/__init__.py +0 -0
  26. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/containers/client.py +0 -0
  27. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/containers/types/__init__.py +0 -0
  28. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/containers/types/container_templates_response.py +0 -0
  29. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/core/__init__.py +0 -0
  30. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/core/api_error.py +0 -0
  31. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/core/client_wrapper.py +0 -0
  32. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/core/datetime_utils.py +0 -0
  33. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/core/file.py +0 -0
  34. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/core/http_client.py +0 -0
  35. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/core/jsonable_encoder.py +0 -0
  36. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/core/pydantic_utilities.py +0 -0
  37. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/core/query_encoder.py +0 -0
  38. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/core/remove_none_from_dict.py +0 -0
  39. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/core/request_options.py +0 -0
  40. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/core/serialization.py +0 -0
  41. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/environments/__init__.py +0 -0
  42. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/environments/client.py +0 -0
  43. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/errors/__init__.py +0 -0
  44. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/errors/unprocessable_entity_error.py +0 -0
  45. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/evaluations/__init__.py +0 -0
  46. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/evaluations/client.py +0 -0
  47. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/evaluators/__init__.py +0 -0
  48. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/evaluators/client.py +0 -0
  49. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/human_evaluations/__init__.py +0 -0
  50. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/human_evaluations/client.py +0 -0
  51. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/observability/__init__.py +0 -0
  52. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/observability/client.py +0 -0
  53. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/observability/types/__init__.py +0 -0
  54. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/observability/types/format.py +0 -0
  55. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/observability/types/query_analytics_response.py +0 -0
  56. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/observability/types/query_traces_response.py +0 -0
  57. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/organization/__init__.py +0 -0
  58. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/organization/client.py +0 -0
  59. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/scopes/__init__.py +0 -0
  60. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/scopes/client.py +0 -0
  61. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/testsets/__init__.py +0 -0
  62. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/testsets/client.py +0 -0
  63. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/__init__.py +0 -0
  64. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/account_response.py +0 -0
  65. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/agenta_node_dto.py +0 -0
  66. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/agenta_node_dto_nodes_value.py +0 -0
  67. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/agenta_nodes_response.py +0 -0
  68. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/agenta_root_dto.py +0 -0
  69. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/agenta_roots_response.py +0 -0
  70. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/agenta_tree_dto.py +0 -0
  71. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/agenta_trees_response.py +0 -0
  72. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/aggregated_result.py +0 -0
  73. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/aggregated_result_evaluator_config.py +0 -0
  74. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/analytics_response.py +0 -0
  75. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/app.py +0 -0
  76. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/app_variant_response.py +0 -0
  77. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/app_variant_revision.py +0 -0
  78. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/base_output.py +0 -0
  79. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/body_import_testset.py +0 -0
  80. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/bucket_dto.py +0 -0
  81. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/collect_status_response.py +0 -0
  82. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/config_db.py +0 -0
  83. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/config_dto.py +0 -0
  84. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/config_response_model.py +0 -0
  85. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/correct_answer.py +0 -0
  86. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/create_app_output.py +0 -0
  87. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/custom_model_settings_dto.py +0 -0
  88. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/custom_provider_dto.py +0 -0
  89. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/custom_provider_kind.py +0 -0
  90. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/custom_provider_settings_dto.py +0 -0
  91. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/data.py +0 -0
  92. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/delete_evaluation.py +0 -0
  93. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/docker_env_vars.py +0 -0
  94. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/environment_output.py +0 -0
  95. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/environment_output_extended.py +0 -0
  96. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/environment_revision.py +0 -0
  97. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/error.py +0 -0
  98. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/evaluation.py +0 -0
  99. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/evaluation_scenario.py +0 -0
  100. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/evaluation_scenario_input.py +0 -0
  101. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/evaluation_scenario_output.py +0 -0
  102. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/evaluation_scenario_result.py +0 -0
  103. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/evaluation_status_enum.py +0 -0
  104. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/evaluation_type.py +0 -0
  105. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/evaluator.py +0 -0
  106. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/evaluator_config.py +0 -0
  107. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/evaluator_mapping_output_interface.py +0 -0
  108. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/evaluator_output_interface.py +0 -0
  109. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/exception_dto.py +0 -0
  110. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/get_config_response.py +0 -0
  111. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/header_dto.py +0 -0
  112. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/http_validation_error.py +0 -0
  113. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/human_evaluation.py +0 -0
  114. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/human_evaluation_scenario.py +0 -0
  115. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/human_evaluation_scenario_input.py +0 -0
  116. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/human_evaluation_scenario_output.py +0 -0
  117. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/image.py +0 -0
  118. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/invite_request.py +0 -0
  119. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/legacy_analytics_response.py +0 -0
  120. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/legacy_data_point.py +0 -0
  121. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/legacy_scope_request.py +0 -0
  122. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/legacy_scopes_response.py +0 -0
  123. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/legacy_user_request.py +0 -0
  124. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/legacy_user_response.py +0 -0
  125. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/lifecycle_dto.py +0 -0
  126. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/link_dto.py +0 -0
  127. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/list_api_keys_response.py +0 -0
  128. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/llm_run_rate_limit.py +0 -0
  129. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/metrics_dto.py +0 -0
  130. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/new_testset.py +0 -0
  131. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/node_dto.py +0 -0
  132. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/node_type.py +0 -0
  133. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/o_tel_context_dto.py +0 -0
  134. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/o_tel_event_dto.py +0 -0
  135. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/o_tel_extra_dto.py +0 -0
  136. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/o_tel_link_dto.py +0 -0
  137. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/o_tel_span_dto.py +0 -0
  138. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/o_tel_span_kind.py +0 -0
  139. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/o_tel_spans_response.py +0 -0
  140. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/o_tel_status_code.py +0 -0
  141. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/organization.py +0 -0
  142. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/organization_details.py +0 -0
  143. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/organization_membership_request.py +0 -0
  144. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/organization_output.py +0 -0
  145. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/organization_request.py +0 -0
  146. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/parent_dto.py +0 -0
  147. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/permission.py +0 -0
  148. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/project_membership_request.py +0 -0
  149. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/project_request.py +0 -0
  150. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/project_scope.py +0 -0
  151. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/projects_response.py +0 -0
  152. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/provider_key_dto.py +0 -0
  153. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/provider_kind.py +0 -0
  154. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/reference.py +0 -0
  155. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/reference_dto.py +0 -0
  156. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/reference_request_model.py +0 -0
  157. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/result.py +0 -0
  158. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/role.py +0 -0
  159. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/root_dto.py +0 -0
  160. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/scopes_response_model.py +0 -0
  161. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/score.py +0 -0
  162. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/secret_dto.py +0 -0
  163. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/secret_kind.py +0 -0
  164. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/secret_response_dto.py +0 -0
  165. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/simple_evaluation_output.py +0 -0
  166. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/span_dto.py +0 -0
  167. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/span_dto_nodes_value.py +0 -0
  168. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/standard_provider_dto.py +0 -0
  169. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/standard_provider_kind.py +0 -0
  170. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/standard_provider_settings_dto.py +0 -0
  171. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/status_code.py +0 -0
  172. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/status_dto.py +0 -0
  173. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/template.py +0 -0
  174. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/template_image_info.py +0 -0
  175. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/test_set_output_response.py +0 -0
  176. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/test_set_simple_response.py +0 -0
  177. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/time_dto.py +0 -0
  178. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/tree_dto.py +0 -0
  179. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/tree_type.py +0 -0
  180. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/update_app_output.py +0 -0
  181. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/uri.py +0 -0
  182. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/user_request.py +0 -0
  183. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/validation_error.py +0 -0
  184. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/validation_error_loc_item.py +0 -0
  185. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/variant_action.py +0 -0
  186. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/variant_action_enum.py +0 -0
  187. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/workspace.py +0 -0
  188. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/workspace_member_response.py +0 -0
  189. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/workspace_membership_request.py +0 -0
  190. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/workspace_permission.py +0 -0
  191. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/workspace_request.py +0 -0
  192. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/workspace_response.py +0 -0
  193. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/workspace_role.py +0 -0
  194. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/types/workspace_role_response.py +0 -0
  195. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/variants/__init__.py +0 -0
  196. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/variants/client.py +0 -0
  197. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/variants/types/__init__.py +0 -0
  198. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/variants/types/add_variant_from_base_and_config_response.py +0 -0
  199. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/vault/__init__.py +0 -0
  200. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/vault/client.py +0 -0
  201. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/workspace/__init__.py +0 -0
  202. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/backend/workspace/client.py +0 -0
  203. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/client.py +0 -0
  204. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/types/provider_key_dto.py~HEAD +0 -0
  205. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/types/provider_key_dto.py~feat_model-registry +0 -0
  206. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/types/provider_kind.py~HEAD +0 -0
  207. {agenta-0.45.0 → agenta-0.45.2}/agenta/client/types/provider_kind.py~feat_model-registry +0 -0
  208. {agenta-0.45.0 → agenta-0.45.2}/agenta/config.py +0 -0
  209. {agenta-0.45.0 → agenta-0.45.2}/agenta/config.toml +0 -0
  210. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/__init__.py +0 -0
  211. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/agenta_init.py +0 -0
  212. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/assets.py +0 -0
  213. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/context/__init__.py +0 -0
  214. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/context/exporting.py +0 -0
  215. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/context/routing.py +0 -0
  216. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/context/tracing.py +0 -0
  217. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/decorators/__init__.py +0 -0
  218. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/decorators/routing.py +0 -0
  219. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/litellm/__init__.py +0 -0
  220. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/litellm/litellm.py +0 -0
  221. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/managers/__init__.py +0 -0
  222. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/managers/apps.py +0 -0
  223. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/managers/config.py +0 -0
  224. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/managers/deployment.py +0 -0
  225. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/managers/secrets.py +0 -0
  226. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/managers/shared.py +0 -0
  227. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/managers/variant.py +0 -0
  228. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/managers/vault.py +0 -0
  229. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/middleware/__init__.py +0 -0
  230. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/middleware/auth.py +0 -0
  231. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/middleware/cors.py +0 -0
  232. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/middleware/inline.py +0 -0
  233. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/middleware/mock.py +0 -0
  234. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/middleware/otel.py +0 -0
  235. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/middleware/vault.py +0 -0
  236. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/router.py +0 -0
  237. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/tracing/__init__.py +0 -0
  238. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/tracing/attributes.py +0 -0
  239. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/tracing/conventions.py +0 -0
  240. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/tracing/exporters.py +0 -0
  241. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/tracing/inline.py +0 -0
  242. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/tracing/propagation.py +0 -0
  243. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/tracing/spans.py +0 -0
  244. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/types.py +0 -0
  245. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/utils/__init__.py +0 -0
  246. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/utils/cache.py +0 -0
  247. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/utils/constants.py +0 -0
  248. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/utils/costs.py +0 -0
  249. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/utils/exceptions.py +0 -0
  250. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/utils/globals.py +0 -0
  251. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/utils/helpers.py +0 -0
  252. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/utils/logging.py +0 -0
  253. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/utils/preinit.py +0 -0
  254. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/utils/singleton.py +0 -0
  255. {agenta-0.45.0 → agenta-0.45.2}/agenta/sdk/utils/timing.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: agenta
3
- Version: 0.45.0
3
+ Version: 0.45.2
4
4
  Summary: The SDK for agenta is an open-source LLMOps platform.
5
5
  Keywords: LLMOps,LLM,evaluation,prompt engineering
6
6
  Author: Mahmoud Mabrouk
@@ -297,7 +297,9 @@ class instrument: # pylint: disable=invalid-name
297
297
  not in (
298
298
  ignore
299
299
  if isinstance(ignore, list)
300
- else io.keys() if ignore is True else []
300
+ else io.keys()
301
+ if ignore is True
302
+ else []
301
303
  )
302
304
  }
303
305
 
@@ -1,23 +1,31 @@
1
1
  from typing import Optional, Protocol, Any
2
+ from os import environ
3
+
4
+ from agenta.sdk.utils.logging import get_module_logger
2
5
 
3
6
  from agenta.sdk.litellm.mocks import MOCKS
4
7
  from agenta.sdk.context.routing import routing_context
5
8
 
9
+ AGENTA_LITELLM_MOCK = environ.get("AGENTA_LITELLM_MOCK") or None
10
+
11
+ log = get_module_logger(__name__)
12
+
6
13
 
7
14
  class LitellmProtocol(Protocol):
8
- async def acompletion(self, *args: Any, **kwargs: Any) -> Any:
9
- ...
15
+ async def acompletion(self, *args: Any, **kwargs: Any) -> Any: ...
10
16
 
11
17
 
12
18
  litellm: Optional[LitellmProtocol] = None # pylint: disable=invalid-name
13
19
 
14
20
 
15
21
  async def acompletion(*args, **kwargs):
16
- mock = routing_context.get().mock
22
+ mock = AGENTA_LITELLM_MOCK or routing_context.get().mock
17
23
 
18
24
  if mock:
25
+ log.debug("Mocking litellm: %s.", mock)
26
+
19
27
  if mock not in MOCKS:
20
- raise ValueError(f"Mock {mock} not found")
28
+ mock = "hello"
21
29
 
22
30
  return MOCKS[mock](*args, **kwargs)
23
31
 
@@ -1,4 +1,5 @@
1
1
  from typing import Callable
2
+ from asyncio import sleep
2
3
 
3
4
  from pydantic import BaseModel
4
5
 
@@ -30,7 +31,26 @@ def hello_mock_response(*args, **kwargs) -> MockResponseModel:
30
31
  def chat_mock_response(*args, **kwargs) -> MockResponseModel:
31
32
  return MockResponseModel(
32
33
  choices=[
33
- MockChoiceModel(message=MockMessageModel(content="world", role="assistant"))
34
+ MockChoiceModel(
35
+ message=MockMessageModel(
36
+ content="world",
37
+ role="assistant",
38
+ )
39
+ )
40
+ ],
41
+ )
42
+
43
+
44
+ def delay_mock_response(*args, **kwargs) -> MockResponseModel:
45
+ sleep(2)
46
+
47
+ return MockResponseModel(
48
+ choices=[
49
+ MockChoiceModel(
50
+ message=MockMessageModel(
51
+ content="delay",
52
+ )
53
+ )
34
54
  ],
35
55
  )
36
56
 
@@ -38,4 +58,5 @@ def chat_mock_response(*args, **kwargs) -> MockResponseModel:
38
58
  MOCKS: dict[str, Callable[..., MockResponseModel]] = {
39
59
  "hello": hello_mock_response,
40
60
  "chat": chat_mock_response,
61
+ "delay": delay_mock_response,
41
62
  }
@@ -92,15 +92,21 @@ class ConfigMiddleware(BaseHTTPMiddleware):
92
92
  return parameters, references
93
93
 
94
94
  config = {}
95
- async with httpx.AsyncClient() as client:
96
- response = await client.post(
97
- f"{self.host}/api/variants/configs/fetch",
98
- headers=headers,
99
- json=refs,
100
- )
101
-
102
- if response.status_code == 200:
103
- config = response.json()
95
+
96
+ is_test_path = request.url.path.endswith("/test")
97
+ are_refs_missing = not variant_ref and not environment_ref
98
+ should_fetch = not is_test_path or not are_refs_missing
99
+
100
+ if should_fetch:
101
+ async with httpx.AsyncClient() as client:
102
+ response = await client.post(
103
+ f"{self.host}/api/variants/configs/fetch",
104
+ headers=headers,
105
+ json=refs,
106
+ )
107
+
108
+ if response.status_code == 200:
109
+ config = response.json()
104
110
 
105
111
  if not config:
106
112
  config["application_ref"] = refs[
@@ -157,24 +157,30 @@ class TraceProcessor(BatchSpanProcessor):
157
157
  return trace
158
158
 
159
159
 
160
- invocation_link = {}
161
- invocation_link_lock = Lock()
160
+ # Internal storage for the last ended span context
161
+ _last_ended_span_context = None
162
+ _lock = Lock()
162
163
 
163
164
 
164
- class InvocationLinkHook(SpanProcessor):
165
- def on_end(self, span):
166
- # Only capture root spans if you want
167
- if span.parent is None:
168
- ctx = span.get_span_context()
165
+ def _set_last_ended(span_ctx) -> None:
166
+ """Set the last ended span context"""
167
+ with _lock:
168
+ global _last_ended_span_context
169
+ _last_ended_span_context = span_ctx
169
170
 
170
- with invocation_link_lock:
171
- invocation_link["trace_id"] = ctx.trace_id
172
- invocation_link["span_id"] = ctx.span_id
173
171
 
172
+ def _get_last_ended():
173
+ """Get the last ended span context"""
174
+ with _lock:
175
+ return _last_ended_span_context
174
176
 
175
- def use_invocation_link() -> Optional[Dict[str, str]]:
176
- with invocation_link_lock:
177
- if invocation_link:
178
- return invocation_link.copy()
179
- else:
180
- return None
177
+
178
+ class EndedSpanRecorder(SpanProcessor):
179
+ """Records the last ended span context for later reference.
180
+
181
+ This allows accessing span information even after the span has been ended,
182
+ which is useful for linking annotations to auto-instrumented spans.
183
+ """
184
+
185
+ def on_end(self, span):
186
+ _set_last_ended(span.get_span_context())
@@ -23,8 +23,8 @@ from agenta.sdk.utils.exceptions import suppress
23
23
  from agenta.sdk.utils.logging import get_module_logger
24
24
  from agenta.sdk.tracing.processors import (
25
25
  TraceProcessor,
26
- InvocationLinkHook,
27
- use_invocation_link,
26
+ EndedSpanRecorder,
27
+ _get_last_ended,
28
28
  )
29
29
  from agenta.sdk.tracing.exporters import InlineExporter, OTLPExporter
30
30
  from agenta.sdk.tracing.spans import CustomSpan
@@ -43,7 +43,7 @@ _original_init = trace.TracerProvider.__init__
43
43
 
44
44
  def patched_init(self, *args, **kwargs):
45
45
  _original_init(self, *args, **kwargs)
46
- self.add_span_processor(InvocationLinkHook())
46
+ self.add_span_processor(EndedSpanRecorder())
47
47
 
48
48
 
49
49
  trace.TracerProvider.__init__ = patched_init
@@ -269,37 +269,58 @@ class Tracing(metaclass=Singleton):
269
269
  ):
270
270
  return inject(*args, **kwargs)
271
271
 
272
- def get_invocation_link(self) -> Optional[Link]:
273
- with suppress():
274
- link = tracing_context.get().link
275
-
276
- trace_id = None
277
- span_id = None
278
-
279
- if link:
280
- trace_id = UUID(int=link.get("trace_id")).hex if link else None
281
- span_id = UUID(int=link.get("span_id")).hex[16:] if link else None
282
-
283
- if trace_id and span_id:
284
- return Link(
285
- trace_id=trace_id,
286
- span_id=span_id,
287
- )
288
-
289
- link = use_invocation_link()
290
-
291
- trace_id = None
292
- span_id = None
293
-
294
- if link:
295
- trace_id = UUID(int=link.get("trace_id")).hex if link else None
296
- span_id = UUID(int=link.get("span_id")).hex[16:] if link else None
297
-
298
- if trace_id and span_id:
299
- return Link(
300
- trace_id=trace_id,
301
- span_id=span_id,
302
- )
272
+ def get_current_span_context(self):
273
+ """Get the current active span context if available.
274
+
275
+ Returns:
276
+ SpanContext or None if no active span
277
+ """
278
+ span = get_current_span()
279
+ ctx = span.get_span_context()
280
+ return ctx if ctx and ctx.is_valid else None
281
+
282
+ def get_last_span_context(self):
283
+ """Get the last closed span context if available.
284
+
285
+ This is useful for accessing span information after a span has closed,
286
+ particularly with auto-instrumentation libraries.
287
+
288
+ Returns:
289
+ SpanContext or None if no spans have been closed
290
+ """
291
+ return _get_last_ended()
292
+
293
+ def get_span_context(self):
294
+ """Get the most relevant span context.
295
+
296
+ First tries to get the current active span context.
297
+ If no active span exists, falls back to the last closed span.
298
+
299
+ Returns:
300
+ SpanContext or None if no relevant span context is available
301
+ """
302
+ return self.get_current_span_context() or self.get_last_span_context()
303
+
304
+ def build_invocation_link(self, span_ctx=None) -> Optional[Link]:
305
+ """
306
+ Builds a Link object containing the hex-formatted trace_id and span_id
307
+ from the current (or fallback last ended) span context.
308
+ Useful to link annotations to spans.
309
+
310
+ Args:
311
+ span_ctx: Optional SpanContext to convert to a Link
312
+
313
+ Returns:
314
+ Link object with trace_id and span_id or None if no valid context
315
+ """
316
+ if span_ctx is None:
317
+ span_ctx = self.get_span_context()
318
+
319
+ if span_ctx and span_ctx.is_valid:
320
+ return Link(
321
+ trace_id=f"{span_ctx.trace_id:032x}",
322
+ span_id=f"{span_ctx.span_id:016x}",
323
+ )
303
324
 
304
325
  return None
305
326
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "agenta"
3
- version = "0.45.0"
3
+ version = "0.45.2"
4
4
  description = "The SDK for agenta is an open-source LLMOps platform."
5
5
  readme = "README.md"
6
6
  authors = ["Mahmoud Mabrouk <mahmoud@agenta.ai>"]
File without changes
File without changes
File without changes