lightning-sdk 0.1.2__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.
Files changed (521) hide show
  1. lightning_sdk/__init__.py +12 -2
  2. lightning_sdk/agents.py +46 -0
  3. lightning_sdk/ai_hub.py +185 -0
  4. lightning_sdk/api/__init__.py +4 -0
  5. lightning_sdk/api/agents_api.py +107 -0
  6. lightning_sdk/api/ai_hub_api.py +130 -0
  7. lightning_sdk/api/deployment_api.py +574 -0
  8. lightning_sdk/api/job_api.py +308 -0
  9. lightning_sdk/api/mmt_api.py +188 -0
  10. lightning_sdk/api/org_api.py +1 -3
  11. lightning_sdk/api/studio_api.py +174 -83
  12. lightning_sdk/api/teamspace_api.py +219 -20
  13. lightning_sdk/api/user_api.py +24 -9
  14. lightning_sdk/api/utils.py +429 -47
  15. lightning_sdk/cli/ai_hub.py +49 -0
  16. lightning_sdk/cli/download.py +132 -0
  17. lightning_sdk/cli/entrypoint.py +11 -3
  18. lightning_sdk/cli/run.py +206 -0
  19. lightning_sdk/cli/serve.py +218 -0
  20. lightning_sdk/cli/studios_menu.py +78 -0
  21. lightning_sdk/cli/upload.py +79 -89
  22. lightning_sdk/constants.py +29 -1
  23. lightning_sdk/deployment/__init__.py +25 -0
  24. lightning_sdk/deployment/deployment.py +389 -0
  25. lightning_sdk/helpers.py +49 -0
  26. lightning_sdk/job/__init__.py +5 -0
  27. lightning_sdk/job/base.py +295 -0
  28. lightning_sdk/job/job.py +266 -0
  29. lightning_sdk/job/v1.py +241 -0
  30. lightning_sdk/job/v2.py +193 -0
  31. lightning_sdk/job/work.py +72 -0
  32. lightning_sdk/lightning_cloud/__version__.py +1 -1
  33. lightning_sdk/lightning_cloud/cli/__main__.py +15 -13
  34. lightning_sdk/lightning_cloud/env.py +1 -0
  35. lightning_sdk/lightning_cloud/login.py +12 -8
  36. lightning_sdk/lightning_cloud/openapi/__init__.py +314 -43
  37. lightning_sdk/lightning_cloud/openapi/api/__init__.py +10 -0
  38. lightning_sdk/lightning_cloud/openapi/api/analytics_service_api.py +141 -0
  39. lightning_sdk/lightning_cloud/openapi/api/assistants_service_api.py +1075 -227
  40. lightning_sdk/lightning_cloud/openapi/api/billing_service_api.py +9 -1
  41. lightning_sdk/lightning_cloud/openapi/api/cloud_space_service_api.py +3115 -895
  42. lightning_sdk/lightning_cloud/openapi/api/cluster_service_api.py +908 -141
  43. lightning_sdk/lightning_cloud/openapi/api/data_connection_service_api.py +10 -5
  44. lightning_sdk/lightning_cloud/openapi/api/deployment_templates_service_api.py +756 -0
  45. lightning_sdk/lightning_cloud/openapi/api/endpoint_service_api.py +1658 -159
  46. lightning_sdk/lightning_cloud/openapi/api/experiments_service_api.py +242 -0
  47. lightning_sdk/lightning_cloud/openapi/api/file_system_service_api.py +674 -0
  48. lightning_sdk/lightning_cloud/openapi/api/jobs_service_api.py +3823 -0
  49. lightning_sdk/lightning_cloud/openapi/api/lightningapp_instance_service_api.py +158 -590
  50. lightning_sdk/lightning_cloud/openapi/api/lightningapp_v2_service_api.py +0 -1086
  51. lightning_sdk/lightning_cloud/openapi/api/lightningwork_service_api.py +113 -0
  52. lightning_sdk/lightning_cloud/openapi/api/lit_logger_service_api.py +1753 -0
  53. lightning_sdk/lightning_cloud/openapi/api/lit_registry_service_api.py +242 -0
  54. lightning_sdk/lightning_cloud/openapi/api/models_store_api.py +1423 -108
  55. lightning_sdk/lightning_cloud/openapi/api/organizations_service_api.py +421 -1
  56. lightning_sdk/lightning_cloud/openapi/api/profiler_service_api.py +663 -0
  57. lightning_sdk/lightning_cloud/openapi/api/projects_service_api.py +5 -1
  58. lightning_sdk/lightning_cloud/openapi/api/secret_service_api.py +478 -1
  59. lightning_sdk/lightning_cloud/openapi/api/slurm_jobs_user_service_api.py +9 -5
  60. lightning_sdk/lightning_cloud/openapi/api/snowflake_service_api.py +686 -0
  61. lightning_sdk/lightning_cloud/openapi/api/storage_service_api.py +1094 -0
  62. lightning_sdk/lightning_cloud/openapi/api/studio_jobs_service_api.py +4 -4
  63. lightning_sdk/lightning_cloud/openapi/api/user_service_api.py +1081 -34
  64. lightning_sdk/lightning_cloud/openapi/models/__init__.py +304 -41
  65. lightning_sdk/lightning_cloud/openapi/models/affiliatelinks_id_body.py +149 -0
  66. lightning_sdk/lightning_cloud/openapi/models/agentmanagedendpoints_id_body.py +305 -0
  67. lightning_sdk/lightning_cloud/openapi/models/agents_id_body.py +643 -0
  68. lightning_sdk/lightning_cloud/openapi/models/app_id_works_body.py +149 -0
  69. lightning_sdk/lightning_cloud/openapi/models/approveautojoindomain_domain_body.py +123 -0
  70. lightning_sdk/lightning_cloud/openapi/models/apps_id_body1.py +107 -3
  71. lightning_sdk/lightning_cloud/openapi/models/assistant_id_conversations_body.py +1 -27
  72. lightning_sdk/lightning_cloud/openapi/models/{v1_get_cluster_health_response.py → captures_id_body.py} +16 -16
  73. lightning_sdk/lightning_cloud/openapi/models/cloud_space_id_versionpublications_body.py +175 -0
  74. lightning_sdk/lightning_cloud/openapi/models/cloud_space_id_versionpublications_body1.py +175 -0
  75. lightning_sdk/lightning_cloud/openapi/models/cloud_space_id_versions_body.py +409 -0
  76. lightning_sdk/lightning_cloud/openapi/models/cloudspace_id_runs_body.py +27 -1
  77. lightning_sdk/lightning_cloud/openapi/models/cloudspaces_id_body.py +84 -6
  78. lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityblock_body.py +253 -0
  79. lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityreservations_body.py +55 -3
  80. lightning_sdk/lightning_cloud/openapi/models/cluster_id_proxies_body.py +123 -0
  81. lightning_sdk/lightning_cloud/openapi/models/clusters_id_body.py +27 -1
  82. lightning_sdk/lightning_cloud/openapi/models/create.py +157 -1
  83. lightning_sdk/lightning_cloud/openapi/models/create_deployment_request_defines_a_spec_for_the_job_that_allows_for_autoscaling_jobs.py +383 -0
  84. lightning_sdk/lightning_cloud/openapi/models/deployments_id_body.py +565 -0
  85. lightning_sdk/lightning_cloud/openapi/models/deploymenttemplates_id_body.py +513 -0
  86. lightning_sdk/lightning_cloud/openapi/models/endpoints_id_body.py +43 -17
  87. lightning_sdk/lightning_cloud/openapi/models/experiment_name_variant_name_body.py +123 -0
  88. lightning_sdk/lightning_cloud/openapi/models/externalv1_cloud_space_instance_status.py +107 -1
  89. lightning_sdk/lightning_cloud/openapi/models/externalv1_lightningapp_instance.py +27 -1
  90. lightning_sdk/lightning_cloud/openapi/models/externalv1_user_status.py +27 -1
  91. lightning_sdk/lightning_cloud/openapi/models/fileendpoints_id_body.py +131 -1
  92. lightning_sdk/lightning_cloud/openapi/models/id_codeconfig_body.py +29 -55
  93. lightning_sdk/lightning_cloud/openapi/models/id_complete_body.py +175 -0
  94. lightning_sdk/lightning_cloud/openapi/models/id_engage_body.py +3 -29
  95. lightning_sdk/lightning_cloud/openapi/models/id_engage_body1.py +149 -0
  96. lightning_sdk/lightning_cloud/openapi/models/id_execute_body.py +3 -55
  97. lightning_sdk/lightning_cloud/openapi/models/id_execute_body1.py +175 -0
  98. lightning_sdk/lightning_cloud/openapi/models/id_fork_body.py +31 -31
  99. lightning_sdk/lightning_cloud/openapi/models/id_fork_body1.py +175 -0
  100. lightning_sdk/lightning_cloud/openapi/models/id_get_body.py +133 -3
  101. lightning_sdk/lightning_cloud/openapi/models/id_index_body.py +67 -15
  102. lightning_sdk/lightning_cloud/openapi/models/id_index_body2.py +123 -0
  103. lightning_sdk/lightning_cloud/openapi/models/id_index_body3.py +175 -0
  104. lightning_sdk/lightning_cloud/openapi/models/id_reportlogsactivity_body.py +123 -0
  105. lightning_sdk/lightning_cloud/openapi/models/id_start_body.py +29 -3
  106. lightning_sdk/lightning_cloud/openapi/models/id_storage_body.py +175 -0
  107. lightning_sdk/lightning_cloud/openapi/models/id_uploads_body1.py +175 -0
  108. lightning_sdk/lightning_cloud/openapi/models/id_visibility_body.py +123 -0
  109. lightning_sdk/lightning_cloud/openapi/models/jobs_id_body1.py +27 -1
  110. lightning_sdk/lightning_cloud/openapi/models/jobs_id_body2.py +17 -43
  111. lightning_sdk/lightning_cloud/openapi/models/jobs_id_body3.py +149 -0
  112. lightning_sdk/lightning_cloud/openapi/models/litloggermetrics_id_body.py +175 -0
  113. lightning_sdk/lightning_cloud/openapi/models/litpages_id_body.py +27 -1
  114. lightning_sdk/lightning_cloud/openapi/models/loggermetrics_id_body.py +123 -0
  115. lightning_sdk/lightning_cloud/openapi/models/metrics_stream_id_loggerartifacts_body.py +123 -0
  116. lightning_sdk/lightning_cloud/openapi/models/metricsstream_create_body.py +383 -0
  117. lightning_sdk/lightning_cloud/openapi/models/{v1_cloud_space_id_list.py → metricsstream_delete_body.py} +10 -10
  118. lightning_sdk/lightning_cloud/openapi/models/metricsstream_id_body.py +175 -0
  119. lightning_sdk/lightning_cloud/openapi/models/{v1_upload_model_response.py → model_id_versions_body.py} +25 -51
  120. lightning_sdk/lightning_cloud/openapi/models/model_id_visibility_body.py +123 -0
  121. lightning_sdk/lightning_cloud/openapi/models/models_model_id_body.py +149 -0
  122. lightning_sdk/lightning_cloud/openapi/models/multimachinejobs_id_body.py +123 -0
  123. lightning_sdk/lightning_cloud/openapi/models/org_id_memberships_body.py +27 -1
  124. lightning_sdk/lightning_cloud/openapi/models/orgs_id_body.py +183 -1
  125. lightning_sdk/lightning_cloud/openapi/models/profiler_captures_body.py +279 -0
  126. lightning_sdk/lightning_cloud/openapi/models/profiler_enabled_body.py +149 -0
  127. lightning_sdk/lightning_cloud/openapi/models/project_id_agentmanagedendpoints_body.py +149 -0
  128. lightning_sdk/lightning_cloud/openapi/models/{project_id_assistants_body.py → project_id_agents_body.py} +181 -51
  129. lightning_sdk/lightning_cloud/openapi/models/project_id_cloudspaces_body.py +71 -19
  130. lightning_sdk/lightning_cloud/openapi/models/project_id_fileendpoints_body.py +79 -1
  131. lightning_sdk/lightning_cloud/openapi/models/project_id_jobs_body.py +175 -0
  132. lightning_sdk/lightning_cloud/openapi/models/project_id_litregistry_body.py +123 -0
  133. lightning_sdk/lightning_cloud/openapi/models/project_id_memberships_body.py +53 -1
  134. lightning_sdk/lightning_cloud/openapi/models/{v1_upload_model_request.py → project_id_models_body.py} +70 -70
  135. lightning_sdk/lightning_cloud/openapi/models/project_id_multimachinejobs_body.py +227 -0
  136. lightning_sdk/lightning_cloud/openapi/models/project_id_secrets_body.py +27 -1
  137. lightning_sdk/lightning_cloud/openapi/models/project_id_serviceexecution_body.py +175 -0
  138. lightning_sdk/lightning_cloud/openapi/models/project_id_snowflake_body.py +123 -0
  139. lightning_sdk/lightning_cloud/openapi/models/projects_id_body.py +29 -3
  140. lightning_sdk/lightning_cloud/openapi/models/query_query_id_body.py +175 -0
  141. lightning_sdk/lightning_cloud/openapi/models/secrets_id_body1.py +123 -0
  142. lightning_sdk/lightning_cloud/openapi/models/servers_server_id_body.py +123 -0
  143. lightning_sdk/lightning_cloud/openapi/models/service_artifact_artifact_kind.py +104 -0
  144. lightning_sdk/lightning_cloud/openapi/models/serviceexecution_id_body.py +331 -0
  145. lightning_sdk/lightning_cloud/openapi/models/slurm_jobs_body.py +79 -1
  146. lightning_sdk/lightning_cloud/openapi/models/snowflake_export_body.py +305 -0
  147. lightning_sdk/lightning_cloud/openapi/models/{v1_download_model_response.py → snowflake_query_body.py} +51 -51
  148. lightning_sdk/lightning_cloud/openapi/models/storage_complete_body.py +27 -1
  149. lightning_sdk/lightning_cloud/openapi/models/update.py +105 -1
  150. lightning_sdk/lightning_cloud/openapi/models/upload_id_complete_body.py +149 -0
  151. lightning_sdk/lightning_cloud/openapi/models/upload_id_parts_body.py +149 -0
  152. lightning_sdk/lightning_cloud/openapi/models/user_id_affiliatelinks_body.py +149 -0
  153. lightning_sdk/lightning_cloud/openapi/models/v1_accelerator_quota_info.py +201 -0
  154. lightning_sdk/lightning_cloud/openapi/models/v1_ack_user_storage_violation_response.py +97 -0
  155. lightning_sdk/lightning_cloud/openapi/models/v1_add_job_timing_response.py +97 -0
  156. lightning_sdk/lightning_cloud/openapi/models/v1_affiliate_link.py +435 -0
  157. lightning_sdk/lightning_cloud/openapi/models/v1_agent_job.py +131 -1
  158. lightning_sdk/lightning_cloud/openapi/models/v1_api_pricing_spec.py +149 -0
  159. lightning_sdk/lightning_cloud/openapi/models/v1_app_type.py +104 -0
  160. lightning_sdk/lightning_cloud/openapi/models/v1_append_logger_metrics_response.py +97 -0
  161. lightning_sdk/lightning_cloud/openapi/models/v1_approve_auto_join_domain_response.py +123 -0
  162. lightning_sdk/lightning_cloud/openapi/models/v1_assign_variant_response.py +97 -0
  163. lightning_sdk/lightning_cloud/openapi/models/v1_assistant.py +157 -1
  164. lightning_sdk/lightning_cloud/openapi/models/v1_assistant_knowledge_item_status.py +253 -0
  165. lightning_sdk/lightning_cloud/openapi/models/v1_assistant_knowledge_status.py +123 -0
  166. lightning_sdk/lightning_cloud/openapi/models/v1_assistant_model_status.py +104 -0
  167. lightning_sdk/lightning_cloud/openapi/models/v1_auto_join_domain_validation.py +175 -0
  168. lightning_sdk/lightning_cloud/openapi/models/v1_auto_join_org_response.py +149 -0
  169. lightning_sdk/lightning_cloud/openapi/models/v1_autoscaling_spec.py +305 -0
  170. lightning_sdk/lightning_cloud/openapi/models/v1_autoscaling_target_metric.py +149 -0
  171. lightning_sdk/lightning_cloud/openapi/models/v1_aws_direct_v1.py +133 -3
  172. lightning_sdk/lightning_cloud/openapi/models/v1_batch_update_lightningwork_response.py +97 -0
  173. lightning_sdk/lightning_cloud/openapi/models/v1_body.py +123 -0
  174. lightning_sdk/lightning_cloud/openapi/models/v1_cancellation_metadata.py +149 -0
  175. lightning_sdk/lightning_cloud/openapi/models/v1_capacity_block_offering.py +383 -0
  176. lightning_sdk/lightning_cloud/openapi/models/v1_check_snowflake_connection_response.py +123 -0
  177. lightning_sdk/lightning_cloud/openapi/models/v1_checkbox.py +201 -0
  178. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space.py +162 -6
  179. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_code_version.py +383 -0
  180. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_code_version_status.py +105 -0
  181. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_instance_config.py +1 -53
  182. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_instance_startup_status.py +79 -1
  183. lightning_sdk/lightning_cloud/openapi/models/{v1_cluster_log_service.py → v1_cloud_space_session.py} +49 -49
  184. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_version.py +669 -0
  185. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_version_publication.py +201 -0
  186. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_accelerator.py +445 -3
  187. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_capacity_reservation.py +55 -3
  188. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_names.py +123 -0
  189. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_proxy.py +201 -0
  190. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_resource_tag.py +149 -0
  191. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_security_options.py +357 -0
  192. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_spec.py +157 -107
  193. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_state.py +1 -0
  194. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_status.py +17 -43
  195. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_tagging_options.py +175 -0
  196. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_type.py +0 -1
  197. lightning_sdk/lightning_cloud/openapi/models/v1_command_argument.py +131 -1
  198. lightning_sdk/lightning_cloud/openapi/models/v1_complete_model_upload_response.py +97 -0
  199. lightning_sdk/lightning_cloud/openapi/models/v1_complete_multi_part_upload_response.py +97 -0
  200. lightning_sdk/lightning_cloud/openapi/models/v1_complete_upload_service_execution_artifact_response.py +97 -0
  201. lightning_sdk/lightning_cloud/openapi/models/v1_completed_part.py +149 -0
  202. lightning_sdk/lightning_cloud/openapi/models/v1_conversation.py +15 -15
  203. lightning_sdk/lightning_cloud/openapi/models/v1_conversation_response_chunk.py +26 -26
  204. lightning_sdk/lightning_cloud/openapi/models/v1_count_metrics_streams_response.py +123 -0
  205. lightning_sdk/lightning_cloud/openapi/models/v1_create_checkout_session_request.py +53 -1
  206. lightning_sdk/lightning_cloud/openapi/models/v1_create_cluster_request.py +27 -1
  207. lightning_sdk/lightning_cloud/openapi/models/v1_create_deployment_template_request.py +539 -0
  208. lightning_sdk/lightning_cloud/openapi/models/v1_create_multi_part_upload_response.py +123 -0
  209. lightning_sdk/lightning_cloud/openapi/models/v1_create_organization_request.py +159 -3
  210. lightning_sdk/lightning_cloud/openapi/models/v1_create_project_request.py +27 -1
  211. lightning_sdk/lightning_cloud/openapi/models/v1_create_shared_metrics_stream_request.py +201 -0
  212. lightning_sdk/lightning_cloud/openapi/models/v1_create_shared_metrics_stream_response.py +123 -0
  213. lightning_sdk/lightning_cloud/openapi/models/v1_create_snowflake_connection_response.py +123 -0
  214. lightning_sdk/lightning_cloud/openapi/models/v1_create_user_secret_request.py +149 -0
  215. lightning_sdk/lightning_cloud/openapi/models/v1_data_connection.py +365 -1
  216. lightning_sdk/lightning_cloud/openapi/models/{v1_cluster_performance_profile.py → v1_data_connection_state.py} +11 -9
  217. lightning_sdk/lightning_cloud/openapi/models/v1_data_path.py +201 -0
  218. lightning_sdk/lightning_cloud/openapi/models/v1_delete_affiliate_link_response.py +97 -0
  219. lightning_sdk/lightning_cloud/openapi/models/v1_delete_cloud_space_session_response.py +97 -0
  220. lightning_sdk/lightning_cloud/openapi/models/v1_delete_cloud_space_version_publication_response.py +97 -0
  221. lightning_sdk/lightning_cloud/openapi/models/v1_delete_cloud_space_version_response.py +97 -0
  222. lightning_sdk/lightning_cloud/openapi/models/v1_delete_cluster_proxy_response.py +97 -0
  223. lightning_sdk/lightning_cloud/openapi/models/v1_delete_deployment_release_response.py +97 -0
  224. lightning_sdk/lightning_cloud/openapi/models/{v1_azure_cluster_driver_status.py → v1_delete_deployment_response.py} +6 -6
  225. lightning_sdk/lightning_cloud/openapi/models/v1_delete_index_response.py +97 -0
  226. lightning_sdk/lightning_cloud/openapi/models/{v1_byom_cluster_driver.py → v1_delete_job_response.py} +6 -6
  227. lightning_sdk/lightning_cloud/openapi/models/{v1_delete_lightningapp_v2_response.py → v1_delete_logger_artifact_response.py} +6 -6
  228. lightning_sdk/lightning_cloud/openapi/models/v1_delete_managed_endpoint_response.py +97 -0
  229. lightning_sdk/lightning_cloud/openapi/models/v1_delete_metrics_stream_response.py +97 -0
  230. lightning_sdk/lightning_cloud/openapi/models/v1_delete_multi_machine_job_response.py +97 -0
  231. lightning_sdk/lightning_cloud/openapi/models/v1_delete_profiler_capture_response.py +97 -0
  232. lightning_sdk/lightning_cloud/openapi/models/v1_delete_service_execution_response.py +97 -0
  233. lightning_sdk/lightning_cloud/openapi/models/{v1_delete_lightningapp_release_response.py → v1_delete_shared_metrics_stream_response.py} +6 -6
  234. lightning_sdk/lightning_cloud/openapi/models/v1_deployment.py +617 -0
  235. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_api.py +227 -0
  236. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_event.py +357 -0
  237. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_event_type.py +104 -0
  238. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_metrics.py +149 -0
  239. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_performance.py +305 -0
  240. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_release.py +331 -0
  241. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_spec.py +201 -0
  242. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_state.py +105 -0
  243. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_status.py +279 -0
  244. lightning_sdk/lightning_cloud/openapi/models/{appsv2_id_body.py → v1_deployment_strategy.py} +39 -39
  245. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template.py +721 -0
  246. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_engagement_response.py +97 -0
  247. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_gallery_response.py +591 -0
  248. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_parameter.py +435 -0
  249. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_parameter_placement.py +106 -0
  250. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_parameter_type.py +106 -0
  251. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template_summary.py +591 -0
  252. lightning_sdk/lightning_cloud/openapi/models/{instance_type_availability.py → v1_deployment_template_type.py} +10 -10
  253. lightning_sdk/lightning_cloud/openapi/models/{v1_get_lightningapp_source_code_download_url_response.py → v1_download_job_logs_response.py} +10 -10
  254. lightning_sdk/lightning_cloud/openapi/models/v1_download_service_execution_artifact_response.py +175 -0
  255. lightning_sdk/lightning_cloud/openapi/models/v1_ebs.py +279 -0
  256. lightning_sdk/lightning_cloud/openapi/models/v1_efs_config.py +201 -0
  257. lightning_sdk/lightning_cloud/openapi/models/v1_endpoint.py +53 -27
  258. lightning_sdk/lightning_cloud/openapi/models/v1_endpoint_auth.py +27 -1
  259. lightning_sdk/lightning_cloud/openapi/models/v1_endpoint_type.py +104 -0
  260. lightning_sdk/lightning_cloud/openapi/models/v1_execute_cloud_space_command_response.py +29 -3
  261. lightning_sdk/lightning_cloud/openapi/models/v1_execute_in_cloud_space_session_response.py +97 -0
  262. lightning_sdk/lightning_cloud/openapi/models/v1_execute_snowflake_query_response.py +149 -0
  263. lightning_sdk/lightning_cloud/openapi/models/v1_experiment.py +409 -0
  264. lightning_sdk/lightning_cloud/openapi/models/v1_export_snowflake_query_response.py +123 -0
  265. lightning_sdk/lightning_cloud/openapi/models/v1_external_search_user.py +279 -0
  266. lightning_sdk/lightning_cloud/openapi/models/v1_file_endpoint.py +131 -1
  267. lightning_sdk/lightning_cloud/openapi/models/{v1_instance_spec.py → v1_filesystem_app.py} +85 -59
  268. lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_cloud_space.py +149 -0
  269. lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_dataset.py +123 -0
  270. lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_job.py +175 -0
  271. lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_slurm_job.py +149 -0
  272. lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_snowflake_connection.py +123 -0
  273. lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_work.py +149 -0
  274. lightning_sdk/lightning_cloud/openapi/models/v1_find_capacity_block_offering_response.py +123 -0
  275. lightning_sdk/lightning_cloud/openapi/models/v1_gcp_data_connection.py +27 -1
  276. lightning_sdk/lightning_cloud/openapi/models/v1_gcs_folder_data_connection.py +123 -0
  277. lightning_sdk/lightning_cloud/openapi/models/v1_get_affiliate_link_response.py +123 -0
  278. lightning_sdk/lightning_cloud/openapi/models/{v1_list_cluster_instance_types_response.py → v1_get_deployment_routing_telemetry_aggregated_response.py} +23 -23
  279. lightning_sdk/lightning_cloud/openapi/models/v1_get_deployment_routing_telemetry_response.py +123 -0
  280. lightning_sdk/lightning_cloud/openapi/models/v1_get_folder_index_response.py +27 -1
  281. lightning_sdk/lightning_cloud/openapi/models/{v1_cluster_driver_status.py → v1_get_job_stats_response.py} +39 -39
  282. lightning_sdk/lightning_cloud/openapi/models/v1_get_job_system_metrics_response.py +123 -0
  283. lightning_sdk/lightning_cloud/openapi/models/v1_get_lightningapp_instance_open_ports_response.py +123 -0
  284. lightning_sdk/lightning_cloud/openapi/models/v1_get_logger_metrics_response.py +123 -0
  285. lightning_sdk/lightning_cloud/openapi/models/v1_get_model_file_upload_urls_response.py +123 -0
  286. lightning_sdk/lightning_cloud/openapi/models/v1_get_model_file_url_response.py +175 -0
  287. lightning_sdk/lightning_cloud/openapi/models/v1_get_model_files_response.py +279 -0
  288. lightning_sdk/lightning_cloud/openapi/models/v1_get_model_files_url_response.py +149 -0
  289. lightning_sdk/lightning_cloud/openapi/models/{v1_lightningwork_cluster_driver.py → v1_get_project_artifact_response.py} +33 -14
  290. lightning_sdk/lightning_cloud/openapi/models/v1_get_project_balance_response.py +27 -1
  291. lightning_sdk/lightning_cloud/openapi/models/v1_get_project_storage_metadata_response.py +383 -0
  292. lightning_sdk/lightning_cloud/openapi/models/v1_get_service_execution_status_response.py +175 -0
  293. lightning_sdk/lightning_cloud/openapi/models/v1_get_snowflake_query_response.py +149 -0
  294. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_balance_response.py +27 -1
  295. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_response.py +105 -1
  296. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_storage_breakdown_response.py +279 -0
  297. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_storage_response.py +201 -0
  298. lightning_sdk/lightning_cloud/openapi/models/v1_google_cloud_direct_v1.py +163 -3
  299. lightning_sdk/lightning_cloud/openapi/models/v1_google_cloud_direct_v1_status.py +123 -0
  300. lightning_sdk/lightning_cloud/openapi/models/v1_header.py +175 -0
  301. lightning_sdk/lightning_cloud/openapi/models/{v1_external_kubeconfig.py → v1_health_check_exec.py} +21 -21
  302. lightning_sdk/lightning_cloud/openapi/models/v1_health_check_http_get.py +149 -0
  303. lightning_sdk/lightning_cloud/openapi/models/v1_ids_logger_metrics.py +123 -0
  304. lightning_sdk/lightning_cloud/openapi/models/v1_input.py +175 -0
  305. lightning_sdk/lightning_cloud/openapi/models/v1_interrupt_server_response.py +97 -0
  306. lightning_sdk/lightning_cloud/openapi/models/v1_job.py +697 -0
  307. lightning_sdk/lightning_cloud/openapi/models/v1_job_health_check_config.py +253 -0
  308. lightning_sdk/lightning_cloud/openapi/models/v1_job_log_entry.py +175 -0
  309. lightning_sdk/lightning_cloud/openapi/models/v1_job_logs_page.py +227 -0
  310. lightning_sdk/lightning_cloud/openapi/models/v1_job_logs_response.py +149 -0
  311. lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py +669 -0
  312. lightning_sdk/lightning_cloud/openapi/models/v1_job_timing.py +201 -0
  313. lightning_sdk/lightning_cloud/openapi/models/v1_joinable_organization.py +331 -0
  314. lightning_sdk/lightning_cloud/openapi/models/v1_knowledge_configuration.py +279 -0
  315. lightning_sdk/lightning_cloud/openapi/models/v1_lambda_labs_direct_v1.py +125 -0
  316. lightning_sdk/lightning_cloud/openapi/models/v1_lightning_run.py +27 -1
  317. lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_instance_spec.py +105 -27
  318. lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_instance_status.py +53 -1
  319. lightning_sdk/lightning_cloud/openapi/models/v1_lightningwork_spec.py +27 -27
  320. lightning_sdk/lightning_cloud/openapi/models/v1_lightningwork_status.py +81 -3
  321. lightning_sdk/lightning_cloud/openapi/models/v1_list_affiliate_links_response.py +123 -0
  322. lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_python_versions_response.py +123 -0
  323. lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_sessions_response.py +123 -0
  324. lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_tags_response.py +6 -6
  325. lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_version_publications_response.py +123 -0
  326. lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_versions_response.py +123 -0
  327. lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_availabilities_response.py +123 -0
  328. lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_proxies_response.py +123 -0
  329. lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_events_response.py +123 -0
  330. lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_releases_response.py +123 -0
  331. lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_tags_response.py +123 -0
  332. lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_templates_response.py +175 -0
  333. lightning_sdk/lightning_cloud/openapi/models/v1_list_deployments_response.py +123 -0
  334. lightning_sdk/lightning_cloud/openapi/models/v1_list_experiments_response.py +149 -0
  335. lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_apps_response.py +123 -0
  336. lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_cloud_spaces_response.py +123 -0
  337. lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_datasets_response.py +123 -0
  338. lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_jobs_response.py +123 -0
  339. lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_slurm_jobs_response.py +123 -0
  340. lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_snowflake_response.py +123 -0
  341. lightning_sdk/lightning_cloud/openapi/models/{v1_list_lightningapps_v2_response.py → v1_list_jobs_response.py} +31 -31
  342. lightning_sdk/lightning_cloud/openapi/models/v1_list_joinable_organizations_response.py +123 -0
  343. lightning_sdk/lightning_cloud/openapi/models/v1_list_logger_artifact_response.py +123 -0
  344. lightning_sdk/lightning_cloud/openapi/models/v1_list_metrics_streams_response.py +123 -0
  345. lightning_sdk/lightning_cloud/openapi/models/v1_list_multi_machine_job_events_response.py +123 -0
  346. lightning_sdk/lightning_cloud/openapi/models/v1_list_multi_machine_jobs_response.py +123 -0
  347. lightning_sdk/lightning_cloud/openapi/models/v1_list_new_features_for_user_response.py +123 -0
  348. lightning_sdk/lightning_cloud/openapi/models/v1_list_profiler_captures_response.py +123 -0
  349. lightning_sdk/lightning_cloud/openapi/models/v1_list_project_locked_resources_response.py +123 -0
  350. lightning_sdk/lightning_cloud/openapi/models/v1_list_published_cloud_spaces_response.py +3 -29
  351. lightning_sdk/lightning_cloud/openapi/models/v1_list_published_deployment_templates_response.py +175 -0
  352. lightning_sdk/lightning_cloud/openapi/models/v1_list_service_execution_lightningapp_instances_response.py +175 -0
  353. lightning_sdk/lightning_cloud/openapi/models/v1_list_service_executions_response.py +123 -0
  354. lightning_sdk/lightning_cloud/openapi/models/v1_lit_page.py +27 -1
  355. lightning_sdk/lightning_cloud/openapi/models/v1_lit_registry_project.py +227 -0
  356. lightning_sdk/lightning_cloud/openapi/models/v1_lit_repository.py +279 -0
  357. lightning_sdk/lightning_cloud/openapi/models/v1_locked_resource.py +227 -0
  358. lightning_sdk/lightning_cloud/openapi/models/v1_logger_artifact.py +227 -0
  359. lightning_sdk/lightning_cloud/openapi/models/v1_machines_selector.py +149 -0
  360. lightning_sdk/lightning_cloud/openapi/models/v1_magic_link_login_request.py +81 -3
  361. lightning_sdk/lightning_cloud/openapi/models/v1_magic_link_login_response.py +53 -1
  362. lightning_sdk/lightning_cloud/openapi/models/v1_managed_endpoint.py +175 -19
  363. lightning_sdk/lightning_cloud/openapi/models/v1_managed_model.py +305 -0
  364. lightning_sdk/lightning_cloud/openapi/models/v1_managed_model_abilities.py +175 -0
  365. lightning_sdk/lightning_cloud/openapi/models/v1_membership.py +79 -1
  366. lightning_sdk/lightning_cloud/openapi/models/v1_message.py +138 -8
  367. lightning_sdk/lightning_cloud/openapi/models/v1_message_content.py +6 -6
  368. lightning_sdk/lightning_cloud/openapi/models/v1_message_content_type.py +103 -0
  369. lightning_sdk/lightning_cloud/openapi/models/v1_metadata.py +131 -1
  370. lightning_sdk/lightning_cloud/openapi/models/v1_metric_value.py +175 -0
  371. lightning_sdk/lightning_cloud/openapi/models/v1_metrics.py +175 -0
  372. lightning_sdk/lightning_cloud/openapi/models/v1_metrics_stream.py +799 -0
  373. lightning_sdk/lightning_cloud/openapi/models/v1_metrics_tags.py +201 -0
  374. lightning_sdk/lightning_cloud/openapi/models/v1_metrics_tracker.py +383 -0
  375. lightning_sdk/lightning_cloud/openapi/models/v1_model.py +95 -17
  376. lightning_sdk/lightning_cloud/openapi/models/v1_model_file.py +175 -0
  377. lightning_sdk/lightning_cloud/openapi/models/v1_model_version_archive.py +131 -1
  378. lightning_sdk/lightning_cloud/openapi/models/v1_mount_target.py +201 -0
  379. lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job.py +487 -0
  380. lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_event.py +331 -0
  381. lightning_sdk/lightning_cloud/openapi/models/{get_cluster_health_response_health_status.py → v1_multi_machine_job_event_type.py} +9 -9
  382. lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_fault_tolerance.py +149 -0
  383. lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_fault_tolerance_strategy.py +105 -0
  384. lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_state.py +108 -0
  385. lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_status.py +305 -0
  386. lightning_sdk/lightning_cloud/openapi/models/v1_named_get_logger_metrics.py +123 -0
  387. lightning_sdk/lightning_cloud/openapi/models/v1_new_feature.py +383 -0
  388. lightning_sdk/lightning_cloud/openapi/models/v1_onboarding_event_request.py +175 -0
  389. lightning_sdk/lightning_cloud/openapi/models/v1_onboarding_event_response.py +97 -0
  390. lightning_sdk/lightning_cloud/openapi/models/v1_organization.py +209 -1
  391. lightning_sdk/lightning_cloud/openapi/models/v1_parameterization_spec.py +227 -0
  392. lightning_sdk/lightning_cloud/openapi/models/v1_path_telemetry.py +123 -0
  393. lightning_sdk/lightning_cloud/openapi/models/v1_phase_type.py +104 -0
  394. lightning_sdk/lightning_cloud/openapi/models/v1_profiler_capture.py +357 -0
  395. lightning_sdk/lightning_cloud/openapi/models/v1_profiler_enabled_response.py +123 -0
  396. lightning_sdk/lightning_cloud/openapi/models/v1_project.py +131 -1
  397. lightning_sdk/lightning_cloud/openapi/models/v1_project_membership.py +263 -3
  398. lightning_sdk/lightning_cloud/openapi/models/v1_project_settings.py +29 -3
  399. lightning_sdk/lightning_cloud/openapi/models/v1_project_storage.py +279 -0
  400. lightning_sdk/lightning_cloud/openapi/models/v1_published_cloud_space_response.py +188 -6
  401. lightning_sdk/lightning_cloud/openapi/models/v1_purchase_capacity_block_response.py +175 -0
  402. lightning_sdk/lightning_cloud/openapi/models/v1_query_param.py +175 -0
  403. lightning_sdk/lightning_cloud/openapi/models/v1_query_result.py +123 -0
  404. lightning_sdk/lightning_cloud/openapi/models/v1_query_result_row.py +123 -0
  405. lightning_sdk/lightning_cloud/openapi/models/v1_refresh_path_response.py +97 -0
  406. lightning_sdk/lightning_cloud/openapi/models/v1_regional_load_balancer.py +149 -0
  407. lightning_sdk/lightning_cloud/openapi/models/v1_report_logs_activity_response.py +97 -0
  408. lightning_sdk/lightning_cloud/openapi/models/v1_request_cluster_access_request.py +175 -0
  409. lightning_sdk/lightning_cloud/openapi/models/v1_request_cluster_access_response.py +97 -0
  410. lightning_sdk/lightning_cloud/openapi/models/{v1_cloud_space_tag.py → v1_resource_tag.py} +18 -18
  411. lightning_sdk/lightning_cloud/openapi/models/v1_resource_visibility.py +123 -0
  412. lightning_sdk/lightning_cloud/openapi/models/v1_resources.py +37 -11
  413. lightning_sdk/lightning_cloud/openapi/models/v1_restore_deployment_release_response.py +97 -0
  414. lightning_sdk/lightning_cloud/openapi/models/v1_rolling_update_strategy.py +149 -0
  415. lightning_sdk/lightning_cloud/openapi/models/v1_rule_condition.py +29 -3
  416. lightning_sdk/lightning_cloud/openapi/models/v1_rule_resource.py +11 -0
  417. lightning_sdk/lightning_cloud/openapi/models/v1_s3_folder_data_connection.py +123 -0
  418. lightning_sdk/lightning_cloud/openapi/models/v1_search_job_logs_response.py +149 -0
  419. lightning_sdk/lightning_cloud/openapi/models/v1_search_users_response.py +6 -6
  420. lightning_sdk/lightning_cloud/openapi/models/v1_secret.py +107 -3
  421. lightning_sdk/lightning_cloud/openapi/models/{v1_lightningapp_cluster_driver.py → v1_secret_type.py} +10 -9
  422. lightning_sdk/lightning_cloud/openapi/models/v1_select.py +149 -0
  423. lightning_sdk/lightning_cloud/openapi/models/v1_server_check_in_response.py +97 -0
  424. lightning_sdk/lightning_cloud/openapi/models/{v1_update_cluster_response.py → v1_service_artifact.py} +54 -54
  425. lightning_sdk/lightning_cloud/openapi/models/v1_service_execution.py +383 -0
  426. lightning_sdk/lightning_cloud/openapi/models/v1_should_start_syncing_response.py +123 -0
  427. lightning_sdk/lightning_cloud/openapi/models/v1_signed_url.py +149 -0
  428. lightning_sdk/lightning_cloud/openapi/models/v1_slurm_job.py +131 -1
  429. lightning_sdk/lightning_cloud/openapi/models/v1_slurm_node.py +53 -1
  430. lightning_sdk/lightning_cloud/openapi/models/v1_slurm_v1.py +27 -1
  431. lightning_sdk/lightning_cloud/openapi/models/v1_snowflake_data_connection.py +253 -0
  432. lightning_sdk/lightning_cloud/openapi/models/v1_status_code_telemetry.py +123 -0
  433. lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset.py +253 -0
  434. lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset_type.py +105 -0
  435. lightning_sdk/lightning_cloud/openapi/models/v1_studio_job_app.py +1 -0
  436. lightning_sdk/lightning_cloud/openapi/models/v1_system_info.py +617 -0
  437. lightning_sdk/lightning_cloud/openapi/models/v1_telemetry.py +331 -0
  438. lightning_sdk/lightning_cloud/openapi/models/v1_timestamp_code_telemetry.py +123 -0
  439. lightning_sdk/lightning_cloud/openapi/models/v1_transaction.py +27 -1
  440. lightning_sdk/lightning_cloud/openapi/models/v1_transfer_user_balance_request.py +27 -1
  441. lightning_sdk/lightning_cloud/openapi/models/v1_update_billing_subscription_request.py +53 -1
  442. lightning_sdk/lightning_cloud/openapi/models/v1_update_cluster_accelerators_request.py +149 -0
  443. lightning_sdk/lightning_cloud/openapi/models/v1_update_index_response.py +97 -0
  444. lightning_sdk/lightning_cloud/openapi/models/v1_update_metrics_stream_visibility_response.py +97 -0
  445. lightning_sdk/lightning_cloud/openapi/models/v1_update_model_visibility_response.py +97 -0
  446. lightning_sdk/lightning_cloud/openapi/models/v1_update_shared_metrics_stream_response.py +97 -0
  447. lightning_sdk/lightning_cloud/openapi/models/v1_update_snowflake_query_response.py +97 -0
  448. lightning_sdk/lightning_cloud/openapi/models/v1_update_user_request.py +53 -1
  449. lightning_sdk/lightning_cloud/openapi/models/v1_update_user_viewed_new_features_request.py +123 -0
  450. lightning_sdk/lightning_cloud/openapi/models/v1_update_user_viewed_new_features_response.py +97 -0
  451. lightning_sdk/lightning_cloud/openapi/models/v1_upload_service_execution_artifact_parts_response.py +123 -0
  452. lightning_sdk/lightning_cloud/openapi/models/v1_upload_service_execution_artifact_response.py +149 -0
  453. lightning_sdk/lightning_cloud/openapi/models/v1_upstream_cloud_space.py +97 -19
  454. lightning_sdk/lightning_cloud/openapi/models/v1_upstream_job.py +227 -0
  455. lightning_sdk/lightning_cloud/openapi/models/v1_usage.py +27 -1
  456. lightning_sdk/lightning_cloud/openapi/models/v1_usage_details.py +107 -3
  457. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +1030 -302
  458. lightning_sdk/lightning_cloud/openapi/models/v1_user_requested_compute_config.py +45 -45
  459. lightning_sdk/lightning_cloud/openapi/models/v1_user_requested_flow_compute_config.py +29 -29
  460. lightning_sdk/lightning_cloud/openapi/models/v1_validate_assistant_status_response.py +149 -0
  461. lightning_sdk/lightning_cloud/openapi/models/v1_validate_auto_join_domain_response.py +97 -0
  462. lightning_sdk/lightning_cloud/openapi/models/v1_validate_data_connection_response.py +107 -3
  463. lightning_sdk/lightning_cloud/openapi/models/v1_validate_deployment_image_request.py +149 -0
  464. lightning_sdk/lightning_cloud/openapi/models/v1_validate_deployment_image_response.py +97 -0
  465. lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_endpoint_request.py +175 -0
  466. lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_endpoint_response.py +123 -0
  467. lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_model_response.py +123 -0
  468. lightning_sdk/lightning_cloud/openapi/models/v1_volume.py +175 -0
  469. lightning_sdk/lightning_cloud/openapi/models/v1_vultr_direct_v1.py +125 -0
  470. lightning_sdk/lightning_cloud/openapi/models/validate.py +97 -19
  471. lightning_sdk/lightning_cloud/openapi/models/validateautojoindomain_domain_body.py +123 -0
  472. lightning_sdk/lightning_cloud/openapi/models/version_uploads_body.py +123 -0
  473. lightning_sdk/lightning_cloud/openapi/models/versions_id_body.py +357 -0
  474. lightning_sdk/lightning_cloud/rest_client.py +49 -23
  475. lightning_sdk/lightning_cloud/source_code/logs_socket_api.py +1 -1
  476. lightning_sdk/lightning_cloud/source_code/tar.py +1 -3
  477. lightning_sdk/lightning_cloud/utils/data_connection.py +145 -7
  478. lightning_sdk/machine.py +17 -4
  479. lightning_sdk/mmt/__init__.py +4 -0
  480. lightning_sdk/mmt/base.py +288 -0
  481. lightning_sdk/mmt/mmt.py +282 -0
  482. lightning_sdk/mmt/v1.py +185 -0
  483. lightning_sdk/mmt/v2.py +193 -0
  484. lightning_sdk/models.py +153 -0
  485. lightning_sdk/organization.py +1 -1
  486. lightning_sdk/plugin.py +207 -41
  487. lightning_sdk/services/__init__.py +5 -0
  488. lightning_sdk/services/file_endpoint.py +223 -0
  489. lightning_sdk/services/finetune/__init__.py +35 -0
  490. lightning_sdk/services/utilities.py +111 -0
  491. lightning_sdk/status.py +2 -1
  492. lightning_sdk/studio.py +90 -17
  493. lightning_sdk/teamspace.py +189 -11
  494. lightning_sdk/user.py +1 -1
  495. lightning_sdk/utils/__init__.py +0 -0
  496. lightning_sdk/utils/dynamic.py +61 -0
  497. lightning_sdk/utils/enum.py +116 -0
  498. lightning_sdk/{utils.py → utils/resolve.py} +41 -4
  499. lightning_sdk-0.1.46.dist-info/LICENSE +21 -0
  500. {lightning_sdk-0.1.2.dist-info → lightning_sdk-0.1.46.dist-info}/METADATA +30 -4
  501. lightning_sdk-0.1.46.dist-info/RECORD +858 -0
  502. {lightning_sdk-0.1.2.dist-info → lightning_sdk-0.1.46.dist-info}/WHEEL +1 -1
  503. lightning_sdk/lightning_cloud/openapi/models/app_id_releases_body.py +0 -541
  504. lightning_sdk/lightning_cloud/openapi/models/assistants_id_body.py +0 -487
  505. lightning_sdk/lightning_cloud/openapi/models/id_endpoint_body.py +0 -409
  506. lightning_sdk/lightning_cloud/openapi/models/id_get_body1.py +0 -333
  507. lightning_sdk/lightning_cloud/openapi/models/project_id_appsv2_body.py +0 -201
  508. lightning_sdk/lightning_cloud/openapi/models/v1_aws_cluster_driver_spec.py +0 -1039
  509. lightning_sdk/lightning_cloud/openapi/models/v1_aws_cluster_secondary_region_spec.py +0 -253
  510. lightning_sdk/lightning_cloud/openapi/models/v1_azure_cluster_driver_spec.py +0 -227
  511. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_driver.py +0 -175
  512. lightning_sdk/lightning_cloud/openapi/models/v1_container_resources.py +0 -201
  513. lightning_sdk/lightning_cloud/openapi/models/v1_eks_custer_driver_status.py +0 -387
  514. lightning_sdk/lightning_cloud/openapi/models/v1_instance_type.py +0 -305
  515. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_cluster_driver.py +0 -359
  516. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_cluster_status.py +0 -279
  517. lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_release.py +0 -697
  518. lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_v2.py +0 -331
  519. lightning_sdk-0.1.2.dist-info/RECORD +0 -550
  520. {lightning_sdk-0.1.2.dist-info → lightning_sdk-0.1.46.dist-info}/entry_points.txt +0 -0
  521. {lightning_sdk-0.1.2.dist-info → lightning_sdk-0.1.46.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,223 @@
1
+ import os
2
+ from pathlib import Path
3
+ from time import sleep
4
+ from typing import Any, Dict, Optional
5
+
6
+ import requests
7
+ import urllib3
8
+
9
+ from lightning_sdk.api.utils import _FileUploader
10
+ from lightning_sdk.lightning_cloud.login import Auth
11
+ from lightning_sdk.lightning_cloud.openapi import CommandArgumentCommandArgumentType
12
+ from lightning_sdk.lightning_cloud.rest_client import LightningClient
13
+ from lightning_sdk.services.utilities import _get_cluster, _get_project, _get_service_url
14
+ from lightning_sdk.utils.resolve import _resolve_deprecated_cluster
15
+
16
+ urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
17
+
18
+ _LIGHTNING_SERVICE_EXECUTION_ID_HEADER = "X-Lightning-Service-Execution-Id"
19
+ _AUTHORIZATION_HEADER = "Authorization"
20
+
21
+
22
+ class Client:
23
+ """This class is used to communicate with the File Endpoint."""
24
+
25
+ def __init__(
26
+ self,
27
+ name: str,
28
+ teamspace: Optional[str],
29
+ cloud_account: Optional[str] = None,
30
+ cluster_id: Optional[str] = None, # deprecated in favor of cloud_account
31
+ ) -> None:
32
+ """Constructor of the Client.
33
+
34
+ Args:
35
+ name: The name of the Studio File Endpoint Service.
36
+ teamspace: The name of the teamspace you want to attach the upload data and artifacts to be.
37
+ cloud_account: The name of the cloud account on which to upload the data.
38
+
39
+ """
40
+ cloud_account = _resolve_deprecated_cluster(cloud_account, cluster_id)
41
+
42
+ self._auth = Auth()
43
+
44
+ try:
45
+ self._auth.authenticate()
46
+ except ConnectionError as e:
47
+ raise e
48
+
49
+ self._name = name
50
+ self._teamspace = teamspace
51
+ self._client = LightningClient()
52
+ self._project = _get_project(client=self._client, project_name=teamspace)
53
+ self._cloud_account = _get_cluster(
54
+ client=self._client, project_id=self._project.project_id, cluster_id=cloud_account
55
+ )
56
+ self._file_endpoint = self._client.endpoint_service_get_file_endpoint_by_name(
57
+ project_id=self._project.project_id, name=self._name
58
+ )
59
+
60
+ self.headers = {_AUTHORIZATION_HEADER: f"Bearer {self._auth.api_key}"}
61
+
62
+ self._arguments = []
63
+ for argument in self._file_endpoint.arguments:
64
+ self._arguments.append(Argument(**argument.to_dict()))
65
+
66
+ self.url = _get_service_url(self._file_endpoint.cloudspace_id, self._file_endpoint.id)
67
+
68
+ def run(
69
+ self,
70
+ **kwargs: Dict[str, str],
71
+ ) -> None:
72
+ """The run method executes the file endpoint.
73
+
74
+ Args:
75
+ kwargs: The keyword arguments associated to the service
76
+
77
+ """
78
+ for argument in self._arguments:
79
+ if argument.is_file:
80
+ if argument.name not in kwargs:
81
+ raise ValueError(f"This endpoint expects a file for the argument `{argument.name}`.")
82
+ value = kwargs[argument.name]
83
+ if not os.path.isfile(value):
84
+ raise ValueError(f"This endpoint expects a file for the argument `{argument.name}`.")
85
+ else:
86
+ if argument.name not in kwargs:
87
+ raise ValueError(f"This endpoint expects a value for the argument `{argument.name}`.")
88
+ value = kwargs[argument.name]
89
+ if os.path.isfile(value):
90
+ raise ValueError(f"This endpoint doesn't expect a file for `{argument.name}`.")
91
+
92
+ argument.value = str(Path(value).resolve())
93
+
94
+ missing_names = [v.name for v in self._arguments if v.value is None]
95
+ if missing_names:
96
+ raise ValueError(f"You are missing values for the following arguments: {missing_names}")
97
+
98
+ # Avoid uploading duplicated files
99
+ files_to_upload = {}
100
+ for argument in self._arguments:
101
+ if not argument.should_upload:
102
+ continue
103
+ files_to_upload[argument.value] = argument
104
+
105
+ # TODO: Verify if the file exists in Teampace and avoid uploading if already there.
106
+ for argument in files_to_upload.values():
107
+ _FileUploader(
108
+ client=self._client,
109
+ teamspace_id=self._project.project_id,
110
+ cloud_account=self._cloud_account.cluster_id,
111
+ file_path=argument.value,
112
+ progress_bar=True,
113
+ remote_path=_sanitize_uploads_remote_path(argument.value),
114
+ )()
115
+
116
+ json = {
117
+ "teamspace_id": self._project.project_id,
118
+ "cluster_id": self._cloud_account.cluster_id,
119
+ "input": {},
120
+ }
121
+ for argument in self._arguments:
122
+ json["input"].update(**argument.to_dict())
123
+
124
+ response = requests.post(self.url, json=json, headers=self.headers)
125
+ if response.status_code != 200:
126
+ raise Exception(f"The endpoint isn't reachable. Status code: {response.status_code}")
127
+
128
+ self.headers = {
129
+ **self.headers,
130
+ _LIGHTNING_SERVICE_EXECUTION_ID_HEADER: response.headers[_LIGHTNING_SERVICE_EXECUTION_ID_HEADER],
131
+ }
132
+
133
+ self._check_progress(response.json())
134
+
135
+ def _check_progress(self, data: Dict[str, str]) -> Dict[str, str]:
136
+ """Check the current Studio status."""
137
+ while True:
138
+ url = f"{self.url}?run_id={data['run_id']}"
139
+ response = requests.post(url, headers=self.headers)
140
+
141
+ if response.status_code != 200:
142
+ raise Exception(f"The file endpoint had an error. Status code: {response.status_code}")
143
+
144
+ data = response.json()
145
+
146
+ # Display the progress status to the user.
147
+ print(data)
148
+
149
+ if data["stage"] == "completed":
150
+ break
151
+
152
+ if data["stage"] == "failed":
153
+ # TODO: Add more information on why the execution failed.
154
+ raise RuntimeError("The Studio File Endpoint failed")
155
+
156
+ # Wait until making the next request
157
+ sleep(3)
158
+
159
+ return data
160
+
161
+
162
+ class Argument:
163
+ """A holder for the service argument."""
164
+
165
+ def __init__(self, name: str, type: CommandArgumentCommandArgumentType, **kwargs: Any) -> None: # noqa: A002
166
+ self._name = name
167
+ self._type = type
168
+ self._value = None
169
+ self._kwargs = kwargs
170
+
171
+ @property
172
+ def is_text(self) -> bool:
173
+ """Whether this argument is of type Text."""
174
+ return self._type == CommandArgumentCommandArgumentType.TEXT
175
+
176
+ @property
177
+ def is_file(self) -> bool:
178
+ """Whether this argument is of type File."""
179
+ return self._type == CommandArgumentCommandArgumentType.FILE
180
+
181
+ @property
182
+ def value(self) -> Any:
183
+ """Returns the value."""
184
+ return self._value
185
+
186
+ @value.setter
187
+ def value(self, value: Any) -> None:
188
+ """Store the value."""
189
+ if self.is_file and not os.path.exists(value):
190
+ raise ValueError(f"The argument {self._name} should be a valid file.")
191
+ self._value = value
192
+
193
+ @property
194
+ def name(self) -> str:
195
+ """Returns the name."""
196
+ return self._name
197
+
198
+ def to_dict(self) -> Dict[str, str]:
199
+ """Convert the argument into its OpenAPI dataclass counterpart."""
200
+ if self.is_text:
201
+ return {self._name: str(self._value)}
202
+
203
+ if self.should_upload:
204
+ return {self._name: f"/teamspace/Uploads/{os.path.basename(self._value)}"}
205
+
206
+ return {self._name: self._value}
207
+
208
+ @property
209
+ def should_upload(self) -> bool:
210
+ """Whether the file should be uploaded."""
211
+ if not self.is_file:
212
+ return False
213
+
214
+ value = str(Path(self.value).resolve())
215
+ if value.startswith("/teamspace/"):
216
+ return False
217
+
218
+ return True
219
+
220
+
221
+ def _sanitize_uploads_remote_path(file_path: str) -> str:
222
+ remote_path = os.path.basename(file_path)
223
+ return f"/Uploads/{remote_path}"
@@ -0,0 +1,35 @@
1
+ from typing import Literal
2
+
3
+ from lightning_sdk.services.file_endpoint import Client
4
+
5
+
6
+ class LLMFinetune(Client):
7
+ """The LLM Finetune is the client to the LLM Finetune Service Studio.
8
+
9
+ Learn more: https://lightning.ai/lightning-ai/studios/llm-finetune-service~01h5rahq6gbhw5m4bzyws0at5h.
10
+
11
+ """
12
+
13
+ def __init__(self, teamspace: str) -> None:
14
+ super().__init__(name="lightning-al/llm-finetunes", teamspace=teamspace)
15
+
16
+ def run(
17
+ self,
18
+ data_path: str,
19
+ model: Literal["llama-2-7b", "tiny-llama"] = "tiny-llama",
20
+ mode: Literal["lora", "full"] = "lora",
21
+ epochs: int = 3,
22
+ learning_rate: float = 0.0002,
23
+ micro_batch_size: int = 2,
24
+ global_batch_size: int = 8,
25
+ ) -> None:
26
+ """The run method executes the LLM Finetune Service."""
27
+ super().run(
28
+ data_path=data_path,
29
+ model=model,
30
+ mode=mode,
31
+ epochs=epochs,
32
+ learning_rate=learning_rate,
33
+ micro_batch_size=micro_batch_size,
34
+ global_batch_size=global_batch_size,
35
+ )
@@ -0,0 +1,111 @@
1
+ import contextlib
2
+ import os
3
+ from typing import Optional
4
+
5
+ import requests
6
+ import urllib3
7
+
8
+ from lightning_sdk.api.utils import _get_cloud_url
9
+ from lightning_sdk.lightning_cloud.openapi import V1Membership
10
+ from lightning_sdk.lightning_cloud.rest_client import LightningClient
11
+
12
+ _CHUNK_SIZE = 1024 * 1024
13
+
14
+
15
+ def _get_project(client: LightningClient, project_name: Optional[str] = None) -> V1Membership:
16
+ """Get a project membership for the user from the backend."""
17
+ projects = client.projects_service_list_memberships()
18
+ if len(projects.memberships) == 0:
19
+ raise ValueError("No valid projects found. Please reach out to lightning.ai team to create a project")
20
+
21
+ if project_name is None:
22
+ return projects.memberships[0]
23
+
24
+ matches = []
25
+ for membership in projects.memberships:
26
+ if membership.name == project_name or membership.display_name == project_name:
27
+ matches.append(membership)
28
+
29
+ if len(matches) == 1:
30
+ return matches[0]
31
+
32
+ if len(matches) >= 2:
33
+ raise ValueError(f"We found several teamspaces. Which one do you want to use {[m.name for m in matches]}")
34
+
35
+ raise ValueError("No valid projects found. Please reach out to lightning.ai team to create a project")
36
+
37
+
38
+ def _get_cluster(client: LightningClient, project_id: str, cluster_id: Optional[str] = None) -> V1Membership:
39
+ """Get a project membership for the user from the backend."""
40
+ clusters = client.projects_service_list_project_cluster_bindings(project_id=project_id)
41
+ if cluster_id:
42
+ for cluster in clusters.clusters:
43
+ if cluster.cluster_id == cluster_id:
44
+ return cluster
45
+ raise ValueError(
46
+ f"No valid cluster found with the provided {cluster_id}."
47
+ f"Found {[c.cluster_id for c in clusters.clusters]}."
48
+ )
49
+
50
+ clusters = sorted(clusters.clusters, key=lambda x: x.created_at)
51
+ if len(clusters):
52
+ return clusters[0]
53
+ return None
54
+
55
+
56
+ def _get_service_url(cloud_space_id: str, file_endpoint_id: str) -> str:
57
+ url = _get_cloud_url()
58
+ domain = _get_domain(url)
59
+ protocol = _get_protocol(url)
60
+ return f"{protocol}//{file_endpoint_id}-{cloud_space_id}.cloudspaces.{domain}"
61
+
62
+
63
+ def _get_domain(url: str) -> str:
64
+ base_url = url.split("//")[1].split("/")[0]
65
+ if "localhost:9800" in base_url:
66
+ return "local.litng.ai:8118"
67
+ if "lightning.ai" in base_url and "localhost:8888" in base_url:
68
+ return "litng.ai"
69
+ return base_url
70
+
71
+
72
+ def _get_protocol(url: str) -> str:
73
+ return url.split("//")[0]
74
+
75
+
76
+ def download_file(filepath: str, cache_dir: str = "/cache") -> str:
77
+ """Download the file passed to the service execution by the user."""
78
+ service_id = os.getenv("LIGHTNING_SERVICE_EXECUTION_ID")
79
+
80
+ if service_id is None:
81
+ raise RuntimeError("The ServiceId is required. Please reach out to lightning.ai team.")
82
+
83
+ # Note: Make the function idempotent
84
+ prefix = os.path.join(cache_dir, service_id)
85
+ if not filepath.startswith(prefix):
86
+ saved_filepath = filepath
87
+ if saved_filepath.startswith("/"):
88
+ saved_filepath = saved_filepath[1:]
89
+ saved_filepath = os.path.join(prefix, saved_filepath)
90
+ else:
91
+ saved_filepath = filepath
92
+ filepath = filepath.replace(prefix, "")
93
+
94
+ if os.path.exists(saved_filepath):
95
+ return saved_filepath
96
+
97
+ client = LightningClient(retry=False)
98
+ download_artifacts = client.endpoint_service_download_service_execution_artifact(
99
+ project_id=os.getenv("LIGHTNING_CLOUD_PROJECT_ID"), id=service_id, page_token=None, filepath=filepath
100
+ )
101
+ artifact = download_artifacts.artifacts[0]
102
+
103
+ os.makedirs(os.path.dirname(saved_filepath), exist_ok=True)
104
+
105
+ urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
106
+ with contextlib.suppress(ConnectionError):
107
+ request = requests.get(artifact.url, stream=True, verify=False)
108
+ with open(saved_filepath, "wb") as fp:
109
+ for chunk in request.iter_content(chunk_size=_CHUNK_SIZE):
110
+ fp.write(chunk) # type: ignore
111
+ return saved_filepath
lightning_sdk/status.py CHANGED
@@ -9,4 +9,5 @@ class Status(Enum):
9
9
  Running = 3
10
10
  Stopping = 4
11
11
  Stopped = 5
12
- Failed = 6
12
+ Completed = 6
13
+ Failed = 7
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
- cluster: the name of the cluster, the studio should be created on.
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
- cluster: Optional[str] = None,
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._cluster = cluster
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(name, self._teamspace.id, cluster=self._cluster)
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
- def start(self, machine: Machine = Machine.CPU) -> None:
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 {curr_machine}."
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(self._studio.id, self._teamspace.id, 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
- cluster_id=self._studio.cluster_id,
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
- cluster_id=self._studio.cluster_id,
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
- cluster_id=self._studio.cluster_id,
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."""