mirascope 2.0.0__py3-none-any.whl → 2.0.0a1__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 (443) 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 +15 -96
  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/_missing_import_stubs.py +47 -0
  15. mirascope/llm/clients/anthropic/__init__.py +25 -0
  16. mirascope/llm/{providers/openai/completions → clients/anthropic}/_utils/__init__.py +0 -2
  17. mirascope/llm/{providers → clients}/anthropic/_utils/decode.py +22 -66
  18. mirascope/llm/clients/anthropic/_utils/encode.py +243 -0
  19. mirascope/llm/clients/anthropic/clients.py +819 -0
  20. mirascope/llm/clients/anthropic/model_ids.py +8 -0
  21. mirascope/llm/{providers → clients}/base/__init__.py +5 -4
  22. mirascope/llm/{providers → clients}/base/_utils.py +17 -78
  23. mirascope/llm/{providers/base/base_provider.py → clients/base/client.py} +145 -468
  24. mirascope/llm/{models → clients/base}/params.py +37 -16
  25. mirascope/llm/clients/google/__init__.py +20 -0
  26. mirascope/llm/{providers/openai/responses → clients/google}/_utils/__init__.py +0 -2
  27. mirascope/llm/{providers → clients}/google/_utils/decode.py +22 -98
  28. mirascope/llm/{providers → clients}/google/_utils/encode.py +46 -168
  29. mirascope/llm/clients/google/clients.py +853 -0
  30. mirascope/llm/clients/google/model_ids.py +15 -0
  31. mirascope/llm/clients/openai/__init__.py +25 -0
  32. mirascope/llm/clients/openai/completions/__init__.py +28 -0
  33. mirascope/llm/{providers/google → clients/openai/completions}/_utils/__init__.py +0 -4
  34. mirascope/llm/{providers → clients}/openai/completions/_utils/decode.py +9 -74
  35. mirascope/llm/{providers → clients}/openai/completions/_utils/encode.py +52 -70
  36. mirascope/llm/clients/openai/completions/_utils/model_features.py +81 -0
  37. mirascope/llm/clients/openai/completions/clients.py +833 -0
  38. mirascope/llm/clients/openai/completions/model_ids.py +8 -0
  39. mirascope/llm/clients/openai/responses/__init__.py +26 -0
  40. mirascope/llm/clients/openai/responses/_utils/__init__.py +13 -0
  41. mirascope/llm/{providers → clients}/openai/responses/_utils/decode.py +14 -80
  42. mirascope/llm/{providers → clients}/openai/responses/_utils/encode.py +41 -92
  43. mirascope/llm/clients/openai/responses/_utils/model_features.py +87 -0
  44. mirascope/llm/clients/openai/responses/clients.py +832 -0
  45. mirascope/llm/clients/openai/responses/model_ids.py +8 -0
  46. mirascope/llm/clients/openai/shared/__init__.py +7 -0
  47. mirascope/llm/clients/openai/shared/_utils.py +55 -0
  48. mirascope/llm/clients/providers.py +175 -0
  49. mirascope/llm/content/__init__.py +2 -3
  50. mirascope/llm/content/tool_call.py +0 -6
  51. mirascope/llm/content/tool_output.py +5 -22
  52. mirascope/llm/context/_utils.py +6 -19
  53. mirascope/llm/exceptions.py +43 -298
  54. mirascope/llm/formatting/__init__.py +2 -19
  55. mirascope/llm/formatting/_utils.py +74 -0
  56. mirascope/llm/formatting/format.py +30 -219
  57. mirascope/llm/formatting/from_call_args.py +2 -2
  58. mirascope/llm/formatting/partial.py +7 -80
  59. mirascope/llm/formatting/types.py +64 -21
  60. mirascope/llm/mcp/__init__.py +2 -2
  61. mirascope/llm/mcp/client.py +118 -0
  62. mirascope/llm/messages/__init__.py +0 -3
  63. mirascope/llm/messages/message.py +5 -13
  64. mirascope/llm/models/__init__.py +2 -7
  65. mirascope/llm/models/models.py +139 -315
  66. mirascope/llm/prompts/__init__.py +12 -13
  67. mirascope/llm/prompts/_utils.py +43 -14
  68. mirascope/llm/prompts/decorator.py +204 -144
  69. mirascope/llm/prompts/protocols.py +59 -25
  70. mirascope/llm/responses/__init__.py +1 -9
  71. mirascope/llm/responses/_utils.py +12 -102
  72. mirascope/llm/responses/base_response.py +6 -18
  73. mirascope/llm/responses/base_stream_response.py +50 -173
  74. mirascope/llm/responses/finish_reason.py +0 -1
  75. mirascope/llm/responses/response.py +13 -34
  76. mirascope/llm/responses/root_response.py +29 -100
  77. mirascope/llm/responses/stream_response.py +31 -40
  78. mirascope/llm/tools/__init__.py +2 -9
  79. mirascope/llm/tools/_utils.py +3 -12
  80. mirascope/llm/tools/decorator.py +16 -25
  81. mirascope/llm/tools/protocols.py +4 -4
  82. mirascope/llm/tools/tool_schema.py +19 -87
  83. mirascope/llm/tools/toolkit.py +27 -35
  84. mirascope/llm/tools/tools.py +41 -135
  85. {mirascope-2.0.0.dist-info → mirascope-2.0.0a1.dist-info}/METADATA +13 -90
  86. mirascope-2.0.0a1.dist-info/RECORD +102 -0
  87. {mirascope-2.0.0.dist-info → mirascope-2.0.0a1.dist-info}/WHEEL +1 -1
  88. {mirascope-2.0.0.dist-info → mirascope-2.0.0a1.dist-info}/licenses/LICENSE +1 -1
  89. mirascope/_stubs.py +0 -363
  90. mirascope/api/__init__.py +0 -14
  91. mirascope/api/_generated/README.md +0 -207
  92. mirascope/api/_generated/__init__.py +0 -440
  93. mirascope/api/_generated/annotations/__init__.py +0 -33
  94. mirascope/api/_generated/annotations/client.py +0 -506
  95. mirascope/api/_generated/annotations/raw_client.py +0 -1414
  96. mirascope/api/_generated/annotations/types/__init__.py +0 -31
  97. mirascope/api/_generated/annotations/types/annotations_create_request_label.py +0 -5
  98. mirascope/api/_generated/annotations/types/annotations_create_response.py +0 -48
  99. mirascope/api/_generated/annotations/types/annotations_create_response_label.py +0 -5
  100. mirascope/api/_generated/annotations/types/annotations_get_response.py +0 -48
  101. mirascope/api/_generated/annotations/types/annotations_get_response_label.py +0 -5
  102. mirascope/api/_generated/annotations/types/annotations_list_request_label.py +0 -5
  103. mirascope/api/_generated/annotations/types/annotations_list_response.py +0 -21
  104. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item.py +0 -50
  105. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item_label.py +0 -5
  106. mirascope/api/_generated/annotations/types/annotations_update_request_label.py +0 -5
  107. mirascope/api/_generated/annotations/types/annotations_update_response.py +0 -48
  108. mirascope/api/_generated/annotations/types/annotations_update_response_label.py +0 -5
  109. mirascope/api/_generated/api_keys/__init__.py +0 -17
  110. mirascope/api/_generated/api_keys/client.py +0 -530
  111. mirascope/api/_generated/api_keys/raw_client.py +0 -1236
  112. mirascope/api/_generated/api_keys/types/__init__.py +0 -15
  113. mirascope/api/_generated/api_keys/types/api_keys_create_response.py +0 -28
  114. mirascope/api/_generated/api_keys/types/api_keys_get_response.py +0 -27
  115. mirascope/api/_generated/api_keys/types/api_keys_list_all_for_org_response_item.py +0 -40
  116. mirascope/api/_generated/api_keys/types/api_keys_list_response_item.py +0 -27
  117. mirascope/api/_generated/client.py +0 -211
  118. mirascope/api/_generated/core/__init__.py +0 -52
  119. mirascope/api/_generated/core/api_error.py +0 -23
  120. mirascope/api/_generated/core/client_wrapper.py +0 -46
  121. mirascope/api/_generated/core/datetime_utils.py +0 -28
  122. mirascope/api/_generated/core/file.py +0 -67
  123. mirascope/api/_generated/core/force_multipart.py +0 -16
  124. mirascope/api/_generated/core/http_client.py +0 -543
  125. mirascope/api/_generated/core/http_response.py +0 -55
  126. mirascope/api/_generated/core/jsonable_encoder.py +0 -100
  127. mirascope/api/_generated/core/pydantic_utilities.py +0 -255
  128. mirascope/api/_generated/core/query_encoder.py +0 -58
  129. mirascope/api/_generated/core/remove_none_from_dict.py +0 -11
  130. mirascope/api/_generated/core/request_options.py +0 -35
  131. mirascope/api/_generated/core/serialization.py +0 -276
  132. mirascope/api/_generated/docs/__init__.py +0 -4
  133. mirascope/api/_generated/docs/client.py +0 -91
  134. mirascope/api/_generated/docs/raw_client.py +0 -178
  135. mirascope/api/_generated/environment.py +0 -9
  136. mirascope/api/_generated/environments/__init__.py +0 -23
  137. mirascope/api/_generated/environments/client.py +0 -649
  138. mirascope/api/_generated/environments/raw_client.py +0 -1567
  139. mirascope/api/_generated/environments/types/__init__.py +0 -25
  140. mirascope/api/_generated/environments/types/environments_create_response.py +0 -24
  141. mirascope/api/_generated/environments/types/environments_get_analytics_response.py +0 -60
  142. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_functions_item.py +0 -24
  143. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_models_item.py +0 -22
  144. mirascope/api/_generated/environments/types/environments_get_response.py +0 -24
  145. mirascope/api/_generated/environments/types/environments_list_response_item.py +0 -24
  146. mirascope/api/_generated/environments/types/environments_update_response.py +0 -24
  147. mirascope/api/_generated/errors/__init__.py +0 -25
  148. mirascope/api/_generated/errors/bad_request_error.py +0 -14
  149. mirascope/api/_generated/errors/conflict_error.py +0 -14
  150. mirascope/api/_generated/errors/forbidden_error.py +0 -11
  151. mirascope/api/_generated/errors/internal_server_error.py +0 -10
  152. mirascope/api/_generated/errors/not_found_error.py +0 -11
  153. mirascope/api/_generated/errors/payment_required_error.py +0 -15
  154. mirascope/api/_generated/errors/service_unavailable_error.py +0 -14
  155. mirascope/api/_generated/errors/too_many_requests_error.py +0 -15
  156. mirascope/api/_generated/errors/unauthorized_error.py +0 -11
  157. mirascope/api/_generated/functions/__init__.py +0 -39
  158. mirascope/api/_generated/functions/client.py +0 -647
  159. mirascope/api/_generated/functions/raw_client.py +0 -1890
  160. mirascope/api/_generated/functions/types/__init__.py +0 -53
  161. mirascope/api/_generated/functions/types/functions_create_request_dependencies_value.py +0 -20
  162. mirascope/api/_generated/functions/types/functions_create_response.py +0 -37
  163. mirascope/api/_generated/functions/types/functions_create_response_dependencies_value.py +0 -20
  164. mirascope/api/_generated/functions/types/functions_find_by_hash_response.py +0 -39
  165. mirascope/api/_generated/functions/types/functions_find_by_hash_response_dependencies_value.py +0 -20
  166. mirascope/api/_generated/functions/types/functions_get_by_env_response.py +0 -53
  167. mirascope/api/_generated/functions/types/functions_get_by_env_response_dependencies_value.py +0 -22
  168. mirascope/api/_generated/functions/types/functions_get_response.py +0 -37
  169. mirascope/api/_generated/functions/types/functions_get_response_dependencies_value.py +0 -20
  170. mirascope/api/_generated/functions/types/functions_list_by_env_response.py +0 -25
  171. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item.py +0 -56
  172. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item_dependencies_value.py +0 -22
  173. mirascope/api/_generated/functions/types/functions_list_response.py +0 -21
  174. mirascope/api/_generated/functions/types/functions_list_response_functions_item.py +0 -41
  175. mirascope/api/_generated/functions/types/functions_list_response_functions_item_dependencies_value.py +0 -20
  176. mirascope/api/_generated/health/__init__.py +0 -7
  177. mirascope/api/_generated/health/client.py +0 -92
  178. mirascope/api/_generated/health/raw_client.py +0 -175
  179. mirascope/api/_generated/health/types/__init__.py +0 -8
  180. mirascope/api/_generated/health/types/health_check_response.py +0 -22
  181. mirascope/api/_generated/health/types/health_check_response_status.py +0 -5
  182. mirascope/api/_generated/organization_invitations/__init__.py +0 -33
  183. mirascope/api/_generated/organization_invitations/client.py +0 -546
  184. mirascope/api/_generated/organization_invitations/raw_client.py +0 -1519
  185. mirascope/api/_generated/organization_invitations/types/__init__.py +0 -53
  186. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response.py +0 -34
  187. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response_role.py +0 -7
  188. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_request_role.py +0 -7
  189. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response.py +0 -48
  190. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_role.py +0 -7
  191. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_status.py +0 -7
  192. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response.py +0 -48
  193. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_role.py +0 -7
  194. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_status.py +0 -7
  195. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item.py +0 -48
  196. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_role.py +0 -7
  197. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_status.py +0 -7
  198. mirascope/api/_generated/organization_memberships/__init__.py +0 -19
  199. mirascope/api/_generated/organization_memberships/client.py +0 -302
  200. mirascope/api/_generated/organization_memberships/raw_client.py +0 -736
  201. mirascope/api/_generated/organization_memberships/types/__init__.py +0 -27
  202. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item.py +0 -33
  203. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item_role.py +0 -7
  204. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_request_role.py +0 -7
  205. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response.py +0 -31
  206. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response_role.py +0 -7
  207. mirascope/api/_generated/organizations/__init__.py +0 -51
  208. mirascope/api/_generated/organizations/client.py +0 -869
  209. mirascope/api/_generated/organizations/raw_client.py +0 -2593
  210. mirascope/api/_generated/organizations/types/__init__.py +0 -71
  211. mirascope/api/_generated/organizations/types/organizations_create_payment_intent_response.py +0 -24
  212. mirascope/api/_generated/organizations/types/organizations_create_response.py +0 -26
  213. mirascope/api/_generated/organizations/types/organizations_create_response_role.py +0 -5
  214. mirascope/api/_generated/organizations/types/organizations_get_response.py +0 -26
  215. mirascope/api/_generated/organizations/types/organizations_get_response_role.py +0 -5
  216. mirascope/api/_generated/organizations/types/organizations_list_response_item.py +0 -26
  217. mirascope/api/_generated/organizations/types/organizations_list_response_item_role.py +0 -5
  218. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_request_target_plan.py +0 -7
  219. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response.py +0 -47
  220. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item.py +0 -33
  221. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item_resource.py +0 -7
  222. mirascope/api/_generated/organizations/types/organizations_router_balance_response.py +0 -24
  223. mirascope/api/_generated/organizations/types/organizations_subscription_response.py +0 -53
  224. mirascope/api/_generated/organizations/types/organizations_subscription_response_current_plan.py +0 -7
  225. mirascope/api/_generated/organizations/types/organizations_subscription_response_payment_method.py +0 -26
  226. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change.py +0 -34
  227. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change_target_plan.py +0 -7
  228. mirascope/api/_generated/organizations/types/organizations_update_response.py +0 -26
  229. mirascope/api/_generated/organizations/types/organizations_update_response_role.py +0 -5
  230. mirascope/api/_generated/organizations/types/organizations_update_subscription_request_target_plan.py +0 -7
  231. mirascope/api/_generated/organizations/types/organizations_update_subscription_response.py +0 -35
  232. mirascope/api/_generated/project_memberships/__init__.py +0 -25
  233. mirascope/api/_generated/project_memberships/client.py +0 -437
  234. mirascope/api/_generated/project_memberships/raw_client.py +0 -1039
  235. mirascope/api/_generated/project_memberships/types/__init__.py +0 -29
  236. mirascope/api/_generated/project_memberships/types/project_memberships_create_request_role.py +0 -7
  237. mirascope/api/_generated/project_memberships/types/project_memberships_create_response.py +0 -35
  238. mirascope/api/_generated/project_memberships/types/project_memberships_create_response_role.py +0 -7
  239. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item.py +0 -33
  240. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item_role.py +0 -7
  241. mirascope/api/_generated/project_memberships/types/project_memberships_update_request_role.py +0 -7
  242. mirascope/api/_generated/project_memberships/types/project_memberships_update_response.py +0 -35
  243. mirascope/api/_generated/project_memberships/types/project_memberships_update_response_role.py +0 -7
  244. mirascope/api/_generated/projects/__init__.py +0 -7
  245. mirascope/api/_generated/projects/client.py +0 -428
  246. mirascope/api/_generated/projects/raw_client.py +0 -1302
  247. mirascope/api/_generated/projects/types/__init__.py +0 -10
  248. mirascope/api/_generated/projects/types/projects_create_response.py +0 -25
  249. mirascope/api/_generated/projects/types/projects_get_response.py +0 -25
  250. mirascope/api/_generated/projects/types/projects_list_response_item.py +0 -25
  251. mirascope/api/_generated/projects/types/projects_update_response.py +0 -25
  252. mirascope/api/_generated/reference.md +0 -4915
  253. mirascope/api/_generated/tags/__init__.py +0 -19
  254. mirascope/api/_generated/tags/client.py +0 -504
  255. mirascope/api/_generated/tags/raw_client.py +0 -1288
  256. mirascope/api/_generated/tags/types/__init__.py +0 -17
  257. mirascope/api/_generated/tags/types/tags_create_response.py +0 -41
  258. mirascope/api/_generated/tags/types/tags_get_response.py +0 -41
  259. mirascope/api/_generated/tags/types/tags_list_response.py +0 -23
  260. mirascope/api/_generated/tags/types/tags_list_response_tags_item.py +0 -41
  261. mirascope/api/_generated/tags/types/tags_update_response.py +0 -41
  262. mirascope/api/_generated/token_cost/__init__.py +0 -7
  263. mirascope/api/_generated/token_cost/client.py +0 -160
  264. mirascope/api/_generated/token_cost/raw_client.py +0 -264
  265. mirascope/api/_generated/token_cost/types/__init__.py +0 -8
  266. mirascope/api/_generated/token_cost/types/token_cost_calculate_request_usage.py +0 -54
  267. mirascope/api/_generated/token_cost/types/token_cost_calculate_response.py +0 -52
  268. mirascope/api/_generated/traces/__init__.py +0 -97
  269. mirascope/api/_generated/traces/client.py +0 -1103
  270. mirascope/api/_generated/traces/raw_client.py +0 -2322
  271. mirascope/api/_generated/traces/types/__init__.py +0 -155
  272. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item.py +0 -29
  273. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource.py +0 -27
  274. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item.py +0 -23
  275. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value.py +0 -38
  276. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_array_value.py +0 -19
  277. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value.py +0 -22
  278. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value_values_item.py +0 -20
  279. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item.py +0 -29
  280. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope.py +0 -31
  281. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item.py +0 -23
  282. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value.py +0 -38
  283. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_array_value.py +0 -19
  284. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value.py +0 -22
  285. 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
  286. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item.py +0 -48
  287. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item.py +0 -23
  288. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value.py +0 -38
  289. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_array_value.py +0 -19
  290. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value.py +0 -24
  291. 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
  292. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_status.py +0 -20
  293. mirascope/api/_generated/traces/types/traces_create_response.py +0 -24
  294. mirascope/api/_generated/traces/types/traces_create_response_partial_success.py +0 -22
  295. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response.py +0 -60
  296. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_functions_item.py +0 -24
  297. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_models_item.py +0 -22
  298. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response.py +0 -33
  299. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response_spans_item.py +0 -88
  300. mirascope/api/_generated/traces/types/traces_get_trace_detail_response.py +0 -33
  301. mirascope/api/_generated/traces/types/traces_get_trace_detail_response_spans_item.py +0 -88
  302. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response.py +0 -25
  303. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response_traces_item.py +0 -44
  304. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item.py +0 -26
  305. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item_operator.py +0 -7
  306. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_by.py +0 -7
  307. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_order.py +0 -7
  308. mirascope/api/_generated/traces/types/traces_search_by_env_response.py +0 -26
  309. mirascope/api/_generated/traces/types/traces_search_by_env_response_spans_item.py +0 -50
  310. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item.py +0 -26
  311. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item_operator.py +0 -7
  312. mirascope/api/_generated/traces/types/traces_search_request_sort_by.py +0 -7
  313. mirascope/api/_generated/traces/types/traces_search_request_sort_order.py +0 -5
  314. mirascope/api/_generated/traces/types/traces_search_response.py +0 -26
  315. mirascope/api/_generated/traces/types/traces_search_response_spans_item.py +0 -50
  316. mirascope/api/_generated/types/__init__.py +0 -85
  317. mirascope/api/_generated/types/already_exists_error.py +0 -22
  318. mirascope/api/_generated/types/already_exists_error_tag.py +0 -5
  319. mirascope/api/_generated/types/bad_request_error_body.py +0 -50
  320. mirascope/api/_generated/types/click_house_error.py +0 -22
  321. mirascope/api/_generated/types/database_error.py +0 -22
  322. mirascope/api/_generated/types/database_error_tag.py +0 -5
  323. mirascope/api/_generated/types/date.py +0 -3
  324. mirascope/api/_generated/types/http_api_decode_error.py +0 -27
  325. mirascope/api/_generated/types/http_api_decode_error_tag.py +0 -5
  326. mirascope/api/_generated/types/immutable_resource_error.py +0 -22
  327. mirascope/api/_generated/types/internal_server_error_body.py +0 -49
  328. mirascope/api/_generated/types/issue.py +0 -38
  329. mirascope/api/_generated/types/issue_tag.py +0 -10
  330. mirascope/api/_generated/types/not_found_error_body.py +0 -22
  331. mirascope/api/_generated/types/not_found_error_tag.py +0 -5
  332. mirascope/api/_generated/types/number_from_string.py +0 -3
  333. mirascope/api/_generated/types/permission_denied_error.py +0 -22
  334. mirascope/api/_generated/types/permission_denied_error_tag.py +0 -5
  335. mirascope/api/_generated/types/plan_limit_exceeded_error.py +0 -32
  336. mirascope/api/_generated/types/plan_limit_exceeded_error_tag.py +0 -7
  337. mirascope/api/_generated/types/pricing_unavailable_error.py +0 -23
  338. mirascope/api/_generated/types/property_key.py +0 -7
  339. mirascope/api/_generated/types/property_key_key.py +0 -25
  340. mirascope/api/_generated/types/property_key_key_tag.py +0 -5
  341. mirascope/api/_generated/types/rate_limit_error.py +0 -31
  342. mirascope/api/_generated/types/rate_limit_error_tag.py +0 -5
  343. mirascope/api/_generated/types/service_unavailable_error_body.py +0 -24
  344. mirascope/api/_generated/types/service_unavailable_error_tag.py +0 -7
  345. mirascope/api/_generated/types/stripe_error.py +0 -20
  346. mirascope/api/_generated/types/subscription_past_due_error.py +0 -31
  347. mirascope/api/_generated/types/subscription_past_due_error_tag.py +0 -7
  348. mirascope/api/_generated/types/unauthorized_error_body.py +0 -21
  349. mirascope/api/_generated/types/unauthorized_error_tag.py +0 -5
  350. mirascope/api/client.py +0 -255
  351. mirascope/api/settings.py +0 -99
  352. mirascope/llm/formatting/output_parser.py +0 -178
  353. mirascope/llm/formatting/primitives.py +0 -192
  354. mirascope/llm/mcp/mcp_client.py +0 -130
  355. mirascope/llm/messages/_utils.py +0 -34
  356. mirascope/llm/models/thinking_config.py +0 -61
  357. mirascope/llm/prompts/prompts.py +0 -487
  358. mirascope/llm/providers/__init__.py +0 -62
  359. mirascope/llm/providers/anthropic/__init__.py +0 -11
  360. mirascope/llm/providers/anthropic/_utils/__init__.py +0 -27
  361. mirascope/llm/providers/anthropic/_utils/beta_decode.py +0 -282
  362. mirascope/llm/providers/anthropic/_utils/beta_encode.py +0 -266
  363. mirascope/llm/providers/anthropic/_utils/encode.py +0 -418
  364. mirascope/llm/providers/anthropic/_utils/errors.py +0 -46
  365. mirascope/llm/providers/anthropic/beta_provider.py +0 -374
  366. mirascope/llm/providers/anthropic/model_id.py +0 -23
  367. mirascope/llm/providers/anthropic/model_info.py +0 -87
  368. mirascope/llm/providers/anthropic/provider.py +0 -479
  369. mirascope/llm/providers/google/__init__.py +0 -6
  370. mirascope/llm/providers/google/_utils/errors.py +0 -50
  371. mirascope/llm/providers/google/model_id.py +0 -22
  372. mirascope/llm/providers/google/model_info.py +0 -63
  373. mirascope/llm/providers/google/provider.py +0 -492
  374. mirascope/llm/providers/mirascope/__init__.py +0 -5
  375. mirascope/llm/providers/mirascope/_utils.py +0 -73
  376. mirascope/llm/providers/mirascope/provider.py +0 -349
  377. mirascope/llm/providers/mlx/__init__.py +0 -9
  378. mirascope/llm/providers/mlx/_utils.py +0 -141
  379. mirascope/llm/providers/mlx/encoding/__init__.py +0 -8
  380. mirascope/llm/providers/mlx/encoding/base.py +0 -72
  381. mirascope/llm/providers/mlx/encoding/transformers.py +0 -150
  382. mirascope/llm/providers/mlx/mlx.py +0 -254
  383. mirascope/llm/providers/mlx/model_id.py +0 -17
  384. mirascope/llm/providers/mlx/provider.py +0 -452
  385. mirascope/llm/providers/model_id.py +0 -16
  386. mirascope/llm/providers/ollama/__init__.py +0 -7
  387. mirascope/llm/providers/ollama/provider.py +0 -71
  388. mirascope/llm/providers/openai/__init__.py +0 -15
  389. mirascope/llm/providers/openai/_utils/__init__.py +0 -5
  390. mirascope/llm/providers/openai/_utils/errors.py +0 -46
  391. mirascope/llm/providers/openai/completions/__init__.py +0 -7
  392. mirascope/llm/providers/openai/completions/base_provider.py +0 -542
  393. mirascope/llm/providers/openai/completions/provider.py +0 -22
  394. mirascope/llm/providers/openai/model_id.py +0 -31
  395. mirascope/llm/providers/openai/model_info.py +0 -303
  396. mirascope/llm/providers/openai/provider.py +0 -441
  397. mirascope/llm/providers/openai/responses/__init__.py +0 -5
  398. mirascope/llm/providers/openai/responses/provider.py +0 -513
  399. mirascope/llm/providers/provider_id.py +0 -24
  400. mirascope/llm/providers/provider_registry.py +0 -299
  401. mirascope/llm/providers/together/__init__.py +0 -7
  402. mirascope/llm/providers/together/provider.py +0 -40
  403. mirascope/llm/responses/usage.py +0 -95
  404. mirascope/ops/__init__.py +0 -111
  405. mirascope/ops/_internal/__init__.py +0 -5
  406. mirascope/ops/_internal/closure.py +0 -1169
  407. mirascope/ops/_internal/configuration.py +0 -177
  408. mirascope/ops/_internal/context.py +0 -76
  409. mirascope/ops/_internal/exporters/__init__.py +0 -26
  410. mirascope/ops/_internal/exporters/exporters.py +0 -395
  411. mirascope/ops/_internal/exporters/processors.py +0 -104
  412. mirascope/ops/_internal/exporters/types.py +0 -165
  413. mirascope/ops/_internal/exporters/utils.py +0 -29
  414. mirascope/ops/_internal/instrumentation/__init__.py +0 -8
  415. mirascope/ops/_internal/instrumentation/llm/__init__.py +0 -8
  416. mirascope/ops/_internal/instrumentation/llm/common.py +0 -530
  417. mirascope/ops/_internal/instrumentation/llm/cost.py +0 -190
  418. mirascope/ops/_internal/instrumentation/llm/encode.py +0 -238
  419. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/__init__.py +0 -38
  420. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_input_messages.py +0 -31
  421. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_output_messages.py +0 -38
  422. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_system_instructions.py +0 -18
  423. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/shared.py +0 -100
  424. mirascope/ops/_internal/instrumentation/llm/llm.py +0 -161
  425. mirascope/ops/_internal/instrumentation/llm/model.py +0 -1798
  426. mirascope/ops/_internal/instrumentation/llm/response.py +0 -521
  427. mirascope/ops/_internal/instrumentation/llm/serialize.py +0 -300
  428. mirascope/ops/_internal/propagation.py +0 -198
  429. mirascope/ops/_internal/protocols.py +0 -133
  430. mirascope/ops/_internal/session.py +0 -139
  431. mirascope/ops/_internal/spans.py +0 -232
  432. mirascope/ops/_internal/traced_calls.py +0 -375
  433. mirascope/ops/_internal/traced_functions.py +0 -523
  434. mirascope/ops/_internal/tracing.py +0 -353
  435. mirascope/ops/_internal/types.py +0 -13
  436. mirascope/ops/_internal/utils.py +0 -123
  437. mirascope/ops/_internal/versioned_calls.py +0 -512
  438. mirascope/ops/_internal/versioned_functions.py +0 -357
  439. mirascope/ops/_internal/versioning.py +0 -303
  440. mirascope/ops/exceptions.py +0 -21
  441. mirascope-2.0.0.dist-info/RECORD +0 -423
  442. /mirascope/llm/{providers → clients}/base/kwargs.py +0 -0
  443. /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.0a1
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,7 +40,6 @@ 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
@@ -48,53 +47,25 @@ Classifier: Topic :: Software Development :: Libraries
48
47
  Requires-Python: >=3.10
