letta-client 0.1.232__py3-none-any.whl → 1.7.2__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 (757) hide show
  1. letta_client/__init__.py +91 -676
  2. letta_client/_base_client.py +2125 -0
  3. letta_client/_client.py +1136 -0
  4. letta_client/_compat.py +219 -0
  5. letta_client/_constants.py +14 -0
  6. letta_client/_exceptions.py +108 -0
  7. letta_client/_files.py +123 -0
  8. letta_client/_models.py +872 -0
  9. letta_client/_qs.py +150 -0
  10. letta_client/_resource.py +43 -0
  11. letta_client/_response.py +832 -0
  12. letta_client/_streaming.py +371 -0
  13. letta_client/_types.py +270 -0
  14. letta_client/_utils/__init__.py +64 -0
  15. letta_client/_utils/_compat.py +45 -0
  16. letta_client/_utils/_datetime_parse.py +136 -0
  17. letta_client/_utils/_logs.py +25 -0
  18. letta_client/_utils/_proxy.py +65 -0
  19. letta_client/_utils/_reflection.py +42 -0
  20. letta_client/_utils/_resources_proxy.py +24 -0
  21. letta_client/_utils/_streams.py +12 -0
  22. letta_client/_utils/_sync.py +58 -0
  23. letta_client/_utils/_transform.py +457 -0
  24. letta_client/_utils/_typing.py +156 -0
  25. letta_client/_utils/_utils.py +421 -0
  26. letta_client/_version.py +4 -0
  27. letta_client/lib/.keep +4 -0
  28. letta_client/pagination.py +280 -0
  29. letta_client/resources/__init__.py +215 -0
  30. letta_client/resources/access_tokens.py +396 -0
  31. letta_client/resources/agents/__init__.py +131 -0
  32. letta_client/resources/agents/agents.py +2148 -0
  33. letta_client/resources/agents/archives.py +260 -0
  34. letta_client/resources/agents/blocks.py +736 -0
  35. letta_client/resources/agents/files.py +541 -0
  36. letta_client/resources/agents/folders.py +422 -0
  37. letta_client/resources/agents/identities.py +260 -0
  38. letta_client/resources/agents/messages.py +1800 -0
  39. letta_client/resources/agents/passages.py +638 -0
  40. letta_client/resources/agents/tools.py +651 -0
  41. letta_client/resources/archives/__init__.py +33 -0
  42. letta_client/resources/archives/archives.py +650 -0
  43. letta_client/resources/archives/passages.py +309 -0
  44. letta_client/resources/blocks/__init__.py +33 -0
  45. letta_client/resources/blocks/agents.py +289 -0
  46. letta_client/resources/blocks/blocks.py +977 -0
  47. letta_client/resources/conversations/__init__.py +33 -0
  48. letta_client/resources/conversations/conversations.py +611 -0
  49. letta_client/resources/conversations/messages.py +650 -0
  50. letta_client/resources/folders/__init__.py +47 -0
  51. letta_client/resources/folders/agents.py +234 -0
  52. letta_client/resources/folders/files.py +581 -0
  53. letta_client/resources/folders/folders.py +734 -0
  54. letta_client/resources/mcp_servers/__init__.py +33 -0
  55. letta_client/resources/mcp_servers/mcp_servers.py +670 -0
  56. letta_client/resources/mcp_servers/tools.py +351 -0
  57. letta_client/resources/messages.py +455 -0
  58. letta_client/resources/models/__init__.py +33 -0
  59. letta_client/resources/models/embeddings.py +149 -0
  60. letta_client/resources/models/models.py +233 -0
  61. letta_client/resources/passages.py +259 -0
  62. letta_client/resources/runs/__init__.py +75 -0
  63. letta_client/resources/runs/messages.py +363 -0
  64. letta_client/resources/runs/runs.py +502 -0
  65. letta_client/resources/runs/steps.py +229 -0
  66. letta_client/resources/runs/trace.py +197 -0
  67. letta_client/resources/runs/usage.py +163 -0
  68. letta_client/resources/steps/__init__.py +75 -0
  69. letta_client/resources/steps/feedback.py +198 -0
  70. letta_client/resources/steps/messages.py +237 -0
  71. letta_client/resources/steps/metrics.py +167 -0
  72. letta_client/resources/steps/steps.py +505 -0
  73. letta_client/resources/steps/trace.py +169 -0
  74. letta_client/resources/tags.py +240 -0
  75. letta_client/resources/templates/__init__.py +33 -0
  76. letta_client/resources/templates/agents.py +229 -0
  77. letta_client/resources/templates/templates.py +540 -0
  78. letta_client/resources/tools.py +1721 -0
  79. letta_client/types/__init__.py +148 -534
  80. letta_client/types/access_token_create_params.py +32 -0
  81. letta_client/types/access_token_create_response.py +34 -0
  82. letta_client/types/access_token_delete_params.py +11 -0
  83. letta_client/types/access_token_list_params.py +23 -0
  84. letta_client/types/access_token_list_response.py +40 -0
  85. letta_client/types/agent_create_params.py +444 -0
  86. letta_client/types/agent_environment_variable.py +40 -63
  87. letta_client/types/agent_export_file_params.py +26 -0
  88. letta_client/types/agent_export_file_response.py +7 -0
  89. letta_client/types/agent_import_file_params.py +57 -0
  90. letta_client/types/agent_import_file_response.py +14 -0
  91. letta_client/types/agent_list_params.py +100 -0
  92. letta_client/types/agent_retrieve_params.py +37 -0
  93. letta_client/types/agent_state.py +651 -138
  94. letta_client/types/agent_type.py +14 -14
  95. letta_client/types/agent_update_params.py +386 -0
  96. letta_client/types/agents/__init__.py +76 -0
  97. letta_client/types/agents/approval_create_param.py +35 -0
  98. letta_client/types/agents/approval_request_message.py +57 -0
  99. letta_client/types/agents/approval_response_message.py +61 -0
  100. letta_client/types/agents/approval_return.py +22 -0
  101. letta_client/types/agents/approval_return_param.py +22 -0
  102. letta_client/types/agents/assistant_message.py +48 -0
  103. letta_client/types/agents/block.py +68 -0
  104. letta_client/types/agents/block_list_params.py +34 -0
  105. letta_client/types/agents/block_update_params.py +63 -0
  106. letta_client/types/agents/event_message.py +40 -0
  107. letta_client/types/agents/file_close_all_response.py +8 -0
  108. letta_client/types/agents/file_list_params.py +40 -0
  109. letta_client/types/agents/file_list_response.py +42 -0
  110. letta_client/types/agents/file_open_response.py +8 -0
  111. letta_client/types/agents/folder_list_params.py +34 -0
  112. letta_client/types/agents/folder_list_response.py +49 -0
  113. letta_client/types/agents/hidden_reasoning_message.py +49 -0
  114. letta_client/types/agents/image_content.py +67 -0
  115. letta_client/types/agents/image_content_param.py +64 -0
  116. letta_client/types/agents/internal_message.py +271 -0
  117. letta_client/types/agents/job_status.py +7 -0
  118. letta_client/types/agents/job_type.py +7 -0
  119. letta_client/types/agents/letta_assistant_message_content_union.py +19 -0
  120. letta_client/types/agents/letta_response.py +76 -0
  121. letta_client/types/agents/letta_streaming_response.py +155 -0
  122. letta_client/types/agents/letta_user_message_content_union.py +14 -0
  123. letta_client/types/agents/message.py +36 -0
  124. letta_client/types/agents/message_cancel_params.py +15 -0
  125. letta_client/types/agents/message_cancel_response.py +8 -0
  126. letta_client/types/agents/message_compact_params.py +145 -0
  127. letta_client/types/agents/message_compact_response.py +13 -0
  128. letta_client/types/agents/message_create_async_params.py +145 -0
  129. letta_client/types/agents/message_create_params.py +181 -0
  130. letta_client/types/agents/message_list_params.py +55 -0
  131. letta_client/types/agents/message_reset_params.py +12 -0
  132. letta_client/types/agents/message_role.py +7 -0
  133. letta_client/types/agents/message_stream_params.py +166 -0
  134. letta_client/types/agents/message_type.py +17 -0
  135. letta_client/types/agents/omitted_reasoning_content.py +20 -0
  136. letta_client/types/agents/omitted_reasoning_content_param.py +20 -0
  137. letta_client/types/agents/passage_create_params.py +23 -0
  138. letta_client/types/agents/passage_create_response.py +10 -0
  139. letta_client/types/agents/passage_list_params.py +28 -0
  140. letta_client/types/agents/passage_list_response.py +10 -0
  141. letta_client/types/agents/passage_search_params.py +35 -0
  142. letta_client/types/agents/passage_search_response.py +29 -0
  143. letta_client/types/agents/reasoning_content.py +27 -0
  144. letta_client/types/agents/reasoning_content_param.py +27 -0
  145. letta_client/types/agents/reasoning_message.py +50 -0
  146. letta_client/types/agents/redacted_reasoning_content.py +18 -0
  147. letta_client/types/agents/redacted_reasoning_content_param.py +17 -0
  148. letta_client/types/agents/run.py +91 -0
  149. letta_client/types/agents/summary_message.py +38 -0
  150. letta_client/types/agents/system_message.py +46 -0
  151. letta_client/types/agents/text_content.py +19 -0
  152. letta_client/types/agents/text_content_param.py +19 -0
  153. letta_client/types/agents/tool_call.py +13 -0
  154. letta_client/types/agents/tool_call_content.py +28 -0
  155. letta_client/types/agents/tool_call_content_param.py +28 -0
  156. letta_client/types/agents/tool_call_delta.py +15 -0
  157. letta_client/types/agents/tool_call_message.py +52 -0
  158. letta_client/types/agents/tool_execution_result.py +33 -0
  159. letta_client/types/agents/tool_list_params.py +34 -0
  160. letta_client/types/agents/tool_return.py +29 -0
  161. letta_client/types/agents/tool_return_content.py +22 -0
  162. letta_client/types/agents/tool_return_content_param.py +21 -0
  163. letta_client/types/agents/tool_return_param.py +30 -0
  164. letta_client/types/agents/tool_run_params.py +16 -0
  165. letta_client/types/agents/tool_update_approval_params.py +21 -0
  166. letta_client/types/agents/user_message.py +50 -0
  167. letta_client/types/anthropic_model_settings.py +62 -0
  168. letta_client/types/anthropic_model_settings_param.py +59 -0
  169. letta_client/types/archive.py +46 -0
  170. letta_client/types/archive_create_params.py +22 -0
  171. letta_client/types/archive_list_params.py +40 -0
  172. letta_client/types/archive_update_params.py +14 -0
  173. letta_client/types/archives/__init__.py +5 -0
  174. letta_client/types/archives/passage_create_params.py +21 -0
  175. letta_client/types/azure_model_settings.py +36 -0
  176. letta_client/types/azure_model_settings_param.py +33 -0
  177. letta_client/types/bedrock_model_settings.py +36 -0
  178. letta_client/types/bedrock_model_settings_param.py +33 -0
  179. letta_client/types/block_create_params.py +59 -0
  180. letta_client/types/block_list_params.py +102 -0
  181. letta_client/types/block_response.py +66 -0
  182. letta_client/types/block_update_params.py +60 -0
  183. letta_client/types/blocks/__init__.py +5 -0
  184. letta_client/types/blocks/agent_list_params.py +61 -0
  185. letta_client/types/child_tool_rule.py +37 -26
  186. letta_client/types/child_tool_rule_param.py +50 -0
  187. letta_client/types/conditional_tool_rule.py +19 -35
  188. letta_client/types/conditional_tool_rule_param.py +31 -0
  189. letta_client/types/continue_tool_rule.py +13 -23
  190. letta_client/types/continue_tool_rule_param.py +22 -0
  191. letta_client/types/conversation.py +42 -0
  192. letta_client/types/conversation_cancel_response.py +8 -0
  193. letta_client/types/conversation_create_params.py +25 -0
  194. letta_client/types/conversation_list_params.py +19 -0
  195. letta_client/types/conversation_list_response.py +10 -0
  196. letta_client/types/conversation_update_params.py +13 -0
  197. letta_client/types/conversations/__init__.py +7 -0
  198. letta_client/types/conversations/message_create_params.py +166 -0
  199. letta_client/types/conversations/message_list_params.py +43 -0
  200. letta_client/types/conversations/message_stream_params.py +28 -0
  201. letta_client/types/create_block_param.py +61 -0
  202. letta_client/types/create_sse_mcp_server_param.py +26 -0
  203. letta_client/types/create_stdio_mcp_server_param.py +25 -0
  204. letta_client/types/create_streamable_http_mcp_server_param.py +26 -0
  205. letta_client/types/deepseek_model_settings.py +36 -0
  206. letta_client/types/deepseek_model_settings_param.py +33 -0
  207. letta_client/types/embedding_config.py +47 -67
  208. letta_client/types/embedding_config_param.py +64 -0
  209. letta_client/types/embedding_model.py +81 -0
  210. letta_client/types/folder.py +28 -66
  211. letta_client/types/folder_create_params.py +33 -0
  212. letta_client/types/folder_list_params.py +37 -0
  213. letta_client/types/folder_update_params.py +27 -0
  214. letta_client/types/folders/__init__.py +12 -0
  215. letta_client/types/folders/agent_list_params.py +34 -0
  216. letta_client/types/folders/agent_list_response.py +8 -0
  217. letta_client/types/folders/file_list_params.py +37 -0
  218. letta_client/types/folders/file_list_response.py +70 -0
  219. letta_client/types/folders/file_retrieve_params.py +15 -0
  220. letta_client/types/folders/file_retrieve_response.py +70 -0
  221. letta_client/types/folders/file_upload_params.py +20 -0
  222. letta_client/types/folders/file_upload_response.py +70 -0
  223. letta_client/types/google_ai_model_settings.py +47 -0
  224. letta_client/types/google_ai_model_settings_param.py +44 -0
  225. letta_client/types/google_vertex_model_settings.py +47 -0
  226. letta_client/types/google_vertex_model_settings_param.py +44 -0
  227. letta_client/types/groq_model_settings.py +36 -0
  228. letta_client/types/groq_model_settings_param.py +33 -0
  229. letta_client/types/health_response.py +13 -0
  230. letta_client/types/init_tool_rule.py +24 -24
  231. letta_client/types/init_tool_rule_param.py +32 -0
  232. letta_client/types/json_object_response_format.py +9 -17
  233. letta_client/types/json_object_response_format_param.py +14 -0
  234. letta_client/types/json_schema_response_format.py +12 -21
  235. letta_client/types/json_schema_response_format_param.py +18 -0
  236. letta_client/types/letta_message_content_union_param.py +26 -0
  237. letta_client/types/llm_config.py +123 -80
  238. letta_client/types/llm_config_param.py +155 -0
  239. letta_client/types/max_count_per_step_tool_rule.py +16 -25
  240. letta_client/types/max_count_per_step_tool_rule_param.py +28 -0
  241. letta_client/types/mcp_server_create_params.py +23 -0
  242. letta_client/types/mcp_server_create_response.py +12 -0
  243. letta_client/types/mcp_server_list_response.py +14 -0
  244. letta_client/types/mcp_server_refresh_params.py +12 -0
  245. letta_client/types/mcp_server_retrieve_response.py +12 -0
  246. letta_client/types/mcp_server_update_params.py +23 -0
  247. letta_client/types/mcp_server_update_response.py +12 -0
  248. letta_client/types/mcp_servers/__init__.py +6 -0
  249. letta_client/types/mcp_servers/tool_list_response.py +10 -0
  250. letta_client/types/mcp_servers/tool_run_params.py +15 -0
  251. letta_client/types/message_create_param.py +38 -0
  252. letta_client/types/message_list_params.py +34 -0
  253. letta_client/types/message_list_response.py +10 -0
  254. letta_client/types/message_retrieve_response.py +10 -0
  255. letta_client/types/message_search_params.py +34 -0
  256. letta_client/types/message_search_response.py +124 -0
  257. letta_client/types/model.py +148 -0
  258. letta_client/types/model_list_params.py +19 -0
  259. letta_client/types/model_list_response.py +10 -0
  260. letta_client/types/models/__init__.py +5 -0
  261. letta_client/types/models/embedding_list_response.py +10 -0
  262. letta_client/types/npm_requirement.py +15 -0
  263. letta_client/types/npm_requirement_param.py +16 -0
  264. letta_client/types/openai_model_settings.py +51 -0
  265. letta_client/types/openai_model_settings_param.py +48 -0
  266. letta_client/types/parent_tool_rule.py +15 -27
  267. letta_client/types/parent_tool_rule_param.py +27 -0
  268. letta_client/types/passage.py +56 -101
  269. letta_client/types/passage_search_params.py +41 -0
  270. letta_client/types/passage_search_response.py +25 -0
  271. letta_client/types/pip_requirement.py +9 -21
  272. letta_client/types/pip_requirement_param.py +16 -0
  273. letta_client/types/provider_category.py +5 -3
  274. letta_client/types/provider_trace.py +43 -48
  275. letta_client/types/provider_type.py +25 -23
  276. letta_client/types/required_before_exit_tool_rule.py +13 -23
  277. letta_client/types/required_before_exit_tool_rule_param.py +22 -0
  278. letta_client/types/requires_approval_tool_rule.py +25 -0
  279. letta_client/types/requires_approval_tool_rule_param.py +25 -0
  280. letta_client/types/run_list_params.py +67 -0
  281. letta_client/types/runs/__init__.py +10 -0
  282. letta_client/types/runs/message_list_params.py +34 -0
  283. letta_client/types/runs/message_stream_params.py +28 -0
  284. letta_client/types/runs/step_list_params.py +28 -0
  285. letta_client/types/runs/trace_retrieve_params.py +12 -0
  286. letta_client/types/runs/trace_retrieve_response.py +8 -0
  287. letta_client/types/runs/usage_retrieve_response.py +31 -0
  288. letta_client/types/sse_mcp_server.py +32 -0
  289. letta_client/types/stdio_mcp_server.py +29 -0
  290. letta_client/types/step.py +71 -97
  291. letta_client/types/step_list_params.py +57 -0
  292. letta_client/types/steps/__init__.py +8 -0
  293. letta_client/types/steps/feedback_create_params.py +18 -0
  294. letta_client/types/steps/message_list_params.py +34 -0
  295. letta_client/types/steps/message_list_response.py +36 -0
  296. letta_client/types/steps/metric_retrieve_response.py +45 -0
  297. letta_client/types/stop_reason_type.py +17 -5
  298. letta_client/types/streamable_http_mcp_server.py +32 -0
  299. letta_client/types/tag_list_params.py +40 -0
  300. letta_client/types/tag_list_response.py +8 -0
  301. letta_client/types/template_create_params.py +46 -0
  302. letta_client/types/template_create_response.py +29 -0
  303. letta_client/types/template_delete_response.py +9 -0
  304. letta_client/types/template_update_params.py +25 -0
  305. letta_client/types/template_update_response.py +13 -0
  306. letta_client/types/templates/__init__.py +6 -0
  307. letta_client/types/templates/agent_create_params.py +50 -0
  308. letta_client/types/templates/agent_create_response.py +20 -0
  309. letta_client/types/terminal_tool_rule.py +13 -23
  310. letta_client/types/terminal_tool_rule_param.py +22 -0
  311. letta_client/types/text_response_format.py +9 -17
  312. letta_client/types/text_response_format_param.py +14 -0
  313. letta_client/types/together_model_settings.py +36 -0
  314. letta_client/types/together_model_settings_param.py +33 -0
  315. letta_client/types/tool.py +154 -81
  316. letta_client/types/tool_create_params.py +53 -0
  317. letta_client/types/tool_list_params.py +57 -0
  318. letta_client/types/tool_return_message.py +44 -31
  319. letta_client/types/tool_search_params.py +27 -0
  320. letta_client/types/tool_search_response.py +10 -0
  321. letta_client/types/tool_search_result.py +27 -0
  322. letta_client/types/tool_type.py +16 -17
  323. letta_client/types/tool_update_params.py +57 -0
  324. letta_client/types/tool_upsert_params.py +53 -0
  325. letta_client/types/update_sse_mcp_server_param.py +26 -0
  326. letta_client/types/update_stdio_mcp_server_param.py +25 -0
  327. letta_client/types/update_streamable_http_mcp_server_param.py +26 -0
  328. letta_client/types/vector_db_provider.py +7 -0
  329. letta_client/types/xai_model_settings.py +36 -0
  330. letta_client/types/xai_model_settings_param.py +33 -0
  331. letta_client-1.7.2.dist-info/METADATA +436 -0
  332. letta_client-1.7.2.dist-info/RECORD +335 -0
  333. {letta_client-0.1.232.dist-info → letta_client-1.7.2.dist-info}/WHEEL +1 -1
  334. letta_client-1.7.2.dist-info/licenses/LICENSE +201 -0
  335. letta_client/agents/__init__.py +0 -77
  336. letta_client/agents/blocks/__init__.py +0 -2
  337. letta_client/agents/blocks/client.py +0 -793
  338. letta_client/agents/client.py +0 -2371
  339. letta_client/agents/context/__init__.py +0 -2
  340. letta_client/agents/context/client.py +0 -149
  341. letta_client/agents/core_memory/__init__.py +0 -2
  342. letta_client/agents/core_memory/client.py +0 -147
  343. letta_client/agents/files/__init__.py +0 -2
  344. letta_client/agents/files/client.py +0 -430
  345. letta_client/agents/folders/__init__.py +0 -2
  346. letta_client/agents/folders/client.py +0 -412
  347. letta_client/agents/groups/__init__.py +0 -2
  348. letta_client/agents/groups/client.py +0 -169
  349. letta_client/agents/memory_variables/__init__.py +0 -5
  350. letta_client/agents/memory_variables/client.py +0 -152
  351. letta_client/agents/memory_variables/types/__init__.py +0 -5
  352. letta_client/agents/memory_variables/types/memory_variables_list_response.py +0 -19
  353. letta_client/agents/messages/__init__.py +0 -15
  354. letta_client/agents/messages/client.py +0 -1638
  355. letta_client/agents/messages/types/__init__.py +0 -13
  356. letta_client/agents/messages/types/letta_streaming_response.py +0 -24
  357. letta_client/agents/messages/types/messages_modify_request.py +0 -11
  358. letta_client/agents/messages/types/messages_modify_response.py +0 -20
  359. letta_client/agents/messages/types/messages_preview_raw_payload_request.py +0 -7
  360. letta_client/agents/passages/__init__.py +0 -2
  361. letta_client/agents/passages/client.py +0 -793
  362. letta_client/agents/sources/__init__.py +0 -2
  363. letta_client/agents/sources/client.py +0 -412
  364. letta_client/agents/templates/__init__.py +0 -5
  365. letta_client/agents/templates/client.py +0 -588
  366. letta_client/agents/templates/types/__init__.py +0 -7
  367. letta_client/agents/templates/types/templates_create_response.py +0 -22
  368. letta_client/agents/templates/types/templates_create_version_request_return_agent_state.py +0 -5
  369. letta_client/agents/templates/types/templates_migrate_response.py +0 -19
  370. letta_client/agents/tools/__init__.py +0 -2
  371. letta_client/agents/tools/client.py +0 -412
  372. letta_client/agents/types/__init__.py +0 -33
  373. letta_client/agents/types/agents_search_request_search_item.py +0 -16
  374. letta_client/agents/types/agents_search_request_search_item_field.py +0 -22
  375. letta_client/agents/types/agents_search_request_search_item_field_operator.py +0 -5
  376. letta_client/agents/types/agents_search_request_search_item_one.py +0 -22
  377. letta_client/agents/types/agents_search_request_search_item_one_operator.py +0 -5
  378. letta_client/agents/types/agents_search_request_search_item_three.py +0 -21
  379. letta_client/agents/types/agents_search_request_search_item_two.py +0 -21
  380. letta_client/agents/types/agents_search_request_search_item_zero.py +0 -20
  381. letta_client/agents/types/agents_search_request_sort_by.py +0 -5
  382. letta_client/agents/types/agents_search_response.py +0 -23
  383. letta_client/agents/types/create_agent_request_response_format.py +0 -8
  384. letta_client/agents/types/create_agent_request_tool_rules_item.py +0 -22
  385. letta_client/agents/types/update_agent_response_format.py +0 -8
  386. letta_client/agents/types/update_agent_tool_rules_item.py +0 -22
  387. letta_client/base_client.py +0 -232
  388. letta_client/batches/__init__.py +0 -2
  389. letta_client/batches/client.py +0 -587
  390. letta_client/blocks/__init__.py +0 -5
  391. letta_client/blocks/agents/__init__.py +0 -2
  392. letta_client/blocks/agents/client.py +0 -171
  393. letta_client/blocks/client.py +0 -1118
  394. letta_client/client.py +0 -661
  395. letta_client/client_side_access_tokens/__init__.py +0 -29
  396. letta_client/client_side_access_tokens/client.py +0 -524
  397. letta_client/client_side_access_tokens/types/__init__.py +0 -43
  398. letta_client/client_side_access_tokens/types/client_side_access_tokens_create_request_policy_item.py +0 -24
  399. letta_client/client_side_access_tokens/types/client_side_access_tokens_create_request_policy_item_access_item.py +0 -7
  400. letta_client/client_side_access_tokens/types/client_side_access_tokens_create_response.py +0 -25
  401. letta_client/client_side_access_tokens/types/client_side_access_tokens_create_response_policy.py +0 -23
  402. letta_client/client_side_access_tokens/types/client_side_access_tokens_create_response_policy_data_item.py +0 -24
  403. letta_client/client_side_access_tokens/types/client_side_access_tokens_create_response_policy_data_item_access_item.py +0 -7
  404. letta_client/client_side_access_tokens/types/client_side_access_tokens_list_client_side_access_tokens_response.py +0 -25
  405. letta_client/client_side_access_tokens/types/client_side_access_tokens_list_client_side_access_tokens_response_tokens_item.py +0 -27
  406. letta_client/client_side_access_tokens/types/client_side_access_tokens_list_client_side_access_tokens_response_tokens_item_policy.py +0 -23
  407. letta_client/client_side_access_tokens/types/client_side_access_tokens_list_client_side_access_tokens_response_tokens_item_policy_data_item.py +0 -24
  408. letta_client/client_side_access_tokens/types/client_side_access_tokens_list_client_side_access_tokens_response_tokens_item_policy_data_item_access_item.py +0 -7
  409. letta_client/core/__init__.py +0 -51
  410. letta_client/core/api_error.py +0 -15
  411. letta_client/core/client_wrapper.py +0 -77
  412. letta_client/core/datetime_utils.py +0 -28
  413. letta_client/core/file.py +0 -67
  414. letta_client/core/http_client.py +0 -499
  415. letta_client/core/jsonable_encoder.py +0 -101
  416. letta_client/core/pydantic_utilities.py +0 -296
  417. letta_client/core/query_encoder.py +0 -58
  418. letta_client/core/remove_none_from_dict.py +0 -11
  419. letta_client/core/request_options.py +0 -35
  420. letta_client/core/serialization.py +0 -272
  421. letta_client/core/unchecked_base_model.py +0 -305
  422. letta_client/embedding_models/__init__.py +0 -2
  423. letta_client/embedding_models/client.py +0 -136
  424. letta_client/environment.py +0 -8
  425. letta_client/errors/__init__.py +0 -17
  426. letta_client/errors/bad_request_error.py +0 -9
  427. letta_client/errors/conflict_error.py +0 -9
  428. letta_client/errors/internal_server_error.py +0 -9
  429. letta_client/errors/not_found_error.py +0 -9
  430. letta_client/errors/payment_required_error.py +0 -9
  431. letta_client/errors/unprocessable_entity_error.py +0 -9
  432. letta_client/folders/__init__.py +0 -5
  433. letta_client/folders/client.py +0 -1307
  434. letta_client/folders/files/__init__.py +0 -2
  435. letta_client/folders/files/client.py +0 -474
  436. letta_client/folders/passages/__init__.py +0 -2
  437. letta_client/folders/passages/client.py +0 -189
  438. letta_client/groups/__init__.py +0 -14
  439. letta_client/groups/client.py +0 -964
  440. letta_client/groups/messages/__init__.py +0 -5
  441. letta_client/groups/messages/client.py +0 -1015
  442. letta_client/groups/messages/types/__init__.py +0 -7
  443. letta_client/groups/messages/types/letta_streaming_response.py +0 -20
  444. letta_client/groups/messages/types/messages_modify_request.py +0 -11
  445. letta_client/groups/messages/types/messages_modify_response.py +0 -20
  446. letta_client/groups/types/__init__.py +0 -6
  447. letta_client/groups/types/group_create_manager_config.py +0 -12
  448. letta_client/groups/types/group_update_manager_config.py +0 -16
  449. letta_client/health/__init__.py +0 -2
  450. letta_client/health/client.py +0 -110
  451. letta_client/identities/__init__.py +0 -5
  452. letta_client/identities/client.py +0 -1201
  453. letta_client/identities/properties/__init__.py +0 -2
  454. letta_client/identities/properties/client.py +0 -183
  455. letta_client/jobs/__init__.py +0 -2
  456. letta_client/jobs/client.py +0 -749
  457. letta_client/messages/__init__.py +0 -2
  458. letta_client/messages/client.py +0 -213
  459. letta_client/models/__init__.py +0 -2
  460. letta_client/models/client.py +0 -174
  461. letta_client/projects/__init__.py +0 -5
  462. letta_client/projects/client.py +0 -150
  463. letta_client/projects/types/__init__.py +0 -6
  464. letta_client/projects/types/projects_list_response.py +0 -23
  465. letta_client/projects/types/projects_list_response_projects_item.py +0 -21
  466. letta_client/providers/__init__.py +0 -2
  467. letta_client/providers/client.py +0 -789
  468. letta_client/runs/__init__.py +0 -5
  469. letta_client/runs/client.py +0 -551
  470. letta_client/runs/messages/__init__.py +0 -2
  471. letta_client/runs/messages/client.py +0 -236
  472. letta_client/runs/steps/__init__.py +0 -2
  473. letta_client/runs/steps/client.py +0 -219
  474. letta_client/runs/usage/__init__.py +0 -2
  475. letta_client/runs/usage/client.py +0 -147
  476. letta_client/sources/__init__.py +0 -5
  477. letta_client/sources/client.py +0 -1462
  478. letta_client/sources/files/__init__.py +0 -2
  479. letta_client/sources/files/client.py +0 -474
  480. letta_client/sources/passages/__init__.py +0 -2
  481. letta_client/sources/passages/client.py +0 -189
  482. letta_client/steps/__init__.py +0 -6
  483. letta_client/steps/client.py +0 -408
  484. letta_client/steps/feedback/__init__.py +0 -2
  485. letta_client/steps/feedback/client.py +0 -168
  486. letta_client/steps/types/__init__.py +0 -5
  487. letta_client/steps/types/steps_list_request_feedback.py +0 -5
  488. letta_client/tags/__init__.py +0 -2
  489. letta_client/tags/client.py +0 -171
  490. letta_client/telemetry/__init__.py +0 -2
  491. letta_client/telemetry/client.py +0 -145
  492. letta_client/templates/__init__.py +0 -18
  493. letta_client/templates/agents/__init__.py +0 -13
  494. letta_client/templates/agents/client.py +0 -256
  495. letta_client/templates/agents/types/__init__.py +0 -11
  496. letta_client/templates/agents/types/agents_create_request_initial_message_sequence_item.py +0 -26
  497. letta_client/templates/agents/types/agents_create_request_initial_message_sequence_item_role.py +0 -7
  498. letta_client/templates/agents/types/agents_create_response.py +0 -20
  499. letta_client/templates/client.py +0 -162
  500. letta_client/templates/types/__init__.py +0 -6
  501. letta_client/templates/types/templates_list_response.py +0 -23
  502. letta_client/templates/types/templates_list_response_templates_item.py +0 -20
  503. letta_client/tools/__init__.py +0 -27
  504. letta_client/tools/client.py +0 -3063
  505. letta_client/tools/types/__init__.py +0 -25
  506. letta_client/tools/types/add_mcp_server_request.py +0 -8
  507. letta_client/tools/types/add_mcp_server_response_item.py +0 -8
  508. letta_client/tools/types/connect_mcp_server_request.py +0 -8
  509. letta_client/tools/types/connect_mcp_server_response_event.py +0 -8
  510. letta_client/tools/types/delete_mcp_server_response_item.py +0 -8
  511. letta_client/tools/types/list_mcp_servers_response_value.py +0 -8
  512. letta_client/tools/types/streaming_response.py +0 -23
  513. letta_client/tools/types/test_mcp_server_request.py +0 -8
  514. letta_client/tools/types/update_mcp_server_request.py +0 -8
  515. letta_client/tools/types/update_mcp_server_response.py +0 -8
  516. letta_client/types/action_model.py +0 -38
  517. letta_client/types/action_parameters_model.py +0 -27
  518. letta_client/types/action_response_model.py +0 -27
  519. letta_client/types/agent_schema.py +0 -49
  520. letta_client/types/agent_schema_tool_rules_item.py +0 -11
  521. letta_client/types/agent_state_response_format.py +0 -8
  522. letta_client/types/agent_state_tool_rules_item.py +0 -22
  523. letta_client/types/app_auth_scheme.py +0 -34
  524. letta_client/types/app_auth_scheme_auth_mode.py +0 -19
  525. letta_client/types/app_model.py +0 -44
  526. letta_client/types/assistant_message.py +0 -42
  527. letta_client/types/assistant_message_content.py +0 -6
  528. letta_client/types/audio.py +0 -19
  529. letta_client/types/auth_request.py +0 -22
  530. letta_client/types/auth_response.py +0 -29
  531. letta_client/types/auth_scheme_field.py +0 -30
  532. letta_client/types/bad_request_error_body.py +0 -19
  533. letta_client/types/base_64_image.py +0 -33
  534. letta_client/types/base_tool_rule_schema.py +0 -20
  535. letta_client/types/batch_job.py +0 -81
  536. letta_client/types/block.py +0 -97
  537. letta_client/types/block_update.py +0 -71
  538. letta_client/types/chat_completion_assistant_message_param.py +0 -29
  539. letta_client/types/chat_completion_assistant_message_param_content.py +0 -8
  540. letta_client/types/chat_completion_assistant_message_param_content_item.py +0 -9
  541. letta_client/types/chat_completion_audio_param.py +0 -22
  542. letta_client/types/chat_completion_audio_param_format.py +0 -5
  543. letta_client/types/chat_completion_audio_param_voice.py +0 -15
  544. letta_client/types/chat_completion_content_part_image_param.py +0 -21
  545. letta_client/types/chat_completion_content_part_input_audio_param.py +0 -21
  546. letta_client/types/chat_completion_content_part_refusal_param.py +0 -20
  547. letta_client/types/chat_completion_content_part_text_param.py +0 -20
  548. letta_client/types/chat_completion_developer_message_param.py +0 -22
  549. letta_client/types/chat_completion_developer_message_param_content.py +0 -6
  550. letta_client/types/chat_completion_function_call_option_param.py +0 -19
  551. letta_client/types/chat_completion_function_message_param.py +0 -21
  552. letta_client/types/chat_completion_message_tool_call.py +0 -22
  553. letta_client/types/chat_completion_message_tool_call_param.py +0 -24
  554. letta_client/types/chat_completion_named_tool_choice_param.py +0 -23
  555. letta_client/types/chat_completion_prediction_content_param.py +0 -21
  556. letta_client/types/chat_completion_prediction_content_param_content.py +0 -6
  557. letta_client/types/chat_completion_stream_options_param.py +0 -19
  558. letta_client/types/chat_completion_system_message_param.py +0 -22
  559. letta_client/types/chat_completion_system_message_param_content.py +0 -6
  560. letta_client/types/chat_completion_tool_message_param.py +0 -22
  561. letta_client/types/chat_completion_tool_message_param_content.py +0 -6
  562. letta_client/types/chat_completion_tool_param.py +0 -21
  563. letta_client/types/chat_completion_user_message_param.py +0 -22
  564. letta_client/types/chat_completion_user_message_param_content.py +0 -6
  565. letta_client/types/chat_completion_user_message_param_content_item.py +0 -14
  566. letta_client/types/child_tool_rule_schema.py +0 -21
  567. letta_client/types/code_input.py +0 -22
  568. letta_client/types/completion_create_params_non_streaming.py +0 -64
  569. letta_client/types/completion_create_params_non_streaming_function_call.py +0 -8
  570. letta_client/types/completion_create_params_non_streaming_messages_item.py +0 -18
  571. letta_client/types/completion_create_params_non_streaming_modalities_item.py +0 -5
  572. letta_client/types/completion_create_params_non_streaming_model.py +0 -62
  573. letta_client/types/completion_create_params_non_streaming_reasoning_effort.py +0 -5
  574. letta_client/types/completion_create_params_non_streaming_response_format.py +0 -10
  575. letta_client/types/completion_create_params_non_streaming_service_tier.py +0 -7
  576. letta_client/types/completion_create_params_non_streaming_stop.py +0 -5
  577. letta_client/types/completion_create_params_non_streaming_tool_choice.py +0 -8
  578. letta_client/types/completion_create_params_streaming.py +0 -64
  579. letta_client/types/completion_create_params_streaming_function_call.py +0 -8
  580. letta_client/types/completion_create_params_streaming_messages_item.py +0 -18
  581. letta_client/types/completion_create_params_streaming_modalities_item.py +0 -5
  582. letta_client/types/completion_create_params_streaming_model.py +0 -62
  583. letta_client/types/completion_create_params_streaming_reasoning_effort.py +0 -5
  584. letta_client/types/completion_create_params_streaming_response_format.py +0 -10
  585. letta_client/types/completion_create_params_streaming_service_tier.py +0 -7
  586. letta_client/types/completion_create_params_streaming_stop.py +0 -5
  587. letta_client/types/completion_create_params_streaming_tool_choice.py +0 -8
  588. letta_client/types/components_schemas_text_content.py +0 -5
  589. letta_client/types/conditional_tool_rule_schema.py +0 -23
  590. letta_client/types/conflict_error_body.py +0 -21
  591. letta_client/types/context_window_overview.py +0 -108
  592. letta_client/types/core_memory_block_schema.py +0 -31
  593. letta_client/types/create_block.py +0 -67
  594. letta_client/types/duplicate_file_handling.py +0 -5
  595. letta_client/types/dynamic_manager.py +0 -33
  596. letta_client/types/dynamic_manager_update.py +0 -33
  597. letta_client/types/e_2_b_sandbox_config.py +0 -32
  598. letta_client/types/embedding_config_embedding_endpoint_type.py +0 -29
  599. letta_client/types/feedback_type.py +0 -5
  600. letta_client/types/file.py +0 -21
  601. letta_client/types/file_block.py +0 -103
  602. letta_client/types/file_file.py +0 -21
  603. letta_client/types/file_metadata.py +0 -103
  604. letta_client/types/file_processing_status.py +0 -5
  605. letta_client/types/file_stats.py +0 -36
  606. letta_client/types/function_call.py +0 -20
  607. letta_client/types/function_definition_input.py +0 -22
  608. letta_client/types/function_definition_output.py +0 -22
  609. letta_client/types/function_output.py +0 -20
  610. letta_client/types/function_tool.py +0 -21
  611. letta_client/types/generate_tool_input.py +0 -42
  612. letta_client/types/generate_tool_output.py +0 -33
  613. letta_client/types/group.py +0 -88
  614. letta_client/types/health.py +0 -24
  615. letta_client/types/hidden_reasoning_message.py +0 -43
  616. letta_client/types/hidden_reasoning_message_state.py +0 -5
  617. letta_client/types/http_validation_error.py +0 -20
  618. letta_client/types/identity.py +0 -59
  619. letta_client/types/identity_property.py +0 -38
  620. letta_client/types/identity_property_type.py +0 -5
  621. letta_client/types/identity_property_value.py +0 -5
  622. letta_client/types/identity_type.py +0 -5
  623. letta_client/types/image_content.py +0 -24
  624. letta_client/types/image_content_source.py +0 -8
  625. letta_client/types/image_url.py +0 -21
  626. letta_client/types/image_url_detail.py +0 -5
  627. letta_client/types/input_audio.py +0 -21
  628. letta_client/types/input_audio_format.py +0 -5
  629. letta_client/types/internal_server_error_body.py +0 -19
  630. letta_client/types/job.py +0 -96
  631. letta_client/types/job_status.py +0 -7
  632. letta_client/types/job_type.py +0 -5
  633. letta_client/types/json_schema.py +0 -26
  634. letta_client/types/letta_batch_messages.py +0 -20
  635. letta_client/types/letta_batch_request.py +0 -59
  636. letta_client/types/letta_image.py +0 -38
  637. letta_client/types/letta_message_content_union.py +0 -13
  638. letta_client/types/letta_message_union.py +0 -20
  639. letta_client/types/letta_ping.py +0 -26
  640. letta_client/types/letta_request.py +0 -54
  641. letta_client/types/letta_request_config.py +0 -38
  642. letta_client/types/letta_response.py +0 -40
  643. letta_client/types/letta_stop_reason.py +0 -32
  644. letta_client/types/letta_streaming_request.py +0 -59
  645. letta_client/types/letta_usage_statistics.py +0 -59
  646. letta_client/types/letta_user_message_content_union.py +0 -7
  647. letta_client/types/llm_config_compatibility_type.py +0 -5
  648. letta_client/types/llm_config_model_endpoint_type.py +0 -31
  649. letta_client/types/llm_config_reasoning_effort.py +0 -5
  650. letta_client/types/local_sandbox_config.py +0 -38
  651. letta_client/types/manager_type.py +0 -7
  652. letta_client/types/max_count_per_step_tool_rule_schema.py +0 -21
  653. letta_client/types/mcp_server_type.py +0 -5
  654. letta_client/types/mcp_tool.py +0 -38
  655. letta_client/types/memory.py +0 -38
  656. letta_client/types/message.py +0 -139
  657. letta_client/types/message_content_item.py +0 -20
  658. letta_client/types/message_create.py +0 -58
  659. letta_client/types/message_create_content.py +0 -6
  660. letta_client/types/message_create_role.py +0 -5
  661. letta_client/types/message_role.py +0 -5
  662. letta_client/types/message_schema.py +0 -29
  663. letta_client/types/message_type.py +0 -16
  664. letta_client/types/not_found_error_body.py +0 -19
  665. letta_client/types/not_found_error_body_message.py +0 -11
  666. letta_client/types/omitted_reasoning_content.py +0 -19
  667. letta_client/types/openai_types_chat_chat_completion_message_tool_call_param_function.py +0 -20
  668. letta_client/types/openai_types_chat_chat_completion_named_tool_choice_param_function.py +0 -19
  669. letta_client/types/openai_types_chat_completion_create_params_function.py +0 -21
  670. letta_client/types/organization.py +0 -38
  671. letta_client/types/organization_create.py +0 -27
  672. letta_client/types/organization_sources_stats.py +0 -42
  673. letta_client/types/organization_update.py +0 -27
  674. letta_client/types/parameter_properties.py +0 -20
  675. letta_client/types/parameters_schema.py +0 -22
  676. letta_client/types/payment_required_error_body.py +0 -20
  677. letta_client/types/provider.py +0 -65
  678. letta_client/types/provider_check.py +0 -38
  679. letta_client/types/reasoning_content.py +0 -33
  680. letta_client/types/reasoning_message.py +0 -44
  681. letta_client/types/reasoning_message_source.py +0 -5
  682. letta_client/types/redacted_reasoning_content.py +0 -23
  683. letta_client/types/response_format_json_object.py +0 -19
  684. letta_client/types/response_format_json_schema.py +0 -21
  685. letta_client/types/response_format_text.py +0 -19
  686. letta_client/types/round_robin_manager.py +0 -23
  687. letta_client/types/round_robin_manager_update.py +0 -23
  688. letta_client/types/run.py +0 -99
  689. letta_client/types/sandbox_config.py +0 -54
  690. letta_client/types/sandbox_config_create.py +0 -23
  691. letta_client/types/sandbox_config_create_config.py +0 -7
  692. letta_client/types/sandbox_config_update.py +0 -27
  693. letta_client/types/sandbox_config_update_config.py +0 -7
  694. letta_client/types/sandbox_environment_variable.py +0 -63
  695. letta_client/types/sandbox_environment_variable_create.py +0 -32
  696. letta_client/types/sandbox_environment_variable_update.py +0 -32
  697. letta_client/types/sandbox_type.py +0 -5
  698. letta_client/types/sleeptime_manager.py +0 -28
  699. letta_client/types/sleeptime_manager_update.py +0 -28
  700. letta_client/types/source.py +0 -81
  701. letta_client/types/source_create.py +0 -57
  702. letta_client/types/source_stats.py +0 -47
  703. letta_client/types/source_update.py +0 -47
  704. letta_client/types/sse_server_config.py +0 -55
  705. letta_client/types/stdio_server_config.py +0 -39
  706. letta_client/types/step_feedback.py +0 -5
  707. letta_client/types/streamable_http_server_config.py +0 -55
  708. letta_client/types/supervisor_manager.py +0 -23
  709. letta_client/types/supervisor_manager_update.py +0 -23
  710. letta_client/types/system_message.py +0 -41
  711. letta_client/types/tag_schema.py +0 -19
  712. letta_client/types/text_content.py +0 -23
  713. letta_client/types/tool_annotations.py +0 -36
  714. letta_client/types/tool_call.py +0 -21
  715. letta_client/types/tool_call_content.py +0 -33
  716. letta_client/types/tool_call_delta.py +0 -21
  717. letta_client/types/tool_call_message.py +0 -39
  718. letta_client/types/tool_call_message_tool_call.py +0 -7
  719. letta_client/types/tool_create.py +0 -58
  720. letta_client/types/tool_env_var_schema.py +0 -23
  721. letta_client/types/tool_json_schema.py +0 -24
  722. letta_client/types/tool_return.py +0 -33
  723. letta_client/types/tool_return_content.py +0 -33
  724. letta_client/types/tool_return_message_status.py +0 -5
  725. letta_client/types/tool_return_status.py +0 -5
  726. letta_client/types/tool_schema.py +0 -35
  727. letta_client/types/update_assistant_message.py +0 -24
  728. letta_client/types/update_assistant_message_content.py +0 -6
  729. letta_client/types/update_reasoning_message.py +0 -20
  730. letta_client/types/update_ssemcp_server.py +0 -41
  731. letta_client/types/update_stdio_mcp_server.py +0 -32
  732. letta_client/types/update_streamable_httpmcp_server.py +0 -46
  733. letta_client/types/update_system_message.py +0 -23
  734. letta_client/types/update_user_message.py +0 -24
  735. letta_client/types/update_user_message_content.py +0 -6
  736. letta_client/types/url_image.py +0 -23
  737. letta_client/types/usage_statistics.py +0 -25
  738. letta_client/types/usage_statistics_completion_token_details.py +0 -19
  739. letta_client/types/usage_statistics_prompt_token_details.py +0 -19
  740. letta_client/types/user.py +0 -52
  741. letta_client/types/user_create.py +0 -22
  742. letta_client/types/user_message.py +0 -42
  743. letta_client/types/user_message_content.py +0 -6
  744. letta_client/types/user_update.py +0 -27
  745. letta_client/types/validation_error.py +0 -22
  746. letta_client/types/validation_error_loc_item.py +0 -5
  747. letta_client/types/voice_sleeptime_manager.py +0 -33
  748. letta_client/types/voice_sleeptime_manager_update.py +0 -33
  749. letta_client/types/web_search_options.py +0 -22
  750. letta_client/types/web_search_options_search_context_size.py +0 -5
  751. letta_client/types/web_search_options_user_location.py +0 -21
  752. letta_client/types/web_search_options_user_location_approximate.py +0 -22
  753. letta_client/version.py +0 -3
  754. letta_client/voice/__init__.py +0 -2
  755. letta_client/voice/client.py +0 -177
  756. letta_client-0.1.232.dist-info/METADATA +0 -190
  757. letta_client-0.1.232.dist-info/RECORD +0 -454
