blaxel 0.2.31rc120__py3-none-any.whl → 0.2.32__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 (432) hide show
  1. blaxel/__init__.py +3 -3
  2. blaxel/core/agents/__init__.py +16 -7
  3. blaxel/core/authentication/__init__.py +2 -1
  4. blaxel/core/authentication/devicemode.py +9 -1
  5. blaxel/core/authentication/oauth.py +13 -6
  6. blaxel/core/authentication/types.py +1 -0
  7. blaxel/core/cache/cache.py +10 -3
  8. blaxel/core/client/api/agents/create_agent.py +5 -5
  9. blaxel/core/client/api/agents/delete_agent.py +5 -5
  10. blaxel/core/client/api/agents/get_agent.py +4 -4
  11. blaxel/core/client/api/agents/list_agent_revisions.py +8 -6
  12. blaxel/core/client/api/agents/list_agents.py +5 -5
  13. blaxel/core/client/api/agents/update_agent.py +5 -5
  14. blaxel/core/client/api/compute/create_sandbox.py +5 -5
  15. blaxel/core/client/api/compute/create_sandbox_preview.py +5 -5
  16. blaxel/core/client/api/compute/create_sandbox_preview_token.py +5 -5
  17. blaxel/core/client/api/compute/delete_sandbox.py +5 -5
  18. blaxel/core/client/api/compute/delete_sandbox_preview.py +5 -5
  19. blaxel/core/client/api/compute/delete_sandbox_preview_token.py +11 -7
  20. blaxel/core/client/api/compute/get_sandbox.py +4 -4
  21. blaxel/core/client/api/compute/get_sandbox_preview.py +5 -5
  22. blaxel/core/client/api/compute/list_sandbox_preview_tokens.py +5 -5
  23. blaxel/core/client/api/compute/list_sandbox_previews.py +5 -5
  24. blaxel/core/client/api/compute/list_sandboxes.py +5 -5
  25. blaxel/core/client/api/compute/update_sandbox.py +5 -5
  26. blaxel/core/client/api/compute/update_sandbox_preview.py +5 -5
  27. blaxel/core/client/api/configurations/get_configuration.py +5 -5
  28. blaxel/core/client/api/customdomains/create_custom_domain.py +5 -5
  29. blaxel/core/client/api/customdomains/delete_custom_domain.py +5 -5
  30. blaxel/core/client/api/customdomains/get_custom_domain.py +5 -5
  31. blaxel/core/client/api/customdomains/list_custom_domains.py +5 -5
  32. blaxel/core/client/api/customdomains/update_custom_domain.py +5 -5
  33. blaxel/core/client/api/customdomains/verify_custom_domain.py +5 -5
  34. blaxel/core/client/api/default/get_template.py +5 -5
  35. blaxel/core/client/api/default/list_mcp_hub_definitions.py +5 -5
  36. blaxel/core/client/api/default/list_sandbox_hub_definitions.py +11 -7
  37. blaxel/core/client/api/functions/create_function.py +5 -5
  38. blaxel/core/client/api/functions/delete_function.py +5 -5
  39. blaxel/core/client/api/functions/get_function.py +4 -4
  40. blaxel/core/client/api/functions/list_function_revisions.py +8 -6
  41. blaxel/core/client/api/functions/list_functions.py +5 -5
  42. blaxel/core/client/api/functions/update_function.py +5 -5
  43. blaxel/core/client/api/images/cleanup_images.py +8 -6
  44. blaxel/core/client/api/images/delete_image.py +4 -4
  45. blaxel/core/client/api/images/delete_image_tag.py +4 -4
  46. blaxel/core/client/api/images/get_image.py +5 -5
  47. blaxel/core/client/api/images/list_images.py +5 -5
  48. blaxel/core/client/api/integrations/create_integration_connection.py +5 -5
  49. blaxel/core/client/api/integrations/delete_integration_connection.py +5 -5
  50. blaxel/core/client/api/integrations/get_integration.py +5 -5
  51. blaxel/core/client/api/integrations/get_integration_connection.py +5 -5
  52. blaxel/core/client/api/integrations/get_integration_connection_model.py +3 -3
  53. blaxel/core/client/api/integrations/get_integration_connection_model_endpoint_configurations.py +3 -3
  54. blaxel/core/client/api/integrations/list_integration_connection_models.py +3 -3
  55. blaxel/core/client/api/integrations/list_integration_connections.py +11 -7
  56. blaxel/core/client/api/integrations/update_integration_connection.py +5 -5
  57. blaxel/core/client/api/invitations/list_all_pending_invitations.py +7 -5
  58. blaxel/core/client/api/jobs/create_job.py +5 -5
  59. blaxel/core/client/api/jobs/create_job_execution.py +7 -5
  60. blaxel/core/client/api/jobs/delete_job.py +5 -5
  61. blaxel/core/client/api/jobs/delete_job_execution.py +7 -5
  62. blaxel/core/client/api/jobs/get_job.py +4 -4
  63. blaxel/core/client/api/jobs/get_job_execution.py +7 -5
  64. blaxel/core/client/api/jobs/list_job_executions.py +10 -6
  65. blaxel/core/client/api/jobs/list_job_revisions.py +8 -6
  66. blaxel/core/client/api/jobs/list_jobs.py +5 -5
  67. blaxel/core/client/api/jobs/update_job.py +5 -5
  68. blaxel/core/client/api/locations/list_locations.py +8 -6
  69. blaxel/core/client/api/models/create_model.py +5 -5
  70. blaxel/core/client/api/models/delete_model.py +5 -5
  71. blaxel/core/client/api/models/get_model.py +5 -5
  72. blaxel/core/client/api/models/list_model_revisions.py +8 -6
  73. blaxel/core/client/api/models/list_models.py +5 -5
  74. blaxel/core/client/api/models/update_model.py +5 -5
  75. blaxel/core/client/api/policies/create_policy.py +5 -5
  76. blaxel/core/client/api/policies/delete_policy.py +5 -5
  77. blaxel/core/client/api/policies/get_policy.py +5 -5
  78. blaxel/core/client/api/policies/list_policies.py +5 -5
  79. blaxel/core/client/api/policies/update_policy.py +5 -5
  80. blaxel/core/client/api/public_ipslist/list_public_ips.py +5 -5
  81. blaxel/core/client/api/service_accounts/create_api_key_for_service_account.py +5 -5
  82. blaxel/core/client/api/service_accounts/create_workspace_service_account.py +11 -7
  83. blaxel/core/client/api/service_accounts/delete_api_key_for_service_account.py +3 -3
  84. blaxel/core/client/api/service_accounts/delete_workspace_service_account.py +11 -7
  85. blaxel/core/client/api/service_accounts/get_workspace_service_accounts.py +8 -6
  86. blaxel/core/client/api/service_accounts/list_api_keys_for_service_account.py +5 -5
  87. blaxel/core/client/api/service_accounts/update_workspace_service_account.py +11 -7
  88. blaxel/core/client/api/templates/list_templates.py +5 -5
  89. blaxel/core/client/api/volume_templates/create_volume_template.py +4 -4
  90. blaxel/core/client/api/volume_templates/delete_volume_template.py +5 -5
  91. blaxel/core/client/api/volume_templates/delete_volume_template_version.py +4 -4
  92. blaxel/core/client/api/volume_templates/get_volume_template.py +5 -5
  93. blaxel/core/client/api/volume_templates/list_volume_templates.py +8 -6
  94. blaxel/core/client/api/volume_templates/update_volume_template.py +4 -4
  95. blaxel/core/client/api/volumes/create_volume.py +5 -5
  96. blaxel/core/client/api/volumes/delete_volume.py +5 -5
  97. blaxel/core/client/api/volumes/get_volume.py +5 -5
  98. blaxel/core/client/api/volumes/list_volumes.py +5 -5
  99. blaxel/core/client/api/workspaces/accept_workspace_invitation.py +10 -6
  100. blaxel/core/client/api/workspaces/check_workspace_availability.py +5 -5
  101. blaxel/core/client/api/workspaces/create_workspace.py +5 -5
  102. blaxel/core/client/api/workspaces/decline_workspace_invitation.py +5 -5
  103. blaxel/core/client/api/workspaces/delete_workspace.py +5 -5
  104. blaxel/core/client/api/workspaces/get_workspace.py +5 -5
  105. blaxel/core/client/api/workspaces/invite_workspace_user.py +10 -6
  106. blaxel/core/client/api/workspaces/leave_workspace.py +4 -4
  107. blaxel/core/client/api/workspaces/list_workspace_users.py +5 -5
  108. blaxel/core/client/api/workspaces/list_workspaces.py +5 -5
  109. blaxel/core/client/api/workspaces/remove_workspace_user.py +3 -3
  110. blaxel/core/client/api/workspaces/update_workspace.py +5 -5
  111. blaxel/core/client/api/workspaces/update_workspace_user_role.py +10 -6
  112. blaxel/core/client/client.py +5 -19
  113. blaxel/core/client/models/acl.py +3 -3
  114. blaxel/core/client/models/agent.py +12 -5
  115. blaxel/core/client/models/agent_spec.py +22 -7
  116. blaxel/core/client/models/api_key.py +6 -6
  117. blaxel/core/client/models/billable_time_metric.py +3 -4
  118. blaxel/core/client/models/check_workspace_availability_body.py +1 -1
  119. blaxel/core/client/models/cleanup_images_response_200.py +1 -1
  120. blaxel/core/client/models/configuration.py +2 -3
  121. blaxel/core/client/models/continent.py +2 -2
  122. blaxel/core/client/models/core_event.py +3 -3
  123. blaxel/core/client/models/core_spec.py +14 -5
  124. blaxel/core/client/models/core_spec_configurations.py +1 -2
  125. blaxel/core/client/models/country.py +2 -2
  126. blaxel/core/client/models/create_api_key_for_service_account_body.py +1 -1
  127. blaxel/core/client/models/create_job_execution_request.py +4 -5
  128. blaxel/core/client/models/create_job_execution_request_tasks_item.py +1 -1
  129. blaxel/core/client/models/create_job_execution_response.py +4 -5
  130. blaxel/core/client/models/create_job_execution_response_tasks_item.py +1 -1
  131. blaxel/core/client/models/create_workspace_service_account_body.py +1 -1
  132. blaxel/core/client/models/create_workspace_service_account_response_200.py +1 -1
  133. blaxel/core/client/models/custom_domain.py +6 -3
  134. blaxel/core/client/models/custom_domain_metadata.py +6 -7
  135. blaxel/core/client/models/custom_domain_spec.py +10 -7
  136. blaxel/core/client/models/custom_domain_spec_txt_records.py +1 -1
  137. blaxel/core/client/models/delete_sandbox_preview_token_response_200.py +1 -1
  138. blaxel/core/client/models/delete_volume_template_version_response_200.py +6 -3
  139. blaxel/core/client/models/delete_workspace_service_account_response_200.py +1 -1
  140. blaxel/core/client/models/entrypoint.py +4 -3
  141. blaxel/core/client/models/entrypoint_env.py +1 -1
  142. blaxel/core/client/models/expiration_policy.py +2 -2
  143. blaxel/core/client/models/flavor.py +2 -2
  144. blaxel/core/client/models/form.py +6 -3
  145. blaxel/core/client/models/form_config.py +1 -1
  146. blaxel/core/client/models/form_oauth.py +1 -1
  147. blaxel/core/client/models/form_secrets.py +1 -1
  148. blaxel/core/client/models/function.py +12 -5
  149. blaxel/core/client/models/function_spec.py +17 -6
  150. blaxel/core/client/models/get_workspace_service_accounts_response_200_item.py +1 -1
  151. blaxel/core/client/models/histogram_bucket.py +1 -1
  152. blaxel/core/client/models/histogram_stats.py +1 -1
  153. blaxel/core/client/models/image.py +6 -3
  154. blaxel/core/client/models/image_metadata.py +6 -6
  155. blaxel/core/client/models/image_spec.py +1 -2
  156. blaxel/core/client/models/image_tag.py +3 -3
  157. blaxel/core/client/models/integration.py +12 -5
  158. blaxel/core/client/models/integration_additional_infos.py +1 -1
  159. blaxel/core/client/models/integration_connection.py +6 -3
  160. blaxel/core/client/models/integration_connection_spec.py +1 -2
  161. blaxel/core/client/models/integration_connection_spec_config.py +1 -1
  162. blaxel/core/client/models/integration_connection_spec_secret.py +1 -1
  163. blaxel/core/client/models/integration_endpoint.py +9 -6
  164. blaxel/core/client/models/integration_endpoint_token.py +1 -1
  165. blaxel/core/client/models/integration_endpoints.py +1 -3
  166. blaxel/core/client/models/integration_headers.py +1 -1
  167. blaxel/core/client/models/integration_model.py +1 -1
  168. blaxel/core/client/models/integration_organization.py +2 -2
  169. blaxel/core/client/models/integration_query_params.py +1 -1
  170. blaxel/core/client/models/integration_repository.py +2 -2
  171. blaxel/core/client/models/invite_workspace_user_body.py +1 -1
  172. blaxel/core/client/models/job.py +12 -5
  173. blaxel/core/client/models/job_execution.py +6 -3
  174. blaxel/core/client/models/job_execution_config.py +3 -3
  175. blaxel/core/client/models/job_execution_metadata.py +7 -7
  176. blaxel/core/client/models/job_execution_spec.py +1 -2
  177. blaxel/core/client/models/job_execution_stats.py +1 -1
  178. blaxel/core/client/models/job_execution_task.py +6 -3
  179. blaxel/core/client/models/job_execution_task_condition.py +3 -3
  180. blaxel/core/client/models/job_execution_task_metadata.py +6 -6
  181. blaxel/core/client/models/job_execution_task_spec.py +2 -2
  182. blaxel/core/client/models/job_metrics.py +15 -12
  183. blaxel/core/client/models/job_metrics_executions_total.py +1 -1
  184. blaxel/core/client/models/job_metrics_tasks_total.py +1 -1
  185. blaxel/core/client/models/job_spec.py +17 -6
  186. blaxel/core/client/models/jobs_chart_value.py +1 -1
  187. blaxel/core/client/models/jobs_network_chart.py +1 -2
  188. blaxel/core/client/models/jobs_success_failed_chart.py +11 -4
  189. blaxel/core/client/models/jobs_total.py +1 -1
  190. blaxel/core/client/models/last_n_requests_metric.py +4 -4
  191. blaxel/core/client/models/latency_metric.py +10 -7
  192. blaxel/core/client/models/location_response.py +1 -2
  193. blaxel/core/client/models/logs_response.py +1 -1
  194. blaxel/core/client/models/logs_response_data.py +4 -4
  195. blaxel/core/client/models/mcp_definition.py +11 -8
  196. blaxel/core/client/models/mcp_definition_entrypoint.py +1 -1
  197. blaxel/core/client/models/mcp_definition_form.py +1 -1
  198. blaxel/core/client/models/memory_allocation_by_name.py +1 -1
  199. blaxel/core/client/models/memory_allocation_metric.py +2 -2
  200. blaxel/core/client/models/metadata.py +6 -7
  201. blaxel/core/client/models/metadata_labels.py +1 -1
  202. blaxel/core/client/models/metric.py +2 -2
  203. blaxel/core/client/models/metrics.py +24 -11
  204. blaxel/core/client/models/metrics_models.py +1 -1
  205. blaxel/core/client/models/metrics_request_total_per_code.py +1 -1
  206. blaxel/core/client/models/metrics_rps_per_code.py +1 -1
  207. blaxel/core/client/models/model.py +12 -5
  208. blaxel/core/client/models/model_spec.py +14 -5
  209. blaxel/core/client/models/o_auth.py +2 -2
  210. blaxel/core/client/models/owner_fields.py +3 -3
  211. blaxel/core/client/models/pending_invitation.py +6 -6
  212. blaxel/core/client/models/pending_invitation_accept.py +6 -3
  213. blaxel/core/client/models/pending_invitation_render.py +14 -7
  214. blaxel/core/client/models/pending_invitation_render_invited_by.py +1 -1
  215. blaxel/core/client/models/pending_invitation_render_workspace.py +2 -2
  216. blaxel/core/client/models/pending_invitation_workspace_details.py +1 -1
  217. blaxel/core/client/models/pod_template_spec.py +1 -1
  218. blaxel/core/client/models/policy.py +6 -3
  219. blaxel/core/client/models/policy_location.py +2 -2
  220. blaxel/core/client/models/policy_max_tokens.py +5 -3
  221. blaxel/core/client/models/policy_spec.py +15 -8
  222. blaxel/core/client/models/port.py +1 -1
  223. blaxel/core/client/models/preview.py +6 -3
  224. blaxel/core/client/models/preview_metadata.py +8 -8
  225. blaxel/core/client/models/preview_spec.py +5 -6
  226. blaxel/core/client/models/preview_spec_request_headers.py +1 -1
  227. blaxel/core/client/models/preview_spec_response_headers.py +1 -1
  228. blaxel/core/client/models/preview_token.py +6 -3
  229. blaxel/core/client/models/preview_token_metadata.py +4 -4
  230. blaxel/core/client/models/preview_token_spec.py +2 -2
  231. blaxel/core/client/models/private_location.py +1 -1
  232. blaxel/core/client/models/public_ip.py +3 -3
  233. blaxel/core/client/models/public_ips.py +1 -2
  234. blaxel/core/client/models/region.py +2 -2
  235. blaxel/core/client/models/repository.py +2 -2
  236. blaxel/core/client/models/request_duration_over_time_metric.py +1 -1
  237. blaxel/core/client/models/request_duration_over_time_metrics.py +4 -3
  238. blaxel/core/client/models/request_total_by_origin_metric.py +23 -10
  239. blaxel/core/client/models/request_total_by_origin_metric_request_total_by_origin.py +1 -1
  240. blaxel/core/client/models/request_total_by_origin_metric_request_total_by_origin_and_code.py +1 -1
  241. blaxel/core/client/models/request_total_metric.py +14 -7
  242. blaxel/core/client/models/request_total_metric_request_total_per_code.py +1 -1
  243. blaxel/core/client/models/request_total_metric_rps_per_code.py +1 -1
  244. blaxel/core/client/models/request_total_response_data.py +5 -5
  245. blaxel/core/client/models/resource.py +6 -4
  246. blaxel/core/client/models/resource_log.py +1 -1
  247. blaxel/core/client/models/resource_log_chart.py +1 -1
  248. blaxel/core/client/models/resource_log_response.py +2 -2
  249. blaxel/core/client/models/resource_metrics.py +95 -40
  250. blaxel/core/client/models/resource_metrics_request_total_per_code.py +1 -1
  251. blaxel/core/client/models/resource_metrics_request_total_per_code_previous.py +1 -1
  252. blaxel/core/client/models/resource_metrics_rps_per_code.py +1 -1
  253. blaxel/core/client/models/resource_metrics_rps_per_code_previous.py +1 -1
  254. blaxel/core/client/models/resource_trace.py +5 -5
  255. blaxel/core/client/models/revision_configuration.py +3 -3
  256. blaxel/core/client/models/revision_metadata.py +5 -5
  257. blaxel/core/client/models/runtime.py +9 -10
  258. blaxel/core/client/models/runtime_configuration.py +1 -1
  259. blaxel/core/client/models/runtime_startup_probe.py +1 -1
  260. blaxel/core/client/models/sandbox.py +13 -6
  261. blaxel/core/client/models/sandbox_definition.py +3 -4
  262. blaxel/core/client/models/sandbox_lifecycle.py +2 -3
  263. blaxel/core/client/models/sandbox_metrics.py +1 -1
  264. blaxel/core/client/models/sandbox_spec.py +25 -8
  265. blaxel/core/client/models/serverless_config.py +4 -5
  266. blaxel/core/client/models/serverless_config_configuration.py +1 -1
  267. blaxel/core/client/models/spec_configuration.py +1 -1
  268. blaxel/core/client/models/start_sandbox.py +6 -3
  269. blaxel/core/client/models/stop_sandbox.py +6 -3
  270. blaxel/core/client/models/store_agent.py +6 -7
  271. blaxel/core/client/models/store_agent_labels.py +1 -1
  272. blaxel/core/client/models/store_configuration.py +7 -6
  273. blaxel/core/client/models/store_configuration_option.py +2 -2
  274. blaxel/core/client/models/template.py +6 -7
  275. blaxel/core/client/models/template_variable.py +1 -1
  276. blaxel/core/client/models/time_fields.py +3 -3
  277. blaxel/core/client/models/time_to_first_token_over_time_metrics.py +7 -4
  278. blaxel/core/client/models/token_rate_metric.py +3 -3
  279. blaxel/core/client/models/token_rate_metrics.py +4 -5
  280. blaxel/core/client/models/token_total_metric.py +13 -7
  281. blaxel/core/client/models/trace_ids_response.py +1 -1
  282. blaxel/core/client/models/trigger.py +2 -3
  283. blaxel/core/client/models/trigger_configuration.py +4 -5
  284. blaxel/core/client/models/trigger_configuration_task.py +1 -1
  285. blaxel/core/client/models/update_workspace_service_account_body.py +1 -1
  286. blaxel/core/client/models/update_workspace_service_account_response_200.py +1 -1
  287. blaxel/core/client/models/update_workspace_user_role_body.py +1 -1
  288. blaxel/core/client/models/volume.py +13 -6
  289. blaxel/core/client/models/volume_attachment.py +3 -3
  290. blaxel/core/client/models/volume_spec.py +2 -2
  291. blaxel/core/client/models/volume_state.py +2 -2
  292. blaxel/core/client/models/volume_template.py +6 -3
  293. blaxel/core/client/models/volume_template_spec.py +2 -2
  294. blaxel/core/client/models/volume_template_state.py +6 -4
  295. blaxel/core/client/models/volume_template_version.py +4 -4
  296. blaxel/core/client/models/websocket_channel.py +4 -4
  297. blaxel/core/client/models/websocket_message.py +3 -3
  298. blaxel/core/client/models/workspace.py +13 -10
  299. blaxel/core/client/models/workspace_labels.py +1 -1
  300. blaxel/core/client/models/workspace_runtime.py +1 -1
  301. blaxel/core/client/models/workspace_user.py +1 -1
  302. blaxel/core/client/response_interceptor.py +3 -1
  303. blaxel/core/common/autoload.py +9 -11
  304. blaxel/core/common/env.py +10 -8
  305. blaxel/core/common/settings.py +7 -5
  306. blaxel/core/common/webhook.py +0 -1
  307. blaxel/core/jobs/__init__.py +13 -3
  308. blaxel/core/mcp/client.py +8 -2
  309. blaxel/core/mcp/server.py +8 -2
  310. blaxel/core/models/__init__.py +6 -5
  311. blaxel/core/sandbox/__init__.py +1 -1
  312. blaxel/core/sandbox/client/api/codegen/get_codegen_reranking_path.py +10 -6
  313. blaxel/core/sandbox/client/api/fastapply/put_codegen_fastapply_path.py +10 -6
  314. blaxel/core/sandbox/client/api/filesystem/delete_filesystem_multipart_upload_id_abort.py +10 -6
  315. blaxel/core/sandbox/client/api/filesystem/delete_filesystem_path.py +10 -6
  316. blaxel/core/sandbox/client/api/filesystem/delete_filesystem_tree_path.py +10 -6
  317. blaxel/core/sandbox/client/api/filesystem/get_filesystem_content_search_path.py +7 -5
  318. blaxel/core/sandbox/client/api/filesystem/get_filesystem_find_path.py +10 -6
  319. blaxel/core/sandbox/client/api/filesystem/get_filesystem_multipart.py +4 -4
  320. blaxel/core/sandbox/client/api/filesystem/get_filesystem_multipart_upload_id_parts.py +4 -4
  321. blaxel/core/sandbox/client/api/filesystem/get_filesystem_path.py +4 -4
  322. blaxel/core/sandbox/client/api/filesystem/get_filesystem_search_path.py +10 -6
  323. blaxel/core/sandbox/client/api/filesystem/get_filesystem_tree_path.py +4 -4
  324. blaxel/core/sandbox/client/api/filesystem/get_watch_filesystem_path.py +10 -6
  325. blaxel/core/sandbox/client/api/filesystem/post_filesystem_multipart_initiate_path.py +4 -4
  326. blaxel/core/sandbox/client/api/filesystem/post_filesystem_multipart_upload_id_complete.py +10 -6
  327. blaxel/core/sandbox/client/api/filesystem/put_filesystem_multipart_upload_id_part.py +4 -4
  328. blaxel/core/sandbox/client/api/filesystem/put_filesystem_path.py +10 -6
  329. blaxel/core/sandbox/client/api/filesystem/put_filesystem_tree_path.py +4 -4
  330. blaxel/core/sandbox/client/api/network/delete_network_process_pid_monitor.py +4 -4
  331. blaxel/core/sandbox/client/api/network/get_network_process_pid_ports.py +4 -4
  332. blaxel/core/sandbox/client/api/network/post_network_process_pid_monitor.py +4 -4
  333. blaxel/core/sandbox/client/api/process/delete_process_identifier.py +10 -6
  334. blaxel/core/sandbox/client/api/process/delete_process_identifier_kill.py +10 -6
  335. blaxel/core/sandbox/client/api/process/get_process.py +8 -6
  336. blaxel/core/sandbox/client/api/process/get_process_identifier.py +10 -6
  337. blaxel/core/sandbox/client/api/process/get_process_identifier_logs.py +10 -6
  338. blaxel/core/sandbox/client/api/process/get_process_identifier_logs_stream.py +10 -6
  339. blaxel/core/sandbox/client/api/process/post_process.py +10 -6
  340. blaxel/core/sandbox/client/api/root/delete.py +5 -5
  341. blaxel/core/sandbox/client/api/root/get.py +5 -5
  342. blaxel/core/sandbox/client/api/root/options.py +5 -5
  343. blaxel/core/sandbox/client/api/root/patch.py +5 -5
  344. blaxel/core/sandbox/client/api/root/post.py +5 -5
  345. blaxel/core/sandbox/client/api/root/put.py +5 -5
  346. blaxel/core/sandbox/client/client.py +3 -1
  347. blaxel/core/sandbox/client/models/apply_edit_request.py +2 -2
  348. blaxel/core/sandbox/client/models/apply_edit_response.py +3 -3
  349. blaxel/core/sandbox/client/models/content_search_match.py +1 -1
  350. blaxel/core/sandbox/client/models/content_search_response.py +1 -1
  351. blaxel/core/sandbox/client/models/delete_network_process_pid_monitor_response_200.py +1 -1
  352. blaxel/core/sandbox/client/models/directory.py +1 -1
  353. blaxel/core/sandbox/client/models/error_response.py +1 -1
  354. blaxel/core/sandbox/client/models/file.py +2 -2
  355. blaxel/core/sandbox/client/models/file_request.py +2 -2
  356. blaxel/core/sandbox/client/models/file_with_content.py +2 -2
  357. blaxel/core/sandbox/client/models/filesystem_multipart_upload.py +3 -3
  358. blaxel/core/sandbox/client/models/filesystem_multipart_upload_parts.py +4 -2
  359. blaxel/core/sandbox/client/models/filesystem_uploaded_part.py +3 -3
  360. blaxel/core/sandbox/client/models/find_match.py +2 -2
  361. blaxel/core/sandbox/client/models/find_response.py +1 -1
  362. blaxel/core/sandbox/client/models/fuzzy_search_match.py +2 -2
  363. blaxel/core/sandbox/client/models/fuzzy_search_response.py +1 -1
  364. blaxel/core/sandbox/client/models/get_network_process_pid_ports_response_200.py +1 -1
  365. blaxel/core/sandbox/client/models/multipart_complete_request.py +1 -1
  366. blaxel/core/sandbox/client/models/multipart_initiate_request.py +1 -1
  367. blaxel/core/sandbox/client/models/multipart_initiate_response.py +2 -2
  368. blaxel/core/sandbox/client/models/multipart_list_parts_response.py +2 -2
  369. blaxel/core/sandbox/client/models/multipart_list_uploads_response.py +1 -1
  370. blaxel/core/sandbox/client/models/multipart_part_info.py +2 -2
  371. blaxel/core/sandbox/client/models/multipart_upload_part_response.py +2 -2
  372. blaxel/core/sandbox/client/models/port_monitor_request.py +1 -1
  373. blaxel/core/sandbox/client/models/post_network_process_pid_monitor_response_200.py +1 -1
  374. blaxel/core/sandbox/client/models/process_logs.py +1 -1
  375. blaxel/core/sandbox/client/models/process_request.py +6 -6
  376. blaxel/core/sandbox/client/models/process_request_env.py +1 -1
  377. blaxel/core/sandbox/client/models/process_response.py +8 -8
  378. blaxel/core/sandbox/client/models/put_filesystem_multipart_upload_id_part_body.py +1 -1
  379. blaxel/core/sandbox/client/models/ranked_file.py +1 -1
  380. blaxel/core/sandbox/client/models/reranking_response.py +1 -1
  381. blaxel/core/sandbox/client/models/subdirectory.py +1 -1
  382. blaxel/core/sandbox/client/models/success_response.py +1 -1
  383. blaxel/core/sandbox/client/models/tree_request.py +1 -1
  384. blaxel/core/sandbox/client/models/tree_request_files.py +1 -1
  385. blaxel/core/sandbox/client/models/welcome_response.py +1 -1
  386. blaxel/core/sandbox/default/__init__.py +0 -1
  387. blaxel/core/sandbox/default/action.py +3 -3
  388. blaxel/core/sandbox/default/codegen.py +2 -4
  389. blaxel/core/sandbox/default/filesystem.py +38 -82
  390. blaxel/core/sandbox/default/interpreter.py +17 -10
  391. blaxel/core/sandbox/default/preview.py +6 -2
  392. blaxel/core/sandbox/default/process.py +20 -11
  393. blaxel/core/sandbox/default/sandbox.py +24 -14
  394. blaxel/core/sandbox/sync/__init__.py +0 -2
  395. blaxel/core/sandbox/sync/action.py +2 -3
  396. blaxel/core/sandbox/sync/codegen.py +1 -5
  397. blaxel/core/sandbox/sync/filesystem.py +17 -6
  398. blaxel/core/sandbox/sync/interpreter.py +10 -6
  399. blaxel/core/sandbox/sync/network.py +0 -2
  400. blaxel/core/sandbox/sync/preview.py +76 -33
  401. blaxel/core/sandbox/sync/process.py +27 -12
  402. blaxel/core/sandbox/sync/sandbox.py +30 -18
  403. blaxel/core/sandbox/sync/session.py +6 -4
  404. blaxel/core/sandbox/types.py +2 -1
  405. blaxel/core/tools/__init__.py +30 -6
  406. blaxel/core/tools/common.py +1 -1
  407. blaxel/core/tools/types.py +2 -1
  408. blaxel/crewai/model.py +20 -5
  409. blaxel/googleadk/__init__.py +1 -1
  410. blaxel/googleadk/tools.py +3 -5
  411. blaxel/langgraph/custom/gemini.py +126 -133
  412. blaxel/langgraph/model.py +54 -50
  413. blaxel/langgraph/tools.py +9 -3
  414. blaxel/llamaindex/custom/cohere.py +25 -16
  415. blaxel/llamaindex/model.py +44 -57
  416. blaxel/llamaindex/tools.py +2 -3
  417. blaxel/pydantic/custom/gemini.py +3 -3
  418. blaxel/pydantic/tools.py +2 -4
  419. blaxel/telemetry/exporters.py +10 -3
  420. blaxel/telemetry/instrumentation/blaxel_langgraph.py +4 -2
  421. blaxel/telemetry/instrumentation/blaxel_langgraph_gemini.py +22 -5
  422. blaxel/telemetry/instrumentation/utils.py +3 -3
  423. blaxel/telemetry/log/log.py +2 -3
  424. blaxel/telemetry/log/logger.py +21 -15
  425. blaxel/telemetry/span.py +10 -6
  426. {blaxel-0.2.31rc120.dist-info → blaxel-0.2.32.dist-info}/METADATA +2 -2
  427. blaxel-0.2.32.dist-info/RECORD +506 -0
  428. blaxel/core/client/api/compute/start_sandbox.py +0 -157
  429. blaxel/core/client/api/compute/stop_sandbox.py +0 -157
  430. blaxel-0.2.31rc120.dist-info/RECORD +0 -508
  431. {blaxel-0.2.31rc120.dist-info → blaxel-0.2.32.dist-info}/WHEEL +0 -0
  432. {blaxel-0.2.31rc120.dist-info → blaxel-0.2.32.dist-info}/licenses/LICENSE +0 -0
