lightning-sdk 0.1.3__py3-none-any.whl → 0.1.47__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 +328 -0
- lightning_sdk/api/lit_registry_api.py +12 -0
- lightning_sdk/api/mmt_api.py +205 -0
- lightning_sdk/api/org_api.py +1 -3
- lightning_sdk/api/studio_api.py +172 -81
- lightning_sdk/api/teamspace_api.py +237 -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 +13 -3
- lightning_sdk/cli/list.py +54 -0
- 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/teamspace_menu.py +94 -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 +359 -0
- lightning_sdk/job/job.py +291 -0
- lightning_sdk/job/v1.py +269 -0
- lightning_sdk/job/v2.py +221 -0
- lightning_sdk/job/work.py +81 -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 +289 -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 +343 -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 +279 -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_container_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 +253 -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/{get_cluster_health_response_health_status.py → v1_deployment_state.py} +11 -9
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_status.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_strategy.py +149 -0
- 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 +137 -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 +723 -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/{v1_lightningapp_cluster_driver.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/{appsv2_id_body.py → v1_resource_visibility.py} +37 -37
- 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_secret_type.py +105 -0
- 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 +1032 -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 +144 -7
- lightning_sdk/lit_registry.py +39 -0
- lightning_sdk/machine.py +21 -4
- lightning_sdk/mmt/__init__.py +4 -0
- lightning_sdk/mmt/base.py +326 -0
- lightning_sdk/mmt/mmt.py +306 -0
- lightning_sdk/mmt/v1.py +209 -0
- lightning_sdk/mmt/v2.py +221 -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 +11 -6
- lightning_sdk/studio.py +90 -17
- lightning_sdk/teamspace.py +240 -12
- 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.47.dist-info/LICENSE +21 -0
- {lightning_sdk-0.1.3.dist-info → lightning_sdk-0.1.47.dist-info}/METADATA +30 -4
- {lightning_sdk-0.1.3.dist-info → lightning_sdk-0.1.47.dist-info}/RECORD +487 -204
- {lightning_sdk-0.1.3.dist-info → lightning_sdk-0.1.47.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.47.dist-info}/entry_points.txt +0 -0
- {lightning_sdk-0.1.3.dist-info → lightning_sdk-0.1.47.dist-info}/top_level.txt +0 -0
lightning_sdk/studio.py
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import os
|
|
2
|
+
import warnings
|
|
2
3
|
from typing import TYPE_CHECKING, Any, Mapping, Optional, Tuple, Union
|
|
3
4
|
|
|
4
5
|
from lightning_sdk.api.studio_api import StudioApi
|
|
6
|
+
from lightning_sdk.api.utils import _machine_to_compute_name
|
|
5
7
|
from lightning_sdk.constants import _LIGHTNING_DEBUG
|
|
6
8
|
from lightning_sdk.machine import Machine
|
|
7
9
|
from lightning_sdk.organization import Organization
|
|
@@ -9,7 +11,7 @@ from lightning_sdk.owner import Owner
|
|
|
9
11
|
from lightning_sdk.status import Status
|
|
10
12
|
from lightning_sdk.teamspace import Teamspace
|
|
11
13
|
from lightning_sdk.user import User
|
|
12
|
-
from lightning_sdk.utils import _resolve_teamspace, _setup_logger
|
|
14
|
+
from lightning_sdk.utils.resolve import _resolve_deprecated_cluster, _resolve_teamspace, _setup_logger
|
|
13
15
|
|
|
14
16
|
if TYPE_CHECKING:
|
|
15
17
|
from lightning_sdk.plugin import Plugin
|
|
@@ -28,10 +30,9 @@ class Studio:
|
|
|
28
30
|
teamspace: the name of the teamspace the studio is contained by
|
|
29
31
|
org: the name of the organization owning the :param`teamspace` in case it is owned by an org
|
|
30
32
|
user: the name of the user owning the :param`teamspace` in case it is owned directly by a user instead of an org
|
|
31
|
-
|
|
33
|
+
cloud_account: the name of the cloud account, the studio should be created on.
|
|
32
34
|
Doesn't matter when the studio already exists.
|
|
33
35
|
create_ok: whether the studio will be created if it does not yet exist. Defaults to True
|
|
34
|
-
|
|
35
36
|
Note:
|
|
36
37
|
Since a teamspace can either be owned by an org or by a user directly,
|
|
37
38
|
only one of the arguments can be provided.
|
|
@@ -47,13 +48,14 @@ class Studio:
|
|
|
47
48
|
teamspace: Optional[Union[str, Teamspace]] = None,
|
|
48
49
|
org: Optional[Union[str, Organization]] = None,
|
|
49
50
|
user: Optional[Union[str, User]] = None,
|
|
50
|
-
|
|
51
|
+
cloud_account: Optional[str] = None,
|
|
51
52
|
create_ok: bool = True,
|
|
53
|
+
cluster: Optional[str] = None, # deprecated in favor of cloud_account
|
|
52
54
|
) -> None:
|
|
53
55
|
self._studio_api = StudioApi()
|
|
54
56
|
|
|
55
57
|
self._teamspace = _resolve_teamspace(teamspace=teamspace, org=org, user=user)
|
|
56
|
-
self.
|
|
58
|
+
self._cloud_account = _resolve_deprecated_cluster(cloud_account, cluster)
|
|
57
59
|
self._setup_done = False
|
|
58
60
|
|
|
59
61
|
self._plugins = {}
|
|
@@ -68,7 +70,9 @@ class Studio:
|
|
|
68
70
|
self._studio = self._studio_api.get_studio(name, self._teamspace.id)
|
|
69
71
|
except ValueError as e:
|
|
70
72
|
if create_ok:
|
|
71
|
-
self._studio = self._studio_api.create_studio(
|
|
73
|
+
self._studio = self._studio_api.create_studio(
|
|
74
|
+
name, self._teamspace.id, cloud_account=self._cloud_account
|
|
75
|
+
)
|
|
72
76
|
else:
|
|
73
77
|
raise ValueError(f"Studio {name} does not exist.") from e
|
|
74
78
|
|
|
@@ -131,14 +135,32 @@ class Studio:
|
|
|
131
135
|
return None
|
|
132
136
|
return self._studio_api.get_machine(self._studio.id, self._teamspace.id)
|
|
133
137
|
|
|
134
|
-
|
|
138
|
+
@property
|
|
139
|
+
def interruptible(self) -> bool:
|
|
140
|
+
"""Returns whether the Studio is running on a interruptible instance."""
|
|
141
|
+
if self.status != Status.Running:
|
|
142
|
+
return None
|
|
143
|
+
|
|
144
|
+
return self._studio_api.get_interruptible(self._studio.id, self._teamspace.id)
|
|
145
|
+
|
|
146
|
+
@property
|
|
147
|
+
def cluster(self) -> str:
|
|
148
|
+
"""Returns the cluster the Studio is running on."""
|
|
149
|
+
warnings.warn("Studio.cluster is deprecated. Use Studio.cloud_account instead", DeprecationWarning)
|
|
150
|
+
return self.cloud_account
|
|
151
|
+
|
|
152
|
+
@property
|
|
153
|
+
def cloud_account(self) -> str:
|
|
154
|
+
return self._studio.cluster_id
|
|
155
|
+
|
|
156
|
+
def start(self, machine: Union[Machine, str] = Machine.CPU, interruptible: bool = False) -> None:
|
|
135
157
|
"""Starts a Studio on the specified machine type (default: CPU-4)."""
|
|
136
158
|
status = self.status
|
|
137
159
|
if status == Status.Running:
|
|
138
|
-
curr_machine = self.machine
|
|
139
|
-
if curr_machine != machine:
|
|
160
|
+
curr_machine = _machine_to_compute_name(self.machine) if self.machine is not None else None
|
|
161
|
+
if curr_machine != _machine_to_compute_name(machine):
|
|
140
162
|
raise RuntimeError(
|
|
141
|
-
f"Requested to start studio on {machine}, but studio is already running on {
|
|
163
|
+
f"Requested to start studio on {machine}, but studio is already running on {self.machine}."
|
|
142
164
|
" Consider switching instead!"
|
|
143
165
|
)
|
|
144
166
|
_logger.info(f"Studio {self.name} is already running")
|
|
@@ -146,7 +168,7 @@ class Studio:
|
|
|
146
168
|
|
|
147
169
|
if status != Status.Stopped:
|
|
148
170
|
raise RuntimeError(f"Cannot start a studio that is not stopped. Studio {self.name} is {status}.")
|
|
149
|
-
self._studio_api.start_studio(self._studio.id, self._teamspace.id, machine)
|
|
171
|
+
self._studio_api.start_studio(self._studio.id, self._teamspace.id, machine, interruptible=interruptible)
|
|
150
172
|
|
|
151
173
|
self._setup()
|
|
152
174
|
|
|
@@ -166,11 +188,12 @@ class Studio:
|
|
|
166
188
|
kwargs = self._studio_api.duplicate_studio(self._studio.id, self._teamspace.id, self._teamspace.id)
|
|
167
189
|
return Studio(**kwargs)
|
|
168
190
|
|
|
169
|
-
def switch_machine(self, machine: Machine) -> None:
|
|
191
|
+
def switch_machine(self, machine: Union[Machine, str], interruptible: bool = False) -> None:
|
|
170
192
|
"""Switches machine to the provided machine type/.
|
|
171
193
|
|
|
172
194
|
Args:
|
|
173
195
|
machine: the new machine type to switch to
|
|
196
|
+
interruptible: determines whether to switch to an interruptible instance
|
|
174
197
|
|
|
175
198
|
Note:
|
|
176
199
|
this call is blocking until the new machine is provisioned
|
|
@@ -181,7 +204,9 @@ class Studio:
|
|
|
181
204
|
raise RuntimeError(
|
|
182
205
|
f"Cannot switch machine on a studio that is not running. Studio {self.name} is {status}."
|
|
183
206
|
)
|
|
184
|
-
self._studio_api.switch_studio_machine(
|
|
207
|
+
self._studio_api.switch_studio_machine(
|
|
208
|
+
self._studio.id, self._teamspace.id, machine, interruptible=interruptible
|
|
209
|
+
)
|
|
185
210
|
|
|
186
211
|
def run_with_exit_code(self, *commands: str) -> Tuple[str, int]:
|
|
187
212
|
"""Runs given commands on the Studio while returning output and exit code.
|
|
@@ -224,9 +249,9 @@ class Studio:
|
|
|
224
249
|
self._studio_api.upload_file(
|
|
225
250
|
studio_id=self._studio.id,
|
|
226
251
|
teamspace_id=self._teamspace.id,
|
|
227
|
-
|
|
252
|
+
cloud_account=self._studio.cluster_id,
|
|
228
253
|
file_path=file_path,
|
|
229
|
-
remote_path=remote_path,
|
|
254
|
+
remote_path=os.path.normpath(remote_path),
|
|
230
255
|
progress_bar=progress_bar,
|
|
231
256
|
)
|
|
232
257
|
|
|
@@ -240,7 +265,7 @@ class Studio:
|
|
|
240
265
|
target_path=file_path,
|
|
241
266
|
studio_id=self._studio.id,
|
|
242
267
|
teamspace_id=self._teamspace.id,
|
|
243
|
-
|
|
268
|
+
cloud_account=self._studio.cluster_id,
|
|
244
269
|
)
|
|
245
270
|
|
|
246
271
|
def download_folder(self, remote_path: str, target_path: Optional[str] = None) -> None:
|
|
@@ -253,8 +278,53 @@ class Studio:
|
|
|
253
278
|
target_path=target_path,
|
|
254
279
|
studio_id=self._studio.id,
|
|
255
280
|
teamspace_id=self._teamspace.id,
|
|
256
|
-
|
|
281
|
+
cloud_account=self._studio.cluster_id,
|
|
282
|
+
)
|
|
283
|
+
|
|
284
|
+
@property
|
|
285
|
+
def auto_sleep(self) -> bool:
|
|
286
|
+
"""Returns if a Studio has auto-sleep enabled."""
|
|
287
|
+
return not self._studio.code_config.disable_auto_shutdown
|
|
288
|
+
|
|
289
|
+
@auto_sleep.setter
|
|
290
|
+
def auto_sleep(self, value: bool) -> None:
|
|
291
|
+
if not value and self.machine == Machine.CPU:
|
|
292
|
+
warnings.warn("Disabling auto-sleep will convert the Studio from free to paid!")
|
|
293
|
+
self._studio_api.update_autoshutdown(self._studio.id, self._teamspace.id, enabled=value, studio=self._studio)
|
|
294
|
+
self._update_studio_reference()
|
|
295
|
+
|
|
296
|
+
@property
|
|
297
|
+
def auto_sleep_time(self) -> int:
|
|
298
|
+
"""Returns the time in seconds a Studio has to be idle for auto-sleep to kick in (if enabled)."""
|
|
299
|
+
return self._studio.code_config.idle_shutdown_seconds
|
|
300
|
+
|
|
301
|
+
@auto_sleep_time.setter
|
|
302
|
+
def auto_sleep_time(self, value: int) -> None:
|
|
303
|
+
warnings.warn("Setting auto-sleep time will convert the Studio from free to paid!")
|
|
304
|
+
self._studio_api.update_autoshutdown(
|
|
305
|
+
self._studio.id, self._teamspace.id, idle_shutdown_seconds=value, studio=self._studio
|
|
257
306
|
)
|
|
307
|
+
self._update_studio_reference()
|
|
308
|
+
|
|
309
|
+
@property
|
|
310
|
+
def auto_shutdown(self) -> bool:
|
|
311
|
+
warnings.warn("auto_shutdown is deprecated. Use auto_sleep instead", DeprecationWarning)
|
|
312
|
+
return self.auto_sleep
|
|
313
|
+
|
|
314
|
+
@auto_shutdown.setter
|
|
315
|
+
def auto_shutdown(self, value: bool) -> None:
|
|
316
|
+
warnings.warn("auto_shutdown is deprecated. Use auto_sleep instead", DeprecationWarning)
|
|
317
|
+
self.auto_sleep = value
|
|
318
|
+
|
|
319
|
+
@property
|
|
320
|
+
def auto_shutdown_time(self) -> int:
|
|
321
|
+
warnings.warn("auto_shutdown_time is deprecated. Use auto_sleep_time instead", DeprecationWarning)
|
|
322
|
+
return self.auto_sleep_time
|
|
323
|
+
|
|
324
|
+
@auto_shutdown_time.setter
|
|
325
|
+
def auto_shutdown_time(self, value: int) -> None:
|
|
326
|
+
warnings.warn("auto_shutdown_time is deprecated. Use auto_sleep_time instead", DeprecationWarning)
|
|
327
|
+
self.auto_sleep_time = value
|
|
258
328
|
|
|
259
329
|
@property
|
|
260
330
|
def available_plugins(self) -> Mapping[str, str]:
|
|
@@ -342,6 +412,9 @@ class Studio:
|
|
|
342
412
|
"""Returns reader friendly representation."""
|
|
343
413
|
return repr(self)
|
|
344
414
|
|
|
415
|
+
def _update_studio_reference(self) -> None:
|
|
416
|
+
self._studio = self._studio_api.get_studio_by_id(studio_id=self._studio.id, teamspace_id=self._teamspace.id)
|
|
417
|
+
|
|
345
418
|
|
|
346
419
|
def _internal_status_to_external_status(internal_status: str) -> Status:
|
|
347
420
|
"""Converts internal status strings from HTTP requests to external enums."""
|
lightning_sdk/teamspace.py
CHANGED
|
@@ -1,12 +1,24 @@
|
|
|
1
|
-
|
|
1
|
+
import warnings
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
from typing import TYPE_CHECKING, List, Optional, Tuple, Union
|
|
2
4
|
|
|
5
|
+
from lightning_sdk.agents import Agent
|
|
3
6
|
from lightning_sdk.api import TeamspaceApi
|
|
7
|
+
from lightning_sdk.models import UploadedModelInfo
|
|
4
8
|
from lightning_sdk.organization import Organization
|
|
5
9
|
from lightning_sdk.owner import Owner
|
|
6
10
|
from lightning_sdk.user import User
|
|
7
|
-
from lightning_sdk.utils import
|
|
11
|
+
from lightning_sdk.utils.resolve import (
|
|
12
|
+
_get_organizations_for_authed_user,
|
|
13
|
+
_parse_model_and_version,
|
|
14
|
+
_resolve_org,
|
|
15
|
+
_resolve_teamspace_name,
|
|
16
|
+
_resolve_user,
|
|
17
|
+
)
|
|
8
18
|
|
|
9
19
|
if TYPE_CHECKING:
|
|
20
|
+
from lightning_sdk.job import Job
|
|
21
|
+
from lightning_sdk.mmt import MMT
|
|
10
22
|
from lightning_sdk.studio import Studio
|
|
11
23
|
|
|
12
24
|
|
|
@@ -88,19 +100,81 @@ class Teamspace:
|
|
|
88
100
|
from lightning_sdk.studio import Studio
|
|
89
101
|
|
|
90
102
|
studios = []
|
|
91
|
-
clusters = self._teamspace_api.
|
|
103
|
+
clusters = self._teamspace_api.list_cloud_accounts(teamspace_id=self.id)
|
|
92
104
|
for cl in clusters:
|
|
93
|
-
_studios = self._teamspace_api.list_studios(teamspace_id=self.id,
|
|
105
|
+
_studios = self._teamspace_api.list_studios(teamspace_id=self.id, cloud_account=cl.cluster_id)
|
|
94
106
|
for s in _studios:
|
|
95
107
|
studios.append(Studio(name=s.name, teamspace=self, cluster=cl.cluster_name, create_ok=False))
|
|
96
108
|
|
|
97
109
|
return studios
|
|
98
110
|
|
|
111
|
+
@property
|
|
112
|
+
def default_cloud_account(self) -> str:
|
|
113
|
+
return self._teamspace.project_settings.preferred_cluster
|
|
114
|
+
|
|
115
|
+
@property
|
|
116
|
+
def cloud_accounts(self) -> List[str]:
|
|
117
|
+
"""All cloud accounts associated with that teamspace."""
|
|
118
|
+
clusters = self._teamspace_api.list_cloud_accounts(teamspace_id=self.id)
|
|
119
|
+
return [cl.cluster_name for cl in clusters]
|
|
120
|
+
|
|
99
121
|
@property
|
|
100
122
|
def clusters(self) -> List[str]:
|
|
101
123
|
"""All clusters associated with that teamspace."""
|
|
102
|
-
|
|
103
|
-
|
|
124
|
+
warnings.warn(
|
|
125
|
+
"The 'clusters' attribute is deprecated and will be removed in the future. "
|
|
126
|
+
"Please use the 'cloud_accounts' attribute instead.",
|
|
127
|
+
DeprecationWarning,
|
|
128
|
+
)
|
|
129
|
+
return self.cloud_accounts
|
|
130
|
+
|
|
131
|
+
@property
|
|
132
|
+
def jobs(self) -> Tuple["Job", ...]:
|
|
133
|
+
from lightning_sdk.job import Job
|
|
134
|
+
from lightning_sdk.plugin import forced_v1
|
|
135
|
+
|
|
136
|
+
jobsv1, jobsv2 = self._teamspace_api.list_jobs(teamspace_id=self.id)
|
|
137
|
+
|
|
138
|
+
jobs = []
|
|
139
|
+
|
|
140
|
+
for j1 in jobsv1:
|
|
141
|
+
with forced_v1(Job):
|
|
142
|
+
# _fetch_job = False to prevent refetching on init since we already got it
|
|
143
|
+
job = Job(name=j1.name, teamspace=self, _fetch_job=False)
|
|
144
|
+
job._internal_job._job = j1
|
|
145
|
+
jobs.append(job)
|
|
146
|
+
|
|
147
|
+
for j2 in jobsv2:
|
|
148
|
+
# _fetch_job = False to prevent refetching on init since we already got it
|
|
149
|
+
job = Job(name=j2.name, teamspace=self, _fetch_job=False)
|
|
150
|
+
job._internal_job._job = j2
|
|
151
|
+
jobs.append(job)
|
|
152
|
+
|
|
153
|
+
return tuple(jobs)
|
|
154
|
+
|
|
155
|
+
@property
|
|
156
|
+
def multi_machine_jobs(self) -> Tuple["MMT", ...]:
|
|
157
|
+
from lightning_sdk.mmt import MMT
|
|
158
|
+
from lightning_sdk.plugin import forced_v1
|
|
159
|
+
|
|
160
|
+
mmtsv1, mmtsv2 = self._teamspace_api.list_mmts(teamspace_id=self.id)
|
|
161
|
+
|
|
162
|
+
mmts = []
|
|
163
|
+
|
|
164
|
+
for m1 in mmtsv1:
|
|
165
|
+
with forced_v1(MMT):
|
|
166
|
+
# _fetch_job = False to prevent refetching on init since we already got it
|
|
167
|
+
mmt = MMT(name=m1.name, teamspace=self, _fetch_job=False)
|
|
168
|
+
mmt._internal_mmt._job = m1
|
|
169
|
+
mmts.append(mmt)
|
|
170
|
+
|
|
171
|
+
for m2 in mmtsv2:
|
|
172
|
+
# _fetch_job = False to prevent refetching on init since we already got it
|
|
173
|
+
mmt = MMT(name=m2.name, teamspace=self, _fetch_job=False)
|
|
174
|
+
mmt._internal_mmt._job = m2
|
|
175
|
+
mmts.append(mmt)
|
|
176
|
+
|
|
177
|
+
return tuple(mmts)
|
|
104
178
|
|
|
105
179
|
def __eq__(self, other: "Teamspace") -> bool:
|
|
106
180
|
"""Checks whether the provided other object is equal to this one."""
|
|
@@ -116,6 +190,161 @@ class Teamspace:
|
|
|
116
190
|
"""Returns reader friendly representation."""
|
|
117
191
|
return repr(self)
|
|
118
192
|
|
|
193
|
+
def create_agent(
|
|
194
|
+
self,
|
|
195
|
+
name: str,
|
|
196
|
+
api_key: str,
|
|
197
|
+
base_url: str,
|
|
198
|
+
model: str,
|
|
199
|
+
org_id: Optional[str] = "",
|
|
200
|
+
prompt_template: Optional[str] = "",
|
|
201
|
+
description: Optional[str] = "",
|
|
202
|
+
prompt_suggestions: Optional[List[str]] = None,
|
|
203
|
+
file_uploads_enabled: Optional[bool] = None,
|
|
204
|
+
) -> "Agent":
|
|
205
|
+
agent = self._teamspace_api.create_agent(
|
|
206
|
+
teamspace_id=self.id,
|
|
207
|
+
name=name,
|
|
208
|
+
api_key=api_key,
|
|
209
|
+
base_url=base_url,
|
|
210
|
+
model=model,
|
|
211
|
+
org_id=org_id,
|
|
212
|
+
prompt_template=prompt_template,
|
|
213
|
+
description=description,
|
|
214
|
+
prompt_suggestions=prompt_suggestions,
|
|
215
|
+
file_uploads_enabled=file_uploads_enabled,
|
|
216
|
+
)
|
|
217
|
+
return Agent(agent.id)
|
|
218
|
+
|
|
219
|
+
def upload_model(
|
|
220
|
+
self,
|
|
221
|
+
path: Union[str, Path],
|
|
222
|
+
name: str,
|
|
223
|
+
cloud_account: Optional[str] = None,
|
|
224
|
+
progress_bar: bool = True,
|
|
225
|
+
) -> UploadedModelInfo:
|
|
226
|
+
"""Upload a local checkpoint file to the model store.
|
|
227
|
+
|
|
228
|
+
Args:
|
|
229
|
+
path: Path to the model file or folder to upload.
|
|
230
|
+
name: Name tag of the model to upload.
|
|
231
|
+
cloud_account: The name of the cloud account to store the Model in.
|
|
232
|
+
If not provided, the default cloud account for the Teamspace will be used.
|
|
233
|
+
progress_bar: Whether to show a progress bar for the upload.
|
|
234
|
+
"""
|
|
235
|
+
if not path:
|
|
236
|
+
raise ValueError("No path provided to upload")
|
|
237
|
+
if not name:
|
|
238
|
+
raise ValueError("No name provided for the model")
|
|
239
|
+
path = Path(path).resolve()
|
|
240
|
+
if not path.exists():
|
|
241
|
+
raise FileNotFoundError(str(path))
|
|
242
|
+
|
|
243
|
+
cloud_account = (
|
|
244
|
+
self._teamspace_api._determine_cloud_account(self.id) if cloud_account is None else cloud_account
|
|
245
|
+
)
|
|
246
|
+
filepaths = [path] if path.is_file() else [p for p in path.rglob("*") if p.is_file()]
|
|
247
|
+
|
|
248
|
+
if not filepaths:
|
|
249
|
+
raise FileNotFoundError(
|
|
250
|
+
"The path to upload doesn't contain any files. Make sure it points to a file or"
|
|
251
|
+
f" non-empty folder: {path}"
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
root_path = path
|
|
255
|
+
if len(filepaths) == 1:
|
|
256
|
+
root_path = path.parent
|
|
257
|
+
|
|
258
|
+
filenames = ",".join(str(f.relative_to(root_path)) for f in filepaths)
|
|
259
|
+
|
|
260
|
+
model = self._teamspace_api.create_model(
|
|
261
|
+
name=name,
|
|
262
|
+
metadata={"filenames": filenames},
|
|
263
|
+
private=True,
|
|
264
|
+
teamspace_id=self.id,
|
|
265
|
+
cloud_account=cloud_account,
|
|
266
|
+
)
|
|
267
|
+
self._teamspace_api.upload_model_files(
|
|
268
|
+
model_id=model.model_id,
|
|
269
|
+
version=model.version,
|
|
270
|
+
root_path=root_path,
|
|
271
|
+
filepaths=filepaths,
|
|
272
|
+
cloud_account=cloud_account,
|
|
273
|
+
teamspace_id=self.id,
|
|
274
|
+
progress_bar=progress_bar,
|
|
275
|
+
)
|
|
276
|
+
self._teamspace_api.complete_model_upload(
|
|
277
|
+
model_id=model.model_id,
|
|
278
|
+
version=model.version,
|
|
279
|
+
teamspace_id=self.id,
|
|
280
|
+
)
|
|
281
|
+
return UploadedModelInfo(
|
|
282
|
+
name=name,
|
|
283
|
+
version=model.version,
|
|
284
|
+
teamspace=self.name,
|
|
285
|
+
cloud_account=cloud_account,
|
|
286
|
+
)
|
|
287
|
+
|
|
288
|
+
def download_model(
|
|
289
|
+
self,
|
|
290
|
+
name: str,
|
|
291
|
+
download_dir: Optional[str] = None,
|
|
292
|
+
progress_bar: bool = True,
|
|
293
|
+
) -> str:
|
|
294
|
+
"""Download a checkpoint from the model store.
|
|
295
|
+
|
|
296
|
+
Args:
|
|
297
|
+
name: Name tag of the model to download. Can optionally also contain a version tag separated by a colon,
|
|
298
|
+
e.g. 'modelname:v1'.
|
|
299
|
+
download_dir: A path to directory where the model should be downloaded. Defaults
|
|
300
|
+
to the current working directory.
|
|
301
|
+
progress_bar: Whether to show a progress bar for the download.
|
|
302
|
+
|
|
303
|
+
Returns:
|
|
304
|
+
The absolute path to the downloaded model file or folder.
|
|
305
|
+
|
|
306
|
+
"""
|
|
307
|
+
if not name:
|
|
308
|
+
raise ValueError("No name provided for the model")
|
|
309
|
+
if download_dir is None:
|
|
310
|
+
download_dir = Path.cwd()
|
|
311
|
+
download_dir = Path(download_dir)
|
|
312
|
+
|
|
313
|
+
name, version = _parse_model_and_version(name)
|
|
314
|
+
model_version = self._teamspace_api.get_model_version(name=name, version=version, teamspace_id=self.id)
|
|
315
|
+
if not model_version.upload_complete:
|
|
316
|
+
raise RuntimeError(
|
|
317
|
+
f"Model {name}:{version} is not fully uploaded yet. Please wait until the upload is complete."
|
|
318
|
+
)
|
|
319
|
+
downloaded_files = self._teamspace_api.download_model_files(
|
|
320
|
+
name=name,
|
|
321
|
+
version=version,
|
|
322
|
+
download_dir=download_dir,
|
|
323
|
+
teamspace_name=self.name,
|
|
324
|
+
teamspace_owner_name=self.owner.name,
|
|
325
|
+
progress_bar=progress_bar,
|
|
326
|
+
)
|
|
327
|
+
|
|
328
|
+
if not downloaded_files:
|
|
329
|
+
raise RuntimeError("No files were downloaded. This shouldn't happen, please report a bug.")
|
|
330
|
+
|
|
331
|
+
if len(downloaded_files) == 1:
|
|
332
|
+
downloaded_file = Path(downloaded_files[0])
|
|
333
|
+
downloaded_path = download_dir / downloaded_file.parts[0]
|
|
334
|
+
return str(downloaded_path.resolve())
|
|
335
|
+
return str(Path(download_dir).resolve())
|
|
336
|
+
|
|
337
|
+
def delete_model(self, name: str) -> None:
|
|
338
|
+
"""Delete a model from the model store.
|
|
339
|
+
|
|
340
|
+
Args:
|
|
341
|
+
name: Name tag of the model to delete. Can optionally also contain a version tag separated by a colon,
|
|
342
|
+
e.g. 'entity/modelname:v1'.
|
|
343
|
+
|
|
344
|
+
"""
|
|
345
|
+
name, version = _parse_model_and_version(name)
|
|
346
|
+
self._teamspace_api.delete_model(name=name, version=version, teamspace_id=self.id)
|
|
347
|
+
|
|
119
348
|
|
|
120
349
|
def _resolve_valueerror_message(error: ValueError, owner: Owner, teamspace_name: str) -> ValueError:
|
|
121
350
|
"""Resolves the ValueError Message and replaces it with a nicer message."""
|
|
@@ -127,18 +356,17 @@ def _resolve_valueerror_message(error: ValueError, owner: Owner, teamspace_name:
|
|
|
127
356
|
organizations = _get_organizations_for_authed_user()
|
|
128
357
|
message = (
|
|
129
358
|
f"Teamspace {entire_ts_name} does not exist. "
|
|
130
|
-
"Is
|
|
131
|
-
f"{[o.name for o in organizations]}.
|
|
132
|
-
"of
|
|
359
|
+
f"Is {teamspace_name} an organizational Teamspace? You are a member of the following organizations: "
|
|
360
|
+
f"{[o.name for o in organizations]}. Try specifying the `org` parameter instead "
|
|
361
|
+
"of `user` if the Teamspace belongs to the organization."
|
|
133
362
|
)
|
|
134
363
|
else:
|
|
135
364
|
# organization teamspace owner
|
|
136
365
|
user = User()
|
|
137
366
|
message = (
|
|
138
367
|
f"Teamspace {entire_ts_name} does not exist. "
|
|
139
|
-
f"Is
|
|
140
|
-
"
|
|
141
|
-
f"Consider specifying user={user.name} instead of your org."
|
|
368
|
+
f"Is {teamspace_name} a user Teamspace? "
|
|
369
|
+
f"Consider specifying user={user.name} instead of org={owner.name}."
|
|
142
370
|
)
|
|
143
371
|
|
|
144
372
|
return ValueError(message, *error.args[1:])
|
lightning_sdk/user.py
CHANGED
|
File without changes
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
from abc import ABCMeta
|
|
2
|
+
from typing import Any, Callable, Tuple, Type
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class ConditionBaseMeta(ABCMeta):
|
|
6
|
+
"""Metaclass that allows for conditional inheritance.
|
|
7
|
+
|
|
8
|
+
This metaclass is used to conditionally inherit from two base classes
|
|
9
|
+
based on the result of a given condition function.
|
|
10
|
+
|
|
11
|
+
Example usage:
|
|
12
|
+
```
|
|
13
|
+
def my_condition():
|
|
14
|
+
return some_condition # Define your condition here
|
|
15
|
+
|
|
16
|
+
class A:
|
|
17
|
+
pass
|
|
18
|
+
|
|
19
|
+
class B:
|
|
20
|
+
pass
|
|
21
|
+
|
|
22
|
+
class MyNewClass(metaclass=ConditionBaseMeta, condition_func=my_condition, base_true=A, base_false=B):
|
|
23
|
+
pass
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Args:
|
|
27
|
+
cls: The metaclass itself.
|
|
28
|
+
name: The name of the class being created.
|
|
29
|
+
bases: The base classes of the class being created.
|
|
30
|
+
attrs: The attributes of the class being created.
|
|
31
|
+
condition_func: The function that determines which base class to inherit from.
|
|
32
|
+
base_true: The base class to inherit from if the condition function returns True.
|
|
33
|
+
base_false: The base class to inherit from if the condition function returns False.
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
type: The new class with the appropriate base class.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
def __new__(
|
|
40
|
+
cls,
|
|
41
|
+
name: str,
|
|
42
|
+
bases: Tuple[type, ...],
|
|
43
|
+
attrs: dict,
|
|
44
|
+
condition_func: Callable[[], bool],
|
|
45
|
+
base_true: Type,
|
|
46
|
+
base_false: Type,
|
|
47
|
+
) -> Type:
|
|
48
|
+
# Helper function to determine the base class
|
|
49
|
+
def get_base() -> type:
|
|
50
|
+
return base_true if condition_func() else base_false
|
|
51
|
+
|
|
52
|
+
base = get_base()
|
|
53
|
+
attrs["_base"] = base
|
|
54
|
+
|
|
55
|
+
# Create the final class, inheriting from both the intermediate base and the original bases
|
|
56
|
+
return super().__new__(cls, name, (base, *bases), attrs)
|
|
57
|
+
|
|
58
|
+
def __getattr__(cls, name: str) -> Any:
|
|
59
|
+
"""Get an attribute from the appropriate base class."""
|
|
60
|
+
# Delegate attribute lookup to the appropriate base class
|
|
61
|
+
return getattr(cls._base, name)
|