lightning-sdk 0.1.3__py3-none-any.whl → 0.1.46__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.
- lightning_sdk/__init__.py +12 -2
- lightning_sdk/agents.py +46 -0
- lightning_sdk/ai_hub.py +185 -0
- lightning_sdk/api/__init__.py +4 -0
- lightning_sdk/api/agents_api.py +107 -0
- lightning_sdk/api/ai_hub_api.py +130 -0
- lightning_sdk/api/deployment_api.py +574 -0
- lightning_sdk/api/job_api.py +308 -0
- lightning_sdk/api/mmt_api.py +188 -0
- lightning_sdk/api/org_api.py +1 -3
- lightning_sdk/api/studio_api.py +172 -81
- lightning_sdk/api/teamspace_api.py +219 -20
- lightning_sdk/api/user_api.py +24 -9
- lightning_sdk/api/utils.py +429 -48
- lightning_sdk/cli/ai_hub.py +49 -0
- lightning_sdk/cli/download.py +132 -0
- lightning_sdk/cli/entrypoint.py +11 -3
- lightning_sdk/cli/run.py +206 -0
- lightning_sdk/cli/serve.py +218 -0
- lightning_sdk/cli/studios_menu.py +78 -0
- lightning_sdk/cli/upload.py +79 -89
- lightning_sdk/constants.py +29 -1
- lightning_sdk/deployment/__init__.py +25 -0
- lightning_sdk/deployment/deployment.py +389 -0
- lightning_sdk/helpers.py +49 -0
- lightning_sdk/job/__init__.py +5 -0
- lightning_sdk/job/base.py +295 -0
- lightning_sdk/job/job.py +266 -0
- lightning_sdk/job/v1.py +241 -0
- lightning_sdk/job/v2.py +193 -0
- lightning_sdk/job/work.py +72 -0
- lightning_sdk/lightning_cloud/__version__.py +1 -1
- lightning_sdk/lightning_cloud/cli/__main__.py +15 -13
- lightning_sdk/lightning_cloud/env.py +1 -0
- lightning_sdk/lightning_cloud/login.py +12 -8
- lightning_sdk/lightning_cloud/openapi/__init__.py +288 -42
- lightning_sdk/lightning_cloud/openapi/api/__init__.py +10 -0
- lightning_sdk/lightning_cloud/openapi/api/analytics_service_api.py +141 -0
- lightning_sdk/lightning_cloud/openapi/api/assistants_service_api.py +1075 -227
- lightning_sdk/lightning_cloud/openapi/api/billing_service_api.py +9 -1
- lightning_sdk/lightning_cloud/openapi/api/cloud_space_service_api.py +992 -233
- lightning_sdk/lightning_cloud/openapi/api/cluster_service_api.py +883 -120
- lightning_sdk/lightning_cloud/openapi/api/data_connection_service_api.py +10 -5
- lightning_sdk/lightning_cloud/openapi/api/deployment_templates_service_api.py +756 -0
- lightning_sdk/lightning_cloud/openapi/api/endpoint_service_api.py +422 -1
- lightning_sdk/lightning_cloud/openapi/api/experiments_service_api.py +242 -0
- lightning_sdk/lightning_cloud/openapi/api/file_system_service_api.py +674 -0
- lightning_sdk/lightning_cloud/openapi/api/jobs_service_api.py +3823 -0
- lightning_sdk/lightning_cloud/openapi/api/lightningapp_instance_service_api.py +158 -594
- lightning_sdk/lightning_cloud/openapi/api/lightningapp_v2_service_api.py +0 -1086
- lightning_sdk/lightning_cloud/openapi/api/lightningwork_service_api.py +113 -0
- lightning_sdk/lightning_cloud/openapi/api/lit_logger_service_api.py +1753 -0
- lightning_sdk/lightning_cloud/openapi/api/lit_registry_service_api.py +242 -0
- lightning_sdk/lightning_cloud/openapi/api/models_store_api.py +1423 -108
- lightning_sdk/lightning_cloud/openapi/api/organizations_service_api.py +421 -1
- lightning_sdk/lightning_cloud/openapi/api/profiler_service_api.py +663 -0
- lightning_sdk/lightning_cloud/openapi/api/projects_service_api.py +5 -1
- lightning_sdk/lightning_cloud/openapi/api/secret_service_api.py +478 -1
- lightning_sdk/lightning_cloud/openapi/api/slurm_jobs_user_service_api.py +9 -5
- lightning_sdk/lightning_cloud/openapi/api/snowflake_service_api.py +686 -0
- lightning_sdk/lightning_cloud/openapi/api/storage_service_api.py +1094 -0
- lightning_sdk/lightning_cloud/openapi/api/studio_jobs_service_api.py +4 -4
- lightning_sdk/lightning_cloud/openapi/api/user_service_api.py +1081 -34
- lightning_sdk/lightning_cloud/openapi/models/__init__.py +278 -40
- lightning_sdk/lightning_cloud/openapi/models/affiliatelinks_id_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/agentmanagedendpoints_id_body.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/{assistants_id_body.py → agents_id_body.py} +201 -71
- lightning_sdk/lightning_cloud/openapi/models/app_id_works_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/approveautojoindomain_domain_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/apps_id_body1.py +107 -3
- lightning_sdk/lightning_cloud/openapi/models/assistant_id_conversations_body.py +1 -27
- lightning_sdk/lightning_cloud/openapi/models/{v1_get_cluster_health_response.py → captures_id_body.py} +16 -16
- lightning_sdk/lightning_cloud/openapi/models/cloud_space_id_versionpublications_body1.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/cloudspace_id_runs_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/cloudspaces_id_body.py +58 -6
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityblock_body.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityreservations_body.py +55 -3
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_proxies_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/create.py +157 -1
- lightning_sdk/lightning_cloud/openapi/models/create_deployment_request_defines_a_spec_for_the_job_that_allows_for_autoscaling_jobs.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/deployments_id_body.py +565 -0
- lightning_sdk/lightning_cloud/openapi/models/deploymenttemplates_id_body.py +513 -0
- lightning_sdk/lightning_cloud/openapi/models/endpoints_id_body.py +43 -17
- lightning_sdk/lightning_cloud/openapi/models/experiment_name_variant_name_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/externalv1_cloud_space_instance_status.py +107 -1
- lightning_sdk/lightning_cloud/openapi/models/externalv1_lightningapp_instance.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/externalv1_user_status.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/fileendpoints_id_body.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/id_codeconfig_body.py +29 -55
- lightning_sdk/lightning_cloud/openapi/models/id_engage_body.py +3 -29
- lightning_sdk/lightning_cloud/openapi/models/id_engage_body1.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/id_execute_body.py +3 -55
- lightning_sdk/lightning_cloud/openapi/models/id_execute_body1.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/id_get_body.py +133 -3
- lightning_sdk/lightning_cloud/openapi/models/id_index_body.py +67 -15
- lightning_sdk/lightning_cloud/openapi/models/id_index_body2.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/id_index_body3.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/id_reportlogsactivity_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/id_start_body.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/id_storage_body.py +52 -26
- lightning_sdk/lightning_cloud/openapi/models/id_visibility_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/jobs_id_body1.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/jobs_id_body2.py +17 -43
- lightning_sdk/lightning_cloud/openapi/models/jobs_id_body3.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/litloggermetrics_id_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/litpages_id_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/loggermetrics_id_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/metrics_stream_id_loggerartifacts_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/metricsstream_create_body.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_cloud_space_id_list.py → metricsstream_delete_body.py} +10 -10
- lightning_sdk/lightning_cloud/openapi/models/metricsstream_id_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_upload_model_response.py → model_id_versions_body.py} +25 -51
- lightning_sdk/lightning_cloud/openapi/models/model_id_visibility_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/models_model_id_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/multimachinejobs_id_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/org_id_memberships_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/orgs_id_body.py +183 -1
- lightning_sdk/lightning_cloud/openapi/models/profiler_captures_body.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/profiler_enabled_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_agentmanagedendpoints_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/{project_id_assistants_body.py → project_id_agents_body.py} +159 -55
- lightning_sdk/lightning_cloud/openapi/models/project_id_cloudspaces_body.py +71 -19
- lightning_sdk/lightning_cloud/openapi/models/project_id_fileendpoints_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/project_id_jobs_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_litregistry_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_memberships_body.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/{v1_upload_model_request.py → project_id_models_body.py} +70 -70
- lightning_sdk/lightning_cloud/openapi/models/project_id_multimachinejobs_body.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_secrets_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/project_id_snowflake_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/projects_id_body.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/query_query_id_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/secrets_id_body1.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/servers_server_id_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/service_artifact_artifact_kind.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/serviceexecution_id_body.py +43 -43
- lightning_sdk/lightning_cloud/openapi/models/slurm_jobs_body.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/snowflake_export_body.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_download_model_response.py → snowflake_query_body.py} +51 -51
- lightning_sdk/lightning_cloud/openapi/models/storage_complete_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/update.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/upload_id_complete_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/upload_id_parts_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/user_id_affiliatelinks_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_accelerator_quota_info.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_ack_user_storage_violation_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_add_job_timing_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_affiliate_link.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_agent_job.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_api_pricing_spec.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_app_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_append_logger_metrics_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_approve_auto_join_domain_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_assign_variant_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_assistant.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_assistant_knowledge_item_status.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_assistant_knowledge_status.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_assistant_model_status.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_auto_join_domain_validation.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_auto_join_org_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_autoscaling_spec.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_autoscaling_target_metric.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_aws_direct_v1.py +133 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_batch_update_lightningwork_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cancellation_metadata.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_capacity_block_offering.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_check_snowflake_connection_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_checkbox.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space.py +136 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_code_version.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_instance_config.py +1 -53
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_instance_startup_status.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/{v1_cluster_log_service.py → v1_cloud_space_session.py} +49 -49
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_version.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_accelerator.py +445 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_capacity_reservation.py +55 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_names.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_proxy.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_resource_tag.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_security_options.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_spec.py +157 -107
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_state.py +1 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_status.py +17 -43
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_tagging_options.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_type.py +0 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_command_argument.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_complete_model_upload_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_complete_multi_part_upload_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_completed_part.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_conversation.py +15 -15
- lightning_sdk/lightning_cloud/openapi/models/v1_conversation_response_chunk.py +26 -26
- lightning_sdk/lightning_cloud/openapi/models/v1_count_metrics_streams_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_checkout_session_request.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_cluster_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_deployment_template_request.py +539 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_multi_part_upload_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_organization_request.py +159 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_create_project_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_shared_metrics_stream_request.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_shared_metrics_stream_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_snowflake_connection_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_user_secret_request.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_data_connection.py +365 -1
- lightning_sdk/lightning_cloud/openapi/models/{v1_cluster_performance_profile.py → v1_data_connection_state.py} +11 -9
- lightning_sdk/lightning_cloud/openapi/models/v1_data_path.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_affiliate_link_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_cloud_space_session_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_cluster_proxy_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_deployment_release_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_azure_cluster_driver_status.py → v1_delete_deployment_response.py} +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_index_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_byom_cluster_driver.py → v1_delete_job_response.py} +6 -6
- lightning_sdk/lightning_cloud/openapi/models/{v1_delete_lightningapp_v2_response.py → v1_delete_logger_artifact_response.py} +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_managed_endpoint_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_metrics_stream_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_multi_machine_job_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_profiler_capture_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_delete_lightningapp_release_response.py → v1_delete_shared_metrics_stream_response.py} +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment.py +617 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_api.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_event.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_event_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_metrics.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_performance.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_release.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_spec.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_state.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_status.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/{appsv2_id_body.py → v1_deployment_strategy.py} +39 -39
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template.py +721 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_engagement_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_gallery_response.py +591 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_parameter.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_parameter_placement.py +106 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_parameter_type.py +106 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_summary.py +591 -0
- lightning_sdk/lightning_cloud/openapi/models/{instance_type_availability.py → v1_deployment_template_type.py} +10 -10
- lightning_sdk/lightning_cloud/openapi/models/{v1_get_lightningapp_source_code_download_url_response.py → v1_download_job_logs_response.py} +10 -10
- lightning_sdk/lightning_cloud/openapi/models/v1_download_service_execution_artifact_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_ebs.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_efs_config.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_endpoint.py +53 -27
- lightning_sdk/lightning_cloud/openapi/models/v1_endpoint_auth.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_endpoint_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_execute_cloud_space_command_response.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_execute_in_cloud_space_session_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_execute_snowflake_query_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_experiment.py +409 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_export_snowflake_query_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_file_endpoint.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/{v1_instance_spec.py → v1_filesystem_app.py} +85 -59
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_cloud_space.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_dataset.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_job.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_slurm_job.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_snowflake_connection.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_work.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_find_capacity_block_offering_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_gcp_data_connection.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_gcs_folder_data_connection.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_affiliate_link_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_list_cluster_instance_types_response.py → v1_get_deployment_routing_telemetry_aggregated_response.py} +23 -23
- lightning_sdk/lightning_cloud/openapi/models/v1_get_deployment_routing_telemetry_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_folder_index_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/{v1_cluster_driver_status.py → v1_get_job_stats_response.py} +39 -39
- lightning_sdk/lightning_cloud/openapi/models/v1_get_job_system_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_lightningapp_instance_open_ports_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_logger_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_model_file_upload_urls_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_model_file_url_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_model_files_response.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_model_files_url_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_lightningwork_cluster_driver.py → v1_get_project_artifact_response.py} +33 -14
- lightning_sdk/lightning_cloud/openapi/models/v1_get_project_balance_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_get_project_storage_metadata_response.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_service_execution_status_response.py +67 -15
- lightning_sdk/lightning_cloud/openapi/models/v1_get_snowflake_query_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_user_balance_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_get_user_response.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_get_user_storage_breakdown_response.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_user_storage_response.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_google_cloud_direct_v1.py +163 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_google_cloud_direct_v1_status.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_header.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_external_kubeconfig.py → v1_health_check_exec.py} +21 -21
- lightning_sdk/lightning_cloud/openapi/models/v1_health_check_http_get.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_ids_logger_metrics.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_input.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_interrupt_server_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job.py +697 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job_health_check_config.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job_log_entry.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job_logs_page.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job_logs_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py +669 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job_timing.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_joinable_organization.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_knowledge_configuration.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lambda_labs_direct_v1.py +125 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lightning_run.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_instance_spec.py +105 -27
- lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_instance_status.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_lightningwork_spec.py +27 -27
- lightning_sdk/lightning_cloud/openapi/models/v1_lightningwork_status.py +81 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_list_affiliate_links_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_python_versions_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_sessions_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_tags_response.py +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_availabilities_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_proxies_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_events_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_releases_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_tags_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_templates_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_deployments_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_experiments_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_apps_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_cloud_spaces_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_datasets_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_jobs_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_slurm_jobs_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_snowflake_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_list_lightningapps_v2_response.py → v1_list_jobs_response.py} +31 -31
- lightning_sdk/lightning_cloud/openapi/models/v1_list_joinable_organizations_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_logger_artifact_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_metrics_streams_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_multi_machine_job_events_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_multi_machine_jobs_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_new_features_for_user_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_profiler_captures_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_project_locked_resources_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_published_cloud_spaces_response.py +3 -29
- lightning_sdk/lightning_cloud/openapi/models/v1_list_published_deployment_templates_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_service_execution_lightningapp_instances_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_page.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_registry_project.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_repository.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_locked_resource.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_logger_artifact.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_machines_selector.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_magic_link_login_request.py +81 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_magic_link_login_response.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_managed_endpoint.py +175 -19
- lightning_sdk/lightning_cloud/openapi/models/v1_managed_model.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_managed_model_abilities.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_membership.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_message.py +138 -8
- lightning_sdk/lightning_cloud/openapi/models/v1_message_content.py +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_message_content_type.py +103 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_metadata.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_metric_value.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_metrics.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_metrics_stream.py +799 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_metrics_tags.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_metrics_tracker.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_model.py +95 -17
- lightning_sdk/lightning_cloud/openapi/models/v1_model_file.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_model_version_archive.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_mount_target.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job.py +487 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_event.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/{get_cluster_health_response_health_status.py → v1_multi_machine_job_event_type.py} +9 -9
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_fault_tolerance.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_fault_tolerance_strategy.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_state.py +108 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_status.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_named_get_logger_metrics.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_new_feature.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_onboarding_event_request.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_onboarding_event_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_organization.py +209 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_parameterization_spec.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_path_telemetry.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_phase_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_profiler_capture.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_profiler_enabled_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_project.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_project_membership.py +263 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_project_settings.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_project_storage.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_published_cloud_space_response.py +188 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_purchase_capacity_block_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_query_param.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_query_result.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_query_result_row.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_refresh_path_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_regional_load_balancer.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_report_logs_activity_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_request_cluster_access_request.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_request_cluster_access_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_cloud_space_tag.py → v1_resource_tag.py} +18 -18
- lightning_sdk/lightning_cloud/openapi/models/v1_resource_visibility.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_resources.py +37 -11
- lightning_sdk/lightning_cloud/openapi/models/v1_restore_deployment_release_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_rolling_update_strategy.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_rule_condition.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_rule_resource.py +11 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_s3_folder_data_connection.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_search_job_logs_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_secret.py +107 -3
- lightning_sdk/lightning_cloud/openapi/models/{v1_lightningapp_cluster_driver.py → v1_secret_type.py} +10 -9
- lightning_sdk/lightning_cloud/openapi/models/v1_select.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_server_check_in_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_service_artifact.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_service_execution.py +43 -43
- lightning_sdk/lightning_cloud/openapi/models/v1_should_start_syncing_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_signed_url.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_job.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_node.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_v1.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_snowflake_data_connection.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_status_code_telemetry.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset_type.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_studio_job_app.py +1 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_system_info.py +617 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_telemetry.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_timestamp_code_telemetry.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_transaction.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_transfer_user_balance_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_update_billing_subscription_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_update_cluster_accelerators_request.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_index_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_metrics_stream_visibility_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_model_visibility_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_shared_metrics_stream_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_snowflake_query_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_user_request.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_update_user_viewed_new_features_request.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_user_viewed_new_features_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_upstream_cloud_space.py +97 -19
- lightning_sdk/lightning_cloud/openapi/models/v1_upstream_job.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_usage.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_usage_details.py +107 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +1006 -330
- lightning_sdk/lightning_cloud/openapi/models/v1_user_requested_compute_config.py +45 -45
- lightning_sdk/lightning_cloud/openapi/models/v1_user_requested_flow_compute_config.py +29 -29
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_assistant_status_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_auto_join_domain_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_data_connection_response.py +107 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_deployment_image_request.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_deployment_image_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_endpoint_request.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_endpoint_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_model_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_volume.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_vultr_direct_v1.py +125 -0
- lightning_sdk/lightning_cloud/openapi/models/validate.py +97 -19
- lightning_sdk/lightning_cloud/openapi/models/validateautojoindomain_domain_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/version_uploads_body.py +123 -0
- lightning_sdk/lightning_cloud/rest_client.py +47 -23
- lightning_sdk/lightning_cloud/source_code/logs_socket_api.py +1 -1
- lightning_sdk/lightning_cloud/source_code/tar.py +1 -3
- lightning_sdk/lightning_cloud/utils/data_connection.py +145 -7
- lightning_sdk/machine.py +17 -4
- lightning_sdk/mmt/__init__.py +4 -0
- lightning_sdk/mmt/base.py +288 -0
- lightning_sdk/mmt/mmt.py +282 -0
- lightning_sdk/mmt/v1.py +185 -0
- lightning_sdk/mmt/v2.py +193 -0
- lightning_sdk/models.py +153 -0
- lightning_sdk/organization.py +1 -1
- lightning_sdk/plugin.py +207 -41
- lightning_sdk/services/__init__.py +2 -1
- lightning_sdk/services/file_endpoint.py +116 -213
- lightning_sdk/services/finetune/__init__.py +13 -15
- lightning_sdk/services/utilities.py +99 -26
- lightning_sdk/status.py +2 -1
- lightning_sdk/studio.py +90 -17
- lightning_sdk/teamspace.py +189 -11
- lightning_sdk/user.py +1 -1
- lightning_sdk/utils/__init__.py +0 -0
- lightning_sdk/utils/dynamic.py +61 -0
- lightning_sdk/utils/enum.py +116 -0
- lightning_sdk/{utils.py → utils/resolve.py} +41 -4
- lightning_sdk-0.1.46.dist-info/LICENSE +21 -0
- {lightning_sdk-0.1.3.dist-info → lightning_sdk-0.1.46.dist-info}/METADATA +30 -4
- {lightning_sdk-0.1.3.dist-info → lightning_sdk-0.1.46.dist-info}/RECORD +482 -204
- {lightning_sdk-0.1.3.dist-info → lightning_sdk-0.1.46.dist-info}/WHEEL +1 -1
- lightning_sdk/lightning_cloud/openapi/models/app_id_releases_body.py +0 -541
- lightning_sdk/lightning_cloud/openapi/models/id_endpoint_body.py +0 -409
- lightning_sdk/lightning_cloud/openapi/models/id_get_body1.py +0 -333
- lightning_sdk/lightning_cloud/openapi/models/project_id_appsv2_body.py +0 -201
- lightning_sdk/lightning_cloud/openapi/models/v1_aws_cluster_driver_spec.py +0 -1039
- lightning_sdk/lightning_cloud/openapi/models/v1_aws_cluster_secondary_region_spec.py +0 -253
- lightning_sdk/lightning_cloud/openapi/models/v1_azure_cluster_driver_spec.py +0 -227
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_driver.py +0 -175
- lightning_sdk/lightning_cloud/openapi/models/v1_container_resources.py +0 -201
- lightning_sdk/lightning_cloud/openapi/models/v1_eks_custer_driver_status.py +0 -387
- lightning_sdk/lightning_cloud/openapi/models/v1_instance_type.py +0 -305
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_cluster_driver.py +0 -359
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_cluster_status.py +0 -279
- lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_release.py +0 -697
- lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_v2.py +0 -331
- lightning_sdk/services/uploader.py +0 -123
- {lightning_sdk-0.1.3.dist-info → lightning_sdk-0.1.46.dist-info}/entry_points.txt +0 -0
- {lightning_sdk-0.1.3.dist-info → lightning_sdk-0.1.46.dist-info}/top_level.txt +0 -0
lightning_sdk/api/studio_api.py
CHANGED
|
@@ -1,20 +1,36 @@
|
|
|
1
|
+
import json
|
|
1
2
|
import os
|
|
2
3
|
import tempfile
|
|
3
4
|
import time
|
|
5
|
+
import warnings
|
|
4
6
|
import zipfile
|
|
5
7
|
from threading import Event, Thread
|
|
6
|
-
from typing import Any, Dict, Mapping, Optional, Tuple
|
|
7
|
-
from uuid import uuid4
|
|
8
|
+
from typing import Any, Dict, Mapping, Optional, Tuple, Union
|
|
8
9
|
|
|
10
|
+
import backoff
|
|
9
11
|
import requests
|
|
12
|
+
from tqdm import tqdm
|
|
10
13
|
|
|
14
|
+
from lightning_sdk.api.utils import (
|
|
15
|
+
_COMPUTE_NAME_TO_MACHINE,
|
|
16
|
+
_MACHINE_TO_COMPUTE_NAME,
|
|
17
|
+
_create_app,
|
|
18
|
+
_DummyBody,
|
|
19
|
+
_DummyResponse,
|
|
20
|
+
_FileUploader,
|
|
21
|
+
_machine_to_compute_name,
|
|
22
|
+
_sanitize_studio_remote_path,
|
|
23
|
+
)
|
|
24
|
+
from lightning_sdk.api.utils import (
|
|
25
|
+
_get_cloud_url as _cloud_url,
|
|
26
|
+
)
|
|
11
27
|
from lightning_sdk.constants import _LIGHTNING_DEBUG
|
|
12
28
|
from lightning_sdk.lightning_cloud.login import Auth
|
|
13
29
|
from lightning_sdk.lightning_cloud.openapi import (
|
|
14
30
|
CloudspaceIdRunsBody,
|
|
15
31
|
Externalv1LightningappInstance,
|
|
16
32
|
IdCodeconfigBody,
|
|
17
|
-
|
|
33
|
+
IdExecuteBody1,
|
|
18
34
|
IdForkBody1,
|
|
19
35
|
IdStartBody,
|
|
20
36
|
ProjectIdCloudspacesBody,
|
|
@@ -29,27 +45,6 @@ from lightning_sdk.lightning_cloud.openapi import (
|
|
|
29
45
|
V1PluginsListResponse,
|
|
30
46
|
V1UserRequestedComputeConfig,
|
|
31
47
|
)
|
|
32
|
-
|
|
33
|
-
try:
|
|
34
|
-
from lightning_sdk.lightning_cloud.openapi import AppsIdBody1 as AppsIdBody
|
|
35
|
-
except ImportError:
|
|
36
|
-
from lightning_sdk.lightning_cloud.openapi import AppsIdBody
|
|
37
|
-
|
|
38
|
-
import json
|
|
39
|
-
|
|
40
|
-
from tqdm import tqdm
|
|
41
|
-
|
|
42
|
-
from lightning_sdk.api.utils import (
|
|
43
|
-
_COMPUTE_NAME_TO_MACHINE,
|
|
44
|
-
_MACHINE_TO_COMPUTE_NAME,
|
|
45
|
-
_DummyBody,
|
|
46
|
-
_DummyResponse,
|
|
47
|
-
_FileUploader,
|
|
48
|
-
_sanitize_remote_path,
|
|
49
|
-
)
|
|
50
|
-
from lightning_sdk.api.utils import (
|
|
51
|
-
_get_cloud_url as _cloud_url,
|
|
52
|
-
)
|
|
53
48
|
from lightning_sdk.lightning_cloud.rest_client import LightningClient
|
|
54
49
|
from lightning_sdk.machine import Machine
|
|
55
50
|
|
|
@@ -58,10 +53,8 @@ class StudioApi:
|
|
|
58
53
|
"""Internal API client for Studio requests (mainly http requests)."""
|
|
59
54
|
|
|
60
55
|
def __init__(self) -> None:
|
|
61
|
-
super().__init__()
|
|
62
|
-
|
|
63
56
|
self._cloud_url = _cloud_url()
|
|
64
|
-
self._client = LightningClient(max_tries=
|
|
57
|
+
self._client = LightningClient(max_tries=7)
|
|
65
58
|
self._keep_alive_threads: Mapping[str, Thread] = {}
|
|
66
59
|
self._keep_alive_events: Mapping[str, Event] = {}
|
|
67
60
|
|
|
@@ -115,11 +108,11 @@ class StudioApi:
|
|
|
115
108
|
self,
|
|
116
109
|
name: str,
|
|
117
110
|
teamspace_id: str,
|
|
118
|
-
|
|
111
|
+
cloud_account: Optional[str] = None,
|
|
119
112
|
) -> V1CloudSpace:
|
|
120
|
-
"""Create a Studio with a given name in a given Teamspace on a possibly given
|
|
113
|
+
"""Create a Studio with a given name in a given Teamspace on a possibly given cloud_account."""
|
|
121
114
|
body = ProjectIdCloudspacesBody(
|
|
122
|
-
cluster_id=
|
|
115
|
+
cluster_id=cloud_account,
|
|
123
116
|
name=name,
|
|
124
117
|
display_name=name,
|
|
125
118
|
seed_files=[V1CloudSpaceSeedFile(path="main.py", contents="print('Hello, Lightning World!')\n")],
|
|
@@ -143,20 +136,42 @@ class StudioApi:
|
|
|
143
136
|
id=studio_id,
|
|
144
137
|
)
|
|
145
138
|
|
|
146
|
-
|
|
139
|
+
@backoff.on_exception(backoff.expo, AttributeError, max_tries=10)
|
|
140
|
+
def _check_code_status_top_up_restore_finished(self, studio_id: str, teamspace_id: str) -> bool:
|
|
141
|
+
"""Retries checking the top_up_restore_finished value of the code status when there's an AttributeError."""
|
|
142
|
+
startup_status = self.get_studio_status(studio_id, teamspace_id).in_use.startup_status
|
|
143
|
+
return startup_status and startup_status.top_up_restore_finished
|
|
144
|
+
|
|
145
|
+
@backoff.on_exception(backoff.expo, AttributeError, max_tries=10)
|
|
146
|
+
def _check_code_status_sync_in_progress(self, studio_id: str, teamspace_id: str) -> bool:
|
|
147
|
+
"""Retries checking the sync_in_progress value of the code status when there's an AttributeError."""
|
|
148
|
+
return self.get_studio_status(studio_id, teamspace_id).in_use.sync_in_progress
|
|
149
|
+
|
|
150
|
+
def start_studio(
|
|
151
|
+
self, studio_id: str, teamspace_id: str, machine: Union[Machine, str], interruptible: False
|
|
152
|
+
) -> None:
|
|
147
153
|
"""Start an existing Studio."""
|
|
154
|
+
if _machine_to_compute_name(machine) == _machine_to_compute_name(Machine.CPU_SMALL):
|
|
155
|
+
warnings.warn(
|
|
156
|
+
f"{Machine.CPU_SMALL} is not a valid machine for starting a Studio. "
|
|
157
|
+
"It is reserved for running jobs only. "
|
|
158
|
+
"The Studio will be started with a CPU machine instead."
|
|
159
|
+
)
|
|
160
|
+
machine = Machine.CPU
|
|
161
|
+
|
|
148
162
|
self._client.cloud_space_service_start_cloud_space_instance(
|
|
149
|
-
IdStartBody(
|
|
163
|
+
IdStartBody(
|
|
164
|
+
compute_config=V1UserRequestedComputeConfig(name=_machine_to_compute_name(machine), spot=interruptible)
|
|
165
|
+
),
|
|
150
166
|
teamspace_id,
|
|
151
167
|
studio_id,
|
|
152
168
|
)
|
|
153
169
|
|
|
154
|
-
while self.
|
|
170
|
+
while self._check_code_status_sync_in_progress(studio_id, teamspace_id):
|
|
155
171
|
time.sleep(1)
|
|
156
172
|
|
|
157
173
|
while True:
|
|
158
|
-
|
|
159
|
-
if startup_status and startup_status.top_up_restore_finished:
|
|
174
|
+
if self._check_code_status_top_up_restore_finished(studio_id, teamspace_id):
|
|
160
175
|
break
|
|
161
176
|
time.sleep(1)
|
|
162
177
|
|
|
@@ -192,20 +207,34 @@ class StudioApi:
|
|
|
192
207
|
def _get_studio_instance_status_from_object(self, studio: V1CloudSpace) -> Optional[str]:
|
|
193
208
|
return getattr(getattr(studio.code_status, "in_use", None), "phase", None)
|
|
194
209
|
|
|
195
|
-
def _request_switch(
|
|
210
|
+
def _request_switch(
|
|
211
|
+
self, studio_id: str, teamspace_id: str, machine: Union[Machine, str], interruptible: bool
|
|
212
|
+
) -> None:
|
|
196
213
|
"""Switches given Studio to a new machine type."""
|
|
197
|
-
|
|
214
|
+
if _machine_to_compute_name(machine) == _machine_to_compute_name(Machine.CPU_SMALL):
|
|
215
|
+
warnings.warn(
|
|
216
|
+
f"{Machine.CPU_SMALL} is not a valid machine for switching a Studio. "
|
|
217
|
+
"It is reserved for running jobs only. "
|
|
218
|
+
"The Studio will be switched to a CPU machine instead."
|
|
219
|
+
)
|
|
220
|
+
machine = Machine.CPU
|
|
221
|
+
|
|
222
|
+
compute_name = _machine_to_compute_name(machine)
|
|
198
223
|
# TODO: UI sends disk size here, maybe we need to also?
|
|
199
|
-
body = IdCodeconfigBody(compute_config=V1UserRequestedComputeConfig(name=compute_name))
|
|
224
|
+
body = IdCodeconfigBody(compute_config=V1UserRequestedComputeConfig(name=compute_name, spot=interruptible))
|
|
200
225
|
self._client.cloud_space_service_update_cloud_space_instance_config(
|
|
201
226
|
id=studio_id,
|
|
202
227
|
project_id=teamspace_id,
|
|
203
228
|
body=body,
|
|
204
229
|
)
|
|
205
230
|
|
|
206
|
-
def switch_studio_machine(
|
|
231
|
+
def switch_studio_machine(
|
|
232
|
+
self, studio_id: str, teamspace_id: str, machine: Union[Machine, str], interruptible: bool
|
|
233
|
+
) -> None:
|
|
207
234
|
"""Switches given Studio to a new machine type."""
|
|
208
|
-
self._request_switch(
|
|
235
|
+
self._request_switch(
|
|
236
|
+
studio_id=studio_id, teamspace_id=teamspace_id, machine=machine, interruptible=interruptible
|
|
237
|
+
)
|
|
209
238
|
|
|
210
239
|
# Wait until it's time to switch
|
|
211
240
|
while True:
|
|
@@ -230,6 +259,14 @@ class StudioApi:
|
|
|
230
259
|
)
|
|
231
260
|
return _COMPUTE_NAME_TO_MACHINE[response.compute_config.name]
|
|
232
261
|
|
|
262
|
+
def get_interruptible(self, studio_id: str, teamspace_id: str) -> bool:
|
|
263
|
+
"""Get whether the Studio is running on a interruptible instance."""
|
|
264
|
+
response: V1CloudSpaceInstanceConfig = self._client.cloud_space_service_get_cloud_space_instance_config(
|
|
265
|
+
project_id=teamspace_id, id=studio_id
|
|
266
|
+
)
|
|
267
|
+
|
|
268
|
+
return response.compute_config.spot
|
|
269
|
+
|
|
233
270
|
def _get_detached_command_status(
|
|
234
271
|
self, studio_id: str, teamspace_id: str, session_id: str
|
|
235
272
|
) -> V1GetLongRunningCommandInCloudSpaceResponse:
|
|
@@ -257,9 +294,8 @@ class StudioApi:
|
|
|
257
294
|
|
|
258
295
|
def run_studio_commands(self, studio_id: str, teamspace_id: str, *commands: str) -> Tuple[str, int]:
|
|
259
296
|
"""Run given commands in a given Studio."""
|
|
260
|
-
session_id = str(uuid4())
|
|
261
297
|
response_submit = self._client.cloud_space_service_execute_command_in_cloud_space(
|
|
262
|
-
|
|
298
|
+
IdExecuteBody1("; ".join(commands), detached=True),
|
|
263
299
|
project_id=teamspace_id,
|
|
264
300
|
id=studio_id,
|
|
265
301
|
)
|
|
@@ -267,28 +303,54 @@ class StudioApi:
|
|
|
267
303
|
if not response_submit:
|
|
268
304
|
raise RuntimeError("Unable to submit command")
|
|
269
305
|
|
|
306
|
+
if response_submit.session_name == "":
|
|
307
|
+
raise RuntimeError("The session name should be defined.")
|
|
308
|
+
|
|
270
309
|
while True:
|
|
271
310
|
output = ""
|
|
272
311
|
exit_code = None
|
|
273
312
|
|
|
274
313
|
for resp in self._get_detached_command_status(
|
|
275
|
-
studio_id=studio_id,
|
|
314
|
+
studio_id=studio_id,
|
|
315
|
+
teamspace_id=teamspace_id,
|
|
316
|
+
session_id=response_submit.session_name,
|
|
276
317
|
):
|
|
277
|
-
if resp.exit_code
|
|
278
|
-
if exit_code is None:
|
|
279
|
-
exit_code = resp.exit_code
|
|
280
|
-
elif exit_code != resp.exit_code:
|
|
281
|
-
raise RuntimeError("Cannot determine exit code")
|
|
282
|
-
|
|
283
|
-
output += resp.output
|
|
284
|
-
else:
|
|
318
|
+
if resp.exit_code == -1:
|
|
285
319
|
break
|
|
320
|
+
if exit_code is None:
|
|
321
|
+
exit_code = resp.exit_code
|
|
322
|
+
elif exit_code != resp.exit_code:
|
|
323
|
+
raise RuntimeError("Cannot determine exit code")
|
|
324
|
+
|
|
325
|
+
output += resp.output
|
|
286
326
|
|
|
287
327
|
if exit_code is not None:
|
|
288
328
|
return output, exit_code
|
|
289
329
|
|
|
290
330
|
time.sleep(1)
|
|
291
331
|
|
|
332
|
+
def update_autoshutdown(
|
|
333
|
+
self,
|
|
334
|
+
studio_id: str,
|
|
335
|
+
teamspace_id: str,
|
|
336
|
+
studio: V1CloudSpace,
|
|
337
|
+
enabled: Optional[bool] = None,
|
|
338
|
+
idle_shutdown_seconds: int = 0,
|
|
339
|
+
) -> None:
|
|
340
|
+
"""Update the autoshutdown time of the given Studio."""
|
|
341
|
+
if enabled is None:
|
|
342
|
+
enabled = not studio.code_config.disable_auto_shutdown
|
|
343
|
+
body = IdCodeconfigBody(
|
|
344
|
+
disable_auto_shutdown=not enabled,
|
|
345
|
+
idle_shutdown_seconds=idle_shutdown_seconds,
|
|
346
|
+
compute_config=studio.code_config.compute_config,
|
|
347
|
+
)
|
|
348
|
+
self._client.cloud_space_service_update_cloud_space_instance_config(
|
|
349
|
+
id=studio_id,
|
|
350
|
+
project_id=teamspace_id,
|
|
351
|
+
body=body,
|
|
352
|
+
)
|
|
353
|
+
|
|
292
354
|
def duplicate_studio(self, studio_id: str, teamspace_id: str, target_teamspace_id: str) -> Dict[str, str]:
|
|
293
355
|
"""Duplicates the given Studio from a given Teamspace into a given target Teamspace."""
|
|
294
356
|
target_teamspace = self._client.projects_service_get_project(target_teamspace_id)
|
|
@@ -312,7 +374,7 @@ class StudioApi:
|
|
|
312
374
|
init_kwargs["name"] = new_cloudspace.name
|
|
313
375
|
init_kwargs["teamspace"] = target_teamspace.name
|
|
314
376
|
|
|
315
|
-
self.start_studio(new_cloudspace.id, target_teamspace_id, Machine.CPU)
|
|
377
|
+
self.start_studio(new_cloudspace.id, target_teamspace_id, Machine.CPU, False)
|
|
316
378
|
return init_kwargs
|
|
317
379
|
|
|
318
380
|
def delete_studio(self, studio_id: str, teamspace_id: str) -> None:
|
|
@@ -321,21 +383,32 @@ class StudioApi:
|
|
|
321
383
|
self._client.cloud_space_service_delete_cloud_space(project_id=teamspace_id, id=studio_id)
|
|
322
384
|
|
|
323
385
|
def upload_file(
|
|
324
|
-
self,
|
|
386
|
+
self,
|
|
387
|
+
studio_id: str,
|
|
388
|
+
teamspace_id: str,
|
|
389
|
+
cloud_account: str,
|
|
390
|
+
file_path: str,
|
|
391
|
+
remote_path: str,
|
|
392
|
+
progress_bar: bool,
|
|
325
393
|
) -> None:
|
|
326
394
|
"""Uploads file to given remote path on the studio."""
|
|
327
395
|
_FileUploader(
|
|
328
396
|
client=self._client,
|
|
329
|
-
studio_id=studio_id,
|
|
330
397
|
teamspace_id=teamspace_id,
|
|
331
|
-
|
|
398
|
+
cloud_account=cloud_account,
|
|
332
399
|
file_path=file_path,
|
|
333
|
-
remote_path=remote_path,
|
|
400
|
+
remote_path=_sanitize_studio_remote_path(remote_path, studio_id),
|
|
334
401
|
progress_bar=progress_bar,
|
|
335
402
|
)()
|
|
336
403
|
|
|
337
404
|
def download_file(
|
|
338
|
-
self,
|
|
405
|
+
self,
|
|
406
|
+
path: str,
|
|
407
|
+
target_path: str,
|
|
408
|
+
studio_id: str,
|
|
409
|
+
teamspace_id: str,
|
|
410
|
+
cloud_account: str,
|
|
411
|
+
progress_bar: bool = True,
|
|
339
412
|
) -> None:
|
|
340
413
|
"""Downloads a given file from a Studio to a target location."""
|
|
341
414
|
# TODO: Update this endpoint to permit basic auth
|
|
@@ -344,8 +417,8 @@ class StudioApi:
|
|
|
344
417
|
token = self._client.auth_service_login(V1LoginRequest(auth.api_key)).token
|
|
345
418
|
|
|
346
419
|
query_params = {
|
|
347
|
-
"clusterId":
|
|
348
|
-
"key":
|
|
420
|
+
"clusterId": cloud_account,
|
|
421
|
+
"key": _sanitize_studio_remote_path(path, studio_id),
|
|
349
422
|
"token": token,
|
|
350
423
|
}
|
|
351
424
|
|
|
@@ -378,7 +451,13 @@ class StudioApi:
|
|
|
378
451
|
pbar_update(len(chunk))
|
|
379
452
|
|
|
380
453
|
def download_folder(
|
|
381
|
-
self,
|
|
454
|
+
self,
|
|
455
|
+
path: str,
|
|
456
|
+
target_path: str,
|
|
457
|
+
studio_id: str,
|
|
458
|
+
teamspace_id: str,
|
|
459
|
+
cloud_account: str,
|
|
460
|
+
progress_bar: bool = True,
|
|
382
461
|
) -> None:
|
|
383
462
|
"""Downloads a given folder from a Studio to a target location."""
|
|
384
463
|
# TODO: Update this endpoint to permit basic auth
|
|
@@ -387,8 +466,8 @@ class StudioApi:
|
|
|
387
466
|
token = self._client.auth_service_login(V1LoginRequest(auth.api_key)).token
|
|
388
467
|
|
|
389
468
|
query_params = {
|
|
390
|
-
"clusterId":
|
|
391
|
-
"prefix":
|
|
469
|
+
"clusterId": cloud_account,
|
|
470
|
+
"prefix": _sanitize_studio_remote_path(path, studio_id),
|
|
392
471
|
"token": token,
|
|
393
472
|
}
|
|
394
473
|
|
|
@@ -486,17 +565,25 @@ class StudioApi:
|
|
|
486
565
|
return resp.plugins
|
|
487
566
|
|
|
488
567
|
def create_job(
|
|
489
|
-
self,
|
|
568
|
+
self,
|
|
569
|
+
entrypoint: str,
|
|
570
|
+
name: str,
|
|
571
|
+
machine: Machine,
|
|
572
|
+
studio_id: str,
|
|
573
|
+
teamspace_id: str,
|
|
574
|
+
cloud_account: str,
|
|
575
|
+
interruptible: bool,
|
|
490
576
|
) -> Externalv1LightningappInstance:
|
|
491
577
|
"""Creates a job with given commands."""
|
|
492
578
|
return self._create_app(
|
|
493
579
|
studio_id=studio_id,
|
|
494
580
|
teamspace_id=teamspace_id,
|
|
495
|
-
|
|
581
|
+
cloud_account=cloud_account,
|
|
496
582
|
plugin_type="job",
|
|
497
583
|
entrypoint=entrypoint,
|
|
498
584
|
name=name,
|
|
499
585
|
compute=_MACHINE_TO_COMPUTE_NAME[machine],
|
|
586
|
+
interruptible=interruptible,
|
|
500
587
|
)
|
|
501
588
|
|
|
502
589
|
def create_multi_machine_job(
|
|
@@ -508,7 +595,8 @@ class StudioApi:
|
|
|
508
595
|
strategy: str,
|
|
509
596
|
studio_id: str,
|
|
510
597
|
teamspace_id: str,
|
|
511
|
-
|
|
598
|
+
cloud_account: str,
|
|
599
|
+
interruptible: bool,
|
|
512
600
|
) -> Externalv1LightningappInstance:
|
|
513
601
|
"""Creates a multi-machine job with given commands."""
|
|
514
602
|
distributed_args = {
|
|
@@ -519,11 +607,12 @@ class StudioApi:
|
|
|
519
607
|
return self._create_app(
|
|
520
608
|
studio_id=studio_id,
|
|
521
609
|
teamspace_id=teamspace_id,
|
|
522
|
-
|
|
610
|
+
cloud_account=cloud_account,
|
|
523
611
|
plugin_type="distributed_plugin",
|
|
524
612
|
entrypoint=entrypoint,
|
|
525
613
|
name=name,
|
|
526
614
|
distributedArguments=json.dumps(distributed_args),
|
|
615
|
+
interruptible=interruptible,
|
|
527
616
|
)
|
|
528
617
|
|
|
529
618
|
def create_data_prep_machine_job(
|
|
@@ -534,7 +623,8 @@ class StudioApi:
|
|
|
534
623
|
machine: Machine,
|
|
535
624
|
studio_id: str,
|
|
536
625
|
teamspace_id: str,
|
|
537
|
-
|
|
626
|
+
cloud_account: str,
|
|
627
|
+
interruptible: bool,
|
|
538
628
|
) -> Externalv1LightningappInstance:
|
|
539
629
|
"""Creates a multi-machine job with given commands."""
|
|
540
630
|
data_prep_args = {
|
|
@@ -544,11 +634,12 @@ class StudioApi:
|
|
|
544
634
|
return self._create_app(
|
|
545
635
|
studio_id=studio_id,
|
|
546
636
|
teamspace_id=teamspace_id,
|
|
547
|
-
|
|
637
|
+
cloud_account=cloud_account,
|
|
548
638
|
plugin_type="litdata",
|
|
549
639
|
entrypoint=entrypoint,
|
|
550
640
|
name=name,
|
|
551
641
|
dataPrepArguments=json.dumps(data_prep_args),
|
|
642
|
+
interruptible=interruptible,
|
|
552
643
|
)
|
|
553
644
|
|
|
554
645
|
def create_inference_job(
|
|
@@ -565,13 +656,14 @@ class StudioApi:
|
|
|
565
656
|
endpoint: str,
|
|
566
657
|
studio_id: str,
|
|
567
658
|
teamspace_id: str,
|
|
568
|
-
|
|
659
|
+
cloud_account: str,
|
|
660
|
+
interruptible: bool,
|
|
569
661
|
) -> Externalv1LightningappInstance:
|
|
570
662
|
"""Creates an inference job for given endpoint."""
|
|
571
663
|
return self._create_app(
|
|
572
664
|
studio_id=studio_id,
|
|
573
665
|
teamspace_id=teamspace_id,
|
|
574
|
-
|
|
666
|
+
cloud_account=cloud_account,
|
|
575
667
|
plugin_type="inference_plugin",
|
|
576
668
|
compute=_MACHINE_TO_COMPUTE_NAME[machine],
|
|
577
669
|
entrypoint=entrypoint,
|
|
@@ -583,19 +675,18 @@ class StudioApi:
|
|
|
583
675
|
scale_in_interval=scale_in_interval,
|
|
584
676
|
scale_out_interval=scale_out_interval,
|
|
585
677
|
endpoint=endpoint,
|
|
678
|
+
interruptible=interruptible,
|
|
586
679
|
)
|
|
587
680
|
|
|
588
681
|
def _create_app(
|
|
589
|
-
self, studio_id: str, teamspace_id: str,
|
|
682
|
+
self, studio_id: str, teamspace_id: str, cloud_account: str, plugin_type: str, **other_arguments: Any
|
|
590
683
|
) -> Externalv1LightningappInstance:
|
|
591
684
|
"""Creates an arbitrary app."""
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
return resp
|
|
685
|
+
return _create_app(
|
|
686
|
+
self._client,
|
|
687
|
+
studio_id=studio_id,
|
|
688
|
+
teamspace_id=teamspace_id,
|
|
689
|
+
cloud_account=cloud_account,
|
|
690
|
+
plugin_type=plugin_type,
|
|
691
|
+
**other_arguments,
|
|
692
|
+
)
|