49
48
  Requires-Dist: docstring-parser>=0.17.0
50
49
  Requires-Dist: httpx>=0.27.0
51
- Requires-Dist: jiter>=0.7.0
52
50
  Requires-Dist: pydantic>=2.0.0
53
51
  Requires-Dist: typing-extensions>=4.10.0
54
52
  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'
53
+ Requires-Dist: anthropic<1.0,>=0.72.0; extra == 'all'
54
+ Requires-Dist: google-genai<2,>=1.48.0; extra == 'all'
55
+ Requires-Dist: mcp<2,>=1.0.0; extra == 'all'
56
+ Requires-Dist: openai<3,>=2.7.1; extra == 'all'
70
57
  Requires-Dist: pillow<11,>=10.4.0; extra == 'all'
71
58
  Requires-Dist: proto-plus>=1.24.0; extra == 'all'
72
- Requires-Dist: pydantic-settings>=2.12.0; extra == 'all'
73
59
  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'
60
+ Requires-Dist: anthropic<1.0,>=0.72.0; extra == 'anthropic'
77
61
  Provides-Extra: google
78
- Requires-Dist: google-genai<2,>=1.58.0; extra == 'google'
62
+ Requires-Dist: google-genai<2,>=1.48.0; extra == 'google'
79
63
  Requires-Dist: pillow<11,>=10.4.0; extra == 'google'
