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
@@ -1,38 +1,37 @@
1
1
  import concurrent.futures
2
2
  import json
3
3
  import os
4
+ from pathlib import Path
4
5
  from typing import Dict, List, Optional
5
6
 
6
7
  from simple_term_menu import TerminalMenu
7
8
  from tqdm import tqdm
8
9
 
9
- from lightning_sdk.api import OrgApi, TeamspaceApi
10
10
  from lightning_sdk.api.utils import _get_cloud_url
11
11
  from lightning_sdk.cli.exceptions import StudioCliError
12
+ from lightning_sdk.cli.studios_menu import _StudiosMenu
13
+ from lightning_sdk.models import upload_model
12
14
  from lightning_sdk.studio import Studio
13
- from lightning_sdk.user import User
14
- from lightning_sdk.utils import _get_authed_user, skip_studio_init
15
+ from lightning_sdk.utils.resolve import _get_authed_user, skip_studio_init
15
16
 
16
17
 
17
- class _Uploads:
18
+ class _Uploads(_StudiosMenu):
19
+ """Upload files and folders to Lightning AI."""
20
+
18
21
  _studio_upload_status_path = "~/.lightning/studios/uploads"
19
22
 
20
- def upload(self, path: str, studio: Optional[str] = None, remote_path: Optional[str] = None) -> None:
21
- """Upload a file or folder to a studio.
23
+ def model(self, name: str, path: str = ".", cloud_account: Optional[str] = None) -> None:
24
+ """Upload a Model.
22
25
 
23
26
  Args:
24
- path: The path to the file or directory you want to upload
25
- studio: The name of the studio to upload to. Will show a menu for selection if not specified.
26
- If provided, should be in the form of <TEAMSPACE-NAME>/<STUDIO-NAME>
27
- remote_path: The path where the uploaded file should appear on your Studio.
28
- Has to be within your Studio's home directory and will be relative to that.
29
- If not specified, will use the file or directory name of the path you want to upload
30
- and place it in your home directory.
31
-
27
+ name: The name of the Model you want to upload.
28
+ This should have the format <ORGANIZATION-NAME>/<TEAMSPACE-NAME>/<MODEL-NAME>.
29
+ path: The path to the file or directory you want to upload. Defaults to the current directory.
30
+ cloud_account: The name of the cloud account to store the Model in.
32
31
  """
33
- if remote_path is None:
34
- remote_path = os.path.basename(path)
32
+ upload_model(name, path, cloud_account=cloud_account)
35
33
 
34
+ def _resolve_studio(self, studio: Optional[str]) -> Studio:
36
35
  user = _get_authed_user()
37
36
  possible_studios = self._get_possible_studios(user)
38
37
 
@@ -52,19 +51,38 @@ class _Uploads:
52
51
  "Please contact Lightning AI directly to resolve this issue."
53
52
  ) from e
54
53
 
55
- print(f"Uploading to {selected_studio['teamspace']}/{selected_studio['name']}")
56
- pairs = {}
57
- if os.path.isdir(path):
58
- for root, _, files in os.walk(path):
59
- rel_root = os.path.relpath(root, path)
60
- for f in files:
61
- pairs[os.path.join(root, f)] = os.path.join(remote_path, rel_root, f)
54
+ with skip_studio_init():
55
+ return Studio(**selected_studio)
62
56
 
63
- else:
64
- pairs[path] = remote_path
57
+ def folder(self, path: str, studio: Optional[str] = None, remote_path: Optional[str] = None) -> None:
58
+ """Upload a file or folder to a Studio.
65
59
 
