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.
- blaxel/__init__.py +3 -3
- blaxel/core/agents/__init__.py +16 -7
- blaxel/core/authentication/__init__.py +2 -1
- blaxel/core/authentication/devicemode.py +9 -1
- blaxel/core/authentication/oauth.py +13 -6
- blaxel/core/authentication/types.py +1 -0
- blaxel/core/cache/cache.py +10 -3
- blaxel/core/client/api/agents/create_agent.py +5 -5
- blaxel/core/client/api/agents/delete_agent.py +5 -5
- blaxel/core/client/api/agents/get_agent.py +4 -4
- blaxel/core/client/api/agents/list_agent_revisions.py +8 -6
- blaxel/core/client/api/agents/list_agents.py +5 -5
- blaxel/core/client/api/agents/update_agent.py +5 -5
- blaxel/core/client/api/compute/create_sandbox.py +5 -5
- blaxel/core/client/api/compute/create_sandbox_preview.py +5 -5
- blaxel/core/client/api/compute/create_sandbox_preview_token.py +5 -5
- blaxel/core/client/api/compute/delete_sandbox.py +5 -5
- blaxel/core/client/api/compute/delete_sandbox_preview.py +5 -5
- blaxel/core/client/api/compute/delete_sandbox_preview_token.py +11 -7
- blaxel/core/client/api/compute/get_sandbox.py +4 -4
- blaxel/core/client/api/compute/get_sandbox_preview.py +5 -5
- blaxel/core/client/api/compute/list_sandbox_preview_tokens.py +5 -5
- blaxel/core/client/api/compute/list_sandbox_previews.py +5 -5
- blaxel/core/client/api/compute/list_sandboxes.py +5 -5
- blaxel/core/client/api/compute/update_sandbox.py +5 -5
- blaxel/core/client/api/compute/update_sandbox_preview.py +5 -5
- blaxel/core/client/api/configurations/get_configuration.py +5 -5
- blaxel/core/client/api/customdomains/create_custom_domain.py +5 -5
- blaxel/core/client/api/customdomains/delete_custom_domain.py +5 -5
- blaxel/core/client/api/customdomains/get_custom_domain.py +5 -5
- blaxel/core/client/api/customdomains/list_custom_domains.py +5 -5
- blaxel/core/client/api/customdomains/update_custom_domain.py +5 -5
- blaxel/core/client/api/customdomains/verify_custom_domain.py +5 -5
- blaxel/core/client/api/default/get_template.py +5 -5
- blaxel/core/client/api/default/list_mcp_hub_definitions.py +5 -5
- blaxel/core/client/api/default/list_sandbox_hub_definitions.py +11 -7
- blaxel/core/client/api/functions/create_function.py +5 -5
- blaxel/core/client/api/functions/delete_function.py +5 -5
- blaxel/core/client/api/functions/get_function.py +4 -4
- blaxel/core/client/api/functions/list_function_revisions.py +8 -6
- blaxel/core/client/api/functions/list_functions.py +5 -5
- blaxel/core/client/api/functions/update_function.py +5 -5
- blaxel/core/client/api/images/cleanup_images.py +8 -6
- blaxel/core/client/api/images/delete_image.py +4 -4
- blaxel/core/client/api/images/delete_image_tag.py +4 -4
- blaxel/core/client/api/images/get_image.py +5 -5
- blaxel/core/client/api/images/list_images.py +5 -5
- blaxel/core/client/api/integrations/create_integration_connection.py +5 -5
- blaxel/core/client/api/integrations/delete_integration_connection.py +5 -5
- blaxel/core/client/api/integrations/get_integration.py +5 -5
- blaxel/core/client/api/integrations/get_integration_connection.py +5 -5
- blaxel/core/client/api/integrations/get_integration_connection_model.py +3 -3
- blaxel/core/client/api/integrations/get_integration_connection_model_endpoint_configurations.py +3 -3
- blaxel/core/client/api/integrations/list_integration_connection_models.py +3 -3
- blaxel/core/client/api/integrations/list_integration_connections.py +11 -7
- blaxel/core/client/api/integrations/update_integration_connection.py +5 -5
- blaxel/core/client/api/invitations/list_all_pending_invitations.py +7 -5
- blaxel/core/client/api/jobs/create_job.py +5 -5
- blaxel/core/client/api/jobs/create_job_execution.py +7 -5
- blaxel/core/client/api/jobs/delete_job.py +5 -5
- blaxel/core/client/api/jobs/delete_job_execution.py +7 -5
- blaxel/core/client/api/jobs/get_job.py +4 -4
- blaxel/core/client/api/jobs/get_job_execution.py +7 -5
- blaxel/core/client/api/jobs/list_job_executions.py +10 -6
- blaxel/core/client/api/jobs/list_job_revisions.py +8 -6
- blaxel/core/client/api/jobs/list_jobs.py +5 -5
- blaxel/core/client/api/jobs/update_job.py +5 -5
- blaxel/core/client/api/locations/list_locations.py +8 -6
- blaxel/core/client/api/models/create_model.py +5 -5
- blaxel/core/client/api/models/delete_model.py +5 -5
- blaxel/core/client/api/models/get_model.py +5 -5
- blaxel/core/client/api/models/list_model_revisions.py +8 -6
- blaxel/core/client/api/models/list_models.py +5 -5
- blaxel/core/client/api/models/update_model.py +5 -5
- blaxel/core/client/api/policies/create_policy.py +5 -5
- blaxel/core/client/api/policies/delete_policy.py +5 -5
- blaxel/core/client/api/policies/get_policy.py +5 -5
- blaxel/core/client/api/policies/list_policies.py +5 -5
- blaxel/core/client/api/policies/update_policy.py +5 -5
- blaxel/core/client/api/public_ipslist/list_public_ips.py +5 -5
- blaxel/core/client/api/service_accounts/create_api_key_for_service_account.py +5 -5
- blaxel/core/client/api/service_accounts/create_workspace_service_account.py +11 -7
- blaxel/core/client/api/service_accounts/delete_api_key_for_service_account.py +3 -3
- blaxel/core/client/api/service_accounts/delete_workspace_service_account.py +11 -7
- blaxel/core/client/api/service_accounts/get_workspace_service_accounts.py +8 -6
- blaxel/core/client/api/service_accounts/list_api_keys_for_service_account.py +5 -5
- blaxel/core/client/api/service_accounts/update_workspace_service_account.py +11 -7
- blaxel/core/client/api/templates/list_templates.py +5 -5
- blaxel/core/client/api/volume_templates/create_volume_template.py +4 -4
- blaxel/core/client/api/volume_templates/delete_volume_template.py +5 -5
- blaxel/core/client/api/volume_templates/delete_volume_template_version.py +4 -4
- blaxel/core/client/api/volume_templates/get_volume_template.py +5 -5
- blaxel/core/client/api/volume_templates/list_volume_templates.py +8 -6
- blaxel/core/client/api/volume_templates/update_volume_template.py +4 -4
- blaxel/core/client/api/volumes/create_volume.py +5 -5
- blaxel/core/client/api/volumes/delete_volume.py +5 -5
- blaxel/core/client/api/volumes/get_volume.py +5 -5
- blaxel/core/client/api/volumes/list_volumes.py +5 -5
- blaxel/core/client/api/workspaces/accept_workspace_invitation.py +10 -6
- blaxel/core/client/api/workspaces/check_workspace_availability.py +5 -5
- blaxel/core/client/api/workspaces/create_workspace.py +5 -5
- blaxel/core/client/api/workspaces/decline_workspace_invitation.py +5 -5
- blaxel/core/client/api/workspaces/delete_workspace.py +5 -5
- blaxel/core/client/api/workspaces/get_workspace.py +5 -5
- blaxel/core/client/api/workspaces/invite_workspace_user.py +10 -6
- blaxel/core/client/api/workspaces/leave_workspace.py +4 -4
- blaxel/core/client/api/workspaces/list_workspace_users.py +5 -5
- blaxel/core/client/api/workspaces/list_workspaces.py +5 -5
- blaxel/core/client/api/workspaces/remove_workspace_user.py +3 -3
- blaxel/core/client/api/workspaces/update_workspace.py +5 -5
- blaxel/core/client/api/workspaces/update_workspace_user_role.py +10 -6
- blaxel/core/client/client.py +5 -19
- blaxel/core/client/models/acl.py +3 -3
- blaxel/core/client/models/agent.py +12 -5
- blaxel/core/client/models/agent_spec.py +22 -7
- blaxel/core/client/models/api_key.py +6 -6
- blaxel/core/client/models/billable_time_metric.py +3 -4
- blaxel/core/client/models/check_workspace_availability_body.py +1 -1
- blaxel/core/client/models/cleanup_images_response_200.py +1 -1
- blaxel/core/client/models/configuration.py +2 -3
- blaxel/core/client/models/continent.py +2 -2
- blaxel/core/client/models/core_event.py +3 -3
- blaxel/core/client/models/core_spec.py +14 -5
- blaxel/core/client/models/core_spec_configurations.py +1 -2
- blaxel/core/client/models/country.py +2 -2
- blaxel/core/client/models/create_api_key_for_service_account_body.py +1 -1
- blaxel/core/client/models/create_job_execution_request.py +4 -5
- blaxel/core/client/models/create_job_execution_request_tasks_item.py +1 -1
- blaxel/core/client/models/create_job_execution_response.py +4 -5
- blaxel/core/client/models/create_job_execution_response_tasks_item.py +1 -1
- blaxel/core/client/models/create_workspace_service_account_body.py +1 -1
- blaxel/core/client/models/create_workspace_service_account_response_200.py +1 -1
- blaxel/core/client/models/custom_domain.py +6 -3
- blaxel/core/client/models/custom_domain_metadata.py +6 -7
- blaxel/core/client/models/custom_domain_spec.py +10 -7
- blaxel/core/client/models/custom_domain_spec_txt_records.py +1 -1
- blaxel/core/client/models/delete_sandbox_preview_token_response_200.py +1 -1
- blaxel/core/client/models/delete_volume_template_version_response_200.py +6 -3
- blaxel/core/client/models/delete_workspace_service_account_response_200.py +1 -1
- blaxel/core/client/models/entrypoint.py +4 -3
- blaxel/core/client/models/entrypoint_env.py +1 -1
- blaxel/core/client/models/expiration_policy.py +2 -2
- blaxel/core/client/models/flavor.py +2 -2
- blaxel/core/client/models/form.py +6 -3
- blaxel/core/client/models/form_config.py +1 -1
- blaxel/core/client/models/form_oauth.py +1 -1
- blaxel/core/client/models/form_secrets.py +1 -1
- blaxel/core/client/models/function.py +12 -5
- blaxel/core/client/models/function_spec.py +17 -6
- blaxel/core/client/models/get_workspace_service_accounts_response_200_item.py +1 -1
- blaxel/core/client/models/histogram_bucket.py +1 -1
- blaxel/core/client/models/histogram_stats.py +1 -1
- blaxel/core/client/models/image.py +6 -3
- blaxel/core/client/models/image_metadata.py +6 -6
- blaxel/core/client/models/image_spec.py +1 -2
- blaxel/core/client/models/image_tag.py +3 -3
- blaxel/core/client/models/integration.py +12 -5
- blaxel/core/client/models/integration_additional_infos.py +1 -1
- blaxel/core/client/models/integration_connection.py +6 -3
- blaxel/core/client/models/integration_connection_spec.py +1 -2
- blaxel/core/client/models/integration_connection_spec_config.py +1 -1
- blaxel/core/client/models/integration_connection_spec_secret.py +1 -1
- blaxel/core/client/models/integration_endpoint.py +9 -6
- blaxel/core/client/models/integration_endpoint_token.py +1 -1
- blaxel/core/client/models/integration_endpoints.py +1 -3
- blaxel/core/client/models/integration_headers.py +1 -1
- blaxel/core/client/models/integration_model.py +1 -1
- blaxel/core/client/models/integration_organization.py +2 -2
- blaxel/core/client/models/integration_query_params.py +1 -1
- blaxel/core/client/models/integration_repository.py +2 -2
- blaxel/core/client/models/invite_workspace_user_body.py +1 -1
- blaxel/core/client/models/job.py +12 -5
- blaxel/core/client/models/job_execution.py +6 -3
- blaxel/core/client/models/job_execution_config.py +3 -3
- blaxel/core/client/models/job_execution_metadata.py +7 -7
- blaxel/core/client/models/job_execution_spec.py +1 -2
- blaxel/core/client/models/job_execution_stats.py +1 -1
- blaxel/core/client/models/job_execution_task.py +6 -3
- blaxel/core/client/models/job_execution_task_condition.py +3 -3
- blaxel/core/client/models/job_execution_task_metadata.py +6 -6
- blaxel/core/client/models/job_execution_task_spec.py +2 -2
- blaxel/core/client/models/job_metrics.py +15 -12
- blaxel/core/client/models/job_metrics_executions_total.py +1 -1
- blaxel/core/client/models/job_metrics_tasks_total.py +1 -1
- blaxel/core/client/models/job_spec.py +17 -6
- blaxel/core/client/models/jobs_chart_value.py +1 -1
- blaxel/core/client/models/jobs_network_chart.py +1 -2
- blaxel/core/client/models/jobs_success_failed_chart.py +11 -4
- blaxel/core/client/models/jobs_total.py +1 -1
- blaxel/core/client/models/last_n_requests_metric.py +4 -4
- blaxel/core/client/models/latency_metric.py +10 -7
- blaxel/core/client/models/location_response.py +1 -2
- blaxel/core/client/models/logs_response.py +1 -1
- blaxel/core/client/models/logs_response_data.py +4 -4
- blaxel/core/client/models/mcp_definition.py +11 -8
- blaxel/core/client/models/mcp_definition_entrypoint.py +1 -1
- blaxel/core/client/models/mcp_definition_form.py +1 -1
- blaxel/core/client/models/memory_allocation_by_name.py +1 -1
- blaxel/core/client/models/memory_allocation_metric.py +2 -2
- blaxel/core/client/models/metadata.py +6 -7
- blaxel/core/client/models/metadata_labels.py +1 -1
- blaxel/core/client/models/metric.py +2 -2
- blaxel/core/client/models/metrics.py +24 -11
- blaxel/core/client/models/metrics_models.py +1 -1
- blaxel/core/client/models/metrics_request_total_per_code.py +1 -1
- blaxel/core/client/models/metrics_rps_per_code.py +1 -1
- blaxel/core/client/models/model.py +12 -5
- blaxel/core/client/models/model_spec.py +14 -5
- blaxel/core/client/models/o_auth.py +2 -2
- blaxel/core/client/models/owner_fields.py +3 -3
- blaxel/core/client/models/pending_invitation.py +6 -6
- blaxel/core/client/models/pending_invitation_accept.py +6 -3
- blaxel/core/client/models/pending_invitation_render.py +14 -7
- blaxel/core/client/models/pending_invitation_render_invited_by.py +1 -1
- blaxel/core/client/models/pending_invitation_render_workspace.py +2 -2
- blaxel/core/client/models/pending_invitation_workspace_details.py +1 -1
- blaxel/core/client/models/pod_template_spec.py +1 -1
- blaxel/core/client/models/policy.py +6 -3
- blaxel/core/client/models/policy_location.py +2 -2
- blaxel/core/client/models/policy_max_tokens.py +5 -3
- blaxel/core/client/models/policy_spec.py +15 -8
- blaxel/core/client/models/port.py +1 -1
- blaxel/core/client/models/preview.py +6 -3
- blaxel/core/client/models/preview_metadata.py +8 -8
- blaxel/core/client/models/preview_spec.py +5 -6
- blaxel/core/client/models/preview_spec_request_headers.py +1 -1
- blaxel/core/client/models/preview_spec_response_headers.py +1 -1
- blaxel/core/client/models/preview_token.py +6 -3
- blaxel/core/client/models/preview_token_metadata.py +4 -4
- blaxel/core/client/models/preview_token_spec.py +2 -2
- blaxel/core/client/models/private_location.py +1 -1
- blaxel/core/client/models/public_ip.py +3 -3
- blaxel/core/client/models/public_ips.py +1 -2
- blaxel/core/client/models/region.py +2 -2
- blaxel/core/client/models/repository.py +2 -2
- blaxel/core/client/models/request_duration_over_time_metric.py +1 -1
- blaxel/core/client/models/request_duration_over_time_metrics.py +4 -3
- blaxel/core/client/models/request_total_by_origin_metric.py +23 -10
- blaxel/core/client/models/request_total_by_origin_metric_request_total_by_origin.py +1 -1
- blaxel/core/client/models/request_total_by_origin_metric_request_total_by_origin_and_code.py +1 -1
- blaxel/core/client/models/request_total_metric.py +14 -7
- blaxel/core/client/models/request_total_metric_request_total_per_code.py +1 -1
- blaxel/core/client/models/request_total_metric_rps_per_code.py +1 -1
- blaxel/core/client/models/request_total_response_data.py +5 -5
- blaxel/core/client/models/resource.py +6 -4
- blaxel/core/client/models/resource_log.py +1 -1
- blaxel/core/client/models/resource_log_chart.py +1 -1
- blaxel/core/client/models/resource_log_response.py +2 -2
- blaxel/core/client/models/resource_metrics.py +95 -40
- blaxel/core/client/models/resource_metrics_request_total_per_code.py +1 -1
- blaxel/core/client/models/resource_metrics_request_total_per_code_previous.py +1 -1
- blaxel/core/client/models/resource_metrics_rps_per_code.py +1 -1
- blaxel/core/client/models/resource_metrics_rps_per_code_previous.py +1 -1
- blaxel/core/client/models/resource_trace.py +5 -5
- blaxel/core/client/models/revision_configuration.py +3 -3
- blaxel/core/client/models/revision_metadata.py +5 -5
- blaxel/core/client/models/runtime.py +9 -10
- blaxel/core/client/models/runtime_configuration.py +1 -1
- blaxel/core/client/models/runtime_startup_probe.py +1 -1
- blaxel/core/client/models/sandbox.py +13 -6
- blaxel/core/client/models/sandbox_definition.py +3 -4
- blaxel/core/client/models/sandbox_lifecycle.py +2 -3
- blaxel/core/client/models/sandbox_metrics.py +1 -1
- blaxel/core/client/models/sandbox_spec.py +25 -8
- blaxel/core/client/models/serverless_config.py +4 -5
- blaxel/core/client/models/serverless_config_configuration.py +1 -1
- blaxel/core/client/models/spec_configuration.py +1 -1
- blaxel/core/client/models/start_sandbox.py +6 -3
- blaxel/core/client/models/stop_sandbox.py +6 -3
- blaxel/core/client/models/store_agent.py +6 -7
- blaxel/core/client/models/store_agent_labels.py +1 -1
- blaxel/core/client/models/store_configuration.py +7 -6
- blaxel/core/client/models/store_configuration_option.py +2 -2
- blaxel/core/client/models/template.py +6 -7
- blaxel/core/client/models/template_variable.py +1 -1
- blaxel/core/client/models/time_fields.py +3 -3
- blaxel/core/client/models/time_to_first_token_over_time_metrics.py +7 -4
- blaxel/core/client/models/token_rate_metric.py +3 -3
- blaxel/core/client/models/token_rate_metrics.py +4 -5
- blaxel/core/client/models/token_total_metric.py +13 -7
- blaxel/core/client/models/trace_ids_response.py +1 -1
- blaxel/core/client/models/trigger.py +2 -3
- blaxel/core/client/models/trigger_configuration.py +4 -5
- blaxel/core/client/models/trigger_configuration_task.py +1 -1
- blaxel/core/client/models/update_workspace_service_account_body.py +1 -1
- blaxel/core/client/models/update_workspace_service_account_response_200.py +1 -1
- blaxel/core/client/models/update_workspace_user_role_body.py +1 -1
- blaxel/core/client/models/volume.py +13 -6
- blaxel/core/client/models/volume_attachment.py +3 -3
- blaxel/core/client/models/volume_spec.py +2 -2
- blaxel/core/client/models/volume_state.py +2 -2
- blaxel/core/client/models/volume_template.py +6 -3
- blaxel/core/client/models/volume_template_spec.py +2 -2
- blaxel/core/client/models/volume_template_state.py +6 -4
- blaxel/core/client/models/volume_template_version.py +4 -4
- blaxel/core/client/models/websocket_channel.py +4 -4
- blaxel/core/client/models/websocket_message.py +3 -3
- blaxel/core/client/models/workspace.py +13 -10
- blaxel/core/client/models/workspace_labels.py +1 -1
- blaxel/core/client/models/workspace_runtime.py +1 -1
- blaxel/core/client/models/workspace_user.py +1 -1
- blaxel/core/client/response_interceptor.py +3 -1
- blaxel/core/common/autoload.py +9 -11
- blaxel/core/common/env.py +10 -8
- blaxel/core/common/settings.py +7 -5
- blaxel/core/common/webhook.py +0 -1
- blaxel/core/jobs/__init__.py +13 -3
- blaxel/core/mcp/client.py +8 -2
- blaxel/core/mcp/server.py +8 -2
- blaxel/core/models/__init__.py +6 -5
- blaxel/core/sandbox/__init__.py +1 -1
- blaxel/core/sandbox/client/api/codegen/get_codegen_reranking_path.py +10 -6
- blaxel/core/sandbox/client/api/fastapply/put_codegen_fastapply_path.py +10 -6
- blaxel/core/sandbox/client/api/filesystem/delete_filesystem_multipart_upload_id_abort.py +10 -6
- blaxel/core/sandbox/client/api/filesystem/delete_filesystem_path.py +10 -6
- blaxel/core/sandbox/client/api/filesystem/delete_filesystem_tree_path.py +10 -6
- blaxel/core/sandbox/client/api/filesystem/get_filesystem_content_search_path.py +7 -5
- blaxel/core/sandbox/client/api/filesystem/get_filesystem_find_path.py +10 -6
- blaxel/core/sandbox/client/api/filesystem/get_filesystem_multipart.py +4 -4
- blaxel/core/sandbox/client/api/filesystem/get_filesystem_multipart_upload_id_parts.py +4 -4
- blaxel/core/sandbox/client/api/filesystem/get_filesystem_path.py +4 -4
- blaxel/core/sandbox/client/api/filesystem/get_filesystem_search_path.py +10 -6
- blaxel/core/sandbox/client/api/filesystem/get_filesystem_tree_path.py +4 -4
- blaxel/core/sandbox/client/api/filesystem/get_watch_filesystem_path.py +10 -6
- blaxel/core/sandbox/client/api/filesystem/post_filesystem_multipart_initiate_path.py +4 -4
- blaxel/core/sandbox/client/api/filesystem/post_filesystem_multipart_upload_id_complete.py +10 -6
- blaxel/core/sandbox/client/api/filesystem/put_filesystem_multipart_upload_id_part.py +4 -4
- blaxel/core/sandbox/client/api/filesystem/put_filesystem_path.py +10 -6
- blaxel/core/sandbox/client/api/filesystem/put_filesystem_tree_path.py +4 -4
- blaxel/core/sandbox/client/api/network/delete_network_process_pid_monitor.py +4 -4
- blaxel/core/sandbox/client/api/network/get_network_process_pid_ports.py +4 -4
- blaxel/core/sandbox/client/api/network/post_network_process_pid_monitor.py +4 -4
- blaxel/core/sandbox/client/api/process/delete_process_identifier.py +10 -6
- blaxel/core/sandbox/client/api/process/delete_process_identifier_kill.py +10 -6
- blaxel/core/sandbox/client/api/process/get_process.py +8 -6
- blaxel/core/sandbox/client/api/process/get_process_identifier.py +10 -6
- blaxel/core/sandbox/client/api/process/get_process_identifier_logs.py +10 -6
- blaxel/core/sandbox/client/api/process/get_process_identifier_logs_stream.py +10 -6
- blaxel/core/sandbox/client/api/process/post_process.py +10 -6
- blaxel/core/sandbox/client/api/root/delete.py +5 -5
- blaxel/core/sandbox/client/api/root/get.py +5 -5
- blaxel/core/sandbox/client/api/root/options.py +5 -5
- blaxel/core/sandbox/client/api/root/patch.py +5 -5
- blaxel/core/sandbox/client/api/root/post.py +5 -5
- blaxel/core/sandbox/client/api/root/put.py +5 -5
- blaxel/core/sandbox/client/client.py +3 -1
- blaxel/core/sandbox/client/models/apply_edit_request.py +2 -2
- blaxel/core/sandbox/client/models/apply_edit_response.py +3 -3
- blaxel/core/sandbox/client/models/content_search_match.py +1 -1
- blaxel/core/sandbox/client/models/content_search_response.py +1 -1
- blaxel/core/sandbox/client/models/delete_network_process_pid_monitor_response_200.py +1 -1
- blaxel/core/sandbox/client/models/directory.py +1 -1
- blaxel/core/sandbox/client/models/error_response.py +1 -1
- blaxel/core/sandbox/client/models/file.py +2 -2
- blaxel/core/sandbox/client/models/file_request.py +2 -2
- blaxel/core/sandbox/client/models/file_with_content.py +2 -2
- blaxel/core/sandbox/client/models/filesystem_multipart_upload.py +3 -3
- blaxel/core/sandbox/client/models/filesystem_multipart_upload_parts.py +4 -2
- blaxel/core/sandbox/client/models/filesystem_uploaded_part.py +3 -3
- blaxel/core/sandbox/client/models/find_match.py +2 -2
- blaxel/core/sandbox/client/models/find_response.py +1 -1
- blaxel/core/sandbox/client/models/fuzzy_search_match.py +2 -2
- blaxel/core/sandbox/client/models/fuzzy_search_response.py +1 -1
- blaxel/core/sandbox/client/models/get_network_process_pid_ports_response_200.py +1 -1
- blaxel/core/sandbox/client/models/multipart_complete_request.py +1 -1
- blaxel/core/sandbox/client/models/multipart_initiate_request.py +1 -1
- blaxel/core/sandbox/client/models/multipart_initiate_response.py +2 -2
- blaxel/core/sandbox/client/models/multipart_list_parts_response.py +2 -2
- blaxel/core/sandbox/client/models/multipart_list_uploads_response.py +1 -1
- blaxel/core/sandbox/client/models/multipart_part_info.py +2 -2
- blaxel/core/sandbox/client/models/multipart_upload_part_response.py +2 -2
- blaxel/core/sandbox/client/models/port_monitor_request.py +1 -1
- blaxel/core/sandbox/client/models/post_network_process_pid_monitor_response_200.py +1 -1
- blaxel/core/sandbox/client/models/process_logs.py +1 -1
- blaxel/core/sandbox/client/models/process_request.py +6 -6
- blaxel/core/sandbox/client/models/process_request_env.py +1 -1
- blaxel/core/sandbox/client/models/process_response.py +8 -8
- blaxel/core/sandbox/client/models/put_filesystem_multipart_upload_id_part_body.py +1 -1
- blaxel/core/sandbox/client/models/ranked_file.py +1 -1
- blaxel/core/sandbox/client/models/reranking_response.py +1 -1
- blaxel/core/sandbox/client/models/subdirectory.py +1 -1
- blaxel/core/sandbox/client/models/success_response.py +1 -1
- blaxel/core/sandbox/client/models/tree_request.py +1 -1
- blaxel/core/sandbox/client/models/tree_request_files.py +1 -1
- blaxel/core/sandbox/client/models/welcome_response.py +1 -1
- blaxel/core/sandbox/default/__init__.py +0 -1
- blaxel/core/sandbox/default/action.py +3 -3
- blaxel/core/sandbox/default/codegen.py +2 -4
- blaxel/core/sandbox/default/filesystem.py +38 -82
- blaxel/core/sandbox/default/interpreter.py +17 -10
- blaxel/core/sandbox/default/preview.py +6 -2
- blaxel/core/sandbox/default/process.py +20 -11
- blaxel/core/sandbox/default/sandbox.py +24 -14
- blaxel/core/sandbox/sync/__init__.py +0 -2
- blaxel/core/sandbox/sync/action.py +2 -3
- blaxel/core/sandbox/sync/codegen.py +1 -5
- blaxel/core/sandbox/sync/filesystem.py +17 -6
- blaxel/core/sandbox/sync/interpreter.py +10 -6
- blaxel/core/sandbox/sync/network.py +0 -2
- blaxel/core/sandbox/sync/preview.py +76 -33
- blaxel/core/sandbox/sync/process.py +27 -12
- blaxel/core/sandbox/sync/sandbox.py +30 -18
- blaxel/core/sandbox/sync/session.py +6 -4
- blaxel/core/sandbox/types.py +2 -1
- blaxel/core/tools/__init__.py +30 -6
- blaxel/core/tools/common.py +1 -1
- blaxel/core/tools/types.py +2 -1
- blaxel/crewai/model.py +20 -5
- blaxel/googleadk/__init__.py +1 -1
- blaxel/googleadk/tools.py +3 -5
- blaxel/langgraph/custom/gemini.py +126 -133
- blaxel/langgraph/model.py +54 -50
- blaxel/langgraph/tools.py +9 -3
- blaxel/llamaindex/custom/cohere.py +25 -16
- blaxel/llamaindex/model.py +44 -57
- blaxel/llamaindex/tools.py +2 -3
- blaxel/pydantic/custom/gemini.py +3 -3
- blaxel/pydantic/tools.py +2 -4
- blaxel/telemetry/exporters.py +10 -3
- blaxel/telemetry/instrumentation/blaxel_langgraph.py +4 -2
- blaxel/telemetry/instrumentation/blaxel_langgraph_gemini.py +22 -5
- blaxel/telemetry/instrumentation/utils.py +3 -3
- blaxel/telemetry/log/log.py +2 -3
- blaxel/telemetry/log/logger.py +21 -15
- blaxel/telemetry/span.py +10 -6
- {blaxel-0.2.31rc120.dist-info → blaxel-0.2.32.dist-info}/METADATA +2 -2
- blaxel-0.2.32.dist-info/RECORD +506 -0
- blaxel/core/client/api/compute/start_sandbox.py +0 -157
- blaxel/core/client/api/compute/stop_sandbox.py +0 -157
- blaxel-0.2.31rc120.dist-info/RECORD +0 -508
- {blaxel-0.2.31rc120.dist-info → blaxel-0.2.32.dist-info}/WHEEL +0 -0
- {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(
|
|
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(
|
|
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(
|
|
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,
|
|
@@ -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 =
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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,
|
|
@@ -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(
|
|
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)
|
blaxel/core/common/autoload.py
CHANGED
|
@@ -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,
|
|
25
|
+
StopIteration, # Iterator exhaustion
|
|
26
26
|
StopAsyncIteration, # Async iterator exhaustion
|
|
27
|
-
GeneratorExit,
|
|
28
|
-
KeyboardInterrupt,
|
|
29
|
-
SystemExit,
|
|
30
|
-
CancelledError,
|
|
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,
|
|
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 ==
|
|
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
|
|
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(
|
|
28
|
+
with open("blaxel.toml", "rb") as f:
|
|
28
29
|
config_infos = tomli.load(f)
|
|
29
|
-
if
|
|
30
|
-
env_config.config_env.update(config_infos[
|
|
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(
|
|
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(
|
|
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
|
-
|
|
48
|
+
|
|
49
|
+
env = load_env()
|