@@ -1,499 +0,0 @@
1
- # This file was auto-generated by Fern from our API Definition.
2
-
3
- import asyncio
4
- import email.utils
5
- import json
6
- import re
7
- import time
8
- import typing
9
- import urllib.parse
10
- from contextlib import asynccontextmanager, contextmanager
11
- from random import random
12
-
13
- import httpx
14
-
15
- from .file import File, convert_file_dict_to_httpx_tuples
16
- from .jsonable_encoder import jsonable_encoder
17
- from .query_encoder import encode_query
18
- from .remove_none_from_dict import remove_none_from_dict
19
- from .request_options import RequestOptions
20
-
21
- INITIAL_RETRY_DELAY_SECONDS = 0.5
22
- MAX_RETRY_DELAY_SECONDS = 10
23
- MAX_RETRY_DELAY_SECONDS_FROM_HEADER = 30
24
-
25
-
26
- def _parse_retry_after(response_headers: httpx.Headers) -> typing.Optional[float]:
27
- """
28
- This function parses the `Retry-After` header in a HTTP response and returns the number of seconds to wait.
29
-
30
- Inspired by the urllib3 retry implementation.
31
- """
32
- retry_after_ms = response_headers.get("retry-after-ms")
33
- if retry_after_ms is not None:
34
- try:
35
- return int(retry_after_ms) / 1000 if retry_after_ms > 0 else 0
36
- except Exception:
37
- pass
38
-
39
- retry_after = response_headers.get("retry-after")
40
- if retry_after is None:
41
- return None
42
-
43
- # Attempt to parse the header as an int.
44
- if re.match(r"^\s*[0-9]+\s*$", retry_after):
45
- seconds = float(retry_after)
46
- # Fallback to parsing it as a date.
47
- else:
48
- retry_date_tuple = email.utils.parsedate_tz(retry_after)
49
- if retry_date_tuple is None:
50
- return None
51
- if retry_date_tuple[9] is None: # Python 2
52
- # Assume UTC if no timezone was specified
53
- # On Python2.7, parsedate_tz returns None for a timezone offset
54
- # instead of 0 if no timezone is given, where mktime_tz treats
55
- # a None timezone offset as local time.
56
- retry_date_tuple = retry_date_tuple[:9] + (0,) + retry_date_tuple[10:]
57
-
58
- retry_date = email.utils.mktime_tz(retry_date_tuple)
59
- seconds = retry_date - time.time()
60
-
61
- if seconds < 0:
62
- seconds = 0
63
-
64
- return seconds
65
-
66
-
67
- def _retry_timeout(response: httpx.Response, retries: int) -> float:
68
- """
69
- Determine the amount of time to wait before retrying a request.
70
- This function begins by trying to parse a retry-after header from the response, and then proceeds to use exponential backoff
71
- with a jitter to determine the number of seconds to wait.
72
- """
73
-
74
- # If the API asks us to wait a certain amount of time (and it's a reasonable amount), just do what it says.
75
- retry_after = _parse_retry_after(response.headers)
76
- if retry_after is not None and retry_after <= MAX_RETRY_DELAY_SECONDS_FROM_HEADER:
77
- return retry_after
78
-
79
- # Apply exponential backoff, capped at MAX_RETRY_DELAY_SECONDS.
80
- retry_delay = min(INITIAL_RETRY_DELAY_SECONDS * pow(2.0, retries), MAX_RETRY_DELAY_SECONDS)
81
-
82
- # Add a randomness / jitter to the retry delay to avoid overwhelming the server with retries.
83
- timeout = retry_delay * (1 - 0.25 * random())
84
- return timeout if timeout >= 0 else 0
85
-
86
-
87
- def _should_retry(response: httpx.Response) -> bool:
88
- retryable_400s = [429, 408, 409]
89
- return response.status_code >= 500 or response.status_code in retryable_400s
90
-
91
-
92
- def remove_omit_from_dict(
93
- original: typing.Dict[str, typing.Optional[typing.Any]],
94
- omit: typing.Optional[typing.Any],
95
- ) -> typing.Dict[str, typing.Any]:
96
- if omit is None:
97
- return original
98
- new: typing.Dict[str, typing.Any] = {}
99
- for key, value in original.items():
100
- if value is not omit:
101
- new[key] = value
102
- return new
103
-
104
-
105
- def maybe_filter_request_body(
106
- data: typing.Optional[typing.Any],
107
- request_options: typing.Optional[RequestOptions],
108
- omit: typing.Optional[typing.Any],
109
- ) -> typing.Optional[typing.Any]:
110
- if data is None:
111
- return (
112
- jsonable_encoder(request_options.get("additional_body_parameters", {})) or {}
113
- if request_options is not None
114
- else None
115
- )
116
- elif not isinstance(data, typing.Mapping):
117
- data_content = jsonable_encoder(data)
118
- else:
119
- data_content = {
120
- **(jsonable_encoder(remove_omit_from_dict(data, omit))), # type: ignore
121
- **(
122
- jsonable_encoder(request_options.get("additional_body_parameters", {})) or {}
123
- if request_options is not None
124
- else {}
125
- ),
126
- }
127
- return data_content
128
-
129
-
130
- # Abstracted out for testing purposes
131
- def get_request_body(
132
- *,
133
- json: typing.Optional[typing.Any],
134
- data: typing.Optional[typing.Any],
135
- request_options: typing.Optional[RequestOptions],
136
- omit: typing.Optional[typing.Any],
137
- ) -> typing.Tuple[typing.Optional[typing.Any], typing.Optional[typing.Any]]:
138
- json_body = None
139
- data_body = None
140
- if data is not None:
141
- data_body = maybe_filter_request_body(data, request_options, omit)
142
- else:
143
- # If both data and json are None, we send json data in the event extra properties are specified
144
- json_body = maybe_filter_request_body(json, request_options, omit)
145
-
146
- # If you have an empty JSON body, you should just send None
147
- return (json_body if json_body != {} else None), data_body if data_body != {} else None
148
-
149
-
150
- class HttpClient:
151
- def __init__(
152
- self,
153
- *,
154
- httpx_client: httpx.Client,
155
- base_timeout: typing.Callable[[], typing.Optional[float]],
156
- base_headers: typing.Callable[[], typing.Dict[str, str]],
157
- base_url: typing.Optional[typing.Callable[[], str]] = None,
158
- ):
159
- self.base_url = base_url
160
- self.base_timeout = base_timeout
161
- self.base_headers = base_headers
162
- self.httpx_client = httpx_client
163
-
164
- def get_base_url(self, maybe_base_url: typing.Optional[str]) -> str:
165
- base_url = maybe_base_url
166
- if self.base_url is not None and base_url is None:
167
- base_url = self.base_url()
168
-
169
- if base_url is None:
170
- raise ValueError("A base_url is required to make this request, please provide one and try again.")
171
- return base_url
172
-
173
- def request(
174
- self,
175
- path: typing.Optional[str] = None,
176
- *,
177
- method: str,
178
- base_url: typing.Optional[str] = None,
179
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
180
- json: typing.Optional[typing.Any] = None,
181
- data: typing.Optional[typing.Any] = None,
182
- content: typing.Optional[typing.Union[bytes, typing.Iterator[bytes], typing.AsyncIterator[bytes]]] = None,
183
- files: typing.Optional[typing.Dict[str, typing.Optional[typing.Union[File, typing.List[File]]]]] = None,
184
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
185
- request_options: typing.Optional[RequestOptions] = None,
186
- retries: int = 2,
187
- omit: typing.Optional[typing.Any] = None,
188
- ) -> httpx.Response:
189
- base_url = self.get_base_url(base_url)
190
- timeout = (
191
- request_options.get("timeout_in_seconds")
192
- if request_options is not None and request_options.get("timeout_in_seconds") is not None
193
- else self.base_timeout()
194
- )
195
-
196
- json_body, data_body = get_request_body(json=json, data=data, request_options=request_options, omit=omit)
197
-
198
- response = self.httpx_client.request(
199
- method=method,
200
- url=urllib.parse.urljoin(f"{base_url}/", path),
201
- headers=jsonable_encoder(
202
- remove_none_from_dict(
203
- {
204
- **self.base_headers(),
205
- **(headers if headers is not None else {}),
206
- **(request_options.get("additional_headers", {}) or {} if request_options is not None else {}),
207
- }
208
- )
209
- ),
210
- params=encode_query(
211
- jsonable_encoder(
212
- remove_none_from_dict(
213
- remove_omit_from_dict(
214
- {
215
- **(params if params is not None else {}),
216
- **(
217
- request_options.get("additional_query_parameters", {}) or {}
218
- if request_options is not None
219
- else {}
220
- ),
221
- },
222
- omit,
223
- )
224
- )
225
- )
226
- ),
227
- json=json_body,
228
- data=data_body,
229
- content=content,
230
- files=(
231
- convert_file_dict_to_httpx_tuples(remove_omit_from_dict(remove_none_from_dict(files), omit))
232
- if (files is not None and files is not omit)
233
- else None
234
- ),
235
- timeout=timeout,
236
- )
237
-
238
- max_retries: int = request_options.get("max_retries", 0) if request_options is not None else 0
239
- if _should_retry(response=response):
240
- if max_retries > retries:
241
- time.sleep(_retry_timeout(response=response, retries=retries))
242
- return self.request(
243
- path=path,
244
- method=method,
245
- base_url=base_url,
246
- params=params,
247
- json=json,
248
- content=content,
249
- files=files,
250
- headers=headers,
251
- request_options=request_options,
252
- retries=retries + 1,
253
- omit=omit,
254
- )
255
-
256
- return response
257
-
258
- @contextmanager
259
- def stream(
260
- self,
261
- path: typing.Optional[str] = None,
262
- *,
263
- method: str,
264
- base_url: typing.Optional[str] = None,
265
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
266
- json: typing.Optional[typing.Any] = None,
267
- data: typing.Optional[typing.Any] = None,
268
- content: typing.Optional[typing.Union[bytes, typing.Iterator[bytes], typing.AsyncIterator[bytes]]] = None,
269
- files: typing.Optional[typing.Dict[str, typing.Optional[typing.Union[File, typing.List[File]]]]] = None,
270
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
271
- request_options: typing.Optional[RequestOptions] = None,
272
- retries: int = 2,
273
- omit: typing.Optional[typing.Any] = None,
274
- ) -> typing.Iterator[httpx.Response]:
275
- base_url = self.get_base_url(base_url)
276
- timeout = (
277
- request_options.get("timeout_in_seconds")
278
- if request_options is not None and request_options.get("timeout_in_seconds") is not None
279
- else self.base_timeout()
280
- )
281
-
282
- json_body, data_body = get_request_body(json=json, data=data, request_options=request_options, omit=omit)
283
-
284
- with self.httpx_client.stream(
285
- method=method,
286
- url=urllib.parse.urljoin(f"{base_url}/", path),
287
- headers=jsonable_encoder(
288
- remove_none_from_dict(
289
- {
290
- **self.base_headers(),
291
- **(headers if headers is not None else {}),
292
- **(request_options.get("additional_headers", {}) if request_options is not None else {}),
293
- }
294
- )
295
- ),
296
- params=encode_query(
297
- jsonable_encoder(
298
- remove_none_from_dict(
299
- remove_omit_from_dict(
300
- {
301
- **(params if params is not None else {}),
302
- **(
303
- request_options.get("additional_query_parameters", {})
304
- if request_options is not None
305
- else {}
306
- ),
307
- },
308
- omit,
309
- )
310
- )
311
- )
312
- ),
313
- json=json_body,
314
- data=data_body,
315
- content=content,
316
- files=(
317
- convert_file_dict_to_httpx_tuples(remove_omit_from_dict(remove_none_from_dict(files), omit))
318
- if (files is not None and files is not omit)
319
- else None
320
- ),
321
- timeout=timeout,
322
- ) as stream:
323
- yield stream
324
-
325
-
326
- class AsyncHttpClient:
327
- def __init__(
328
- self,
329
- *,
330
- httpx_client: httpx.AsyncClient,
331
- base_timeout: typing.Callable[[], typing.Optional[float]],
332
- base_headers: typing.Callable[[], typing.Dict[str, str]],
333
- base_url: typing.Optional[typing.Callable[[], str]] = None,
334
- ):
335
- self.base_url = base_url
336
- self.base_timeout = base_timeout
337
- self.base_headers = base_headers
338
- self.httpx_client = httpx_client
339
-
340
- def get_base_url(self, maybe_base_url: typing.Optional[str]) -> str:
341
- base_url = maybe_base_url
342
- if self.base_url is not None and base_url is None:
343
- base_url = self.base_url()
344
-
345
- if base_url is None:
346
- raise ValueError("A base_url is required to make this request, please provide one and try again.")
347
- return base_url
348
-
349
- async def request(
350
- self,
351
- path: typing.Optional[str] = None,
352
- *,
353
- method: str,
354
- base_url: typing.Optional[str] = None,
355
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
356
- json: typing.Optional[typing.Any] = None,
357
- data: typing.Optional[typing.Any] = None,
358
- content: typing.Optional[typing.Union[bytes, typing.Iterator[bytes], typing.AsyncIterator[bytes]]] = None,
359
- files: typing.Optional[typing.Dict[str, typing.Optional[typing.Union[File, typing.List[File]]]]] = None,
360
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
361
- request_options: typing.Optional[RequestOptions] = None,
362
- retries: int = 2,
363
- omit: typing.Optional[typing.Any] = None,
364
- ) -> httpx.Response:
365
- base_url = self.get_base_url(base_url)
366
- timeout = (
367
- request_options.get("timeout_in_seconds")
368
- if request_options is not None and request_options.get("timeout_in_seconds") is not None
369
- else self.base_timeout()
370
- )
371
-
372
- json_body, data_body = get_request_body(json=json, data=data, request_options=request_options, omit=omit)
373
-
374
- # Add the input to each of these and do None-safety checks
375
- response = await self.httpx_client.request(
376
- method=method,
377
- url=urllib.parse.urljoin(f"{base_url}/", path),
378
- headers=jsonable_encoder(
379
- remove_none_from_dict(
380
- {
381
- **self.base_headers(),
382
- **(headers if headers is not None else {}),
383
- **(request_options.get("additional_headers", {}) or {} if request_options is not None else {}),
384
- }
385
- )
386
- ),
387
- params=encode_query(
388
- jsonable_encoder(
389
- remove_none_from_dict(
390
- remove_omit_from_dict(
391
- {
392
- **(params if params is not None else {}),
393
- **(
394
- request_options.get("additional_query_parameters", {}) or {}
395
- if request_options is not None
396
- else {}
397
- ),
398
- },
399
- omit,
400
- )
401
- )
402
- )
403
- ),
404
- json=json_body,
405
- data=data_body,
406
- content=content,
407
- files=(
408
- convert_file_dict_to_httpx_tuples(remove_omit_from_dict(remove_none_from_dict(files), omit))
409
- if files is not None
410
- else None
411
- ),
412
- timeout=timeout,
413
- )
414
-
415
- max_retries: int = request_options.get("max_retries", 0) if request_options is not None else 0
416
- if _should_retry(response=response):
417
- if max_retries > retries:
418
- await asyncio.sleep(_retry_timeout(response=response, retries=retries))
419
- return await self.request(
420
- path=path,
421
- method=method,
422
- base_url=base_url,
423
- params=params,
424
- json=json,
425
- content=content,
426
- files=files,
427
- headers=headers,
428
- request_options=request_options,
429
- retries=retries + 1,
430
- omit=omit,
431
- )
432
- return response
433
-
434
- @asynccontextmanager
435
- async def stream(
436
- self,
437
- path: typing.Optional[str] = None,
438
- *,
439
- method: str,
440
- base_url: typing.Optional[str] = None,
441
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
442
- json: typing.Optional[typing.Any] = None,
443
- data: typing.Optional[typing.Any] = None,
444
- content: typing.Optional[typing.Union[bytes, typing.Iterator[bytes], typing.AsyncIterator[bytes]]] = None,
445
- files: typing.Optional[typing.Dict[str, typing.Optional[typing.Union[File, typing.List[File]]]]] = None,
446
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
447
- request_options: typing.Optional[RequestOptions] = None,
448
- retries: int = 2,
449
- omit: typing.Optional[typing.Any] = None,
450
- ) -> typing.AsyncIterator[httpx.Response]:
451
- base_url = self.get_base_url(base_url)
452
- timeout = (
453
- request_options.get("timeout_in_seconds")
454
- if request_options is not None and request_options.get("timeout_in_seconds") is not None
455
- else self.base_timeout()
456
- )
457
-
458
- json_body, data_body = get_request_body(json=json, data=data, request_options=request_options, omit=omit)
459
-
460
- async with self.httpx_client.stream(
461
- method=method,
462
- url=urllib.parse.urljoin(f"{base_url}/", path),
463
- headers=jsonable_encoder(
464
- remove_none_from_dict(
465
- {
466
- **self.base_headers(),
467
- **(headers if headers is not None else {}),
468
- **(request_options.get("additional_headers", {}) if request_options is not None else {}),
469
- }
470
- )
471
- ),
472
- params=encode_query(
473
- jsonable_encoder(
474
- remove_none_from_dict(
475
- remove_omit_from_dict(
476
- {
477
- **(params if params is not None else {}),
478
- **(
479
- request_options.get("additional_query_parameters", {})
480
- if request_options is not None
481
- else {}
482
- ),
483
- },
484
- omit=omit,
485
- )
486
- )
487
- )
488
- ),
489
- json=json_body,
490
- data=data_body,
491
- content=content,
492
- files=(
493
- convert_file_dict_to_httpx_tuples(remove_omit_from_dict(remove_none_from_dict(files), omit))
494
- if files is not None
495
- else None
496
- ),
497
- timeout=timeout,
498
- ) as stream:
499
- yield stream
@@ -1,101 +0,0 @@
1
- # This file was auto-generated by Fern from our API Definition.
2
-
3
- """
4
- jsonable_encoder converts a Python object to a JSON-friendly dict
5
- (e.g. datetimes to strings, Pydantic models to dicts).
6
-
7
- Taken from FastAPI, and made a bit simpler
8
- https://github.com/tiangolo/fastapi/blob/master/fastapi/encoders.py
9
- """
10
-
11
- import base64
12
- import dataclasses
13
- import datetime as dt
14
- from enum import Enum
15
- from pathlib import PurePath
16
- from types import GeneratorType
17
- from typing import Any, Callable, Dict, List, Optional, Set, Union
18
-
19
- import pydantic
20
-
21
- from .datetime_utils import serialize_datetime
22
- from .pydantic_utilities import (
23
- IS_PYDANTIC_V2,
24
- encode_by_type,
25
- to_jsonable_with_fallback,
26
- )
27
-
28
- SetIntStr = Set[Union[int, str]]
29
- DictIntStrAny = Dict[Union[int, str], Any]
30
-
31
-
32
- def jsonable_encoder(obj: Any, custom_encoder: Optional[Dict[Any, Callable[[Any], Any]]] = None) -> Any:
33
- custom_encoder = custom_encoder or {}
34
- if custom_encoder:
35
- if type(obj) in custom_encoder:
36
- return custom_encoder[type(obj)](obj)
37
- else:
38
- for encoder_type, encoder_instance in custom_encoder.items():
39
- if isinstance(obj, encoder_type):
40
- return encoder_instance(obj)
41
- if isinstance(obj, pydantic.BaseModel):
42
- if IS_PYDANTIC_V2:
43
- encoder = getattr(obj.model_config, "json_encoders", {}) # type: ignore # Pydantic v2
44
- else:
45
- encoder = getattr(obj.__config__, "json_encoders", {}) # type: ignore # Pydantic v1
46
- if custom_encoder:
47
- encoder.update(custom_encoder)
48
- obj_dict = obj.dict(by_alias=True)
49
- if "__root__" in obj_dict:
50
- obj_dict = obj_dict["__root__"]
51
- if "root" in obj_dict:
52
- obj_dict = obj_dict["root"]
53
- return jsonable_encoder(obj_dict, custom_encoder=encoder)
54
- if dataclasses.is_dataclass(obj):
55
- obj_dict = dataclasses.asdict(obj) # type: ignore
56
- return jsonable_encoder(obj_dict, custom_encoder=custom_encoder)
57
- if isinstance(obj, bytes):
58
- return base64.b64encode(obj).decode("utf-8")
59
- if isinstance(obj, Enum):
60
- return obj.value
61
- if isinstance(obj, PurePath):
62
- return str(obj)
63
- if isinstance(obj, (str, int, float, type(None))):
64
- return obj
65
- if isinstance(obj, dt.datetime):
66
- return serialize_datetime(obj)
67
- if isinstance(obj, dt.date):
68
- return str(obj)
69
- if isinstance(obj, dict):
70
- encoded_dict = {}
71
- allowed_keys = set(obj.keys())
72
- for key, value in obj.items():
73
- if key in allowed_keys:
74
- encoded_key = jsonable_encoder(key, custom_encoder=custom_encoder)
75
- encoded_value = jsonable_encoder(value, custom_encoder=custom_encoder)
76
- encoded_dict[encoded_key] = encoded_value
77
- return encoded_dict
78
- if isinstance(obj, (list, set, frozenset, GeneratorType, tuple)):
79
- encoded_list = []
80
- for item in obj:
81
- encoded_list.append(jsonable_encoder(item, custom_encoder=custom_encoder))
82
- return encoded_list
83
-
84
- def fallback_serializer(o: Any) -> Any:
85
- attempt_encode = encode_by_type(o)
86
- if attempt_encode is not None:
87
- return attempt_encode
88
-
89
- try:
90
- data = dict(o)
91
- except Exception as e:
92
- errors: List[Exception] = []
93
- errors.append(e)
94
- try:
95
- data = vars(o)
96
- except Exception as e:
97
- errors.append(e)
98
- raise ValueError(errors) from e
99
- return jsonable_encoder(data, custom_encoder=custom_encoder)
100
-
101
- return to_jsonable_with_fallback(obj, fallback_serializer)