80
64
  Requires-Dist: proto-plus>=1.24.0; extra == 'google'
81
65
  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'
66
+ Requires-Dist: mcp<2,>=1.0.0; extra == 'mcp'
85
67
  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'
68
+ Requires-Dist: openai<3,>=2.7.1; extra == 'openai'
98
69
  Description-Content-Type: text/markdown
99
70
 
100
71
  ## Mirascope v2 Python
@@ -120,54 +91,6 @@ This directory contains the Python implementation of Mirascope.
120
91
  uv run pytest
121
92
  ```
122
93
 
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
94
  ## Testing
172
95
 
173
96
  ### VCR Cassettes
@@ -0,0 +1,102 @@
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=rB8y7UB95NjsizaDGEAzgNstV9fFlt89HJ0SjyAGLg4,4495
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/_missing_import_stubs.py,sha256=KKTd_CVhUOZLTm8Slt2U-C94VN5N8mm2x89rKhmzdoI,1550
16
+ mirascope/llm/clients/providers.py,sha256=GwZldKYXGaTPbkbAbGlCYyl2-CuR1dnz4smZGblyfqc,5095
17
+ mirascope/llm/clients/anthropic/__init__.py,sha256=9V6UiDGuSXRJgkrbOHP9KW7KFHVb4Z_CMON2n8h-U6M,818
18
+ mirascope/llm/clients/anthropic/clients.py,sha256=8Z1Ol8V-JwCxefT2mQYUrfduliES2Yvk88hyM4GCNvc,27460
19
+ mirascope/llm/clients/anthropic/model_ids.py,sha256=0vp-nhDCYMw_3sKFD_tQO2FRlW8QzKiwXKBQ_lEv0yo,197
20
+ mirascope/llm/clients/anthropic/_utils/__init__.py,sha256=U2VNfEJCaqorAJBZDV7p3rFEp1fyk7vSitYFv_5G5Cs,232
21
+ mirascope/llm/clients/anthropic/_utils/decode.py,sha256=zD5__20USLa4YuTMeZo-4oi2-whckP85Ez_ch_Mross,8992
22
+ mirascope/llm/clients/anthropic/_utils/encode.py,sha256=Bul-WPrb7XJ7LW5gIsU2dm1Xvi5TG2lhiotvzZiNcL4,8760
23
+ mirascope/llm/clients/base/__init__.py,sha256=Am1Hbe7iNnVKjcR8PT52NqHgVwFnQaMojEHVrdGHAWo,278
24
+ mirascope/llm/clients/base/_utils.py,sha256=JyVXkbsHgOD_CnCNkq-aVdSmD4me0M40NPsdCt0pKwg,6880
25
+ mirascope/llm/clients/base/client.py,sha256=ffgxwMJ2vmbUB-KKzPwpgumzmGT2IhIr1yGqxYt9oBk,42258
26
+ mirascope/llm/clients/base/kwargs.py,sha256=pjaHVqtlmScUBqG8ZAllVaLoepdKE-KYl2eTqzOBXm0,406
27
+ mirascope/llm/clients/base/params.py,sha256=x2WLz0s5rMZ3u3GBGQmRlYGjecePtsLglHSJBLh35YE,3670
28
+ mirascope/llm/clients/google/__init__.py,sha256=Wsf-AfbFJ5kD-encD776uhjcINJV30NaDKhXpV_GZ-U,749
29
+ mirascope/llm/clients/google/clients.py,sha256=rsWJV5kfwh93RSRE6x45wnBhnP122mLCCuOdy1cD2u4,28073
30
+ mirascope/llm/clients/google/message.py,sha256=ryNsMKPSyBSVXl_H0MQEaSiWC3FFybjxIUuORNSiKTk,179
31
+ mirascope/llm/clients/google/model_ids.py,sha256=zJe9IAX4DIO6JXeTksAx77nwtlz1k2aO0YcJHsNpRx4,338
32
+ mirascope/llm/clients/google/_utils/__init__.py,sha256=U2VNfEJCaqorAJBZDV7p3rFEp1fyk7vSitYFv_5G5Cs,232
33
+ mirascope/llm/clients/google/_utils/decode.py,sha256=z__aZLIL130nCVV5CdAJPTiaCSw61mCrItTHVDffkQQ,9007
34
+ mirascope/llm/clients/google/_utils/encode.py,sha256=XFaRCzMQlUW3sm949pc-rPTavDgxSIjrxOllJ8KgR3k,10482
35
+ mirascope/llm/clients/openai/__init__.py,sha256=LkD4Kkxc-dnpR_K5f539xSfqEaXE1vioDcW7suOJhJE,600
36
+ mirascope/llm/clients/openai/completions/__init__.py,sha256=KUymq4dY6LiOdTLCMctmi2n9DiwGbfL_7K2Ha-AjnIE,912
37
+ mirascope/llm/clients/openai/completions/clients.py,sha256=GjfNV1ewRi1ADgsP0t5cxPdQUWyN65gRSPzDJFMhApg,28086
38
+ mirascope/llm/clients/openai/completions/model_ids.py,sha256=bno8SND8YbzoQE3Tjh9dxYo04luDILD3ndzQvgL5pAg,243
39
+ mirascope/llm/clients/openai/completions/_utils/__init__.py,sha256=U2VNfEJCaqorAJBZDV7p3rFEp1fyk7vSitYFv_5G5Cs,232
40
+ mirascope/llm/clients/openai/completions/_utils/decode.py,sha256=yiXPQwL33YNVxIZAABohqSO3ElEtiShVSki8fPQWf0A,6539
41
+ mirascope/llm/clients/openai/completions/_utils/encode.py,sha256=q2jP8By9TUiv66-oJpWZddn709ZRIGkXniSPTxLR2Co,13227
42
+ mirascope/llm/clients/openai/completions/_utils/model_features.py,sha256=iIm0uxNNfYOJ4qn1wmZjNrkCXNJK5czOPmn5UVBIjz4,3397
43
+ mirascope/llm/clients/openai/responses/__init__.py,sha256=qecYX7X20HJ_n2Elmo2SkF5SuxkuLmpJjUhe0M2ual8,868
44
+ mirascope/llm/clients/openai/responses/clients.py,sha256=dMIdp-Ua_stFAtT99gDp89woUyLyWShO4aAz8G_2nog,27627
45
+ mirascope/llm/clients/openai/responses/model_ids.py,sha256=30OQ8wnIVp6A3I4NsTPBLqfi-SB5dhzyB7ic5p_XXhg,239
46
+ mirascope/llm/clients/openai/responses/_utils/__init__.py,sha256=U2VNfEJCaqorAJBZDV7p3rFEp1fyk7vSitYFv_5G5Cs,232
47
+ mirascope/llm/clients/openai/responses/_utils/decode.py,sha256=4D0clsSEhdF3d_z1dF1D54PmNEDm-88YBFwLldAWKfg,7583
48
+ mirascope/llm/clients/openai/responses/_utils/encode.py,sha256=K4Dod2Hs2ncTKTr26kbFRwmVmKqixRL1nLR51nJ9R20,12374
49
+ mirascope/llm/clients/openai/responses/_utils/model_features.py,sha256=nZdT7Wp38o7-u5-zUK2Oqe8KaxLbULad2DWKZDkXALQ,2295
50
+ mirascope/llm/clients/openai/shared/__init__.py,sha256=x4koHwL1YsrZ-vzJ-RZks9xEVUUwGuMmthxRXlmQUqc,104
51
+ mirascope/llm/clients/openai/shared/_utils.py,sha256=iWlQmkQXIk4J65zosjW0KiShZPEUpqgB9axrJIUfnJ4,1678
52
+ mirascope/llm/content/__init__.py,sha256=jgAxB-QvtT6vZduv1ADIc5yFlhTyyk1PtUuBirRXxRI,1877
53
+ mirascope/llm/content/audio.py,sha256=W6liY1PuQ0pF91eDBnNKW52dr-G7-vnd-rhlSqebx9Y,5311
54
+ mirascope/llm/content/document.py,sha256=oz3LSUEhJh-lEUDCss5p_xkPBDYQhAu9m9SGFr64_pI,2369
55
+ mirascope/llm/content/image.py,sha256=lG0nPvObNEva1XjqUJcZI2T7jZ1xhHaSjqsCncg0XEU,6155
56
+ mirascope/llm/content/text.py,sha256=4lDzXXpDy601RAkv9m85InP_CklvLccFATPThBcY1Ho,1099
57
+ mirascope/llm/content/thought.py,sha256=jWtlVWoS-fDjByD-m2SPdPNNxvQhfwfOio0B95j10qU,1729
58
+ mirascope/llm/content/tool_call.py,sha256=Ogs-_ya50dc4Zb-bfNYFaMVdO5ZHpz4caGmr6ExGrVc,1613
59
+ mirascope/llm/content/tool_output.py,sha256=cCaRvfoR8QFQwnI90rfZjIEkK1GVBia3YJ5BjlOoojs,661
60
+ mirascope/llm/context/__init__.py,sha256=2Bx8CQhTXWbtwMirZ8ppmFKPXjuYezyi10XfmRpAE5I,179
61
+ mirascope/llm/context/_utils.py,sha256=lZ2aoAfT7XuIZvQdqGBzOMarAFZNMW0M2HAfD25flkU,907
62
+ mirascope/llm/context/context.py,sha256=qvmRXsyea34wXP-_0CCe6RwkT3H57dojCw6HHnv8LVc,629
63
+ mirascope/llm/formatting/__init__.py,sha256=N7cvwRFqNC1udcPSZPMLMX-1eNhEtqoZzH1uuAtEX7w,592
64
+ mirascope/llm/formatting/_utils.py,sha256=lb7UbFXuubkeuptZ_E2w-FEokGg1SEXOH5wUP1VXMT8,2292
65
+ mirascope/llm/formatting/format.py,sha256=KraFe0mh6b9J7bkY6yJgM_4nthGVfKXYbpVv-WPe3Ic,3621
66
+ mirascope/llm/formatting/from_call_args.py,sha256=OmCzqWn47W_IXOsl1-F2Um-w4E3q71kFLA9I6L093GI,920
67
+ mirascope/llm/formatting/partial.py,sha256=_7WlcHvjNJIVrYGVCGphu5Y6UyZQlKyENp05QAtyJ0Q,1785
68
+ mirascope/llm/formatting/types.py,sha256=GSoY82khvf53lwh8qEVIoeslVvoinx8cwLhh_NygB9k,4086
69
+ mirascope/llm/mcp/__init__.py,sha256=qVMSydtTuNezpxv91w5JoV9b3-1s743X-bxh012JmjQ,192
70
+ mirascope/llm/mcp/client.py,sha256=jbOn0QohgEu40JXvjENM7VE7pws8em3Jyx-Yn1YWZ_s,3613
71
+ mirascope/llm/messages/__init__.py,sha256=YJ4D-s_vQd76GTRmRstI2i9Yx561plmURf-zrydKjSo,708
72
+ mirascope/llm/messages/message.py,sha256=7pXiNqJkO3_DhkJPVwmI88bfDLf-31lo6Y_LIp3lcP8,6114
73
+ mirascope/llm/models/__init__.py,sha256=5Mo-hH-wqiBnCGcs-WG17JR2zBrAGgjMtZNNN4MRDkU,513
74
+ mirascope/llm/models/models.py,sha256=vi3dTml08J0dc74-9ALY8DorhfJKKwqEfCsecX44Wwk,41577
75
+ mirascope/llm/prompts/__init__.py,sha256=OoNJX1vlhpSUoKsig_RwbcOcNS43CNcAioUsht5KVUg,650
76
+ mirascope/llm/prompts/_utils.py,sha256=dTLeB6YjLniev_R93N0FH9J7zaVXnrej3crRZonRuBA,1760
77
+ mirascope/llm/prompts/decorator.py,sha256=hWqGIW5xdYGo-H_bNIP0zzY-HdwATozfDi8ZU_SUZIQ,8589
78
+ mirascope/llm/prompts/protocols.py,sha256=a5k0_WCGMmNo2exgK-2eBBhDg19olCbM2b002LZPlDg,2690
79
+ mirascope/llm/responses/__init__.py,sha256=bWEY1_AkJxBTtq3ML3cJM2arU1XOoDFCv2QvukFz73c,1308
80
+ mirascope/llm/responses/_utils.py,sha256=JkKXzG6-WqAbbmWLKOmbe7gDpp9xwg7xNHXryFbt6ME,1662
81
+ mirascope/llm/responses/base_response.py,sha256=nReMXPSXqo42KJD9SClyggjkYnEfZn_t1u9RHOonrl4,3684
82
+ mirascope/llm/responses/base_stream_response.py,sha256=x-HBW7_mSm4TiRrvBY60cFkp-qQrJlZjt_VcLeI91d4,27787
83
+ mirascope/llm/responses/finish_reason.py,sha256=1iSVaTZP8zlTwc9Pr4r10AzGkMz0iy0om8vKsHJ0OUY,742
84
+ mirascope/llm/responses/response.py,sha256=nsZr2vygDBBEQAIWwrfjL-YOWJ1MbrUOkwhhY1YU0CU,11774
85
+ mirascope/llm/responses/root_response.py,sha256=pATfCrvwsLE4dgx3CA9ZONqcltqg9yHk9uHPQcFxYsM,6128
86
+ mirascope/llm/responses/stream_response.py,sha256=g8hGoKL94intm5w5mOpAh2QAH1eiCbNIJYYgknIOcM0,23656
87
+ mirascope/llm/responses/streams.py,sha256=TmEFvLVEWHfVYplik61yUWisxe8JGbaZdh7yC7e-axI,10789
88
+ mirascope/llm/tools/__init__.py,sha256=3xIhEzpLlTkuDuvkfwVy3gLPRTTJCJH5GKkqCGjgo3A,772
89
+ mirascope/llm/tools/_utils.py,sha256=bBVsZs8SywWspVGBGR7GGuhSmGa5-wCzeXGV6Woof9Q,872
90
+ mirascope/llm/tools/decorator.py,sha256=kZ90qrE7jZHcW5fg3O-SOh6xiI6yjT4fz548e4AxvQc,5326
91
+ mirascope/llm/tools/protocols.py,sha256=VubSZm-N2QEnBzFTsnj4pRtIgJOx2GQWM4IyqZjDk1Q,3054
92
+ mirascope/llm/tools/tool_schema.py,sha256=vFGVNOa8ZrE6gnwelBcPKYK7-0ULqVtlr1oXZsbVxKY,8358
93
+ mirascope/llm/tools/toolkit.py,sha256=pGXchFSO2H7PxFM2sPQYEMDAYHNaX9bhGEyyou_4vsg,4900
94
+ mirascope/llm/tools/tools.py,sha256=AEgTEZoRTxictYxPDxdX18_Ho2sD8SIa-LUTngNHPiM,5972
95
+ mirascope/llm/types/__init__.py,sha256=lqzi1FkZ-s-D9-KQzVkAHuQQ1zp6B6yM3r9UNo46teE,357
96
+ mirascope/llm/types/dataclass.py,sha256=y4_9M3Yqw_4I-H0V4TwvgGIp6JvRdtpW11NxqufnsJk,247
97
+ mirascope/llm/types/jsonable.py,sha256=KY6l21_RBhlHQRXQ_xy6pUqqbTVb_jVFSU4ykRy_OLU,1104
98
+ mirascope/llm/types/type_vars.py,sha256=OsAcQAZh5T_X8ZTLlP4GC1x3qgVY9rfYSnME8aMTDxw,642
99
+ mirascope-2.0.0a1.dist-info/METADATA,sha256=N1uJYt06NVrGixnQ1x4DsM3YXBsToFxXKzRI4OhxVsI,5417
100
+ mirascope-2.0.0a1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
101
+ mirascope-2.0.0a1.dist-info/licenses/LICENSE,sha256=LAs5Q8mdawTsVdONpDGukwsoc4KEUBmmonDEL39b23Y,1072
102
+ mirascope-2.0.0a1.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