@@ -28,7 +28,6 @@ class TokenRateMetrics:
28
28
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
29
29
 
30
30
  def to_dict(self) -> dict[str, Any]:
31
-
32
31
  token_rate: Union[Unset, list[dict[str, Any]]] = UNSET
33
32
  if not isinstance(self.token_rate, Unset):
34
33
  token_rate = []
@@ -72,28 +71,28 @@ class TokenRateMetrics:
72
71
  return field_dict
73
72
 
74
73
  @classmethod
75
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
74
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
76
75
  from ..models.token_rate_metric import TokenRateMetric
77
76
 
78
77
  if not src_dict:
79
78
  return None
80
79
  d = src_dict.copy()
81
80
  token_rate = []
82
- _token_rate = d.pop("tokenRate", UNSET)
81
+ _token_rate = d.pop("tokenRate", d.pop("token_rate", UNSET))
83
82
  for token_rate_item_data in _token_rate or []:
84
83
  token_rate_item = TokenRateMetric.from_dict(token_rate_item_data)
85
84
 
86
85
  token_rate.append(token_rate_item)
87
86
 
88
87
  token_rate_input = []
89
- _token_rate_input = d.pop("tokenRateInput", UNSET)
88
+ _token_rate_input = d.pop("tokenRateInput", d.pop("token_rate_input", UNSET))
90
89
  for token_rate_input_item_data in _token_rate_input or []:
91
90
  token_rate_input_item = TokenRateMetric.from_dict(token_rate_input_item_data)
92
91
 
93
92
  token_rate_input.append(token_rate_input_item)
94
93
 
95
94
  token_rate_output = []
96
- _token_rate_output = d.pop("tokenRateOutput", UNSET)
95
+ _token_rate_output = d.pop("tokenRateOutput", d.pop("token_rate_output", UNSET))
97
96
  for token_rate_output_item_data in _token_rate_output or []:
98
97
  token_rate_output_item = TokenRateMetric.from_dict(token_rate_output_item_data)
99
98
 
@@ -61,21 +61,27 @@ class TokenTotalMetric:
61
61
  return field_dict
62
62
 
63
63
  @classmethod
64
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
64
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
65
65
  if not src_dict:
66
66
  return None
67
67
  d = src_dict.copy()
68
- average_token_input_per_request = d.pop("averageTokenInputPerRequest", UNSET)
68
+ average_token_input_per_request = d.pop(
69
+ "averageTokenInputPerRequest", d.pop("average_token_input_per_request", UNSET)
70
+ )
69
71
 
70
- average_token_output_per_request = d.pop("averageTokenOutputPerRequest", UNSET)
72
+ average_token_output_per_request = d.pop(
73
+ "averageTokenOutputPerRequest", d.pop("average_token_output_per_request", UNSET)
74
+ )
71
75
 
