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