mirascope 2.0.0__py3-none-any.whl → 2.0.0a0__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 (442) hide show
  1. mirascope/__init__.py +2 -11
  2. mirascope/graphs/__init__.py +22 -0
  3. mirascope/graphs/finite_state_machine.py +625 -0
  4. mirascope/llm/__init__.py +16 -101
  5. mirascope/llm/agents/__init__.py +15 -0
  6. mirascope/llm/agents/agent.py +97 -0
  7. mirascope/llm/agents/agent_template.py +45 -0
  8. mirascope/llm/agents/decorator.py +176 -0
  9. mirascope/llm/calls/__init__.py +1 -2
  10. mirascope/llm/calls/base_call.py +33 -0
  11. mirascope/llm/calls/calls.py +58 -84
  12. mirascope/llm/calls/decorator.py +120 -140
  13. mirascope/llm/clients/__init__.py +34 -0
  14. mirascope/llm/clients/anthropic/__init__.py +11 -0
  15. mirascope/llm/{providers/openai/completions → clients/anthropic}/_utils/__init__.py +0 -2
  16. mirascope/llm/{providers → clients}/anthropic/_utils/decode.py +22 -66
  17. mirascope/llm/clients/anthropic/_utils/encode.py +243 -0
  18. mirascope/llm/clients/anthropic/clients.py +819 -0
  19. mirascope/llm/clients/anthropic/model_ids.py +8 -0
  20. mirascope/llm/{providers → clients}/base/__init__.py +5 -4
  21. mirascope/llm/{providers → clients}/base/_utils.py +17 -78
  22. mirascope/llm/{providers/base/base_provider.py → clients/base/client.py} +145 -468
  23. mirascope/llm/{models → clients/base}/params.py +37 -16
  24. mirascope/llm/clients/google/__init__.py +6 -0
  25. mirascope/llm/{providers/openai/responses → clients/google}/_utils/__init__.py +0 -2
  26. mirascope/llm/{providers → clients}/google/_utils/decode.py +22 -98
  27. mirascope/llm/{providers → clients}/google/_utils/encode.py +46 -168
  28. mirascope/llm/clients/google/clients.py +853 -0
  29. mirascope/llm/clients/google/model_ids.py +15 -0
  30. mirascope/llm/clients/openai/__init__.py +25 -0
  31. mirascope/llm/clients/openai/completions/__init__.py +9 -0
  32. mirascope/llm/{providers/google → clients/openai/completions}/_utils/__init__.py +0 -4
  33. mirascope/llm/{providers → clients}/openai/completions/_utils/decode.py +9 -74
  34. mirascope/llm/{providers → clients}/openai/completions/_utils/encode.py +52 -70
  35. mirascope/llm/clients/openai/completions/_utils/model_features.py +81 -0
  36. mirascope/llm/clients/openai/completions/clients.py +833 -0
  37. mirascope/llm/clients/openai/completions/model_ids.py +8 -0
  38. mirascope/llm/clients/openai/responses/__init__.py +9 -0
  39. mirascope/llm/clients/openai/responses/_utils/__init__.py +13 -0
  40. mirascope/llm/{providers → clients}/openai/responses/_utils/decode.py +14 -80
  41. mirascope/llm/{providers → clients}/openai/responses/_utils/encode.py +41 -92
  42. mirascope/llm/clients/openai/responses/_utils/model_features.py +87 -0
  43. mirascope/llm/clients/openai/responses/clients.py +832 -0
  44. mirascope/llm/clients/openai/responses/model_ids.py +8 -0
  45. mirascope/llm/clients/openai/shared/__init__.py +7 -0
  46. mirascope/llm/clients/openai/shared/_utils.py +55 -0
  47. mirascope/llm/clients/providers.py +175 -0
  48. mirascope/llm/content/__init__.py +2 -3
  49. mirascope/llm/content/tool_call.py +0 -6
  50. mirascope/llm/content/tool_output.py +5 -22
  51. mirascope/llm/context/_utils.py +6 -19
  52. mirascope/llm/exceptions.py +43 -298
  53. mirascope/llm/formatting/__init__.py +2 -19
  54. mirascope/llm/formatting/_utils.py +74 -0
  55. mirascope/llm/formatting/format.py +30 -219
  56. mirascope/llm/formatting/from_call_args.py +2 -2
  57. mirascope/llm/formatting/partial.py +7 -80
  58. mirascope/llm/formatting/types.py +64 -21
  59. mirascope/llm/mcp/__init__.py +2 -2
  60. mirascope/llm/mcp/client.py +118 -0
  61. mirascope/llm/messages/__init__.py +0 -3
  62. mirascope/llm/messages/message.py +5 -13
  63. mirascope/llm/models/__init__.py +2 -7
  64. mirascope/llm/models/models.py +139 -315
  65. mirascope/llm/prompts/__init__.py +12 -13
  66. mirascope/llm/prompts/_utils.py +43 -14
  67. mirascope/llm/prompts/decorator.py +204 -144
  68. mirascope/llm/prompts/protocols.py +59 -25
  69. mirascope/llm/responses/__init__.py +1 -9
  70. mirascope/llm/responses/_utils.py +12 -102
  71. mirascope/llm/responses/base_response.py +6 -18
  72. mirascope/llm/responses/base_stream_response.py +50 -173
  73. mirascope/llm/responses/finish_reason.py +0 -1
  74. mirascope/llm/responses/response.py +13 -34
  75. mirascope/llm/responses/root_response.py +29 -100
  76. mirascope/llm/responses/stream_response.py +31 -40
  77. mirascope/llm/tools/__init__.py +2 -9
  78. mirascope/llm/tools/_utils.py +3 -12
  79. mirascope/llm/tools/decorator.py +16 -25
  80. mirascope/llm/tools/protocols.py +4 -4
  81. mirascope/llm/tools/tool_schema.py +19 -87
  82. mirascope/llm/tools/toolkit.py +27 -35
  83. mirascope/llm/tools/tools.py +41 -135
  84. {mirascope-2.0.0.dist-info → mirascope-2.0.0a0.dist-info}/METADATA +9 -95
  85. mirascope-2.0.0a0.dist-info/RECORD +101 -0
  86. {mirascope-2.0.0.dist-info → mirascope-2.0.0a0.dist-info}/WHEEL +1 -1
  87. {mirascope-2.0.0.dist-info → mirascope-2.0.0a0.dist-info}/licenses/LICENSE +1 -1
  88. mirascope/_stubs.py +0 -363
  89. mirascope/api/__init__.py +0 -14
  90. mirascope/api/_generated/README.md +0 -207
  91. mirascope/api/_generated/__init__.py +0 -440
  92. mirascope/api/_generated/annotations/__init__.py +0 -33
  93. mirascope/api/_generated/annotations/client.py +0 -506
  94. mirascope/api/_generated/annotations/raw_client.py +0 -1414
  95. mirascope/api/_generated/annotations/types/__init__.py +0 -31
  96. mirascope/api/_generated/annotations/types/annotations_create_request_label.py +0 -5
  97. mirascope/api/_generated/annotations/types/annotations_create_response.py +0 -48
  98. mirascope/api/_generated/annotations/types/annotations_create_response_label.py +0 -5
  99. mirascope/api/_generated/annotations/types/annotations_get_response.py +0 -48
  100. mirascope/api/_generated/annotations/types/annotations_get_response_label.py +0 -5
  101. mirascope/api/_generated/annotations/types/annotations_list_request_label.py +0 -5
  102. mirascope/api/_generated/annotations/types/annotations_list_response.py +0 -21
  103. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item.py +0 -50
  104. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item_label.py +0 -5
  105. mirascope/api/_generated/annotations/types/annotations_update_request_label.py +0 -5
  106. mirascope/api/_generated/annotations/types/annotations_update_response.py +0 -48
  107. mirascope/api/_generated/annotations/types/annotations_update_response_label.py +0 -5
  108. mirascope/api/_generated/api_keys/__init__.py +0 -17
  109. mirascope/api/_generated/api_keys/client.py +0 -530
  110. mirascope/api/_generated/api_keys/raw_client.py +0 -1236
  111. mirascope/api/_generated/api_keys/types/__init__.py +0 -15
  112. mirascope/api/_generated/api_keys/types/api_keys_create_response.py +0 -28
  113. mirascope/api/_generated/api_keys/types/api_keys_get_response.py +0 -27
  114. mirascope/api/_generated/api_keys/types/api_keys_list_all_for_org_response_item.py +0 -40
  115. mirascope/api/_generated/api_keys/types/api_keys_list_response_item.py +0 -27
  116. mirascope/api/_generated/client.py +0 -211
  117. mirascope/api/_generated/core/__init__.py +0 -52
  118. mirascope/api/_generated/core/api_error.py +0 -23
  119. mirascope/api/_generated/core/client_wrapper.py +0 -46
  120. mirascope/api/_generated/core/datetime_utils.py +0 -28
  121. mirascope/api/_generated/core/file.py +0 -67
  122. mirascope/api/_generated/core/force_multipart.py +0 -16
  123. mirascope/api/_generated/core/http_client.py +0 -543
  124. mirascope/api/_generated/core/http_response.py +0 -55
  125. mirascope/api/_generated/core/jsonable_encoder.py +0 -100
  126. mirascope/api/_generated/core/pydantic_utilities.py +0 -255
  127. mirascope/api/_generated/core/query_encoder.py +0 -58
  128. mirascope/api/_generated/core/remove_none_from_dict.py +0 -11
  129. mirascope/api/_generated/core/request_options.py +0 -35
  130. mirascope/api/_generated/core/serialization.py +0 -276
  131. mirascope/api/_generated/docs/__init__.py +0 -4
  132. mirascope/api/_generated/docs/client.py +0 -91
  133. mirascope/api/_generated/docs/raw_client.py +0 -178
  134. mirascope/api/_generated/environment.py +0 -9
  135. mirascope/api/_generated/environments/__init__.py +0 -23
  136. mirascope/api/_generated/environments/client.py +0 -649
  137. mirascope/api/_generated/environments/raw_client.py +0 -1567
  138. mirascope/api/_generated/environments/types/__init__.py +0 -25
  139. mirascope/api/_generated/environments/types/environments_create_response.py +0 -24
  140. mirascope/api/_generated/environments/types/environments_get_analytics_response.py +0 -60
  141. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_functions_item.py +0 -24
  142. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_models_item.py +0 -22
  143. mirascope/api/_generated/environments/types/environments_get_response.py +0 -24
  144. mirascope/api/_generated/environments/types/environments_list_response_item.py +0 -24
  145. mirascope/api/_generated/environments/types/environments_update_response.py +0 -24
  146. mirascope/api/_generated/errors/__init__.py +0 -25
  147. mirascope/api/_generated/errors/bad_request_error.py +0 -14
  148. mirascope/api/_generated/errors/conflict_error.py +0 -14
  149. mirascope/api/_generated/errors/forbidden_error.py +0 -11
  150. mirascope/api/_generated/errors/internal_server_error.py +0 -10
  151. mirascope/api/_generated/errors/not_found_error.py +0 -11
  152. mirascope/api/_generated/errors/payment_required_error.py +0 -15
  153. mirascope/api/_generated/errors/service_unavailable_error.py +0 -14
  154. mirascope/api/_generated/errors/too_many_requests_error.py +0 -15
  155. mirascope/api/_generated/errors/unauthorized_error.py +0 -11
  156. mirascope/api/_generated/functions/__init__.py +0 -39
  157. mirascope/api/_generated/functions/client.py +0 -647
  158. mirascope/api/_generated/functions/raw_client.py +0 -1890
  159. mirascope/api/_generated/functions/types/__init__.py +0 -53
  160. mirascope/api/_generated/functions/types/functions_create_request_dependencies_value.py +0 -20
  161. mirascope/api/_generated/functions/types/functions_create_response.py +0 -37
  162. mirascope/api/_generated/functions/types/functions_create_response_dependencies_value.py +0 -20
  163. mirascope/api/_generated/functions/types/functions_find_by_hash_response.py +0 -39
  164. mirascope/api/_generated/functions/types/functions_find_by_hash_response_dependencies_value.py +0 -20
  165. mirascope/api/_generated/functions/types/functions_get_by_env_response.py +0 -53
  166. mirascope/api/_generated/functions/types/functions_get_by_env_response_dependencies_value.py +0 -22
  167. mirascope/api/_generated/functions/types/functions_get_response.py +0 -37
  168. mirascope/api/_generated/functions/types/functions_get_response_dependencies_value.py +0 -20
  169. mirascope/api/_generated/functions/types/functions_list_by_env_response.py +0 -25
  170. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item.py +0 -56
  171. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item_dependencies_value.py +0 -22
  172. mirascope/api/_generated/functions/types/functions_list_response.py +0 -21
  173. mirascope/api/_generated/functions/types/functions_list_response_functions_item.py +0 -41
  174. mirascope/api/_generated/functions/types/functions_list_response_functions_item_dependencies_value.py +0 -20
  175. mirascope/api/_generated/health/__init__.py +0 -7
  176. mirascope/api/_generated/health/client.py +0 -92
  177. mirascope/api/_generated/health/raw_client.py +0 -175
  178. mirascope/api/_generated/health/types/__init__.py +0 -8
  179. mirascope/api/_generated/health/types/health_check_response.py +0 -22
  180. mirascope/api/_generated/health/types/health_check_response_status.py +0 -5
  181. mirascope/api/_generated/organization_invitations/__init__.py +0 -33
  182. mirascope/api/_generated/organization_invitations/client.py +0 -546
  183. mirascope/api/_generated/organization_invitations/raw_client.py +0 -1519
  184. mirascope/api/_generated/organization_invitations/types/__init__.py +0 -53
  185. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response.py +0 -34
  186. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response_role.py +0 -7
  187. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_request_role.py +0 -7
  188. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response.py +0 -48
  189. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_role.py +0 -7
  190. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_status.py +0 -7
  191. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response.py +0 -48
  192. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_role.py +0 -7
  193. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_status.py +0 -7
  194. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item.py +0 -48
  195. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_role.py +0 -7
  196. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_status.py +0 -7
  197. mirascope/api/_generated/organization_memberships/__init__.py +0 -19
  198. mirascope/api/_generated/organization_memberships/client.py +0 -302
  199. mirascope/api/_generated/organization_memberships/raw_client.py +0 -736
  200. mirascope/api/_generated/organization_memberships/types/__init__.py +0 -27
  201. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item.py +0 -33
  202. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item_role.py +0 -7
  203. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_request_role.py +0 -7
  204. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response.py +0 -31
  205. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response_role.py +0 -7
  206. mirascope/api/_generated/organizations/__init__.py +0 -51
  207. mirascope/api/_generated/organizations/client.py +0 -869
  208. mirascope/api/_generated/organizations/raw_client.py +0 -2593
  209. mirascope/api/_generated/organizations/types/__init__.py +0 -71
  210. mirascope/api/_generated/organizations/types/organizations_create_payment_intent_response.py +0 -24
  211. mirascope/api/_generated/organizations/types/organizations_create_response.py +0 -26
  212. mirascope/api/_generated/organizations/types/organizations_create_response_role.py +0 -5
  213. mirascope/api/_generated/organizations/types/organizations_get_response.py +0 -26
  214. mirascope/api/_generated/organizations/types/organizations_get_response_role.py +0 -5
  215. mirascope/api/_generated/organizations/types/organizations_list_response_item.py +0 -26
  216. mirascope/api/_generated/organizations/types/organizations_list_response_item_role.py +0 -5
  217. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_request_target_plan.py +0 -7
  218. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response.py +0 -47
  219. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item.py +0 -33
  220. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item_resource.py +0 -7
  221. mirascope/api/_generated/organizations/types/organizations_router_balance_response.py +0 -24
  222. mirascope/api/_generated/organizations/types/organizations_subscription_response.py +0 -53
  223. mirascope/api/_generated/organizations/types/organizations_subscription_response_current_plan.py +0 -7
  224. mirascope/api/_generated/organizations/types/organizations_subscription_response_payment_method.py +0 -26
  225. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change.py +0 -34
  226. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change_target_plan.py +0 -7
  227. mirascope/api/_generated/organizations/types/organizations_update_response.py +0 -26
  228. mirascope/api/_generated/organizations/types/organizations_update_response_role.py +0 -5
  229. mirascope/api/_generated/organizations/types/organizations_update_subscription_request_target_plan.py +0 -7
  230. mirascope/api/_generated/organizations/types/organizations_update_subscription_response.py +0 -35
  231. mirascope/api/_generated/project_memberships/__init__.py +0 -25
  232. mirascope/api/_generated/project_memberships/client.py +0 -437
  233. mirascope/api/_generated/project_memberships/raw_client.py +0 -1039
  234. mirascope/api/_generated/project_memberships/types/__init__.py +0 -29
  235. mirascope/api/_generated/project_memberships/types/project_memberships_create_request_role.py +0 -7
  236. mirascope/api/_generated/project_memberships/types/project_memberships_create_response.py +0 -35
  237. mirascope/api/_generated/project_memberships/types/project_memberships_create_response_role.py +0 -7
  238. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item.py +0 -33
  239. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item_role.py +0 -7
  240. mirascope/api/_generated/project_memberships/types/project_memberships_update_request_role.py +0 -7
  241. mirascope/api/_generated/project_memberships/types/project_memberships_update_response.py +0 -35
  242. mirascope/api/_generated/project_memberships/types/project_memberships_update_response_role.py +0 -7
  243. mirascope/api/_generated/projects/__init__.py +0 -7
  244. mirascope/api/_generated/projects/client.py +0 -428
  245. mirascope/api/_generated/projects/raw_client.py +0 -1302
  246. mirascope/api/_generated/projects/types/__init__.py +0 -10
  247. mirascope/api/_generated/projects/types/projects_create_response.py +0 -25
  248. mirascope/api/_generated/projects/types/projects_get_response.py +0 -25
  249. mirascope/api/_generated/projects/types/projects_list_response_item.py +0 -25
  250. mirascope/api/_generated/projects/types/projects_update_response.py +0 -25
  251. mirascope/api/_generated/reference.md +0 -4915
  252. mirascope/api/_generated/tags/__init__.py +0 -19
  253. mirascope/api/_generated/tags/client.py +0 -504
  254. mirascope/api/_generated/tags/raw_client.py +0 -1288
  255. mirascope/api/_generated/tags/types/__init__.py +0 -17
  256. mirascope/api/_generated/tags/types/tags_create_response.py +0 -41
  257. mirascope/api/_generated/tags/types/tags_get_response.py +0 -41
  258. mirascope/api/_generated/tags/types/tags_list_response.py +0 -23
  259. mirascope/api/_generated/tags/types/tags_list_response_tags_item.py +0 -41
  260. mirascope/api/_generated/tags/types/tags_update_response.py +0 -41
  261. mirascope/api/_generated/token_cost/__init__.py +0 -7
  262. mirascope/api/_generated/token_cost/client.py +0 -160
  263. mirascope/api/_generated/token_cost/raw_client.py +0 -264
  264. mirascope/api/_generated/token_cost/types/__init__.py +0 -8
  265. mirascope/api/_generated/token_cost/types/token_cost_calculate_request_usage.py +0 -54
  266. mirascope/api/_generated/token_cost/types/token_cost_calculate_response.py +0 -52
  267. mirascope/api/_generated/traces/__init__.py +0 -97
  268. mirascope/api/_generated/traces/client.py +0 -1103
  269. mirascope/api/_generated/traces/raw_client.py +0 -2322
  270. mirascope/api/_generated/traces/types/__init__.py +0 -155
  271. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item.py +0 -29
  272. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource.py +0 -27
  273. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item.py +0 -23
  274. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value.py +0 -38
  275. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_array_value.py +0 -19
  276. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value.py +0 -22
  277. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value_values_item.py +0 -20
  278. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item.py +0 -29
  279. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope.py +0 -31
  280. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item.py +0 -23
  281. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value.py +0 -38
  282. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_array_value.py +0 -19
  283. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value.py +0 -22
  284. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value_values_item.py +0 -22
  285. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item.py +0 -48
  286. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item.py +0 -23
  287. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value.py +0 -38
  288. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_array_value.py +0 -19
  289. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value.py +0 -24
  290. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value_values_item.py +0 -22
  291. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_status.py +0 -20
  292. mirascope/api/_generated/traces/types/traces_create_response.py +0 -24
  293. mirascope/api/_generated/traces/types/traces_create_response_partial_success.py +0 -22
  294. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response.py +0 -60
  295. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_functions_item.py +0 -24
  296. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_models_item.py +0 -22
  297. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response.py +0 -33
  298. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response_spans_item.py +0 -88
  299. mirascope/api/_generated/traces/types/traces_get_trace_detail_response.py +0 -33
  300. mirascope/api/_generated/traces/types/traces_get_trace_detail_response_spans_item.py +0 -88
  301. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response.py +0 -25
  302. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response_traces_item.py +0 -44
  303. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item.py +0 -26
  304. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item_operator.py +0 -7
  305. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_by.py +0 -7
  306. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_order.py +0 -7
  307. mirascope/api/_generated/traces/types/traces_search_by_env_response.py +0 -26
  308. mirascope/api/_generated/traces/types/traces_search_by_env_response_spans_item.py +0 -50
  309. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item.py +0 -26
  310. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item_operator.py +0 -7
  311. mirascope/api/_generated/traces/types/traces_search_request_sort_by.py +0 -7
  312. mirascope/api/_generated/traces/types/traces_search_request_sort_order.py +0 -5
  313. mirascope/api/_generated/traces/types/traces_search_response.py +0 -26
  314. mirascope/api/_generated/traces/types/traces_search_response_spans_item.py +0 -50
  315. mirascope/api/_generated/types/__init__.py +0 -85
  316. mirascope/api/_generated/types/already_exists_error.py +0 -22
  317. mirascope/api/_generated/types/already_exists_error_tag.py +0 -5
  318. mirascope/api/_generated/types/bad_request_error_body.py +0 -50
  319. mirascope/api/_generated/types/click_house_error.py +0 -22
  320. mirascope/api/_generated/types/database_error.py +0 -22
  321. mirascope/api/_generated/types/database_error_tag.py +0 -5
  322. mirascope/api/_generated/types/date.py +0 -3
  323. mirascope/api/_generated/types/http_api_decode_error.py +0 -27
  324. mirascope/api/_generated/types/http_api_decode_error_tag.py +0 -5
  325. mirascope/api/_generated/types/immutable_resource_error.py +0 -22
  326. mirascope/api/_generated/types/internal_server_error_body.py +0 -49
  327. mirascope/api/_generated/types/issue.py +0 -38
  328. mirascope/api/_generated/types/issue_tag.py +0 -10
  329. mirascope/api/_generated/types/not_found_error_body.py +0 -22
  330. mirascope/api/_generated/types/not_found_error_tag.py +0 -5
  331. mirascope/api/_generated/types/number_from_string.py +0 -3
  332. mirascope/api/_generated/types/permission_denied_error.py +0 -22
  333. mirascope/api/_generated/types/permission_denied_error_tag.py +0 -5
  334. mirascope/api/_generated/types/plan_limit_exceeded_error.py +0 -32
  335. mirascope/api/_generated/types/plan_limit_exceeded_error_tag.py +0 -7
  336. mirascope/api/_generated/types/pricing_unavailable_error.py +0 -23
  337. mirascope/api/_generated/types/property_key.py +0 -7
  338. mirascope/api/_generated/types/property_key_key.py +0 -25
  339. mirascope/api/_generated/types/property_key_key_tag.py +0 -5
  340. mirascope/api/_generated/types/rate_limit_error.py +0 -31
  341. mirascope/api/_generated/types/rate_limit_error_tag.py +0 -5
  342. mirascope/api/_generated/types/service_unavailable_error_body.py +0 -24
  343. mirascope/api/_generated/types/service_unavailable_error_tag.py +0 -7
  344. mirascope/api/_generated/types/stripe_error.py +0 -20
  345. mirascope/api/_generated/types/subscription_past_due_error.py +0 -31
  346. mirascope/api/_generated/types/subscription_past_due_error_tag.py +0 -7
  347. mirascope/api/_generated/types/unauthorized_error_body.py +0 -21
  348. mirascope/api/_generated/types/unauthorized_error_tag.py +0 -5
  349. mirascope/api/client.py +0 -255
  350. mirascope/api/settings.py +0 -99
  351. mirascope/llm/formatting/output_parser.py +0 -178
  352. mirascope/llm/formatting/primitives.py +0 -192
  353. mirascope/llm/mcp/mcp_client.py +0 -130
  354. mirascope/llm/messages/_utils.py +0 -34
  355. mirascope/llm/models/thinking_config.py +0 -61
  356. mirascope/llm/prompts/prompts.py +0 -487
  357. mirascope/llm/providers/__init__.py +0 -62
  358. mirascope/llm/providers/anthropic/__init__.py +0 -11
  359. mirascope/llm/providers/anthropic/_utils/__init__.py +0 -27
  360. mirascope/llm/providers/anthropic/_utils/beta_decode.py +0 -282
  361. mirascope/llm/providers/anthropic/_utils/beta_encode.py +0 -266
  362. mirascope/llm/providers/anthropic/_utils/encode.py +0 -418
  363. mirascope/llm/providers/anthropic/_utils/errors.py +0 -46
  364. mirascope/llm/providers/anthropic/beta_provider.py +0 -374
  365. mirascope/llm/providers/anthropic/model_id.py +0 -23
  366. mirascope/llm/providers/anthropic/model_info.py +0 -87
  367. mirascope/llm/providers/anthropic/provider.py +0 -479
  368. mirascope/llm/providers/google/__init__.py +0 -6
  369. mirascope/llm/providers/google/_utils/errors.py +0 -50
  370. mirascope/llm/providers/google/model_id.py +0 -22
  371. mirascope/llm/providers/google/model_info.py +0 -63
  372. mirascope/llm/providers/google/provider.py +0 -492
  373. mirascope/llm/providers/mirascope/__init__.py +0 -5
  374. mirascope/llm/providers/mirascope/_utils.py +0 -73
  375. mirascope/llm/providers/mirascope/provider.py +0 -349
  376. mirascope/llm/providers/mlx/__init__.py +0 -9
  377. mirascope/llm/providers/mlx/_utils.py +0 -141
  378. mirascope/llm/providers/mlx/encoding/__init__.py +0 -8
  379. mirascope/llm/providers/mlx/encoding/base.py +0 -72
  380. mirascope/llm/providers/mlx/encoding/transformers.py +0 -150
  381. mirascope/llm/providers/mlx/mlx.py +0 -254
  382. mirascope/llm/providers/mlx/model_id.py +0 -17
  383. mirascope/llm/providers/mlx/provider.py +0 -452
  384. mirascope/llm/providers/model_id.py +0 -16
  385. mirascope/llm/providers/ollama/__init__.py +0 -7
  386. mirascope/llm/providers/ollama/provider.py +0 -71
  387. mirascope/llm/providers/openai/__init__.py +0 -15
  388. mirascope/llm/providers/openai/_utils/__init__.py +0 -5
  389. mirascope/llm/providers/openai/_utils/errors.py +0 -46
  390. mirascope/llm/providers/openai/completions/__init__.py +0 -7
  391. mirascope/llm/providers/openai/completions/base_provider.py +0 -542
  392. mirascope/llm/providers/openai/completions/provider.py +0 -22
  393. mirascope/llm/providers/openai/model_id.py +0 -31
  394. mirascope/llm/providers/openai/model_info.py +0 -303
  395. mirascope/llm/providers/openai/provider.py +0 -441
  396. mirascope/llm/providers/openai/responses/__init__.py +0 -5
  397. mirascope/llm/providers/openai/responses/provider.py +0 -513
  398. mirascope/llm/providers/provider_id.py +0 -24
  399. mirascope/llm/providers/provider_registry.py +0 -299
  400. mirascope/llm/providers/together/__init__.py +0 -7
  401. mirascope/llm/providers/together/provider.py +0 -40
  402. mirascope/llm/responses/usage.py +0 -95
  403. mirascope/ops/__init__.py +0 -111
  404. mirascope/ops/_internal/__init__.py +0 -5
  405. mirascope/ops/_internal/closure.py +0 -1169
  406. mirascope/ops/_internal/configuration.py +0 -177
  407. mirascope/ops/_internal/context.py +0 -76
  408. mirascope/ops/_internal/exporters/__init__.py +0 -26
  409. mirascope/ops/_internal/exporters/exporters.py +0 -395
  410. mirascope/ops/_internal/exporters/processors.py +0 -104
  411. mirascope/ops/_internal/exporters/types.py +0 -165
  412. mirascope/ops/_internal/exporters/utils.py +0 -29
  413. mirascope/ops/_internal/instrumentation/__init__.py +0 -8
  414. mirascope/ops/_internal/instrumentation/llm/__init__.py +0 -8
  415. mirascope/ops/_internal/instrumentation/llm/common.py +0 -530
  416. mirascope/ops/_internal/instrumentation/llm/cost.py +0 -190
  417. mirascope/ops/_internal/instrumentation/llm/encode.py +0 -238
  418. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/__init__.py +0 -38
  419. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_input_messages.py +0 -31
  420. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_output_messages.py +0 -38
  421. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_system_instructions.py +0 -18
  422. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/shared.py +0 -100
  423. mirascope/ops/_internal/instrumentation/llm/llm.py +0 -161
  424. mirascope/ops/_internal/instrumentation/llm/model.py +0 -1798
  425. mirascope/ops/_internal/instrumentation/llm/response.py +0 -521
  426. mirascope/ops/_internal/instrumentation/llm/serialize.py +0 -300
  427. mirascope/ops/_internal/propagation.py +0 -198
  428. mirascope/ops/_internal/protocols.py +0 -133
  429. mirascope/ops/_internal/session.py +0 -139
  430. mirascope/ops/_internal/spans.py +0 -232
  431. mirascope/ops/_internal/traced_calls.py +0 -375
  432. mirascope/ops/_internal/traced_functions.py +0 -523
  433. mirascope/ops/_internal/tracing.py +0 -353
  434. mirascope/ops/_internal/types.py +0 -13
  435. mirascope/ops/_internal/utils.py +0 -123
  436. mirascope/ops/_internal/versioned_calls.py +0 -512
  437. mirascope/ops/_internal/versioned_functions.py +0 -357
  438. mirascope/ops/_internal/versioning.py +0 -303
  439. mirascope/ops/exceptions.py +0 -21
  440. mirascope-2.0.0.dist-info/RECORD +0 -423
  441. /mirascope/llm/{providers → clients}/base/kwargs.py +0 -0
  442. /mirascope/llm/{providers → clients}/google/message.py +0 -0