72
- average_token_per_request = d.pop("averageTokenPerRequest", UNSET)
76
+ average_token_per_request = d.pop(
77
+ "averageTokenPerRequest", d.pop("average_token_per_request", UNSET)
78
+ )
73
79
 
74
- token_input = d.pop("tokenInput", UNSET)
80
+ token_input = d.pop("tokenInput", d.pop("token_input", UNSET))
75
81
 
76
- token_output = d.pop("tokenOutput", UNSET)
82
+ token_output = d.pop("tokenOutput", d.pop("token_output", UNSET))
77
83
 
78
- token_total = d.pop("tokenTotal", UNSET)
84
+ token_total = d.pop("tokenTotal", d.pop("token_total", UNSET))
79
85
 
80
86
  token_total_metric = cls(
81
87
  average_token_input_per_request=average_token_input_per_request,
@@ -19,7 +19,7 @@ class TraceIdsResponse:
19
19
  return field_dict
20
20
 
21
21
  @classmethod
22
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
22
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
23
23
  if not src_dict:
24
24
  return None
25
25
  d = src_dict.copy()
@@ -30,7 +30,6 @@ class Trigger:
30
30
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
31
31
 
32
32
  def to_dict(self) -> dict[str, Any]:
33
-
34
33
  configuration: Union[Unset, dict[str, Any]] = UNSET
35
34
  if (
36
35
  self.configuration
@@ -62,7 +61,7 @@ class Trigger:
62
61
  return field_dict
63
62
 
64
63
  @classmethod
65
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
64
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
66
65
  from ..models.trigger_configuration import TriggerConfiguration
67
66
 
68
67
  if not src_dict:
@@ -79,7 +78,7 @@ class Trigger:
79
78
 
80
79
  id = d.pop("id", UNSET)
81
80
 
82
- type_ = d.pop("type", UNSET)
81
+ type_ = d.pop("type", d.pop("type_", UNSET))
83
82
 
84
83
  trigger = cls(
85
84
  configuration=configuration,
@@ -38,7 +38,6 @@ class TriggerConfiguration:
38
38
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
39
39
 
40
40
  def to_dict(self) -> dict[str, Any]:
41
-
42
41
  authentication_type = self.authentication_type
43
42
 
44
43
  callback_secret = self.callback_secret
@@ -86,17 +85,17 @@ class TriggerConfiguration:
86
85
  return field_dict
87
86
 
88
87
  @classmethod
89
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
88
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
90
89
  from ..models.trigger_configuration_task import TriggerConfigurationTask
91
90
 
92
91
  if not src_dict:
93
92
  return None
94
93
  d = src_dict.copy()
95
- authentication_type = d.pop("authenticationType", UNSET)
94
+ authentication_type = d.pop("authenticationType", d.pop("authentication_type", UNSET))
96
95
 
97
- callback_secret = d.pop("callbackSecret", UNSET)
96
+ callback_secret = d.pop("callbackSecret", d.pop("callback_secret", UNSET))
98
97
 
99
- callback_url = d.pop("callbackUrl", UNSET)
98
+ callback_url = d.pop("callbackUrl", d.pop("callback_url", UNSET))
100
99
 
101
100
  path = d.pop("path", UNSET)
102
101
 
@@ -19,7 +19,7 @@ class TriggerConfigurationTask:
19
19
  return field_dict
20
20
 
21
21
  @classmethod
22
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
22
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
23
23
  if not src_dict:
24
24
  return None
25
25
  d = src_dict.copy()
@@ -36,7 +36,7 @@ class UpdateWorkspaceServiceAccountBody:
36
36
  return field_dict
37
37
 
38
38
  @classmethod
39
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
39
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
40
40
  if not src_dict:
41
41
  return None
42
42
  d = src_dict.copy()
@@ -54,7 +54,7 @@ class UpdateWorkspaceServiceAccountResponse200:
54
54
  return field_dict
55
55
 
56
56
  @classmethod
57
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
57
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
58
58
  if not src_dict:
59
59
  return None
60
60
  d = src_dict.copy()
@@ -30,7 +30,7 @@ class UpdateWorkspaceUserRoleBody:
30
30
  return field_dict
31
31
 
32
32
  @classmethod
33
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
33
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
34
34
  if not src_dict:
35
35
  return None
36
36
  d = src_dict.copy()
@@ -37,7 +37,6 @@ class Volume:
37
37
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
38
38
 
39
39
  def to_dict(self) -> dict[str, Any]:
40
-
41
40
  events: Union[Unset, list[dict[str, Any]]] = UNSET
42
41
  if not isinstance(self.events, Unset):
43
42
  events = []
@@ -45,11 +44,17 @@ class Volume:
45
44
  if type(componentsschemas_core_events_item_data) is dict:
46
45
  componentsschemas_core_events_item = componentsschemas_core_events_item_data
47
46
  else:
48
- componentsschemas_core_events_item = componentsschemas_core_events_item_data.to_dict()
47
+ componentsschemas_core_events_item = (
48
+ componentsschemas_core_events_item_data.to_dict()
49
+ )
49
50
  events.append(componentsschemas_core_events_item)
50
51
 
51
52
  metadata: Union[Unset, dict[str, Any]] = UNSET
52
- if self.metadata and not isinstance(self.metadata, Unset) and not isinstance(self.metadata, dict):
53
+ if (
54
+ self.metadata
55
+ and not isinstance(self.metadata, Unset)
56
+ and not isinstance(self.metadata, dict)
57
+ ):
53
58
  metadata = self.metadata.to_dict()
54
59
  elif self.metadata and isinstance(self.metadata, dict):
55
60
  metadata = self.metadata
@@ -89,7 +94,7 @@ class Volume:
89
94
  return field_dict
90
95
 
91
96
  @classmethod
92
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
97
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
93
98
  from ..models.core_event import CoreEvent
94
99
  from ..models.metadata import Metadata
95
100
  from ..models.volume_spec import VolumeSpec
@@ -101,7 +106,9 @@ class Volume:
101
106
  events = []
102
107
  _events = d.pop("events", UNSET)
103
108
  for componentsschemas_core_events_item_data in _events or []:
104
- componentsschemas_core_events_item = CoreEvent.from_dict(componentsschemas_core_events_item_data)
109
+ componentsschemas_core_events_item = CoreEvent.from_dict(
110
+ componentsschemas_core_events_item_data
111
+ )
105
112
 
106
113
  events.append(componentsschemas_core_events_item)
107
114
 
@@ -128,7 +135,7 @@ class Volume:
128
135
 
129
136
  status = d.pop("status", UNSET)
130
137
 
131
- terminated_at = d.pop("terminatedAt", UNSET)
138
+ terminated_at = d.pop("terminatedAt", d.pop("terminated_at", UNSET))
132
139
 
133
140
  volume = cls(
134
141
  events=events,
@@ -43,15 +43,15 @@ class VolumeAttachment:
43
43
  return field_dict
44
44
 
45
45
  @classmethod
46
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
46
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
47
47
  if not src_dict:
48
48
  return None
49
49
  d = src_dict.copy()
50
- mount_path = d.pop("mountPath", UNSET)
50
+ mount_path = d.pop("mountPath", d.pop("mount_path", UNSET))
51
51
 
52
52
  name = d.pop("name", UNSET)
53
53
 
54
- read_only = d.pop("readOnly", UNSET)
54
+ read_only = d.pop("readOnly", d.pop("read_only", UNSET))
55
55
 
56
56
  volume_attachment = cls(
57
57
  mount_path=mount_path,
@@ -49,11 +49,11 @@ class VolumeSpec:
49
49
  return field_dict
50
50
 
51
51
  @classmethod
52
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
52
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
53
53
  if not src_dict:
54
54
  return None
55
55
  d = src_dict.copy()
56
- infrastructure_id = d.pop("infrastructureId", UNSET)
56
+ infrastructure_id = d.pop("infrastructureId", d.pop("infrastructure_id", UNSET))
57
57
 
58
58
  region = d.pop("region", UNSET)
59
59
 
@@ -32,11 +32,11 @@ class VolumeState:
32
32
  return field_dict
33
33
 
34
34
  @classmethod
35
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
35
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
36
36
  if not src_dict:
37
37
  return None
38
38
  d = src_dict.copy()
39
- attached_to = d.pop("attachedTo", UNSET)
39
+ attached_to = d.pop("attachedTo", d.pop("attached_to", UNSET))
40
40
 
41
41
  volume_state = cls(
42
42
  attached_to=attached_to,
@@ -33,9 +33,12 @@ class VolumeTemplate:
33
33
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
34
34
 
35
35
  def to_dict(self) -> dict[str, Any]:
36
-
37
36
  metadata: Union[Unset, dict[str, Any]] = UNSET
38
- if self.metadata and not isinstance(self.metadata, Unset) and not isinstance(self.metadata, dict):
37
+ if (
38
+ self.metadata
39
+ and not isinstance(self.metadata, Unset)
40
+ and not isinstance(self.metadata, dict)
41
+ ):
39
42
  metadata = self.metadata.to_dict()
40
43
  elif self.metadata and isinstance(self.metadata, dict):
41
44
  metadata = self.metadata
@@ -77,7 +80,7 @@ class VolumeTemplate:
77
80
  return field_dict
78
81
 
79
82
  @classmethod
80
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
83
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
81
84
  from ..models.metadata import Metadata
82
85
  from ..models.volume_template_spec import VolumeTemplateSpec
83
86
  from ..models.volume_template_state import VolumeTemplateState
@@ -37,11 +37,11 @@ class VolumeTemplateSpec:
37
37
  return field_dict
38
38
 
39
39
  @classmethod
40
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
40
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
41
41
  if not src_dict:
42
42
  return None
43
43
  d = src_dict.copy()
44
- default_size = d.pop("defaultSize", UNSET)
44
+ default_size = d.pop("defaultSize", d.pop("default_size", UNSET))
45
45
 
46
46
  description = d.pop("description", UNSET)
47
47
 
@@ -49,17 +49,19 @@ class VolumeTemplateState:
49
49
  return field_dict
50
50
 
51
51
  @classmethod
52
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
52
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
53
53
  if not src_dict:
54
54
  return None
55
55
  d = src_dict.copy()
56
- last_version_uploaded_at = d.pop("lastVersionUploadedAt", UNSET)
56
+ last_version_uploaded_at = d.pop(
57
+ "lastVersionUploadedAt", d.pop("last_version_uploaded_at", UNSET)
58
+ )
57
59
 
58
- latest_version = d.pop("latestVersion", UNSET)
60
+ latest_version = d.pop("latestVersion", d.pop("latest_version", UNSET))
59
61
 
60
62
  status = d.pop("status", UNSET)
61
63
 
62
- version_count = d.pop("versionCount", UNSET)
64
+ version_count = d.pop("versionCount", d.pop("version_count", UNSET))
63
65
 
64
66
  volume_template_state = cls(
65
67
  last_version_uploaded_at=last_version_uploaded_at,
@@ -73,13 +73,13 @@ class VolumeTemplateVersion:
73
73
  return field_dict
74
74
 
75
75
  @classmethod
76
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
76
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
77
77
  if not src_dict:
78
78
  return None
79
79
  d = src_dict.copy()
80
80
  bucket = d.pop("bucket", UNSET)
81
81
 
82
- content_size = d.pop("contentSize", UNSET)
82
+ content_size = d.pop("contentSize", d.pop("content_size", UNSET))
83
83
 
84
84
  name = d.pop("name", UNSET)
85
85
 
@@ -87,9 +87,9 @@ class VolumeTemplateVersion:
87
87
 
88
88
  status = d.pop("status", UNSET)
89
89
 
90
- template_name = d.pop("templateName", UNSET)
90
+ template_name = d.pop("templateName", d.pop("template_name", UNSET))
91
91
 
92
- version_id = d.pop("versionId", UNSET)
92
+ version_id = d.pop("versionId", d.pop("version_id", UNSET))
93
93
 
94
94
  workspace = d.pop("workspace", UNSET)
95
95
 
@@ -55,17 +55,17 @@ class WebsocketChannel:
55
55
  return field_dict
56
56
 
57
57
  @classmethod
58
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
58
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
59
59
  if not src_dict:
60
60
  return None
61
61
  d = src_dict.copy()
62
- created_at = d.pop("createdAt", UNSET)
62
+ created_at = d.pop("createdAt", d.pop("created_at", UNSET))
63
63
 
64
- updated_at = d.pop("updatedAt", UNSET)
64
+ updated_at = d.pop("updatedAt", d.pop("updated_at", UNSET))
65
65
 
66
66
  connection_id = d.pop("connection_id", UNSET)
67
67
 
68
- source_region = d.pop("sourceRegion", UNSET)
68
+ source_region = d.pop("sourceRegion", d.pop("source_region", UNSET))
69
69
 
70
70
  workspace = d.pop("workspace", UNSET)
71
71
 
@@ -61,13 +61,13 @@ class WebsocketMessage:
61
61
  return field_dict
62
62
 
63
63
  @classmethod
64
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
64
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
65
65
  if not src_dict:
66
66
  return None
67
67
  d = src_dict.copy()
68
- created_at = d.pop("createdAt", UNSET)
68
+ created_at = d.pop("createdAt", d.pop("created_at", UNSET))
69
69
 
70
- updated_at = d.pop("updatedAt", UNSET)
70
+ updated_at = d.pop("updatedAt", d.pop("updated_at", UNSET))
71
71
 
72
72
  id = d.pop("id", UNSET)
73
73
 
@@ -50,7 +50,6 @@ class Workspace:
50
50
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
51
51
 
52
52
  def to_dict(self) -> dict[str, Any]:
53
-
54
53
  created_at = self.created_at
55
54
 
56
55
  updated_at = self.updated_at
@@ -76,7 +75,11 @@ class Workspace:
76
75
  region = self.region
77
76
 
78
77
  runtime: Union[Unset, dict[str, Any]] = UNSET
79
- if self.runtime and not isinstance(self.runtime, Unset) and not isinstance(self.runtime, dict):
78
+ if (
79
+ self.runtime
80
+ and not isinstance(self.runtime, Unset)
81
+ and not isinstance(self.runtime, dict)
82
+ ):
80
83
  runtime = self.runtime.to_dict()
81
84
  elif self.runtime and isinstance(self.runtime, dict):
82
85
  runtime = self.runtime
@@ -118,24 +121,24 @@ class Workspace:
118
121
  return field_dict
119
122
 
120
123
  @classmethod
121
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
124
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
122
125
  from ..models.workspace_labels import WorkspaceLabels
123
126
  from ..models.workspace_runtime import WorkspaceRuntime
124
127
 
125
128
  if not src_dict:
126
129
  return None
127
130
  d = src_dict.copy()
128
- created_at = d.pop("createdAt", UNSET)
131
+ created_at = d.pop("createdAt", d.pop("created_at", UNSET))
129
132
 
130
- updated_at = d.pop("updatedAt", UNSET)
133
+ updated_at = d.pop("updatedAt", d.pop("updated_at", UNSET))
131
134
 
132
- created_by = d.pop("createdBy", UNSET)
135
+ created_by = d.pop("createdBy", d.pop("created_by", UNSET))
133
136
 
134
- updated_by = d.pop("updatedBy", UNSET)
137
+ updated_by = d.pop("updatedBy", d.pop("updated_by", UNSET))
135
138
 
136
- account_id = d.pop("accountId", UNSET)
139
+ account_id = d.pop("accountId", d.pop("account_id", UNSET))
137
140
 
138
- display_name = d.pop("displayName", UNSET)
141
+ display_name = d.pop("displayName", d.pop("display_name", UNSET))
139
142
 
140
143
  id = d.pop("id", UNSET)
141
144
 
@@ -159,7 +162,7 @@ class Workspace:
159
162
 
160
163
  status = d.pop("status", UNSET)
161
164
 
162
- status_reason = d.pop("statusReason", UNSET)
165
+ status_reason = d.pop("statusReason", d.pop("status_reason", UNSET))
163
166
 
164
167
  workspace = cls(
165
168
  created_at=created_at,
@@ -19,7 +19,7 @@ class WorkspaceLabels:
19
19
  return field_dict
20
20
 
21
21
  @classmethod
22
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
22
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
23
23
  if not src_dict:
24
24
  return None
25
25
  d = src_dict.copy()
@@ -31,7 +31,7 @@ class WorkspaceRuntime:
31
31
  return field_dict
32
32
 
33
33
  @classmethod
34
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
34
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
35
35
  if not src_dict:
36
36
  return None
37
37
  d = src_dict.copy()
@@ -67,7 +67,7 @@ class WorkspaceUser:
67
67
  return field_dict
68
68
 
69
69
  @classmethod
70
- def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
70
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T | None:
71
71
  if not src_dict:
72
72
  return None
73
73
  d = src_dict.copy()
@@ -50,7 +50,9 @@ def authentication_error_interceptor_sync(response: httpx.Response) -> None:
50
50
  logger.error("Error processing authentication error response: %s", error)
51
51
 
52
52
 
53
- async def authentication_error_interceptor_async(response: httpx.Response) -> None:
53
+ async def authentication_error_interceptor_async(
54
+ response: httpx.Response,
55
+ ) -> None:
54
56
  """
55
57
  Intercepts HTTP responses and adds authentication documentation
56
58
  to 401/403 error responses (asynchronous version)
@@ -22,18 +22,16 @@ _captured_exceptions: set = set() # Track already captured exceptions to avoid
22
22
 
23
23
  # Exceptions that are part of normal control flow and should not be captured
24
24
  _IGNORED_EXCEPTIONS = (
25
- StopIteration, # Iterator exhaustion
25
+ StopIteration, # Iterator exhaustion
26
26
  StopAsyncIteration, # Async iterator exhaustion
27
- GeneratorExit, # Generator cleanup
28
- KeyboardInterrupt, # User interrupt (Ctrl+C)
29
- SystemExit, # Program exit
30
- CancelledError, # Async task cancellation
27
+ GeneratorExit, # Generator cleanup
28
+ KeyboardInterrupt, # User interrupt (Ctrl+C)
29
+ SystemExit, # Program exit
30
+ CancelledError, # Async task cancellation
31
31
  )
32
32
 
33
33
  # Optional dependencies that may not be installed - import errors for these are expected
34
- _OPTIONAL_DEPENDENCIES = (
35
- 'opentelemetry',
36
- )
34
+ _OPTIONAL_DEPENDENCIES = ("opentelemetry",)
37
35
 
38
36
 
39
37
  def _get_exception_key(exc_type, exc_value, frame) -> str:
@@ -43,7 +41,7 @@ def _get_exception_key(exc_type, exc_value, frame) -> str:
43
41
  exc_name = exc_type.__name__ if exc_type else "Unknown"
44
42
  exc_msg = str(exc_value) if exc_value else ""
45
43
  # Get the original traceback location (where exception was first raised)
46
- tb = getattr(exc_value, '__traceback__', None)
44
+ tb = getattr(exc_value, "__traceback__", None)
47
45
  if tb:
48
46
  # Walk to the deepest frame (origin of exception)
49
47
  while tb.tb_next:
@@ -65,7 +63,7 @@ def _is_optional_dependency_error(exc_type, exc_value) -> bool:
65
63
 
66
64
  def _trace_blaxel_exceptions(frame, event, arg):
67
65
  """Trace function that captures exceptions from blaxel SDK code."""
68
- if event == 'exception':
66
+ if event == "exception":
69
67
  exc_type, exc_value, exc_tb = arg
70
68
 
71
69
  # Skip control flow exceptions (not actual errors)
@@ -79,7 +77,7 @@ def _trace_blaxel_exceptions(frame, event, arg):
79
77
  filename = frame.f_code.co_filename
80
78
 
81
79
  # Only capture if it's from blaxel in site-packages
82
- if 'site-packages/blaxel' in filename:
80
+ if "site-packages/blaxel" in filename:
83
81
  # Avoid capturing the same exception multiple times using a content-based key
84
82
  exc_key = _get_exception_key(exc_type, exc_value, frame)
85
83
  if exc_key not in _captured_exceptions:
blaxel/core/common/env.py CHANGED
@@ -19,29 +19,31 @@ class EnvConfig(BaseModel):
19
19
  def __getitem__(self, name: str) -> str | None:
20
20
  return self.__getattr__(name)
21
21
 
22
+
22
23
  def load_env() -> EnvConfig:
23
24
  env_config = EnvConfig()
24
25
 
25
26
  # Load config from blaxel.toml
26
27
  try:
27
- with open('blaxel.toml', 'rb') as f:
28
+ with open("blaxel.toml", "rb") as f:
28
29
  config_infos = tomli.load(f)
29
- if 'env' in config_infos:
30
- env_config.config_env.update(config_infos['env'])
30
+ if "env" in config_infos:
31
+ env_config.config_env.update(config_infos["env"])
31
32
  except Exception:
32
33
  pass
33
34
 
34
35
  # Load secrets from .env
35
36
  try:
36
- with open('.env') as f:
37
+ with open(".env") as f:
37
38
  for line in f:
38
39
  line = line.strip()
39
- if line and not line.startswith('#'):
40
- key, value = line.split('=', 1)
41
- env_config.secret_env[key] = value.replace('"', '')
40
+ if line and not line.startswith("#"):
41
+ key, value = line.split("=", 1)
42
+ env_config.secret_env[key] = value.replace('"', "")
42
43
  except Exception:
43
44
  pass
44
45
 
45
46
  return env_config
46
47
 
47
- env = load_env()
48
+
49
+ env = load_env()