66
- with skip_studio_init():
67
- selected_studio = Studio(**selected_studio)
60
+ Args:
61
+ path: The path to the file or directory you want to upload
62
+ studio: The name of the studio to upload to. Will show a menu for selection if not specified.
63
+ If provided, should be in the form of <TEAMSPACE-NAME>/<STUDIO-NAME>
64
+ remote_path: The path where the uploaded file should appear on your Studio.
65
+ Has to be within your Studio's home directory and will be relative to that.
66
+ If not specified, will use the file or directory name of the path you want to upload
67
+ and place it in your home directory.
68
+ """
69
+ if remote_path is None:
70
+ remote_path = os.path.basename(path)
71
+
72
+ if not Path(path).exists():
73
+ raise FileNotFoundError(f"The provided path does not exist: {path}.")
74
+ if not Path(path).is_dir():
75
+ raise StudioCliError(f"The provided path is not a folder: {path}. Use `lightning upload file` instead.")
76
+
77
+ selected_studio = self._resolve_studio(studio)
78
+
79
+ print(f"Uploading to {selected_studio.teamspace.name}/{selected_studio.name}")
80
+
81
+ pairs = {}
82
+ for root, _, files in os.walk(path):
83
+ rel_root = os.path.relpath(root, path)
84
+ for f in files:
85
+ pairs[os.path.join(root, f)] = os.path.join(remote_path, rel_root, f)
68
86
 
69
87
  upload_state = self._resolve_previous_upload_state(selected_studio, remote_path, pairs)
70
88
 
@@ -91,19 +109,42 @@ class _Uploads:
91
109
  )
92
110
  print(f"See your files at {studio_url}")
93
111
 
94
- def _get_studio_from_interactive_menu(self, possible_studios: List[Dict[str, str]]) -> Dict[str, str]:
95
- terminal_menu = self._prepare_terminal_menu_all_studios(possible_studios)
96
- terminal_menu.show()
97
- return possible_studios[terminal_menu.chosen_menu_index]
112
+ def file(self, path: str, studio: Optional[str] = None, remote_path: Optional[str] = None) -> None:
113
+ """Upload a file to a Studio.
114
+
115
+ Args:
116
+ path: The path to the file you want to upload
117
+ studio: The name of the studio to upload to. Will show a menu for selection if not specified.
118
+ If provided, should be in the form of <TEAMSPACE-NAME>/<STUDIO-NAME>
119
+ remote_path: The path where the uploaded file should appear on your Studio.
120
+ Has to be within your Studio's home directory and will be relative to that.
121
+ If not specified, will use the name of the file you want to upload
122
+ and place it in your home directory.
123
+ """
124
+ if remote_path is None:
125
+ remote_path = os.path.basename(path)
126
+
127
+ if Path(path).is_dir():
128
+ raise StudioCliError(f"The provided path is a folder: {path}. Use `lightning upload folder` instead.")
129
+ if not Path(path).exists():
130
+ raise FileNotFoundError(f"The provided path does not exist: {path}.")
131
+
132
+ selected_studio = self._resolve_studio(studio)
98
133
 
99
- def _get_studio_from_name(self, studio: str, possible_studios: List[Dict[str, str]]) -> Dict[str, str]:
100
- teamspace, name = studio.split("/", maxsplit=1)
101
- for st in possible_studios:
102
- if st["teamspace"] == teamspace and name == st["name"]:
103
- return st
134
+ print(f"Uploading to {selected_studio.teamspace.name}/{selected_studio.name}")
104
135
 
105
- print("Could not find Studio {studio}, please select it from the list:")
106
- return self._get_studio_from_interactive_menu(possible_studios)
136
+ self._single_file_upload(selected_studio, path, remote_path, True)
137
+
138
+ studio_url = (
139
+ _get_cloud_url().replace(":443", "")
140
+ + "/"
141
+ + selected_studio.owner.name
142
+ + "/"
143
+ + selected_studio.teamspace.name
144
+ + "/studios/"
145
+ + selected_studio.name
146
+ )
147
+ print(f"See your file at {studio_url}")
107
148
 
108
149
  def _start_parallel_upload(
109
150
  self, executor: concurrent.futures.ThreadPoolExecutor, studio: Studio, upload_state: Dict[str, str]
@@ -125,57 +166,6 @@ class _Uploads:
125
166
  studio.upload_file(local_path, remote_path, progress_bar)
126
167
  return local_path
127
168
 
128
- def _prepare_terminal_menu_all_studios(
129
- self, possible_studios: List[Dict[str, str]], title: Optional[str] = None
130
- ) -> TerminalMenu:
131
- if title is None:
132
- title = "Please select a Studio of the following studios:"
133
-
134
- return TerminalMenu(
135
- [f"{s['teamspace']}/{s['name']}" for s in possible_studios], title=title, clear_menu_on_exit=True
136
- )
137
-
138
- def _get_possible_studios(self, user: User) -> List[Dict[str, str]]:
139
- teamspace_api = TeamspaceApi()
140
- org_api = OrgApi()
141
- user_api = user._user_api
142
- possible_studios = []
143
-
144
- user_api._get_organizations_for_authed_user()
145
- memberships = user_api._get_all_teamspace_memberships(user_id=user.id)
146
-
147
- teamspaces = {}
148
- # get all teamspace memberships
149
- for membership in memberships:
150
- teamspace_id = membership.project_id
151
-
152
- # get all studios for teamspace
153
- all_studios = user._user_api._get_cloudspaces_for_user(user.id, teamspace_id)
154
-
155
- for st in all_studios:
156
- # populate teamspace info if necessary
157
- if teamspace_id not in teamspaces:
158
- ts = teamspace_api._get_teamspace_by_id(teamspace_id)
159
- ts_name = ts.name
160
-
161
- # get organization if necessary
162
- if ts.owner_type == "organization":
163
- org_name = org_api._get_org_by_id(ts.owner_id).name
164
- user_name = None
165
- else:
166
- org_name = None
167
-
168
- # don't do a request if not necessary
169
- if ts.owner_id == user.id:
170
- user_name = user.name
171
- else:
172
- user_name = user_api._get_user_by_id(ts.owner_id).username
173
-
174
- teamspaces[teamspace_id] = {"user": user_name, "org": org_name, "teamspace": ts_name}
175
- possible_studios.append({"name": st.name, **teamspaces[teamspace_id]})
176
-
177
- return possible_studios
178
-
179
169
  def _dump_current_upload_state(self, studio: Studio, remote_path: str, state_dict: Dict[str, str]) -> None:
180
170
  """Dumps the current upload state so that we can safely resume later."""
181
171
  curr_path = os.path.abspath(
@@ -1,3 +1,31 @@
1
1
  import os
2
+ from uuid import uuid4
2
3
 
3
- _LIGHTNING_DEBUG = bool(int(os.getenv("LIGHTNING_DEBUG", "0")))
4
+ _LIGHTNING_DEBUG = {
5
+ "": False,
6
+ "0": False,
7
+ "false": False,
8
+ "no": False,
9
+ "1": True,
10
+ "true": True,
11
+ "yes": True,
12
+ }.get(os.getenv("LIGHTNING_DEBUG", "").lower(), False)
13
+
14
+
15
+ class Store:
16
+ def __init__(self) -> None:
17
+ self._d = {}
18
+ # This is needed to ensure the ids are the same within created threads and processes.
19
+ self._list = [str(uuid4().hex) for _ in range(500)]
20
+
21
+ def __getitem__(self, key: str) -> str:
22
+ """Get item."""
23
+ if key in self._d:
24
+ return self._d[key]
25
+
26
+ value = self._list.pop(0) if self._list else str(uuid4().hex)
27
+ self._d[key] = value
28
+ return value
29
+
30
+
31
+ __GLOBAL_LIGHTNING_UNIQUE_IDS_STORE__ = Store()
@@ -0,0 +1,25 @@
1
+ from lightning_sdk.api.deployment_api import (
2
+ AutoScaleConfig,
3
+ BasicAuth,
4
+ Env,
5
+ ExecHealthCheck,
6
+ HttpHealthCheck,
7
+ ReleaseStrategy,
8
+ RollingUpdateReleaseStrategy,
9
+ Secret,
10
+ TokenAuth,
11
+ )
12
+ from lightning_sdk.deployment.deployment import Deployment
13
+
14
+ __all__ = [
15
+ "AutoScaleConfig",
16
+ "BasicAuth",
17
+ "Env",
18
+ "ExecHealthCheck",
19
+ "HttpHealthCheck",
20
+ "ReleaseStrategy",
21
+ "RollingUpdateReleaseStrategy",
22
+ "Secret",
23
+ "TokenAuth",
24
+ "Deployment",
25
+ ]
@@ -0,0 +1,389 @@
1
+ import os
2
+ from typing import Any, Dict, List, Optional, Union
3
+
4
+ import requests
5
+
6
+ from lightning_sdk.api import UserApi
7
+ from lightning_sdk.api.deployment_api import (
8
+ Auth,
9
+ AutoScaleConfig,
10
+ BasicAuth,
11
+ DeploymentApi,
12
+ Env,
13
+ ExecHealthCheck,
14
+ HttpHealthCheck,
15
+ ReleaseStrategy,
16
+ Secret,
17
+ TokenAuth,
18
+ restore_auth,
19
+ restore_autoscale,
20
+ restore_env,
21
+ restore_health_check,
22
+ restore_release_strategy,
23
+ to_autoscaling,
24
+ to_endpoint,
25
+ to_spec,
26
+ to_strategy,
27
+ )
28
+ from lightning_sdk.lightning_cloud import login
29
+ from lightning_sdk.lightning_cloud.openapi import V1Deployment
30
+ from lightning_sdk.machine import Machine
31
+ from lightning_sdk.organization import Organization
32
+ from lightning_sdk.services.utilities import _get_cluster
33
+ from lightning_sdk.teamspace import Teamspace
34
+ from lightning_sdk.user import User
35
+ from lightning_sdk.utils.resolve import _resolve_deprecated_cluster, _resolve_org, _resolve_teamspace, _resolve_user
36
+
37
+
38
+ class Deployment:
39
+ """The Lightning AI Deployment.
40
+
41
+ Allows to fully control a deployment, including retrieving the status, making new release
42
+ and switching machine types, etc..
43
+
44
+ Args:
45
+ name: The name of the deployment.
46
+ teamspace: The teamspace in which you want to deploy.
47
+ org: The name of the organization owning the :param`teamspace` in case it is owned by an org
48
+ user: The name of the user owning the :param`teamspace` in case it is owned directly by a user instead of an org
49
+
50
+ Note:
51
+ Since a teamspace can either be owned by an org or by a user directly,
52
+ only one of the arguments can be provided.
53
+
54
+ """
55
+
56
+ def __init__(
57
+ self,
58
+ name: str, # Only the name is required in case a deployment already exist.
59
+ teamspace: Optional[Union[str, Teamspace]] = None,
60
+ org: Optional[Union[str, Organization]] = None,
61
+ user: Optional[Union[str, User]] = None,
62
+ ) -> None:
63
+ self._request_session = None
64
+
65
+ self._auth = login.Auth()
66
+
67
+ try:
68
+ self._auth.authenticate()
69
+ if user is None:
70
+ self._user = User(name=UserApi()._get_user_by_id(self._auth.user_id).username)
71
+ except ConnectionError as e:
72
+ raise e
73
+
74
+ self._name = name
75
+ self._org = _resolve_org(org)
76
+ self._user = _resolve_user(user)
77
+ self._teamspace = _resolve_teamspace(
78
+ teamspace=teamspace, org=self._org, user=self._user if self._org is None else None
79
+ )
80
+ if self._teamspace is None:
81
+ raise ValueError("You need to pass a teamspace or an org for your deployment.")
82
+
83
+ self._deployment_api = DeploymentApi()
84
+ self._cloud_account = _get_cluster(client=self._deployment_api._client, project_id=self._teamspace.id)
85
+ self._is_created = False
86
+ deployment = self._deployment_api.get_deployment_by_name(name, self._teamspace.id)
87
+ if deployment:
88
+ self._is_created = True
89
+ self._deployment = deployment
90
+
91
+ def start(
92
+ self,
93
+ machine: Optional[Machine] = None,
94
+ environment: Optional[str] = None,
95
+ autoscale: Optional[AutoScaleConfig] = None,
96
+ ports: Optional[List[float]] = None,
97
+ release_strategy: Optional[ReleaseStrategy] = None,
98
+ entrypoint: Optional[str] = None,
99
+ command: Optional[str] = None,
100
+ env: Optional[List[Union[Env, Secret]]] = None,
101
+ spot: Optional[bool] = None,
102
+ replicas: Optional[int] = None,
103
+ health_check: Optional[Union[HttpHealthCheck, ExecHealthCheck]] = None,
104
+ auth: Optional[Union[BasicAuth, TokenAuth]] = None,
105
+ cloud_account: Optional[str] = None,
106
+ custom_domain: Optional[str] = None,
107
+ cluster: Optional[str] = None, # deprecated in favor of cloud_account
108
+ ) -> None:
109
+ """The Lightning AI Deployment.
110
+
111
+ This method creates the first release of the deployment.
112
+ If a release already exists, it would raise a RuntimeError.
113
+
114
+ Args:
115
+ name: The name of the deployment.
116
+ machine: The machine used by the deployment replicas.
117
+ autoscale: The list of the metrics to autoscale on.
118
+ ports: The ports to reach your replica services.
119
+ environment: The environement used by the deployment. Currentely, only docker images.
120
+ release_strategy: The release strategy to use when changing core deployment specs.
121
+ entrypoint: The docker container entrypoint.
122
+ command: The docker container command.
123
+ env: The environements variables or secrets to use.
124
+ spot: Wether to use spot instances for the replicas.
125
+ replicas: The number of replicas to deploy with.
126
+ health_check: The health check config to know whether your service is ready to receive traffic.
127
+ auth: The auth config to protect your services. Only Basic and Token supported.
128
+ cloud_account: The name of the cloud account, the studio should be created on.
129
+ Doesn't matter when the studio already exists.
130
+ custom_domain: Whether your service would be referenced under a custom doamin.
131
+
132
+ Note:
133
+ Since a teamspace can either be owned by an org or by a user directly,
134
+ only one of the arguments can be provided.
135
+
136
+ """
137
+ if self._is_created:
138
+ raise RuntimeError("This deployment has already been started.")
139
+
140
+ cloud_account = _resolve_deprecated_cluster(cloud_account, cluster)
141
+
142
+ if cloud_account is None and self._cloud_account is not None:
143
+ print(f"No cloud account was provided, defaulting to {self._cloud_account.cluster_id}")
144
+ cloud_account = os.getenv("LIGHTNING_CLUSTER_ID") or self._cloud_account.cluster_id
145
+
146
+ self._deployment = self._deployment_api.create_deployment(
147
+ V1Deployment(
148
+ autoscaling=to_autoscaling(autoscale, replicas),
149
+ endpoint=to_endpoint(ports, auth, custom_domain),
150
+ name=self._name,
151
+ project_id=self._teamspace.id,
152
+ replicas=replicas,
153
+ spec=to_spec(
154
+ cloud_account=cloud_account,
155
+ command=command,
156
+ entrypoint=entrypoint,
157
+ env=env,
158
+ environment=environment,
159
+ spot=spot,
160
+ machine=machine,
161
+ health_check=health_check,
162
+ ),
163
+ strategy=to_strategy(release_strategy),
164
+ )
165
+ )
166
+ self._is_created = True
167
+
168
+ def update(
169
+ self,
170
+ # Changing those arguments create a new release
171
+ machine: Optional[Machine] = None,
172
+ environment: Optional[str] = None,
173
+ entrypoint: Optional[str] = None,
174
+ command: Optional[str] = None,
175
+ env: Optional[List[Union[Env, Secret]]] = None,
176
+ spot: Optional[bool] = None,
177
+ cloud_account: Optional[str] = None,
178
+ health_check: Optional[Union[HttpHealthCheck, ExecHealthCheck]] = None,
179
+ # Changing those arguments don't create a new release
180
+ min_replicas: Optional[int] = None,
181
+ max_replicas: Optional[int] = None,
182
+ name: Optional[str] = None,
183
+ ports: Optional[List[float]] = None,
184
+ release_strategy: Optional[ReleaseStrategy] = None,
185
+ replicas: Optional[int] = None,
186
+ auth: Optional[Union[BasicAuth, TokenAuth]] = None,
187
+ custom_domain: Optional[str] = None,
188
+ cluster: Optional[str] = None, # deprecated in favor of cloud_account
189
+ ) -> None:
190
+ cloud_account = _resolve_deprecated_cluster(cloud_account, cluster)
191
+
192
+ self._deployment = self._deployment_api.update_deployment(
193
+ self._deployment,
194
+ name=name or self._name,
195
+ spot=spot,
196
+ replicas=replicas,
197
+ min_replicas=min_replicas,
198
+ max_replicas=max_replicas,
199
+ cloud_account=cloud_account,
200
+ machine=machine,
201
+ environment=environment,
202
+ entrypoint=entrypoint,
203
+ command=command,
204
+ ports=ports,
205
+ custom_domain=custom_domain,
206
+ auth=auth,
207
+ env=env,
208
+ health_check=health_check,
209
+ release_strategy=release_strategy,
210
+ )
211
+
212
+ def stop(self) -> None:
213
+ """All the deployment replicas will be stopped and all their traffic blocked."""
214
+ self._deployment = self._deployment_api.stop(self._deployment)
215
+
216
+ @property
217
+ def replicas(self) -> Optional[int]:
218
+ """The default number of replicas the release starts with."""
219
+ if self._deployment:
220
+ self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
221
+ return self._deployment.replicas
222
+ return None
223
+
224
+ @property
225
+ def min_replicas(self) -> Optional[int]:
226
+ """The minimum number of replicas."""
227
+ if self._deployment:
228
+ self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
229
+ return self._deployment.autoscaling.min_replicas
230
+ return None
231
+
232
+ @property
233
+ def max_replicas(self) -> Optional[int]:
234
+ """The maximum number of replicas."""
235
+ if self._deployment:
236
+ self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
237
+ return self._deployment.autoscaling.max_replicas
238
+ return None
239
+
240
+ @property
241
+ def ports(self) -> Optional[int]:
242
+ """The exposed ports on which you can reach your deployment."""
243
+ if self._deployment:
244
+ self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
245
+ return [int(p) for p in self._deployment.endpoint.ports]
246
+ return None
247
+
248
+ @property
249
+ def release_strategy(self) -> Optional[ReleaseStrategy]:
250
+ """The release strategy of the deployment."""
251
+ if self._deployment:
252
+ self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
253
+ return restore_release_strategy(self._deployment.strategy)
254
+ return None
255
+
256
+ @property
257
+ def readiness_probe(self) -> Optional[Union[HttpHealthCheck, ExecHealthCheck]]:
258
+ """The health check to validate the replicas are ready to receive traffic."""
259
+ if self._deployment:
260
+ self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
261
+ return restore_health_check(self._deployment.spec.readiness_probe)
262
+ return None
263
+
264
+ @property
265
+ def auth(self) -> Optional[Auth]:
266
+ """The authentification configuration of the deployment."""
267
+ if self._deployment:
268
+ self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
269
+ return restore_auth(self._deployment.endpoint.auth)
270
+ return None
271
+
272
+ @property
273
+ def autoscale(self) -> Optional[AutoScaleConfig]:
274
+ """The autoscaling configuration of the deployment."""
275
+ if self._deployment:
276
+ self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
277
+ return restore_autoscale(self._deployment.autoscaling)
278
+ return None
279
+
280
+ @property
281
+ def env(self) -> Optional[AutoScaleConfig]:
282
+ """The env configuration of the deployment."""
283
+ if self._deployment:
284
+ self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
285
+ return restore_env(self._deployment.spec.env)
286
+ return None
287
+
288
+ @property
289
+ def urls(self) -> Optional[List[str]]:
290
+ """The urls to reach the deployment."""
291
+ if self._deployment:
292
+ self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
293
+ return self._deployment.status.urls
294
+ return None
295
+
296
+ @property
297
+ def pending_replicas(self) -> Optional[List[str]]:
298
+ """The number of pending replicas."""
299
+ if self._deployment:
300
+ self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
301
+ return self._deployment.status.pending_replicas
302
+ return None
303
+
304
+ @property
305
+ def failing_replicas(self) -> Optional[List[str]]:
306
+ """The number of failing replicas."""
307
+ if self._deployment:
308
+ self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
309
+ return self._deployment.status.failing_replicas
310
+ return None
311
+
312
+ @property
313
+ def deleting_replicas(self) -> Optional[List[str]]:
314
+ """The number of deleting replicas."""
315
+ if self._deployment:
316
+ self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
317
+ return self._deployment.status.deleting_replicas
318
+ return None
319
+
320
+ @property
321
+ def cloud_account(self) -> Optional[str]:
322
+ """The cloud_account of the replicas."""
323
+ if self._deployment:
324
+ self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
325
+ return self._deployment.spec.cluster_id
326
+ return None
327
+
328
+ @property
329
+ def user(self) -> Optional[User]:
330
+ """The teamspace of the deployment."""
331
+ return self._user
332
+
333
+ @property
334
+ def teamspace(self) -> Optional[Teamspace]:
335
+ """The teamspace of the deployment."""
336
+ return self._teamspace
337
+
338
+ @property
339
+ def is_started(self) -> bool:
340
+ return self._is_created
341
+
342
+ @property
343
+ def _session(self) -> Any:
344
+ if self._request_session is None:
345
+ self._request_session = requests.Session()
346
+ self._request_session.headers.update(**self._get_auth_headers())
347
+ return self._request_session
348
+
349
+ def _get_auth_headers(self) -> Dict:
350
+ if self._deployment:
351
+ self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
352
+
353
+ if self._deployment.endpoint.auth.user_api_key:
354
+ return {"Authorization": f"Bearer {self._auth.api_key}"}
355
+
356
+ # TODO: Add support for all auth
357
+ return {}
358
+
359
+ def _get_url(self, port: Optional[int] = None) -> Any:
360
+ urls = self.urls
361
+ if urls is None:
362
+ return None
363
+
364
+ if port is None:
365
+ return urls[0]
366
+
367
+ return None
368
+
369
+ def _prepare_url(self, path: str = "", port: Optional[int] = None) -> str:
370
+ url = self._get_url(port)
371
+ if url is None:
372
+ raise ValueError("The url wasn't properly defined")
373
+
374
+ if path.startswith("/"):
375
+ path = path[1:]
376
+
377
+ return f"{url}/{path}"
378
+
379
+ def get(self, path: str = "", port: Optional[int] = None, **kwargs: Any) -> Any:
380
+ return self._session.get(self._prepare_url(path, port), verify=False, **kwargs)
381
+
382
+ def post(self, path: str = "", port: Optional[int] = None, **kwargs: Any) -> Any:
383
+ return self._session.post(self._prepare_url(path, port), verify=False, **kwargs)
384
+
385
+ def put(self, path: str = "", port: Optional[int] = None, **kwargs: Any) -> Any:
386
+ return self._session.put(self._prepare_url(path, port), verify=False, **kwargs)
387
+
388
+ def delete(self, path: str = "", port: Optional[int] = None, **kwargs: Any) -> Any:
389
+ return self._session.delete(self._prepare_url(path, port), verify=False, **kwargs)