@@ -4,22 +4,20 @@ from __future__ import annotations
4
4
 
5
5
  import json
6
6
  from collections.abc import Awaitable
7
- from typing import Any, Generic, cast
8
- from typing_extensions import TypeVar
7
+ from typing import Any, Generic, TypeVar, cast
9
8
 
10
9
  from ..content import ToolCall, ToolOutput
11
10
  from ..context import Context, DepsT
12
- from ..exceptions import ToolError, ToolExecutionError
13
11
  from ..types import AnyP, JsonableCovariantT
14
12
  from .protocols import (
15
13
  AsyncContextToolFn,
16
- AsyncJsonKwargsCallable,
17
- AsyncKwargsCallable,
18
14
  AsyncToolFn,
19
- ContextKwargsCallable,
20
15
  ContextToolFn,
21
- KwargsCallable,
22
16
  ToolFn,
17
+ _AsyncJsonKwargsCallable,
18
+ _AsyncKwargsCallable,
19
+ _ContextKwargsCallable,
20
+ _KwargsCallable,
23
21
  )
24
22
  from .tool_schema import ToolSchema
25
23
 
@@ -41,28 +39,10 @@ class Tool(
41
39
  This class is not instantiated directly but created by the `@tool()` decorator.
42
40
  """
43
41
 
44
- @classmethod
45
- def from_function( # pyright: ignore[reportIncompatibleMethodOverride]
46
- cls, fn: ToolFn[AnyP, JsonableCovariantT], *, strict: bool | None = None
47
- ) -> Tool[AnyP, JsonableCovariantT]:
48
- """Create a `Tool` by inspecting a function and its docstring.
49
-
50
- Args:
51
- fn: The function to extract schema from
52
- strict: Whether the tool should use strict mode when supported.
53
- If None, uses provider's default (usually as strict as possible).
54
-
55
- Returns:
56
- a `Tool` representing the function
57
- """
58
- schema = ToolSchema.from_function(fn, strict=strict, is_context_tool=False)
59
- return cls(
60
- fn=cast(ToolFn[AnyP, JsonableCovariantT], schema.fn),
61
- name=schema.name,
62
- description=schema.description,
63
- parameters=schema.parameters,
64
- strict=schema.strict,
65
- )
42
+ def __init__(
43
+ self, fn: ToolFn[AnyP, JsonableCovariantT], *, strict: bool = False
44
+ ) -> None:
45
+ super().__init__(fn, strict=strict, is_context_tool=False)
66
46
 
67
47
  def __call__(self, *args: AnyP.args, **kwargs: AnyP.kwargs) -> JsonableCovariantT:
68
48
  """Call the underlying function directly."""
@@ -70,15 +50,10 @@ class Tool(
70
50
 
71
51
  def execute(self, tool_call: ToolCall) -> ToolOutput[JsonableCovariantT]:
72
52
  """Execute the tool using an LLM-provided `ToolCall`."""
73
- kwargs_callable = cast(KwargsCallable[JsonableCovariantT], self.fn)
74
- error: ToolError | None = None
75
- try:
76
- kwargs_from_json = json.loads(tool_call.args)
77
- result = kwargs_callable(**kwargs_from_json)
78
- except Exception as e:
79
- result = str(e)
80
- error = ToolExecutionError(e)
81
- return ToolOutput(id=tool_call.id, result=result, error=error, name=self.name)
53
+ kwargs_from_json = json.loads(tool_call.args)
54
+ kwargs_callable = cast(_KwargsCallable[JsonableCovariantT], self.fn)
55
+ result = kwargs_callable(**kwargs_from_json)
56
+ return ToolOutput(id=tool_call.id, value=result, name=self.name)
82
57
 
83
58
 
84
59
  class AsyncTool(
@@ -93,28 +68,10 @@ class AsyncTool(
93
68
  This class is not instantiated directly but created by the `@tool()` decorator.
94
69
  """
95
70
 
96
- @classmethod
97
- def from_function( # pyright: ignore[reportIncompatibleMethodOverride]
98
- cls, fn: AsyncToolFn[AnyP, JsonableCovariantT], *, strict: bool | None = None
99
- ) -> AsyncTool[AnyP, JsonableCovariantT]:
100
- """Create an `AsyncTool` by inspecting a function and its docstring.
101
-
102
- Args:
103
- fn: The function to extract schema from
104
- strict: Whether the tool should use strict mode when supported.
105
- If None, uses provider's default (usually as strict as possible).
106
-
107
- Returns:
108
- an `AsyncTool` representing the function
109
- """
110
- schema = ToolSchema.from_function(fn, strict=strict, is_context_tool=False)
111
- return cls(
112
- fn=cast(AsyncToolFn[AnyP, JsonableCovariantT], schema.fn),
113
- name=schema.name,
114
- description=schema.description,
115
- parameters=schema.parameters,
116
- strict=schema.strict,
117
- )
71
+ def __init__(
72
+ self, fn: AsyncToolFn[AnyP, JsonableCovariantT], *, strict: bool = False
73
+ ) -> None:
74
+ super().__init__(fn, strict=strict, is_context_tool=False)
118
75
 
119
76
  def __call__(
120
77
  self, *args: AnyP.args, **kwargs: AnyP.kwargs
@@ -124,20 +81,15 @@ class AsyncTool(
124
81
 
125
82
  async def execute(self, tool_call: ToolCall) -> ToolOutput[JsonableCovariantT]:
126
83
  """Execute the async tool using an LLM-provided `ToolCall`."""
127
- kwargs_callable = cast(AsyncKwargsCallable[JsonableCovariantT], self.fn)
128
- error: ToolError | None = None
129
- try:
130
- kwargs_from_json = json.loads(tool_call.args)
131
- result = await kwargs_callable(**kwargs_from_json)
132
- except Exception as e:
133
- result = str(e)
134
- error = ToolExecutionError(e)
135
- return ToolOutput(id=tool_call.id, result=result, error=error, name=self.name)
84
+ kwargs_from_json = json.loads(tool_call.args)
85
+ kwargs_callable = cast(_AsyncKwargsCallable[JsonableCovariantT], self.fn)
86
+ result = await kwargs_callable(**kwargs_from_json)
87
+ return ToolOutput(id=tool_call.id, value=result, name=self.name)
136
88
 
137
89
 
138
90
  class ContextTool(
139
91
  ToolSchema[ContextToolFn[DepsT, AnyP, JsonableCovariantT]],
140
- Generic[DepsT, JsonableCovariantT, AnyP],
92
+ Generic[DepsT, AnyP, JsonableCovariantT],
141
93
  ):
142
94
  """Protocol defining a tool that can be used by LLMs.
143
95
 
@@ -147,31 +99,13 @@ class ContextTool(
147
99
  This class is not instantiated directly but created by the `@tool()` decorator.
148
100
  """
149
101
 
150
- @classmethod
151
- def from_function( # pyright: ignore[reportIncompatibleMethodOverride]
152
- cls,
102
+ def __init__(
103
+ self,
153
104
  fn: ContextToolFn[DepsT, AnyP, JsonableCovariantT],
154
105
  *,
155
- strict: bool | None = None,
156
- ) -> ContextTool[DepsT, JsonableCovariantT, AnyP]:
157
- """Create a `ContextTool` by inspecting a function and its docstring.
158
-
159
- Args:
160
- fn: The function to extract schema from
161
- strict: Whether the tool should use strict mode when supported.
162
- If None, uses provider's default (usually as strict as possible).
163
-
164
- Returns:
165
- a `ContextTool` representing the function
166
- """
167
- schema = ToolSchema.from_function(fn, strict=strict, is_context_tool=True)
168
- return cls(
169
- fn=cast(ContextToolFn[DepsT, AnyP, JsonableCovariantT], schema.fn),
170
- name=schema.name,
171
- description=schema.description,
172
- parameters=schema.parameters,
173
- strict=schema.strict,
174
- )
106
+ strict: bool = False,
107
+ ) -> None:
108
+ super().__init__(fn, strict=strict, is_context_tool=True)
175
109
 
176
110
  def __call__(
177
111
  self,
@@ -186,22 +120,17 @@ class ContextTool(
186
120
  self, ctx: Context[DepsT], tool_call: ToolCall
187
121
  ) -> ToolOutput[JsonableCovariantT]:
188
122
  """Execute the context tool using an LLM-provided `ToolCall`."""
123
+ kwargs_from_json = json.loads(tool_call.args)
189
124
  kwargs_callable = cast(
190
- ContextKwargsCallable[DepsT, JsonableCovariantT], self.fn
125
+ _ContextKwargsCallable[DepsT, JsonableCovariantT], self.fn
191
126
  )
192
- error: ToolError | None = None
193
- try:
194
- kwargs_from_json = json.loads(tool_call.args)
195
- result = kwargs_callable(ctx, **kwargs_from_json)
196
- except Exception as e:
197
- result = str(e)
198
- error = ToolExecutionError(e)
199
- return ToolOutput(id=tool_call.id, result=result, error=error, name=self.name)
127
+ result = kwargs_callable(ctx, **kwargs_from_json)
128
+ return ToolOutput(id=tool_call.id, value=result, name=self.name)
200
129
 
201
130
 
202
131
  class AsyncContextTool(
203
132
  ToolSchema[AsyncContextToolFn[DepsT, AnyP, JsonableCovariantT]],
204
- Generic[DepsT, JsonableCovariantT, AnyP],
133
+ Generic[DepsT, AnyP, JsonableCovariantT],
205
134
  ):
206
135
  """Protocol defining an async tool that can be used by LLMs with context.
207
136
 
@@ -211,31 +140,13 @@ class AsyncContextTool(
211
140
  This class is not instantiated directly but created by the `@tool()` decorator.
212
141
  """
213
142
 
214
- @classmethod
215
- def from_function( # pyright: ignore[reportIncompatibleMethodOverride]
216
- cls,
143
+ def __init__(
144
+ self,
217
145
  fn: AsyncContextToolFn[DepsT, AnyP, JsonableCovariantT],
218
146
  *,
219
- strict: bool | None = None,
220
- ) -> AsyncContextTool[DepsT, JsonableCovariantT, AnyP]:
221
- """Create an `AsyncContextTool` by inspecting a function and its docstring.
222
-
223
- Args:
224
- fn: The function to extract schema from
225
- strict: Whether the tool should use strict mode when supported.
226
- If None, uses provider's default (usually as strict as possible).
227
-
228
- Returns:
229
- an `AsyncContextTool` representing the function
230
- """
231
- schema = ToolSchema.from_function(fn, strict=strict, is_context_tool=True)
232
- return cls(
233
- fn=cast(AsyncContextToolFn[DepsT, AnyP, JsonableCovariantT], schema.fn),
234
- name=schema.name,
235
- description=schema.description,
236
- parameters=schema.parameters,
237
- strict=schema.strict,
238
- )
147
+ strict: bool = False,
148
+ ) -> None:
149
+ super().__init__(fn, strict=strict, is_context_tool=True)
239
150
 
240
151
  def __call__(
241
152
  self,
@@ -250,14 +161,9 @@ class AsyncContextTool(
250
161
  self, ctx: Context[DepsT], tool_call: ToolCall
251
162
  ) -> ToolOutput[JsonableCovariantT]:
252
163
  """Execute the async context tool using an LLM-provided `ToolCall`."""
164
+ kwargs_from_json = json.loads(tool_call.args)
253
165
  kwargs_callable = cast(
254
- AsyncJsonKwargsCallable[DepsT, JsonableCovariantT], self.fn
166
+ _AsyncJsonKwargsCallable[DepsT, JsonableCovariantT], self.fn
255
167
  )
256
- error: ToolError | None = None
257
- try:
258
- kwargs_from_json = json.loads(tool_call.args)
259
- result = await kwargs_callable(ctx, **kwargs_from_json)
260
- except Exception as e:
261
- result = str(e)
262
- error = ToolExecutionError(e)
263
- return ToolOutput(id=tool_call.id, result=result, error=error, name=self.name)
168
+ result = await kwargs_callable(ctx, **kwargs_from_json)
169
+ return ToolOutput(id=tool_call.id, value=result, name=self.name)
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mirascope
3
- Version: 2.0.0
4
- Summary: Every frontier LLM. One unified interface.
3
+ Version: 2.0.0a0
4
+ Summary: LLM abstractions that aren't obstructions
5
5
  Project-URL: Homepage, https://mirascope.com
6
6
  Project-URL: Documentation, https://mirascope.com/docs/mirascope/v2
7
7
  Project-URL: Repository, https://github.com/Mirascope/mirascope/tree/v2
@@ -11,7 +11,7 @@ Author-email: William Bakst <william@mirascope.com>, Dandelion Mané <dandelion@
11
11
  Maintainer-email: William Bakst <william@mirascope.com>, Dandelion Mané <dandelion@mirascope.com>
12
12
  License: MIT License
13
13
 
14
- Copyright (c) 2026 Mirascope, Inc.
14
+ Copyright (c) 2023 Mirascope, Inc.
15
15
 
16
16
  Permission is hereby granted, free of charge, to any person obtaining a copy
17
17
  of this software and associated documentation files (the "Software"), to deal
@@ -31,8 +31,8 @@ License: MIT License
31
31
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32
32
  SOFTWARE.
33
33
  License-File: LICENSE
34
- Keywords: agents,anthropic,artificial intelligence,context engineering,developer tools,gemini,llm,llm tools,openai,prompt engineering
35
- Classifier: Development Status :: 5 - Production/Stable
34
+ Keywords: agents,artificial intelligence,developer tools,llm,llm tools,prompt engineering
35
+ Classifier: Development Status :: 3 - Alpha
36
36
  Classifier: Intended Audience :: Developers
37
37
  Classifier: License :: OSI Approved :: MIT License
38
38
  Classifier: Programming Language :: Python :: 3
@@ -40,61 +40,23 @@ Classifier: Programming Language :: Python :: 3.10
40
40
  Classifier: Programming Language :: Python :: 3.11
41
41
  Classifier: Programming Language :: Python :: 3.12
42
42
  Classifier: Programming Language :: Python :: 3.13
43
- Classifier: Programming Language :: Python :: 3.14
44
43
  Classifier: Topic :: File Formats :: JSON
45
44
  Classifier: Topic :: File Formats :: JSON :: JSON Schema
46
45
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
47
46
  Classifier: Topic :: Software Development :: Libraries
48
47
  Requires-Python: >=3.10
49
48
  Requires-Dist: docstring-parser>=0.17.0
50
- Requires-Dist: httpx>=0.27.0
51
- Requires-Dist: jiter>=0.7.0
52
- Requires-Dist: pydantic>=2.0.0
53
49
  Requires-Dist: typing-extensions>=4.10.0
54
- Provides-Extra: all
55
- Requires-Dist: anthropic<1.0,>=0.76.0; extra == 'all'
56
- Requires-Dist: google-genai<2,>=1.58.0; extra == 'all'
57
- Requires-Dist: libcst>=1.8.6; extra == 'all'
58
- Requires-Dist: mcp<2,>=1.25.0; extra == 'all'
59
- Requires-Dist: mlx-lm<1,>=0.28.4; extra == 'all'
60
- Requires-Dist: openai<3,>=2.15.0; extra == 'all'
61
- Requires-Dist: opentelemetry-api<2,>=1.38.0; extra == 'all'
62
- Requires-Dist: opentelemetry-exporter-otlp<2,>=1.38.0; extra == 'all'
63
- Requires-Dist: opentelemetry-instrumentation<1,>=0.59b0; extra == 'all'
64
- Requires-Dist: opentelemetry-propagator-b3<2,>=1.38.0; extra == 'all'
65
- Requires-Dist: opentelemetry-propagator-b3>=1.38.0; extra == 'all'
66
- Requires-Dist: opentelemetry-propagator-jaeger>=1.38.0; extra == 'all'
67
- Requires-Dist: opentelemetry-sdk<2,>=1.38.0; extra == 'all'
68
- Requires-Dist: orjson>=3.11.4; extra == 'all'
69
- Requires-Dist: packaging>=25.0; extra == 'all'
70
- Requires-Dist: pillow<11,>=10.4.0; extra == 'all'
71
- Requires-Dist: proto-plus>=1.24.0; extra == 'all'
72
- Requires-Dist: pydantic-settings>=2.12.0; extra == 'all'
73
50
  Provides-Extra: anthropic
74
- Requires-Dist: anthropic<1.0,>=0.76.0; extra == 'anthropic'
75
- Provides-Extra: api
76
- Requires-Dist: pydantic-settings>=2.12.0; extra == 'api'
51
+ Requires-Dist: anthropic<1.0,>=0.72.0; extra == 'anthropic'
77
52
  Provides-Extra: google
78
- Requires-Dist: google-genai<2,>=1.58.0; extra == 'google'
53
+ Requires-Dist: google-genai<2,>=1.48.0; extra == 'google'
79
54
  Requires-Dist: pillow<11,>=10.4.0; extra == 'google'
80
55
  Requires-Dist: proto-plus>=1.24.0; extra == 'google'
81
56
  Provides-Extra: mcp
82
- Requires-Dist: mcp<2,>=1.25.0; extra == 'mcp'
83
- Provides-Extra: mlx
84
- Requires-Dist: mlx-lm<1,>=0.28.4; extra == 'mlx'
57
+ Requires-Dist: mcp<2,>=1.0.0; extra == 'mcp'
85
58
  Provides-Extra: openai
86
- Requires-Dist: openai<3,>=2.15.0; extra == 'openai'
87
- Provides-Extra: ops
88
- Requires-Dist: libcst>=1.8.6; extra == 'ops'
89
- Requires-Dist: opentelemetry-api<2,>=1.38.0; extra == 'ops'
90
- Requires-Dist: opentelemetry-exporter-otlp<2,>=1.38.0; extra == 'ops'
91
- Requires-Dist: opentelemetry-instrumentation<1,>=0.59b0; extra == 'ops'
92
- Requires-Dist: opentelemetry-propagator-b3<2,>=1.38.0; extra == 'ops'
93
- Requires-Dist: opentelemetry-propagator-b3>=1.38.0; extra == 'ops'
94
- Requires-Dist: opentelemetry-propagator-jaeger>=1.38.0; extra == 'ops'
95
- Requires-Dist: opentelemetry-sdk<2,>=1.38.0; extra == 'ops'
96
- Requires-Dist: orjson>=3.11.4; extra == 'ops'
97
- Requires-Dist: packaging>=25.0; extra == 'ops'
59
+ Requires-Dist: openai<3,>=2.7.1; extra == 'openai'
98
60
  Description-Content-Type: text/markdown
99
61
 
100
62
  ## Mirascope v2 Python
@@ -120,54 +82,6 @@ This directory contains the Python implementation of Mirascope.
120
82
  uv run pytest
121
83
  ```
122
84
 
123
- ## `ops.span` and Session Tracing
124
-
125
- `mirascope.ops` provides tracing helpers to trace any Python function, not just
126
- `llm.Model` calls.
127
-
128
- 1. Install the OTEL extra and set up a tracer provider exactly as shown above.
129
- `ops.span` automatically reuses the active provider, so spans from manual
130
- instrumentation and GenAI instrumentation end up in the same trace tree.
131
- 2. Use `ops.session` to group related spans and attach metadata:
132
- ```python
133
- from mirascope import ops
134
-
135
- with ops.session(id="req-42", attributes={"team": "core"}):
136
- with ops.span("load-data") as span:
137
- span.set(stage="ingest")
138
- # expensive work here
139
- ```
140
- 3. The span exposes `span_id`/`trace_id`, logging helpers, and graceful no-op
141
- behavior when OTEL is not configured. When OTEL is active, session metadata is
142
- attached to every span, and additional tools like `ops.trace`/`ops.version`
143
- (planned) can build on the same context.
144
-
145
- ## `ops.trace` Decorator
146
-
147
- `@ops.trace` adds span instrumentation to any Python callable (including
148
- `llm.Model` helpers) so you can capture argument/return metadata alongside the
149
- GenAI spans emitted by `llm.instrument_opentelemetry`.
150
-
151
- ```python
152
- from mirascope import ops
153
-
154
- @ops.trace(tags=["ingest"])
155
- def normalize(record: dict[str, str]) -> dict[str, str]:
156
- return {k: v.strip() for k, v in record.items()}
157
-
158
- result = normalize({"foo": " bar "})
159
- wrapped = normalize.wrapped({"foo": " bar "})
160
- print(wrapped.span_id, wrapped.trace_id)
161
- ```
162
-
163
- - The decorator automatically handles sync/async functions and reuses `ops.span`
164
- serialization logic for arguments/results.
165
- - Combine with `ops.session` to tag spans with contextual metadata, and with
166
- `ops.instrument_opentelemetry` to obtain both model-level GenAI spans
167
- and method-level spans like `recommend_book.__call__`.
168
- - For now we focus on Mirascope-layer entry points (e.g., decorated functions or
169
- `llm.Model` wrappers) and do not auto-instrument underlying provider SDK calls.
170
-
171
85
  ## Testing
172
86
 
173
87
  ### VCR Cassettes
@@ -0,0 +1,101 @@
1
+ mirascope/__init__.py,sha256=wKvhFqB-FAf_Fxi1_pEenLRUK-QGMbhlsY5aPGc0lug,98
2
+ mirascope/graphs/__init__.py,sha256=fkZHjSt6DvJAX-V3OCnDO7B1zJx5gv1Qp2G6P32wI7I,1086
3
+ mirascope/graphs/finite_state_machine.py,sha256=9j8kwQ6Ne3o-auP0KVdoA0hzW2txfM1wH3GSSnbZOyg,23261
4
+ mirascope/llm/__init__.py,sha256=qHerzIANTngmc1aXg_ga9S7dEY7rRj83e5Z61ObAdN4,4420
5
+ mirascope/llm/exceptions.py,sha256=30yPPCIr8Uwibqpt2Y0cDMsimVlQubAmjqbeO5kVpSA,3090
6
+ mirascope/llm/agents/__init__.py,sha256=aG5ymnBfa4ZFLfGPZjdXybwjC3lrlkkeLjKfx2Zzr0Q,363
7
+ mirascope/llm/agents/agent.py,sha256=obACeIZuD8FIUaZL_NF0u5GNeaxRpbyNb9PNipyYIZE,2959
8
+ mirascope/llm/agents/agent_template.py,sha256=7zm5piQrmClHFr7zw0EOMfWp009EGDfnGAaTtrw0twY,1478
9
+ mirascope/llm/agents/decorator.py,sha256=IrVQMQNd9VGUnngjM-2LqVccZCwQMT9oXsYvf4MMyvI,5025
10
+ mirascope/llm/calls/__init__.py,sha256=rnQ29w8x_EAEecZhP2i6N6u_qE-TO3sBZGAztF3o2QQ,273
11
+ mirascope/llm/calls/base_call.py,sha256=ghD8__Uw-RpL-TWI1zShThWugXmZCiEA2tLsZ-XHU0I,1021
12
+ mirascope/llm/calls/calls.py,sha256=R2hEGVsOHkZlBKcp4CvfssXABoLiIj9aKu80qrx6Ta4,9867
13
+ mirascope/llm/calls/decorator.py,sha256=77JLc1xIotl7dWxzyz5xYeKIRu8ykMxZ40yj9MNd79c,7472
14
+ mirascope/llm/clients/__init__.py,sha256=L00p7Kfk1gu8hSLXz3dvn3y0ku0rG6vPxq2vxRoukJI,770
15
+ mirascope/llm/clients/providers.py,sha256=GwZldKYXGaTPbkbAbGlCYyl2-CuR1dnz4smZGblyfqc,5095
16
+ mirascope/llm/clients/anthropic/__init__.py,sha256=wSYwKLkASUQHEsIjvuMSQHIZ6mhdyOymmzb3clL8SlU,231
17
+ mirascope/llm/clients/anthropic/clients.py,sha256=8Z1Ol8V-JwCxefT2mQYUrfduliES2Yvk88hyM4GCNvc,27460
18
+ mirascope/llm/clients/anthropic/model_ids.py,sha256=0vp-nhDCYMw_3sKFD_tQO2FRlW8QzKiwXKBQ_lEv0yo,197
19
+ mirascope/llm/clients/anthropic/_utils/__init__.py,sha256=U2VNfEJCaqorAJBZDV7p3rFEp1fyk7vSitYFv_5G5Cs,232
20
+ mirascope/llm/clients/anthropic/_utils/decode.py,sha256=zD5__20USLa4YuTMeZo-4oi2-whckP85Ez_ch_Mross,8992
21
+ mirascope/llm/clients/anthropic/_utils/encode.py,sha256=Bul-WPrb7XJ7LW5gIsU2dm1Xvi5TG2lhiotvzZiNcL4,8760
22
+ mirascope/llm/clients/base/__init__.py,sha256=Am1Hbe7iNnVKjcR8PT52NqHgVwFnQaMojEHVrdGHAWo,278
23
+ mirascope/llm/clients/base/_utils.py,sha256=JyVXkbsHgOD_CnCNkq-aVdSmD4me0M40NPsdCt0pKwg,6880
24
+ mirascope/llm/clients/base/client.py,sha256=ffgxwMJ2vmbUB-KKzPwpgumzmGT2IhIr1yGqxYt9oBk,42258
25
+ mirascope/llm/clients/base/kwargs.py,sha256=pjaHVqtlmScUBqG8ZAllVaLoepdKE-KYl2eTqzOBXm0,406
26
+ mirascope/llm/clients/base/params.py,sha256=x2WLz0s5rMZ3u3GBGQmRlYGjecePtsLglHSJBLh35YE,3670
27
+ mirascope/llm/clients/google/__init__.py,sha256=nrUGqVqbUmhi1Y3MNfbmp5ItooNHEV2D3cUNhyeRH_U,197
28
+ mirascope/llm/clients/google/clients.py,sha256=rsWJV5kfwh93RSRE6x45wnBhnP122mLCCuOdy1cD2u4,28073
29
+ mirascope/llm/clients/google/message.py,sha256=ryNsMKPSyBSVXl_H0MQEaSiWC3FFybjxIUuORNSiKTk,179
30
+ mirascope/llm/clients/google/model_ids.py,sha256=zJe9IAX4DIO6JXeTksAx77nwtlz1k2aO0YcJHsNpRx4,338
31
+ mirascope/llm/clients/google/_utils/__init__.py,sha256=U2VNfEJCaqorAJBZDV7p3rFEp1fyk7vSitYFv_5G5Cs,232
32
+ mirascope/llm/clients/google/_utils/decode.py,sha256=z__aZLIL130nCVV5CdAJPTiaCSw61mCrItTHVDffkQQ,9007
33
+ mirascope/llm/clients/google/_utils/encode.py,sha256=XFaRCzMQlUW3sm949pc-rPTavDgxSIjrxOllJ8KgR3k,10482
34
+ mirascope/llm/clients/openai/__init__.py,sha256=LkD4Kkxc-dnpR_K5f539xSfqEaXE1vioDcW7suOJhJE,600
35
+ mirascope/llm/clients/openai/completions/__init__.py,sha256=mdDQfZ0WI0tOH4OUrbnNBIe1kyqdj3y0r4q3LIwr4Os,223
36
+ mirascope/llm/clients/openai/completions/clients.py,sha256=GjfNV1ewRi1ADgsP0t5cxPdQUWyN65gRSPzDJFMhApg,28086
37
+ mirascope/llm/clients/openai/completions/model_ids.py,sha256=bno8SND8YbzoQE3Tjh9dxYo04luDILD3ndzQvgL5pAg,243
38
+ mirascope/llm/clients/openai/completions/_utils/__init__.py,sha256=U2VNfEJCaqorAJBZDV7p3rFEp1fyk7vSitYFv_5G5Cs,232
39
+ mirascope/llm/clients/openai/completions/_utils/decode.py,sha256=yiXPQwL33YNVxIZAABohqSO3ElEtiShVSki8fPQWf0A,6539
40
+ mirascope/llm/clients/openai/completions/_utils/encode.py,sha256=q2jP8By9TUiv66-oJpWZddn709ZRIGkXniSPTxLR2Co,13227
41
+ mirascope/llm/clients/openai/completions/_utils/model_features.py,sha256=iIm0uxNNfYOJ4qn1wmZjNrkCXNJK5czOPmn5UVBIjz4,3397
42
+ mirascope/llm/clients/openai/responses/__init__.py,sha256=PofDWzyxz__hD1AaHn2hQkIPs7xxyiBcgDoCl39Tlq4,215
43
+ mirascope/llm/clients/openai/responses/clients.py,sha256=dMIdp-Ua_stFAtT99gDp89woUyLyWShO4aAz8G_2nog,27627
44
+ mirascope/llm/clients/openai/responses/model_ids.py,sha256=30OQ8wnIVp6A3I4NsTPBLqfi-SB5dhzyB7ic5p_XXhg,239
45
+ mirascope/llm/clients/openai/responses/_utils/__init__.py,sha256=U2VNfEJCaqorAJBZDV7p3rFEp1fyk7vSitYFv_5G5Cs,232
46
+ mirascope/llm/clients/openai/responses/_utils/decode.py,sha256=4D0clsSEhdF3d_z1dF1D54PmNEDm-88YBFwLldAWKfg,7583
47
+ mirascope/llm/clients/openai/responses/_utils/encode.py,sha256=K4Dod2Hs2ncTKTr26kbFRwmVmKqixRL1nLR51nJ9R20,12374
48
+ mirascope/llm/clients/openai/responses/_utils/model_features.py,sha256=nZdT7Wp38o7-u5-zUK2Oqe8KaxLbULad2DWKZDkXALQ,2295
49
+ mirascope/llm/clients/openai/shared/__init__.py,sha256=x4koHwL1YsrZ-vzJ-RZks9xEVUUwGuMmthxRXlmQUqc,104
50
+ mirascope/llm/clients/openai/shared/_utils.py,sha256=iWlQmkQXIk4J65zosjW0KiShZPEUpqgB9axrJIUfnJ4,1678
51
+ mirascope/llm/content/__init__.py,sha256=jgAxB-QvtT6vZduv1ADIc5yFlhTyyk1PtUuBirRXxRI,1877
52
+ mirascope/llm/content/audio.py,sha256=W6liY1PuQ0pF91eDBnNKW52dr-G7-vnd-rhlSqebx9Y,5311
53
+ mirascope/llm/content/document.py,sha256=oz3LSUEhJh-lEUDCss5p_xkPBDYQhAu9m9SGFr64_pI,2369
54
+ mirascope/llm/content/image.py,sha256=lG0nPvObNEva1XjqUJcZI2T7jZ1xhHaSjqsCncg0XEU,6155
55
+ mirascope/llm/content/text.py,sha256=4lDzXXpDy601RAkv9m85InP_CklvLccFATPThBcY1Ho,1099
56
+ mirascope/llm/content/thought.py,sha256=jWtlVWoS-fDjByD-m2SPdPNNxvQhfwfOio0B95j10qU,1729
57
+ mirascope/llm/content/tool_call.py,sha256=Ogs-_ya50dc4Zb-bfNYFaMVdO5ZHpz4caGmr6ExGrVc,1613
58
+ mirascope/llm/content/tool_output.py,sha256=cCaRvfoR8QFQwnI90rfZjIEkK1GVBia3YJ5BjlOoojs,661
59
+ mirascope/llm/context/__init__.py,sha256=2Bx8CQhTXWbtwMirZ8ppmFKPXjuYezyi10XfmRpAE5I,179
60
+ mirascope/llm/context/_utils.py,sha256=lZ2aoAfT7XuIZvQdqGBzOMarAFZNMW0M2HAfD25flkU,907
61
+ mirascope/llm/context/context.py,sha256=qvmRXsyea34wXP-_0CCe6RwkT3H57dojCw6HHnv8LVc,629
62
+ mirascope/llm/formatting/__init__.py,sha256=N7cvwRFqNC1udcPSZPMLMX-1eNhEtqoZzH1uuAtEX7w,592
63
+ mirascope/llm/formatting/_utils.py,sha256=lb7UbFXuubkeuptZ_E2w-FEokGg1SEXOH5wUP1VXMT8,2292
64
+ mirascope/llm/formatting/format.py,sha256=KraFe0mh6b9J7bkY6yJgM_4nthGVfKXYbpVv-WPe3Ic,3621
65
+ mirascope/llm/formatting/from_call_args.py,sha256=OmCzqWn47W_IXOsl1-F2Um-w4E3q71kFLA9I6L093GI,920
66
+ mirascope/llm/formatting/partial.py,sha256=_7WlcHvjNJIVrYGVCGphu5Y6UyZQlKyENp05QAtyJ0Q,1785
67
+ mirascope/llm/formatting/types.py,sha256=GSoY82khvf53lwh8qEVIoeslVvoinx8cwLhh_NygB9k,4086
68
+ mirascope/llm/mcp/__init__.py,sha256=qVMSydtTuNezpxv91w5JoV9b3-1s743X-bxh012JmjQ,192
69
+ mirascope/llm/mcp/client.py,sha256=jbOn0QohgEu40JXvjENM7VE7pws8em3Jyx-Yn1YWZ_s,3613
70
+ mirascope/llm/messages/__init__.py,sha256=YJ4D-s_vQd76GTRmRstI2i9Yx561plmURf-zrydKjSo,708
71
+ mirascope/llm/messages/message.py,sha256=7pXiNqJkO3_DhkJPVwmI88bfDLf-31lo6Y_LIp3lcP8,6114
72
+ mirascope/llm/models/__init__.py,sha256=5Mo-hH-wqiBnCGcs-WG17JR2zBrAGgjMtZNNN4MRDkU,513
73
+ mirascope/llm/models/models.py,sha256=vi3dTml08J0dc74-9ALY8DorhfJKKwqEfCsecX44Wwk,41577
74
+ mirascope/llm/prompts/__init__.py,sha256=OoNJX1vlhpSUoKsig_RwbcOcNS43CNcAioUsht5KVUg,650
75
+ mirascope/llm/prompts/_utils.py,sha256=dTLeB6YjLniev_R93N0FH9J7zaVXnrej3crRZonRuBA,1760
76
+ mirascope/llm/prompts/decorator.py,sha256=hWqGIW5xdYGo-H_bNIP0zzY-HdwATozfDi8ZU_SUZIQ,8589
77
+ mirascope/llm/prompts/protocols.py,sha256=a5k0_WCGMmNo2exgK-2eBBhDg19olCbM2b002LZPlDg,2690
78
+ mirascope/llm/responses/__init__.py,sha256=bWEY1_AkJxBTtq3ML3cJM2arU1XOoDFCv2QvukFz73c,1308
79
+ mirascope/llm/responses/_utils.py,sha256=JkKXzG6-WqAbbmWLKOmbe7gDpp9xwg7xNHXryFbt6ME,1662
80
+ mirascope/llm/responses/base_response.py,sha256=nReMXPSXqo42KJD9SClyggjkYnEfZn_t1u9RHOonrl4,3684
81
+ mirascope/llm/responses/base_stream_response.py,sha256=x-HBW7_mSm4TiRrvBY60cFkp-qQrJlZjt_VcLeI91d4,27787
82
+ mirascope/llm/responses/finish_reason.py,sha256=1iSVaTZP8zlTwc9Pr4r10AzGkMz0iy0om8vKsHJ0OUY,742
83
+ mirascope/llm/responses/response.py,sha256=nsZr2vygDBBEQAIWwrfjL-YOWJ1MbrUOkwhhY1YU0CU,11774
84
+ mirascope/llm/responses/root_response.py,sha256=pATfCrvwsLE4dgx3CA9ZONqcltqg9yHk9uHPQcFxYsM,6128
85
+ mirascope/llm/responses/stream_response.py,sha256=g8hGoKL94intm5w5mOpAh2QAH1eiCbNIJYYgknIOcM0,23656
86
+ mirascope/llm/responses/streams.py,sha256=TmEFvLVEWHfVYplik61yUWisxe8JGbaZdh7yC7e-axI,10789
87
+ mirascope/llm/tools/__init__.py,sha256=3xIhEzpLlTkuDuvkfwVy3gLPRTTJCJH5GKkqCGjgo3A,772
88
+ mirascope/llm/tools/_utils.py,sha256=bBVsZs8SywWspVGBGR7GGuhSmGa5-wCzeXGV6Woof9Q,872
89
+ mirascope/llm/tools/decorator.py,sha256=kZ90qrE7jZHcW5fg3O-SOh6xiI6yjT4fz548e4AxvQc,5326
90
+ mirascope/llm/tools/protocols.py,sha256=VubSZm-N2QEnBzFTsnj4pRtIgJOx2GQWM4IyqZjDk1Q,3054
91
+ mirascope/llm/tools/tool_schema.py,sha256=vFGVNOa8ZrE6gnwelBcPKYK7-0ULqVtlr1oXZsbVxKY,8358
92
+ mirascope/llm/tools/toolkit.py,sha256=pGXchFSO2H7PxFM2sPQYEMDAYHNaX9bhGEyyou_4vsg,4900
93
+ mirascope/llm/tools/tools.py,sha256=AEgTEZoRTxictYxPDxdX18_Ho2sD8SIa-LUTngNHPiM,5972
94
+ mirascope/llm/types/__init__.py,sha256=lqzi1FkZ-s-D9-KQzVkAHuQQ1zp6B6yM3r9UNo46teE,357
95
+ mirascope/llm/types/dataclass.py,sha256=y4_9M3Yqw_4I-H0V4TwvgGIp6JvRdtpW11NxqufnsJk,247
96
+ mirascope/llm/types/jsonable.py,sha256=KY6l21_RBhlHQRXQ_xy6pUqqbTVb_jVFSU4ykRy_OLU,1104
97
+ mirascope/llm/types/type_vars.py,sha256=OsAcQAZh5T_X8ZTLlP4GC1x3qgVY9rfYSnME8aMTDxw,642
98
+ mirascope-2.0.0a0.dist-info/METADATA,sha256=FySDVeLpjaHcLhgRrb12tjVMSLxojbv7AFcnJObI0XU,5035
99
+ mirascope-2.0.0a0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
100
+ mirascope-2.0.0a0.dist-info/licenses/LICENSE,sha256=LAs5Q8mdawTsVdONpDGukwsoc4KEUBmmonDEL39b23Y,1072
101
+ mirascope-2.0.0a0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.28.0
2
+ Generator: hatchling 1.27.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Mirascope, Inc.
3
+ Copyright (c) 2023 Mirascope, Inc.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal