lightning-sdk 0.1.49__py3-none-any.whl → 2025.11.5__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 (669) hide show
  1. lightning_sdk/__init__.py +19 -9
  2. lightning_sdk/__version__.py +3 -0
  3. lightning_sdk/agents.py +2 -1
  4. lightning_sdk/ai_hub.py +43 -38
  5. lightning_sdk/api/__init__.py +2 -0
  6. lightning_sdk/api/ai_hub_api.py +49 -6
  7. lightning_sdk/api/base_studio_api.py +90 -0
  8. lightning_sdk/api/cloud_account_api.py +225 -0
  9. lightning_sdk/api/deployment_api.py +133 -27
  10. lightning_sdk/api/job_api.py +147 -34
  11. lightning_sdk/api/license_api.py +37 -0
  12. lightning_sdk/api/lit_container_api.py +231 -19
  13. lightning_sdk/api/llm_api.py +306 -0
  14. lightning_sdk/api/mmt_api.py +112 -28
  15. lightning_sdk/api/pipeline_api.py +120 -0
  16. lightning_sdk/api/studio_api.py +440 -89
  17. lightning_sdk/api/teamspace_api.py +269 -31
  18. lightning_sdk/api/user_api.py +56 -2
  19. lightning_sdk/api/utils.py +185 -52
  20. lightning_sdk/base_studio.py +123 -0
  21. lightning_sdk/cli/__init__.py +1 -0
  22. lightning_sdk/cli/base_studio/__init__.py +10 -0
  23. lightning_sdk/cli/base_studio/list.py +43 -0
  24. lightning_sdk/cli/config/__init__.py +14 -0
  25. lightning_sdk/cli/config/get.py +57 -0
  26. lightning_sdk/cli/config/set.py +92 -0
  27. lightning_sdk/cli/config/show.py +9 -0
  28. lightning_sdk/cli/entrypoint.py +98 -56
  29. lightning_sdk/cli/groups.py +56 -0
  30. lightning_sdk/cli/job/__init__.py +7 -0
  31. lightning_sdk/cli/legacy/__init__.py +0 -0
  32. lightning_sdk/cli/legacy/ai_hub.py +65 -0
  33. lightning_sdk/cli/legacy/clusters_menu.py +49 -0
  34. lightning_sdk/cli/legacy/configure.py +129 -0
  35. lightning_sdk/cli/legacy/connect.py +34 -0
  36. lightning_sdk/cli/legacy/create.py +115 -0
  37. lightning_sdk/cli/legacy/delete.py +131 -0
  38. lightning_sdk/cli/legacy/deploy/__init__.py +0 -0
  39. lightning_sdk/cli/legacy/deploy/_auth.py +196 -0
  40. lightning_sdk/cli/legacy/deploy/devbox.py +163 -0
  41. lightning_sdk/cli/legacy/deploy/serve.py +452 -0
  42. lightning_sdk/cli/legacy/docker_cli.py +22 -0
  43. lightning_sdk/cli/legacy/download.py +322 -0
  44. lightning_sdk/cli/legacy/entrypoint.py +110 -0
  45. lightning_sdk/cli/legacy/generate.py +52 -0
  46. lightning_sdk/cli/legacy/inspection.py +45 -0
  47. lightning_sdk/cli/{job_and_mmt_action.py → legacy/job_and_mmt_action.py} +6 -6
  48. lightning_sdk/cli/{jobs_menu.py → legacy/jobs_menu.py} +3 -2
  49. lightning_sdk/cli/legacy/list.py +326 -0
  50. lightning_sdk/cli/{mmts_menu.py → legacy/mmts_menu.py} +3 -2
  51. lightning_sdk/cli/legacy/open.py +81 -0
  52. lightning_sdk/cli/legacy/run.py +443 -0
  53. lightning_sdk/cli/legacy/start.py +107 -0
  54. lightning_sdk/cli/legacy/stop.py +107 -0
  55. lightning_sdk/cli/{studios_menu.py → legacy/studios_menu.py} +24 -1
  56. lightning_sdk/cli/legacy/switch.py +63 -0
  57. lightning_sdk/cli/{teamspace_menu.py → legacy/teamspace_menu.py} +12 -3
  58. lightning_sdk/cli/legacy/upload.py +382 -0
  59. lightning_sdk/cli/license/__init__.py +14 -0
  60. lightning_sdk/cli/license/get.py +15 -0
  61. lightning_sdk/cli/license/list.py +45 -0
  62. lightning_sdk/cli/license/set.py +13 -0
  63. lightning_sdk/cli/mmt/__init__.py +7 -0
  64. lightning_sdk/cli/studio/__init__.py +24 -0
  65. lightning_sdk/cli/studio/connect.py +139 -0
  66. lightning_sdk/cli/studio/create.py +96 -0
  67. lightning_sdk/cli/studio/delete.py +49 -0
  68. lightning_sdk/cli/studio/list.py +85 -0
  69. lightning_sdk/cli/studio/ssh.py +64 -0
  70. lightning_sdk/cli/studio/start.py +115 -0
  71. lightning_sdk/cli/studio/stop.py +45 -0
  72. lightning_sdk/cli/studio/switch.py +66 -0
  73. lightning_sdk/cli/utils/__init__.py +7 -0
  74. lightning_sdk/cli/utils/cloud_account_map.py +10 -0
  75. lightning_sdk/cli/utils/coloring.py +60 -0
  76. lightning_sdk/cli/utils/get_base_studio.py +24 -0
  77. lightning_sdk/cli/utils/handle_machine_and_gpus_args.py +69 -0
  78. lightning_sdk/cli/utils/logging.py +122 -0
  79. lightning_sdk/cli/utils/owner_selection.py +110 -0
  80. lightning_sdk/cli/utils/resolve.py +28 -0
  81. lightning_sdk/cli/utils/richt_print.py +35 -0
  82. lightning_sdk/cli/utils/save_to_config.py +27 -0
  83. lightning_sdk/cli/utils/ssh_connection.py +59 -0
  84. lightning_sdk/cli/utils/studio_selection.py +113 -0
  85. lightning_sdk/cli/utils/teamspace_selection.py +125 -0
  86. lightning_sdk/cli/vm/__init__.py +20 -0
  87. lightning_sdk/cli/vm/create.py +33 -0
  88. lightning_sdk/cli/vm/delete.py +25 -0
  89. lightning_sdk/cli/vm/list.py +30 -0
  90. lightning_sdk/cli/vm/ssh.py +31 -0
  91. lightning_sdk/cli/vm/start.py +60 -0
  92. lightning_sdk/cli/vm/stop.py +25 -0
  93. lightning_sdk/cli/vm/switch.py +38 -0
  94. lightning_sdk/constants.py +1 -0
  95. lightning_sdk/deployment/__init__.py +4 -0
  96. lightning_sdk/deployment/deployment.py +208 -28
  97. lightning_sdk/helpers.py +73 -34
  98. lightning_sdk/job/base.py +112 -12
  99. lightning_sdk/job/job.py +73 -44
  100. lightning_sdk/job/v1.py +28 -35
  101. lightning_sdk/job/v2.py +54 -17
  102. lightning_sdk/job/work.py +7 -3
  103. lightning_sdk/lightning_cloud/login.py +325 -18
  104. lightning_sdk/lightning_cloud/openapi/__init__.py +346 -26
  105. lightning_sdk/lightning_cloud/openapi/api/__init__.py +14 -0
  106. lightning_sdk/lightning_cloud/openapi/api/assistants_service_api.py +1801 -384
  107. lightning_sdk/lightning_cloud/openapi/api/auth_service_api.py +376 -0
  108. lightning_sdk/lightning_cloud/openapi/api/billing_service_api.py +414 -2
  109. lightning_sdk/lightning_cloud/openapi/api/blog_posts_service_api.py +533 -0
  110. lightning_sdk/lightning_cloud/openapi/api/cloud_space_environment_template_service_api.py +638 -0
  111. lightning_sdk/lightning_cloud/openapi/api/cloud_space_service_api.py +2563 -866
  112. lightning_sdk/lightning_cloud/openapi/api/cloudy_service_api.py +327 -0
  113. lightning_sdk/lightning_cloud/openapi/api/cluster_service_api.py +1720 -347
  114. lightning_sdk/lightning_cloud/openapi/api/data_connection_service_api.py +210 -4
  115. lightning_sdk/lightning_cloud/openapi/api/endpoint_service_api.py +126 -2119
  116. lightning_sdk/lightning_cloud/openapi/api/file_system_service_api.py +283 -0
  117. lightning_sdk/lightning_cloud/openapi/api/git_credentials_service_api.py +497 -0
  118. lightning_sdk/lightning_cloud/openapi/api/incidents_service_api.py +1058 -0
  119. lightning_sdk/lightning_cloud/openapi/api/jobs_service_api.py +2326 -492
  120. lightning_sdk/lightning_cloud/openapi/api/k8_s_cluster_service_api.py +2273 -0
  121. lightning_sdk/lightning_cloud/openapi/api/lit_dataset_service_api.py +1973 -0
  122. lightning_sdk/lightning_cloud/openapi/api/lit_logger_service_api.py +17 -5
  123. lightning_sdk/lightning_cloud/openapi/api/lit_registry_service_api.py +473 -5
  124. lightning_sdk/lightning_cloud/openapi/api/markets_service_api.py +145 -0
  125. lightning_sdk/lightning_cloud/openapi/api/models_store_api.py +24 -24
  126. lightning_sdk/lightning_cloud/openapi/api/organizations_service_api.py +105 -0
  127. lightning_sdk/lightning_cloud/openapi/api/pipeline_templates_service_api.py +339 -0
  128. lightning_sdk/lightning_cloud/openapi/api/pipelines_service_api.py +795 -0
  129. lightning_sdk/lightning_cloud/openapi/api/product_license_service_api.py +525 -0
  130. lightning_sdk/lightning_cloud/openapi/api/projects_service_api.py +106 -5
  131. lightning_sdk/lightning_cloud/openapi/api/schedules_service_api.py +924 -0
  132. lightning_sdk/lightning_cloud/openapi/api/sdk_command_history_service_api.py +141 -0
  133. lightning_sdk/lightning_cloud/openapi/api/slurm_jobs_user_service_api.py +202 -0
  134. lightning_sdk/lightning_cloud/openapi/api/storage_service_api.py +1508 -251
  135. lightning_sdk/lightning_cloud/openapi/api/user_service_api.py +121 -97
  136. lightning_sdk/lightning_cloud/openapi/api/volume_service_api.py +258 -0
  137. lightning_sdk/lightning_cloud/openapi/configuration.py +4 -20
  138. lightning_sdk/lightning_cloud/openapi/models/__init__.py +332 -26
  139. lightning_sdk/lightning_cloud/openapi/models/agentmanagedendpoints_id_body.py +27 -1
  140. lightning_sdk/lightning_cloud/openapi/models/agents_id_body.py +79 -1
  141. lightning_sdk/lightning_cloud/openapi/models/alertingevents_id_body.py +409 -0
  142. lightning_sdk/lightning_cloud/openapi/models/alerts_config_billing.py +175 -0
  143. lightning_sdk/lightning_cloud/openapi/models/alerts_config_studios.py +149 -0
  144. lightning_sdk/lightning_cloud/openapi/models/assistant_id_conversations_body.py +303 -17
  145. lightning_sdk/lightning_cloud/openapi/models/blogposts_id_body.py +305 -0
  146. lightning_sdk/lightning_cloud/openapi/models/cloudspace_id_systemmetrics_body.py +149 -0
  147. lightning_sdk/lightning_cloud/openapi/models/cloudspace_id_visibility_body.py +149 -0
  148. lightning_sdk/lightning_cloud/openapi/models/cloudspaces_id_body.py +53 -1
  149. lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityblock_body.py +15 -15
  150. lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityreservations_body.py +81 -3
  151. lightning_sdk/lightning_cloud/openapi/models/cluster_id_kubernetestemplates_body.py +201 -0
  152. lightning_sdk/lightning_cloud/openapi/models/cluster_id_metrics_body.py +305 -0
  153. lightning_sdk/lightning_cloud/openapi/models/cluster_id_slurmusers_body.py +201 -0
  154. lightning_sdk/lightning_cloud/openapi/models/cluster_id_usagerestrictions_body.py +201 -0
  155. lightning_sdk/lightning_cloud/openapi/models/conversations_id_body1.py +123 -0
  156. lightning_sdk/lightning_cloud/openapi/models/create.py +105 -1
  157. lightning_sdk/lightning_cloud/openapi/models/create_deployment_request_defines_a_spec_for_the_job_that_allows_for_autoscaling_jobs.py +131 -1
  158. lightning_sdk/lightning_cloud/openapi/models/create_machine_request_represents_the_request_to_create_a_machine.py +461 -0
  159. lightning_sdk/lightning_cloud/openapi/models/credits_autoreplenish_body.py +175 -0
  160. lightning_sdk/lightning_cloud/openapi/models/credits_autoreplenish_body1.py +175 -0
  161. lightning_sdk/lightning_cloud/openapi/models/dataset_id_versions_body.py +149 -0
  162. lightning_sdk/lightning_cloud/openapi/models/dataset_id_visibility_body.py +149 -0
  163. lightning_sdk/lightning_cloud/openapi/models/deployment_id_alertingpolicies_body.py +357 -0
  164. lightning_sdk/lightning_cloud/openapi/models/deployment_id_alertingpolicies_body1.py +331 -0
  165. lightning_sdk/lightning_cloud/openapi/models/deployments_id_body.py +315 -3
  166. lightning_sdk/lightning_cloud/openapi/models/endpoints_id_body.py +27 -1
  167. lightning_sdk/lightning_cloud/openapi/models/externalv1_cloud_space_instance_status.py +199 -69
  168. lightning_sdk/lightning_cloud/openapi/models/externalv1_cluster.py +27 -1
  169. lightning_sdk/lightning_cloud/openapi/models/externalv1_user_status.py +79 -1
  170. lightning_sdk/lightning_cloud/openapi/models/id_codeconfig_body.py +1 -53
  171. lightning_sdk/lightning_cloud/openapi/models/id_contactowner_body.py +149 -0
  172. lightning_sdk/lightning_cloud/openapi/models/id_fork_body1.py +27 -1
  173. lightning_sdk/lightning_cloud/openapi/models/id_render_body.py +123 -0
  174. lightning_sdk/lightning_cloud/openapi/models/id_reportrestarttimings_body.py +123 -0
  175. lightning_sdk/lightning_cloud/openapi/models/id_sleepconfig_body.py +175 -0
  176. lightning_sdk/lightning_cloud/openapi/models/id_transfer_body.py +175 -0
  177. lightning_sdk/lightning_cloud/openapi/models/id_visibility_body1.py +123 -0
  178. lightning_sdk/lightning_cloud/openapi/models/id_visibility_body2.py +149 -0
  179. lightning_sdk/lightning_cloud/openapi/models/incident_id_messages_body.py +123 -0
  180. lightning_sdk/lightning_cloud/openapi/models/incidents_id_body.py +279 -0
  181. lightning_sdk/lightning_cloud/openapi/models/{v1_list_service_executions_response.py → job_id_reportroutingtelemetry_body.py} +23 -23
  182. lightning_sdk/lightning_cloud/openapi/models/kubernetestemplates_id_body.py +201 -0
  183. lightning_sdk/lightning_cloud/openapi/models/license_key_validate_body.py +123 -0
  184. lightning_sdk/lightning_cloud/openapi/models/litdatasets_dataset_id_body.py +149 -0
  185. lightning_sdk/lightning_cloud/openapi/models/litregistry_lit_repo_name_body.py +123 -0
  186. lightning_sdk/lightning_cloud/openapi/models/message_id_actions_body.py +201 -0
  187. lightning_sdk/lightning_cloud/openapi/models/messages_id_body.py +123 -0
  188. lightning_sdk/lightning_cloud/openapi/models/messages_message_id_body.py +123 -0
  189. lightning_sdk/lightning_cloud/openapi/models/metricsstream_create_body.py +79 -1
  190. lightning_sdk/lightning_cloud/openapi/models/metricsstream_id_body.py +27 -1
  191. lightning_sdk/lightning_cloud/openapi/models/model_id_versions_body.py +27 -1
  192. lightning_sdk/lightning_cloud/openapi/models/model_id_visibility_body.py +27 -1
  193. lightning_sdk/lightning_cloud/openapi/models/models_id_body.py +123 -0
  194. lightning_sdk/lightning_cloud/openapi/models/models_model_id_body.py +109 -31
  195. lightning_sdk/lightning_cloud/openapi/models/models_model_id_body1.py +149 -0
  196. lightning_sdk/lightning_cloud/openapi/models/org_id_memberships_body.py +27 -1
  197. lightning_sdk/lightning_cloud/openapi/models/orgs_id_body.py +627 -3
  198. lightning_sdk/lightning_cloud/openapi/models/pipelines_id_body.py +539 -0
  199. lightning_sdk/lightning_cloud/openapi/models/pipelines_id_body1.py +123 -0
  200. lightning_sdk/lightning_cloud/openapi/models/pipelinetemplates_id_body.py +331 -0
  201. lightning_sdk/lightning_cloud/openapi/models/project_id_agents_body.py +27 -1
  202. lightning_sdk/lightning_cloud/openapi/models/project_id_cloudspaces_body.py +131 -1
  203. lightning_sdk/lightning_cloud/openapi/models/project_id_litdatasets_body.py +227 -0
  204. lightning_sdk/lightning_cloud/openapi/models/project_id_litregistry_body.py +2 -0
  205. lightning_sdk/lightning_cloud/openapi/models/project_id_pipelines_body.py +253 -0
  206. lightning_sdk/lightning_cloud/openapi/models/project_id_schedules_body.py +331 -0
  207. lightning_sdk/lightning_cloud/openapi/models/project_id_storage_body.py +27 -1
  208. lightning_sdk/lightning_cloud/openapi/models/project_id_storagetransfers_body.py +175 -0
  209. lightning_sdk/lightning_cloud/openapi/models/project_tab_management_messages.py +123 -0
  210. lightning_sdk/lightning_cloud/openapi/models/projects_id_body.py +523 -3
  211. lightning_sdk/lightning_cloud/openapi/models/{service_artifact_artifact_kind.py → protobuf_null_value.py} +7 -9
  212. lightning_sdk/lightning_cloud/openapi/models/schedules_id_body.py +513 -0
  213. lightning_sdk/lightning_cloud/openapi/models/server_id_alerts_body.py +201 -0
  214. lightning_sdk/lightning_cloud/openapi/models/setup.py +149 -0
  215. lightning_sdk/lightning_cloud/openapi/models/slurm_jobs_body.py +93 -15
  216. lightning_sdk/lightning_cloud/openapi/models/storage_complete_body.py +41 -15
  217. lightning_sdk/lightning_cloud/openapi/models/storagetransfers_validate_body.py +149 -0
  218. lightning_sdk/lightning_cloud/openapi/models/update.py +233 -129
  219. lightning_sdk/lightning_cloud/openapi/models/update1.py +383 -0
  220. lightning_sdk/lightning_cloud/openapi/models/upload_id_complete_body1.py +149 -0
  221. lightning_sdk/lightning_cloud/openapi/models/upload_id_parts_body1.py +149 -0
  222. lightning_sdk/lightning_cloud/openapi/models/uploads_upload_id_body.py +1 -27
  223. lightning_sdk/lightning_cloud/openapi/models/uploads_upload_id_body1.py +201 -0
  224. lightning_sdk/lightning_cloud/openapi/models/usagerestrictions_id_body.py +201 -0
  225. lightning_sdk/lightning_cloud/openapi/models/user_id_affiliatelinks_body.py +107 -3
  226. lightning_sdk/lightning_cloud/openapi/models/user_id_upgradetrigger_body.py +201 -0
  227. lightning_sdk/lightning_cloud/openapi/models/user_user_id_body.py +201 -0
  228. lightning_sdk/lightning_cloud/openapi/models/v1_abort_storage_transfer_response.py +97 -0
  229. lightning_sdk/lightning_cloud/openapi/models/v1_agent_job.py +188 -6
  230. lightning_sdk/lightning_cloud/openapi/models/v1_aggregated_pod_metrics.py +799 -0
  231. lightning_sdk/lightning_cloud/openapi/models/v1_ai_pod_v1.py +175 -0
  232. lightning_sdk/lightning_cloud/openapi/models/v1_alert_method.py +102 -0
  233. lightning_sdk/lightning_cloud/openapi/models/v1_alerts_config.py +149 -0
  234. lightning_sdk/lightning_cloud/openapi/models/v1_artifact.py +27 -1
  235. lightning_sdk/lightning_cloud/openapi/models/v1_assistant.py +79 -1
  236. lightning_sdk/lightning_cloud/openapi/models/v1_assistant_model_status.py +6 -0
  237. lightning_sdk/lightning_cloud/openapi/models/v1_assistant_session_daily_aggregated.py +383 -0
  238. lightning_sdk/lightning_cloud/openapi/models/v1_author.py +201 -0
  239. lightning_sdk/lightning_cloud/openapi/models/v1_aws_direct_v1.py +53 -1
  240. lightning_sdk/lightning_cloud/openapi/models/v1_billing_subscription.py +27 -1
  241. lightning_sdk/lightning_cloud/openapi/models/v1_billing_tier.py +1 -0
  242. lightning_sdk/lightning_cloud/openapi/models/v1_blog_post.py +435 -0
  243. lightning_sdk/lightning_cloud/openapi/models/v1_cancel_running_cloud_space_instance_transfer_response.py +97 -0
  244. lightning_sdk/lightning_cloud/openapi/models/v1_capacity_block_offering.py +27 -1
  245. lightning_sdk/lightning_cloud/openapi/models/v1_check_cluster_name_availability_request.py +123 -0
  246. lightning_sdk/lightning_cloud/openapi/models/v1_check_cluster_name_availability_response.py +123 -0
  247. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_provider.py +117 -0
  248. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space.py +313 -1
  249. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_artifact_event.py +149 -0
  250. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_artifact_event_type.py +103 -0
  251. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_cold_start_metrics.py +669 -0
  252. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_cold_start_metrics_stats.py +357 -0
  253. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_config.py +149 -0
  254. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_template.py +409 -0
  255. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_template_config.py +331 -0
  256. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_type.py +105 -0
  257. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_session.py +29 -3
  258. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_source_type.py +103 -0
  259. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_specialized_view.py +105 -0
  260. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_state.py +1 -0
  261. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_transfer_metadata.py +331 -0
  262. lightning_sdk/lightning_cloud/openapi/models/v1_cloudflare_v1.py +227 -0
  263. lightning_sdk/lightning_cloud/openapi/models/v1_cloudy_expert.py +279 -0
  264. lightning_sdk/lightning_cloud/openapi/models/v1_cloudy_settings.py +227 -0
  265. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_accelerator.py +445 -3
  266. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_capacity_reservation.py +211 -3
  267. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_deletion_options.py +27 -1
  268. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_metrics.py +1527 -0
  269. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_security_options.py +209 -1
  270. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_spec.py +521 -1
  271. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_status.py +27 -1
  272. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_tagging_options.py +55 -3
  273. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_type.py +2 -0
  274. lightning_sdk/lightning_cloud/openapi/models/{v1_upload_service_execution_artifact_response.py → v1_cluster_upload.py} +34 -34
  275. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_usage_restriction.py +227 -0
  276. lightning_sdk/lightning_cloud/openapi/models/v1_complete_lit_dataset_multi_part_upload_response.py +97 -0
  277. lightning_sdk/lightning_cloud/openapi/models/v1_complete_lit_dataset_upload_response.py +97 -0
  278. lightning_sdk/lightning_cloud/openapi/models/v1_complete_running_cloud_space_instance_transfer_response.py +97 -0
  279. lightning_sdk/lightning_cloud/openapi/models/{id_complete_body.py → v1_complete_upload_temporary_artifact_request.py} +29 -29
  280. lightning_sdk/lightning_cloud/openapi/models/v1_contact_assistant_owner_reason.py +102 -0
  281. lightning_sdk/lightning_cloud/openapi/models/v1_contact_assistant_owner_response.py +97 -0
  282. lightning_sdk/lightning_cloud/openapi/models/v1_container_metrics.py +461 -0
  283. lightning_sdk/lightning_cloud/openapi/models/v1_conversation.py +53 -1
  284. lightning_sdk/lightning_cloud/openapi/models/v1_conversation_response_chunk.py +107 -3
  285. lightning_sdk/lightning_cloud/openapi/models/v1_create_billing_upgrade_trigger_record_response.py +97 -0
  286. lightning_sdk/lightning_cloud/openapi/models/v1_create_blog_post_request.py +305 -0
  287. lightning_sdk/lightning_cloud/openapi/models/v1_create_checkout_session_request.py +27 -1
  288. lightning_sdk/lightning_cloud/openapi/models/v1_create_cloud_space_environment_template_request.py +409 -0
  289. lightning_sdk/lightning_cloud/openapi/models/v1_create_cluster_capacity_reservation_response.py +27 -1
  290. lightning_sdk/lightning_cloud/openapi/models/v1_create_deployment_request.py +539 -0
  291. lightning_sdk/lightning_cloud/openapi/models/v1_create_deployment_template_request.py +27 -1
  292. lightning_sdk/lightning_cloud/openapi/models/v1_create_git_credentials_request.py +175 -0
  293. lightning_sdk/lightning_cloud/openapi/models/v1_create_incident_request.py +305 -0
  294. lightning_sdk/lightning_cloud/openapi/models/v1_create_job_request.py +201 -0
  295. lightning_sdk/lightning_cloud/openapi/models/v1_create_license_request.py +175 -0
  296. lightning_sdk/lightning_cloud/openapi/models/v1_create_lit_dataset_multi_part_upload_response.py +123 -0
  297. lightning_sdk/lightning_cloud/openapi/models/v1_create_machine_response.py +123 -0
  298. lightning_sdk/lightning_cloud/openapi/models/v1_create_managed_endpoint_response.py +149 -0
  299. lightning_sdk/lightning_cloud/openapi/models/v1_create_model_metrics_response.py +97 -0
  300. lightning_sdk/lightning_cloud/openapi/models/v1_create_multi_machine_job_request.py +253 -0
  301. lightning_sdk/lightning_cloud/openapi/models/v1_create_organization_request.py +105 -1
  302. lightning_sdk/lightning_cloud/openapi/models/v1_create_pipeline_template_request.py +383 -0
  303. lightning_sdk/lightning_cloud/openapi/models/v1_create_project_request.py +209 -1
  304. lightning_sdk/lightning_cloud/openapi/models/v1_create_sdk_command_history_request.py +253 -0
  305. lightning_sdk/lightning_cloud/openapi/models/v1_create_sdk_command_history_response.py +97 -0
  306. lightning_sdk/lightning_cloud/openapi/models/v1_create_server_alert_response.py +97 -0
  307. lightning_sdk/lightning_cloud/openapi/models/v1_create_subscription_checkout_session_request.py +55 -3
  308. lightning_sdk/lightning_cloud/openapi/models/v1_daily_model_metrics.py +149 -0
  309. lightning_sdk/lightning_cloud/openapi/models/v1_daily_usage.py +81 -3
  310. lightning_sdk/lightning_cloud/openapi/models/v1_data_connection.py +261 -1
  311. lightning_sdk/lightning_cloud/openapi/models/v1_data_connection_tier.py +103 -0
  312. lightning_sdk/lightning_cloud/openapi/models/v1_delete_blog_post_response.py +123 -0
  313. lightning_sdk/lightning_cloud/openapi/models/v1_delete_cloud_space_environment_template_response.py +97 -0
  314. lightning_sdk/lightning_cloud/openapi/models/v1_delete_cluster_usage_restriction_response.py +97 -0
  315. lightning_sdk/lightning_cloud/openapi/models/v1_delete_deployment_alerting_policy_response.py +175 -0
  316. lightning_sdk/lightning_cloud/openapi/models/v1_delete_git_credentials_response.py +97 -0
  317. lightning_sdk/lightning_cloud/openapi/models/v1_delete_incident_message_response.py +97 -0
  318. lightning_sdk/lightning_cloud/openapi/models/v1_delete_incident_response.py +97 -0
  319. lightning_sdk/lightning_cloud/openapi/models/v1_delete_kubernetes_template_response.py +97 -0
  320. lightning_sdk/lightning_cloud/openapi/models/v1_delete_license_response.py +97 -0
  321. lightning_sdk/lightning_cloud/openapi/models/v1_delete_lit_dataset_response.py +97 -0
  322. lightning_sdk/lightning_cloud/openapi/models/v1_delete_lit_dataset_version_response.py +97 -0
  323. lightning_sdk/lightning_cloud/openapi/models/v1_delete_lit_registry_repository_image_artifact_version_by_digest_response.py +97 -0
  324. lightning_sdk/lightning_cloud/openapi/models/v1_delete_machine_response.py +97 -0
  325. lightning_sdk/lightning_cloud/openapi/models/{v1_delete_file_endpoint_response.py → v1_delete_pipeline_response.py} +25 -25
  326. lightning_sdk/lightning_cloud/openapi/models/v1_delete_schedule_response.py +175 -0
  327. lightning_sdk/lightning_cloud/openapi/models/v1_deployment.py +315 -3
  328. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_event.py +487 -0
  329. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy.py +409 -0
  330. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy_frequency.py +105 -0
  331. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy_operation.py +105 -0
  332. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy_severity.py +106 -0
  333. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy_type.py +112 -0
  334. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_recipients.py +175 -0
  335. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_api.py +79 -1
  336. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_details.py +175 -0
  337. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_state.py +4 -2
  338. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_status.py +47 -21
  339. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template.py +53 -1
  340. lightning_sdk/lightning_cloud/openapi/models/v1_endpoint.py +27 -1
  341. lightning_sdk/lightning_cloud/openapi/models/v1_external_cluster.py +253 -0
  342. lightning_sdk/lightning_cloud/openapi/models/v1_external_cluster_spec.py +931 -0
  343. lightning_sdk/lightning_cloud/openapi/models/v1_external_search_user.py +53 -1
  344. lightning_sdk/lightning_cloud/openapi/models/v1_filestore_data_connection.py +253 -0
  345. lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_job.py +53 -1
  346. lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_metric.py +201 -0
  347. lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_metrics.py +227 -0
  348. lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_mmt.py +227 -0
  349. lightning_sdk/lightning_cloud/openapi/models/v1_find_capacity_block_offering_response.py +29 -3
  350. lightning_sdk/lightning_cloud/openapi/models/{id_uploads_body1.py → v1_firewall_rule.py} +53 -53
  351. lightning_sdk/lightning_cloud/openapi/models/v1_function_call.py +149 -0
  352. lightning_sdk/lightning_cloud/openapi/models/v1_function_tool.py +175 -0
  353. lightning_sdk/lightning_cloud/openapi/models/{v1_list_file_endpoints_response.py → v1_gcp_data_connection_setup.py} +23 -23
  354. lightning_sdk/lightning_cloud/openapi/models/v1_gcp_direct_vpc.py +149 -0
  355. lightning_sdk/lightning_cloud/openapi/models/v1_ge_list_deployment_routing_telemetry_response.py +123 -0
  356. lightning_sdk/lightning_cloud/openapi/models/v1_get_artifacts_page_response.py +29 -3
  357. lightning_sdk/lightning_cloud/openapi/models/v1_get_assistant_session_daily_aggregated_response.py +201 -0
  358. lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_cold_start_metrics_stats_response.py +123 -0
  359. lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_instance_open_ports_response.py +123 -0
  360. lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_instance_system_metrics_aggregate_response.py +123 -0
  361. lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_required_balance_status_response.py +149 -0
  362. lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_size_response.py +79 -1
  363. lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_transfer_estimate_response.py +149 -0
  364. lightning_sdk/lightning_cloud/openapi/models/v1_get_cluster_accelerator_demand_response.py +123 -0
  365. lightning_sdk/lightning_cloud/openapi/models/v1_get_cluster_health_response.py +149 -0
  366. lightning_sdk/lightning_cloud/openapi/models/v1_get_deployment_routing_telemetry_content_response.py +123 -0
  367. lightning_sdk/lightning_cloud/openapi/models/v1_get_job_stats_response.py +105 -1
  368. lightning_sdk/lightning_cloud/openapi/models/v1_get_latest_model_metrics_response.py +123 -0
  369. lightning_sdk/lightning_cloud/openapi/models/{v1_upload_service_execution_artifact_parts_response.py → v1_get_lit_dataset_file_upload_urls_response.py} +16 -16
  370. lightning_sdk/lightning_cloud/openapi/models/v1_get_lit_dataset_files_url_response.py +149 -0
  371. lightning_sdk/lightning_cloud/openapi/models/v1_get_machine_response.py +123 -0
  372. lightning_sdk/lightning_cloud/openapi/models/v1_get_market_pricing_response.py +201 -0
  373. lightning_sdk/lightning_cloud/openapi/models/v1_get_model_metrics_response.py +123 -0
  374. lightning_sdk/lightning_cloud/openapi/models/v1_get_organization_storage_metadata_response.py +487 -0
  375. lightning_sdk/lightning_cloud/openapi/models/v1_get_project_balance_response.py +1 -27
  376. lightning_sdk/lightning_cloud/openapi/models/v1_get_project_storage_metadata_response.py +263 -3
  377. lightning_sdk/lightning_cloud/openapi/models/v1_get_temp_bucket_credentials_response.py +201 -0
  378. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_response.py +235 -1
  379. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_storage_breakdown_response.py +105 -1
  380. lightning_sdk/lightning_cloud/openapi/models/v1_get_volume_response.py +123 -0
  381. lightning_sdk/lightning_cloud/openapi/models/v1_git_credentials.py +227 -0
  382. lightning_sdk/lightning_cloud/openapi/models/v1_google_cloud_direct_v1.py +185 -3
  383. lightning_sdk/lightning_cloud/openapi/models/v1_group_node_metrics.py +1215 -0
  384. lightning_sdk/lightning_cloud/openapi/models/v1_group_pod_metrics.py +1241 -0
  385. lightning_sdk/lightning_cloud/openapi/models/v1_guest_login_request.py +177 -0
  386. lightning_sdk/lightning_cloud/openapi/models/v1_guest_login_response.py +149 -0
  387. lightning_sdk/lightning_cloud/openapi/models/{v1_service_artifact.py → v1_guest_user.py} +60 -60
  388. lightning_sdk/lightning_cloud/openapi/models/v1_incident.py +565 -0
  389. lightning_sdk/lightning_cloud/openapi/models/v1_incident_detail.py +149 -0
  390. lightning_sdk/lightning_cloud/openapi/models/v1_incident_event.py +591 -0
  391. lightning_sdk/lightning_cloud/openapi/models/v1_incident_message.py +253 -0
  392. lightning_sdk/lightning_cloud/openapi/models/v1_incident_severity.py +105 -0
  393. lightning_sdk/lightning_cloud/openapi/models/v1_incident_type.py +108 -0
  394. lightning_sdk/lightning_cloud/openapi/models/v1_instance_overprovisioning_spec.py +95 -41
  395. lightning_sdk/lightning_cloud/openapi/models/v1_job.py +237 -3
  396. lightning_sdk/lightning_cloud/openapi/models/v1_job_artifacts_type.py +103 -0
  397. lightning_sdk/lightning_cloud/openapi/models/v1_job_resource.py +279 -0
  398. lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py +209 -1
  399. lightning_sdk/lightning_cloud/openapi/models/v1_job_timing.py +27 -1
  400. lightning_sdk/lightning_cloud/openapi/models/v1_job_type.py +109 -0
  401. lightning_sdk/lightning_cloud/openapi/models/v1_k8s_incident_indexes.py +149 -0
  402. lightning_sdk/lightning_cloud/openapi/models/v1_kai_scheduler_queue_metrics.py +627 -0
  403. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_aws_config.py +279 -0
  404. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_direct_settings_v1.py +253 -0
  405. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_direct_v1.py +357 -0
  406. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_direct_v1_status.py +149 -0
  407. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_template.py +357 -0
  408. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_template_property.py +227 -0
  409. lightning_sdk/lightning_cloud/openapi/models/v1_lambda_labs_direct_v1.py +67 -17
  410. lightning_sdk/lightning_cloud/openapi/models/v1_license.py +227 -0
  411. lightning_sdk/lightning_cloud/openapi/models/v1_lightning_elastic_cluster_v1.py +97 -0
  412. lightning_sdk/lightning_cloud/openapi/models/v1_lightning_run.py +53 -1
  413. lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_instance_artifact.py +27 -1
  414. lightning_sdk/lightning_cloud/openapi/models/v1_like_status.py +104 -0
  415. lightning_sdk/lightning_cloud/openapi/models/v1_list_aggregated_pod_metrics_response.py +123 -0
  416. lightning_sdk/lightning_cloud/openapi/models/{v1_download_service_execution_artifact_response.py → v1_list_blog_posts_response.py} +41 -41
  417. lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_cold_start_metrics_response.py +123 -0
  418. lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_environment_templates_response.py +123 -0
  419. lightning_sdk/lightning_cloud/openapi/models/v1_list_cloudy_experts_response.py +123 -0
  420. lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_metric_timestamps_response.py +123 -0
  421. lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_metrics_response.py +123 -0
  422. lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_namespace_metrics_response.py +123 -0
  423. lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_namespace_user_metrics_response.py +123 -0
  424. lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_usage_restrictions_response.py +123 -0
  425. lightning_sdk/lightning_cloud/openapi/models/v1_list_clusters_response.py +6 -6
  426. lightning_sdk/lightning_cloud/openapi/models/v1_list_container_metrics_response.py +123 -0
  427. lightning_sdk/lightning_cloud/openapi/models/v1_list_conversation_message_actions_response.py +123 -0
  428. lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_alerting_events_response.py +123 -0
  429. lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_alerting_policies_response.py +175 -0
  430. lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_metrics_response.py +123 -0
  431. lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_mm_ts_response.py +123 -0
  432. lightning_sdk/lightning_cloud/openapi/models/v1_list_git_credentials_response.py +123 -0
  433. lightning_sdk/lightning_cloud/openapi/models/v1_list_group_pod_metrics_response.py +123 -0
  434. lightning_sdk/lightning_cloud/openapi/models/v1_list_incident_events_response.py +123 -0
  435. lightning_sdk/lightning_cloud/openapi/models/v1_list_incident_messages_response.py +149 -0
  436. lightning_sdk/lightning_cloud/openapi/models/v1_list_incidents_response.py +149 -0
  437. lightning_sdk/lightning_cloud/openapi/models/v1_list_job_resources_response.py +123 -0
  438. lightning_sdk/lightning_cloud/openapi/models/v1_list_kai_scheduler_queues_metrics_response.py +123 -0
  439. lightning_sdk/lightning_cloud/openapi/models/v1_list_kubernetes_templates_response.py +123 -0
  440. lightning_sdk/lightning_cloud/openapi/models/v1_list_license_response.py +123 -0
  441. lightning_sdk/lightning_cloud/openapi/models/v1_list_lit_dataset_versions_response.py +123 -0
  442. lightning_sdk/lightning_cloud/openapi/models/v1_list_lit_datasets_response.py +123 -0
  443. lightning_sdk/lightning_cloud/openapi/models/v1_list_lit_registry_repository_image_artifact_versions_response.py +257 -0
  444. lightning_sdk/lightning_cloud/openapi/models/v1_list_machines_response.py +149 -0
  445. lightning_sdk/lightning_cloud/openapi/models/v1_list_node_file_system_metrics_response.py +97 -0
  446. lightning_sdk/lightning_cloud/openapi/models/v1_list_node_metrics_response.py +123 -0
  447. lightning_sdk/lightning_cloud/openapi/models/v1_list_notification_dialogs_response.py +149 -0
  448. lightning_sdk/lightning_cloud/openapi/models/v1_list_pipelines_response.py +123 -0
  449. lightning_sdk/lightning_cloud/openapi/models/v1_list_platform_notifications_response.py +123 -0
  450. lightning_sdk/lightning_cloud/openapi/models/v1_list_pod_metrics_response.py +123 -0
  451. lightning_sdk/lightning_cloud/openapi/models/v1_list_project_clusters_response.py +6 -6
  452. lightning_sdk/lightning_cloud/openapi/models/v1_list_published_managed_endpoints_response.py +123 -0
  453. lightning_sdk/lightning_cloud/openapi/models/v1_list_schedule_runs_response.py +123 -0
  454. lightning_sdk/lightning_cloud/openapi/models/v1_list_schedules_response.py +123 -0
  455. lightning_sdk/lightning_cloud/openapi/models/v1_list_slurm_cluster_users_response.py +123 -0
  456. lightning_sdk/lightning_cloud/openapi/models/v1_list_storage_transfers_response.py +123 -0
  457. lightning_sdk/lightning_cloud/openapi/models/v1_lit_dataset.py +539 -0
  458. lightning_sdk/lightning_cloud/openapi/models/{id_storage_body.py → v1_lit_dataset_file.py} +49 -49
  459. lightning_sdk/lightning_cloud/openapi/models/v1_lit_dataset_version_archive.py +435 -0
  460. lightning_sdk/lightning_cloud/openapi/models/v1_lit_registry_artifact.py +305 -0
  461. lightning_sdk/lightning_cloud/openapi/models/v1_lit_registry_project.py +35 -1
  462. lightning_sdk/lightning_cloud/openapi/models/v1_lit_repository.py +81 -1
  463. lightning_sdk/lightning_cloud/openapi/models/v1_lite_published_cloud_space_response.py +513 -0
  464. lightning_sdk/lightning_cloud/openapi/models/v1_lustre_data_connection.py +149 -0
  465. lightning_sdk/lightning_cloud/openapi/models/v1_machine.py +617 -0
  466. lightning_sdk/lightning_cloud/openapi/models/v1_machine_direct_v1.py +123 -0
  467. lightning_sdk/lightning_cloud/openapi/models/v1_magic_link_login_response.py +53 -1
  468. lightning_sdk/lightning_cloud/openapi/models/v1_managed_endpoint.py +27 -1
  469. lightning_sdk/lightning_cloud/openapi/models/v1_managed_model.py +341 -3
  470. lightning_sdk/lightning_cloud/openapi/models/v1_market_price.py +149 -0
  471. lightning_sdk/lightning_cloud/openapi/models/v1_membership.py +121 -17
  472. lightning_sdk/lightning_cloud/openapi/models/v1_message.py +159 -3
  473. lightning_sdk/lightning_cloud/openapi/models/v1_message_action.py +279 -0
  474. lightning_sdk/lightning_cloud/openapi/models/v1_metadata.py +27 -1
  475. lightning_sdk/lightning_cloud/openapi/models/v1_metrics_stream.py +79 -1
  476. lightning_sdk/lightning_cloud/openapi/models/v1_model.py +27 -1
  477. lightning_sdk/lightning_cloud/openapi/models/v1_model_metrics.py +175 -0
  478. lightning_sdk/lightning_cloud/openapi/models/{v1_delete_service_execution_response.py → v1_modify_filesystem_volume_response.py} +6 -6
  479. lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job.py +27 -1
  480. lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_state.py +2 -0
  481. lightning_sdk/lightning_cloud/openapi/models/v1_namespace_metrics.py +591 -0
  482. lightning_sdk/lightning_cloud/openapi/models/v1_namespace_user_metrics.py +435 -0
  483. lightning_sdk/lightning_cloud/openapi/models/v1_nebius_direct_v1.py +175 -0
  484. lightning_sdk/lightning_cloud/openapi/models/v1_node_metrics.py +695 -0
  485. lightning_sdk/lightning_cloud/openapi/models/v1_notification_type.py +2 -0
  486. lightning_sdk/lightning_cloud/openapi/models/v1_organization.py +837 -3
  487. lightning_sdk/lightning_cloud/openapi/models/v1_path_mapping.py +175 -0
  488. lightning_sdk/lightning_cloud/openapi/models/v1_pause_storage_transfer_response.py +97 -0
  489. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline.py +591 -0
  490. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_parameter.py +435 -0
  491. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_parameter_placement.py +149 -0
  492. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_parameter_placement_type.py +106 -0
  493. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_parameter_type.py +106 -0
  494. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_state.py +111 -0
  495. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_step.py +253 -0
  496. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_step_status.py +331 -0
  497. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_step_type.py +104 -0
  498. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_template.py +513 -0
  499. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_template_visibility_type.py +105 -0
  500. lightning_sdk/lightning_cloud/openapi/models/v1_platform_notification.py +279 -0
  501. lightning_sdk/lightning_cloud/openapi/models/v1_pod_metrics.py +747 -0
  502. lightning_sdk/lightning_cloud/openapi/models/v1_post_cloud_space_artifact_events_response.py +97 -0
  503. lightning_sdk/lightning_cloud/openapi/models/v1_project.py +105 -1
  504. lightning_sdk/lightning_cloud/openapi/models/v1_project_cluster_binding.py +53 -1
  505. lightning_sdk/lightning_cloud/openapi/models/v1_project_membership.py +121 -17
  506. lightning_sdk/lightning_cloud/openapi/models/v1_project_settings.py +525 -3
  507. lightning_sdk/lightning_cloud/openapi/models/v1_project_storage.py +235 -1
  508. lightning_sdk/lightning_cloud/openapi/models/v1_project_tab.py +149 -0
  509. lightning_sdk/lightning_cloud/openapi/models/v1_purchase_annual_upsell_request.py +123 -0
  510. lightning_sdk/lightning_cloud/openapi/models/v1_purchase_annual_upsell_response.py +123 -0
  511. lightning_sdk/lightning_cloud/openapi/models/v1_quote_annual_upsell_response.py +227 -0
  512. lightning_sdk/lightning_cloud/openapi/models/v1_quote_subscription_response.py +27 -1
  513. lightning_sdk/lightning_cloud/openapi/models/v1_r2_data_connection.py +305 -0
  514. lightning_sdk/lightning_cloud/openapi/models/v1_render_kubernetes_template_response.py +123 -0
  515. lightning_sdk/lightning_cloud/openapi/models/v1_report_cloud_space_instance_stop_at_response.py +97 -0
  516. lightning_sdk/lightning_cloud/openapi/models/v1_report_cloud_space_instance_system_metrics_response.py +97 -0
  517. lightning_sdk/lightning_cloud/openapi/models/v1_report_deployment_routing_telemetry_response.py +97 -0
  518. lightning_sdk/lightning_cloud/openapi/models/v1_report_k8s_cluster_metrics_response.py +97 -0
  519. lightning_sdk/lightning_cloud/openapi/models/v1_report_restart_timings_response.py +97 -0
  520. lightning_sdk/lightning_cloud/openapi/models/v1_request_cloud_space_access_response.py +97 -0
  521. lightning_sdk/lightning_cloud/openapi/models/v1_required_balance_reason.py +107 -0
  522. lightning_sdk/lightning_cloud/openapi/models/v1_reservation_details.py +201 -0
  523. lightning_sdk/lightning_cloud/openapi/models/v1_reset_api_key_request.py +97 -0
  524. lightning_sdk/lightning_cloud/openapi/models/v1_reset_api_key_response.py +123 -0
  525. lightning_sdk/lightning_cloud/openapi/models/v1_resource_visibility.py +27 -1
  526. lightning_sdk/lightning_cloud/openapi/models/v1_resources.py +55 -3
  527. lightning_sdk/lightning_cloud/openapi/models/v1_response_choice.py +29 -3
  528. lightning_sdk/lightning_cloud/openapi/models/v1_restart_timing.py +201 -0
  529. lightning_sdk/lightning_cloud/openapi/models/v1_resume_storage_transfer_response.py +97 -0
  530. lightning_sdk/lightning_cloud/openapi/models/v1_routing_telemetry.py +357 -0
  531. lightning_sdk/lightning_cloud/openapi/models/v1_rule_resource.py +5 -0
  532. lightning_sdk/lightning_cloud/openapi/models/v1_schedule.py +565 -0
  533. lightning_sdk/lightning_cloud/openapi/models/{command_argument_command_argument_type.py → v1_schedule_action_type.py} +9 -8
  534. lightning_sdk/lightning_cloud/openapi/models/v1_schedule_resource_type.py +104 -0
  535. lightning_sdk/lightning_cloud/openapi/models/v1_schedule_run.py +357 -0
  536. lightning_sdk/lightning_cloud/openapi/models/v1_sdk_command_history_severity.py +104 -0
  537. lightning_sdk/lightning_cloud/openapi/models/v1_sdk_command_history_type.py +104 -0
  538. lightning_sdk/lightning_cloud/openapi/models/v1_secret_type.py +2 -0
  539. lightning_sdk/lightning_cloud/openapi/models/{v1_get_service_execution_status_response.py → v1_server_alert.py} +74 -48
  540. lightning_sdk/lightning_cloud/openapi/models/v1_server_alert_phase.py +105 -0
  541. lightning_sdk/lightning_cloud/openapi/models/v1_server_alert_severity.py +103 -0
  542. lightning_sdk/lightning_cloud/openapi/models/v1_server_alert_type.py +108 -0
  543. lightning_sdk/lightning_cloud/openapi/models/v1_service_health.py +27 -1
  544. lightning_sdk/lightning_cloud/openapi/models/v1_setup_data_connection_response.py +123 -0
  545. lightning_sdk/lightning_cloud/openapi/models/v1_shared_filesystem.py +331 -0
  546. lightning_sdk/lightning_cloud/openapi/models/v1_slack_notifier.py +201 -0
  547. lightning_sdk/lightning_cloud/openapi/models/v1_slack_notifier_type.py +105 -0
  548. lightning_sdk/lightning_cloud/openapi/models/v1_sleep_server_response.py +97 -0
  549. lightning_sdk/lightning_cloud/openapi/models/v1_slurm_cluster_user.py +227 -0
  550. lightning_sdk/lightning_cloud/openapi/models/v1_slurm_job.py +84 -6
  551. lightning_sdk/lightning_cloud/openapi/models/v1_slurm_node.py +31 -291
  552. lightning_sdk/lightning_cloud/openapi/models/v1_slurm_v1.py +79 -1
  553. lightning_sdk/lightning_cloud/openapi/models/v1_slurm_v1_status.py +79 -1
  554. lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset.py +159 -3
  555. lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset_type.py +4 -0
  556. lightning_sdk/lightning_cloud/openapi/models/v1_storage_transfer.py +435 -0
  557. lightning_sdk/lightning_cloud/openapi/models/v1_storage_transfer_status.py +108 -0
  558. lightning_sdk/lightning_cloud/openapi/models/v1_subnet_spec.py +149 -0
  559. lightning_sdk/lightning_cloud/openapi/models/v1_system_metrics_aggregated.py +227 -0
  560. lightning_sdk/lightning_cloud/openapi/models/v1_token_login_request.py +123 -0
  561. lightning_sdk/lightning_cloud/openapi/models/v1_token_login_response.py +123 -0
  562. lightning_sdk/lightning_cloud/openapi/models/v1_token_owner_type.py +104 -0
  563. lightning_sdk/lightning_cloud/openapi/models/v1_token_usage.py +175 -0
  564. lightning_sdk/lightning_cloud/openapi/models/v1_tool.py +149 -0
  565. lightning_sdk/lightning_cloud/openapi/models/v1_tool_call.py +175 -0
  566. lightning_sdk/lightning_cloud/openapi/models/v1_transaction.py +27 -1
  567. lightning_sdk/lightning_cloud/openapi/models/v1_transfer_cloud_space_response.py +97 -0
  568. lightning_sdk/lightning_cloud/openapi/models/v1_trigger_filesystem_upgrade_response.py +123 -0
  569. lightning_sdk/lightning_cloud/openapi/models/v1_update_cloud_space_instance_config_request.py +253 -0
  570. lightning_sdk/lightning_cloud/openapi/models/v1_update_cloud_space_visibility_response.py +97 -0
  571. lightning_sdk/lightning_cloud/openapi/models/v1_update_conversation_like_response.py +149 -0
  572. lightning_sdk/lightning_cloud/openapi/models/v1_update_conversation_message_like_response.py +149 -0
  573. lightning_sdk/lightning_cloud/openapi/models/v1_update_deployment_visibility_response.py +97 -0
  574. lightning_sdk/lightning_cloud/openapi/models/v1_update_job_visibility_response.py +97 -0
  575. lightning_sdk/lightning_cloud/openapi/models/v1_update_lit_dataset_visibility_response.py +123 -0
  576. lightning_sdk/lightning_cloud/openapi/models/v1_update_lit_repository_response.py +97 -0
  577. lightning_sdk/lightning_cloud/openapi/models/v1_update_metrics_stream_visibility_response.py +27 -1
  578. lightning_sdk/lightning_cloud/openapi/models/v1_update_model_visibility_response.py +27 -1
  579. lightning_sdk/lightning_cloud/openapi/models/{v1_complete_upload_service_execution_artifact_response.py → v1_update_organization_credits_auto_replenish_response.py} +6 -6
  580. lightning_sdk/lightning_cloud/openapi/models/v1_update_project_tab_order_response.py +123 -0
  581. lightning_sdk/lightning_cloud/openapi/models/v1_update_user_credits_auto_replenish_response.py +97 -0
  582. lightning_sdk/lightning_cloud/openapi/models/v1_update_user_request.py +131 -1
  583. lightning_sdk/lightning_cloud/openapi/models/v1_update_volume_response.py +123 -0
  584. lightning_sdk/lightning_cloud/openapi/models/v1_upload_project_artifact_response.py +27 -1
  585. lightning_sdk/lightning_cloud/openapi/models/{v1_list_new_features_for_user_response.py → v1_upload_temporary_artifact_request.py} +23 -23
  586. lightning_sdk/lightning_cloud/openapi/models/v1_usage.py +105 -1
  587. lightning_sdk/lightning_cloud/openapi/models/v1_usage_report.py +79 -1
  588. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +894 -842
  589. lightning_sdk/lightning_cloud/openapi/models/v1_user_requested_compute_config.py +27 -1
  590. lightning_sdk/lightning_cloud/openapi/models/v1_validate_data_connection_response.py +27 -1
  591. lightning_sdk/lightning_cloud/openapi/models/v1_validate_deployment_image_request.py +27 -1
  592. lightning_sdk/lightning_cloud/openapi/models/v1_validate_license_response.py +123 -0
  593. lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_endpoint_response.py +27 -1
  594. lightning_sdk/lightning_cloud/openapi/models/v1_validate_storage_transfer_response.py +123 -0
  595. lightning_sdk/lightning_cloud/openapi/models/v1_voltage_park_direct_v1.py +229 -0
  596. lightning_sdk/lightning_cloud/openapi/models/v1_volume.py +513 -45
  597. lightning_sdk/lightning_cloud/openapi/models/v1_volume_state.py +105 -0
  598. lightning_sdk/lightning_cloud/openapi/models/v1_vultr_direct_v1.py +1 -27
  599. lightning_sdk/lightning_cloud/openapi/models/v1_weka_data_connection.py +201 -0
  600. lightning_sdk/lightning_cloud/openapi/models/validate.py +53 -1
  601. lightning_sdk/lightning_cloud/openapi/models/version_default_body.py +29 -29
  602. lightning_sdk/lightning_cloud/openapi/models/version_default_body1.py +149 -0
  603. lightning_sdk/lightning_cloud/openapi/models/version_uploads_body1.py +123 -0
  604. lightning_sdk/lightning_cloud/openapi/models/versions_version_body1.py +123 -0
  605. lightning_sdk/lightning_cloud/openapi/models/volumes_id_body.py +123 -0
  606. lightning_sdk/lightning_cloud/rest_client.py +61 -48
  607. lightning_sdk/lightning_cloud/source_code/logs_socket_api.py +8 -3
  608. lightning_sdk/lightning_cloud/utils/data_connection.py +234 -7
  609. lightning_sdk/lit_container.py +68 -9
  610. lightning_sdk/llm/__init__.py +3 -0
  611. lightning_sdk/llm/llm.py +497 -0
  612. lightning_sdk/llm/public_assistants.py +54 -0
  613. lightning_sdk/machine.py +221 -30
  614. lightning_sdk/mmt/base.py +67 -32
  615. lightning_sdk/mmt/mmt.py +68 -50
  616. lightning_sdk/mmt/v1.py +16 -32
  617. lightning_sdk/mmt/v2.py +47 -18
  618. lightning_sdk/models.py +74 -24
  619. lightning_sdk/organization.py +4 -0
  620. lightning_sdk/owner.py +2 -1
  621. lightning_sdk/pipeline/__init__.py +14 -0
  622. lightning_sdk/pipeline/pipeline.py +163 -0
  623. lightning_sdk/pipeline/printer.py +124 -0
  624. lightning_sdk/pipeline/schedule.py +859 -0
  625. lightning_sdk/pipeline/steps.py +365 -0
  626. lightning_sdk/pipeline/utils.py +116 -0
  627. lightning_sdk/plugin.py +39 -20
  628. lightning_sdk/sandbox.py +160 -0
  629. lightning_sdk/serve.py +309 -0
  630. lightning_sdk/services/__init__.py +1 -1
  631. lightning_sdk/services/file_endpoint.py +3 -4
  632. lightning_sdk/services/utilities.py +16 -2
  633. lightning_sdk/studio.py +515 -41
  634. lightning_sdk/teamspace.py +335 -30
  635. lightning_sdk/user.py +19 -1
  636. lightning_sdk/utils/config.py +179 -0
  637. lightning_sdk/utils/license.py +13 -0
  638. lightning_sdk/utils/logging.py +79 -0
  639. lightning_sdk/utils/names.py +1179 -0
  640. lightning_sdk/utils/progress.py +283 -0
  641. lightning_sdk/utils/resolve.py +149 -13
  642. {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/METADATA +14 -11
  643. {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/RECORD +649 -250
  644. {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/WHEEL +1 -1
  645. {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/entry_points.txt +1 -0
  646. lightning_sdk/cli/ai_hub.py +0 -49
  647. lightning_sdk/cli/delete.py +0 -58
  648. lightning_sdk/cli/download.py +0 -132
  649. lightning_sdk/cli/inspect.py +0 -31
  650. lightning_sdk/cli/legacy.py +0 -135
  651. lightning_sdk/cli/list.py +0 -112
  652. lightning_sdk/cli/run.py +0 -225
  653. lightning_sdk/cli/serve.py +0 -218
  654. lightning_sdk/cli/stop.py +0 -37
  655. lightning_sdk/cli/upload.py +0 -255
  656. lightning_sdk/lightning_cloud/openapi/models/fileendpoints_id_body.py +0 -409
  657. lightning_sdk/lightning_cloud/openapi/models/project_id_fileendpoints_body.py +0 -357
  658. lightning_sdk/lightning_cloud/openapi/models/project_id_serviceexecution_body.py +0 -175
  659. lightning_sdk/lightning_cloud/openapi/models/serviceexecution_id_body.py +0 -331
  660. lightning_sdk/lightning_cloud/openapi/models/v1_command_argument.py +0 -305
  661. lightning_sdk/lightning_cloud/openapi/models/v1_ebs.py +0 -279
  662. lightning_sdk/lightning_cloud/openapi/models/v1_file_endpoint.py +0 -461
  663. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_storage_response.py +0 -201
  664. lightning_sdk/lightning_cloud/openapi/models/v1_list_service_execution_lightningapp_instances_response.py +0 -175
  665. lightning_sdk/lightning_cloud/openapi/models/v1_service_execution.py +0 -383
  666. /lightning_sdk/cli/{exceptions.py → legacy/exceptions.py} +0 -0
  667. /lightning_sdk/services/{finetune/__init__.py → finetune_llm.py} +0 -0
  668. {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/LICENSE +0 -0
  669. {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/top_level.txt +0 -0
lightning_sdk/mmt/mmt.py CHANGED
@@ -1,15 +1,13 @@
1
- from functools import lru_cache
2
1
  from typing import TYPE_CHECKING, Any, Dict, Optional, Tuple, Union
3
2
 
4
- from lightning_sdk.api.user_api import UserApi
5
- from lightning_sdk.job.job import _has_jobs_v2
3
+ from lightning_sdk.api.cloud_account_api import CloudAccountApi
6
4
  from lightning_sdk.mmt.base import MMTMachine, _BaseMMT
7
5
  from lightning_sdk.mmt.v1 import _MMTV1
8
6
  from lightning_sdk.mmt.v2 import _MMTV2
9
7
  from lightning_sdk.utils.resolve import _setup_logger
10
8
 
11
9
  if TYPE_CHECKING:
12
- from lightning_sdk.machine import Machine
10
+ from lightning_sdk.machine import CloudProvider, Machine
13
11
  from lightning_sdk.organization import Organization
14
12
  from lightning_sdk.status import Status
15
13
  from lightning_sdk.studio import Studio
@@ -19,25 +17,12 @@ if TYPE_CHECKING:
19
17
  _logger = _setup_logger(__name__)
20
18
 
21
19
 
22
- @lru_cache(maxsize=None)
23
- def _has_mmt_v2() -> bool:
24
- # users need both mmtv2 and jobsv2 flags in order for mmtv2 to work correctly
25
- if not _has_jobs_v2():
26
- return False
27
-
28
- api = UserApi()
29
- try:
30
- return api._get_feature_flags().mmt_v2
31
- except Exception:
32
- return False
33
-
34
-
35
20
  class MMT(_BaseMMT):
36
21
  """Class to submit and manage multi-machine jobs on the Lightning AI Platform."""
37
22
 
38
- _force_v1: (
39
- bool
40
- ) = False # required for studio plugin still working correctly as v2 currently does not support the studio env
23
+ _force_v1: bool = (
24
+ False # required for studio plugin still working correctly as v2 currently does not support the studio env
25
+ )
41
26
 
42
27
  def __init__(
43
28
  self,
@@ -59,7 +44,7 @@ class MMT(_BaseMMT):
59
44
  """
60
45
  from lightning_sdk.lightning_cloud.openapi.rest import ApiException
61
46
 
62
- if _has_mmt_v2() and not self._force_v1:
47
+ if not self._force_v1:
63
48
  # try with v2 and fall back to v1
64
49
  try:
65
50
  mmt = _MMTV2(
@@ -91,13 +76,14 @@ class MMT(_BaseMMT):
91
76
  )
92
77
 
93
78
  self._internal_mmt = mmt
79
+ self._cloud_account_api = CloudAccountApi()
94
80
 
95
81
  @classmethod
96
82
  def run(
97
83
  cls,
98
84
  name: str,
99
85
  num_machines: int,
100
- machine: "Machine",
86
+ machine: Union["Machine", str],
101
87
  command: Optional[str] = None,
102
88
  studio: Union["Studio", str, None] = None,
103
89
  image: Union[str, None] = None,
@@ -105,21 +91,25 @@ class MMT(_BaseMMT):
105
91
  org: Union[str, "Organization", None] = None,
106
92
  user: Union[str, "User", None] = None,
107
93
  cloud_account: Optional[str] = None,
94
+ cloud_provider: Optional[Union["CloudProvider", str]] = None,
108
95
  env: Optional[Dict[str, str]] = None,
109
96
  interruptible: bool = False,
110
97
  image_credentials: Optional[str] = None,
111
98
  cloud_account_auth: bool = False,
99
+ entrypoint: str = "sh -c",
100
+ path_mappings: Optional[Dict[str, str]] = None,
101
+ max_runtime: Optional[int] = None,
112
102
  artifacts_local: Optional[str] = None,
113
103
  artifacts_remote: Optional[str] = None,
114
- entrypoint: str = "sh -c",
115
104
  cluster: Optional[str] = None, # deprecated in favor of cloud_account
105
+ reuse_snapshot: bool = True,
116
106
  ) -> "MMT":
117
107
  """Run async workloads using a docker image across multiple machines.
118
108
 
119
109
  Args:
120
110
  name: The name of the job. Needs to be unique within the teamspace.
121
111
  machine: The machine type to run the job on. One of {", ".join(_MACHINE_VALUES)}.
122
- num_machine: The number of machines to run on.
112
+ num_machines: The number of machines to run on.
123
113
  command: The command to run inside your job. Required if using a studio. Optional if using an image.
124
114
  If not provided for images, will run the container entrypoint and default command.
125
115
  studio: The studio env to run the job with. Mutually exclusive with image.
@@ -129,26 +119,31 @@ class MMT(_BaseMMT):
129
119
  user: The user owning the teamspace (if any). Defaults to the current user.
130
120
  cloud_account: The cloud account to run the job on.
131
121
  Defaults to the studio cloud account if running with studio compute env.
132
- If not provided will fall back to the teamspaces default cloud account.
122
+ If not provided and `cloud_account_provider` is set, will resolve cluster from this, else
123
+ will fall back to the teamspaces default cloud account.
124
+ cloud_account_provider: The provider to select the cloud-account from.
125
+ If set, must be in agreement with the provider from the cloud_account (if specified).
126
+ If not specified, falls backto the teamspace default cloud account.
133
127
  env: Environment variables to set inside the job.
134
128
  interruptible: Whether the job should run on interruptible instances. They are cheaper but can be preempted.
135
129
  image_credentials: The credentials used to pull the image. Required if the image is private.
136
130
  This should be the name of the respective credentials secret created on the Lightning AI platform.
137
131
  cloud_account_auth: Whether to authenticate with the cloud account to pull the image.
138
132
  Required if the registry is part of a cloud provider (e.g. ECR).
139
- artifacts_local: The path of inside the docker container, you want to persist images from.
140
- CAUTION: When setting this to "/", it will effectively erase your container.
141
- Only supported for jobs with a docker image compute environment.
142
- artifacts_remote: The remote storage to persist your artifacts to.
143
- Should be of format <CONNECTION_TYPE>:<CONNECTION_NAME>:<PATH_WITHIN_CONNECTION>.
144
- PATH_WITHIN_CONNECTION hereby is a path relative to the connection's root.
145
- E.g. efs:data:some-path would result in an EFS connection named `data` and to the path `some-path`
146
- within it.
147
- Note that the connection needs to be added to the teamspace already in order for it to be found.
148
- Only supported for jobs with a docker image compute environment.
149
133
  entrypoint: The entrypoint of your docker container. Defaults to sh -c.
150
134
  To use the pre-defined entrypoint of the provided image, set this to an empty string.
151
135
  Only applicable when submitting docker jobs.
136
+ path_mappings: Dictionary of path mappings. The keys are the path inside the container whereas the value
137
+ represents the data-connection name and the path inside that connection.
138
+ Should be of form
139
+ {
140
+ "<CONTAINER_PATH_1>": "<CONNECTION_NAME_1>:<PATH_WITHIN_CONNECTION_1>",
141
+ "<CONTAINER_PATH_2>": "<CONNECTION_NAME_2>"
142
+ }
143
+ If the path inside the connection is omitted it's assumed to be the root path of that connection.
144
+ Only applicable when submitting docker jobs.
145
+ reuse_snapshot: Whether the job should reuse a Studio snapshot when multiple jobs for the same Studio are
146
+ submitted. Turning this off may result in longer job startup times. Defaults to True.
152
147
  """
153
148
  ret_val = super().run(
154
149
  name=name,
@@ -161,13 +156,18 @@ class MMT(_BaseMMT):
161
156
  org=org,
162
157
  user=user,
163
158
  cloud_account=cloud_account,
159
+ cloud_provider=cloud_provider,
164
160
  env=env,
165
161
  interruptible=interruptible,
166
162
  image_credentials=image_credentials,
167
163
  cloud_account_auth=cloud_account_auth,
164
+ entrypoint=entrypoint,
165
+ path_mappings=path_mappings,
168
166
  artifacts_local=artifacts_local,
169
167
  artifacts_remote=artifacts_remote,
170
168
  cluster=cluster, # deprecated in favor of cloud_account
169
+ max_runtime=max_runtime,
170
+ reuse_snapshot=reuse_snapshot,
171
171
  )
172
172
  # required for typing with "MMT"
173
173
  assert isinstance(ret_val, cls)
@@ -180,18 +180,22 @@ class MMT(_BaseMMT):
180
180
  def _submit(
181
181
  self,
182
182
  num_machines: int,
183
- machine: "Machine",
183
+ machine: Union["Machine", str],
184
184
  command: Optional[str] = None,
185
185
  studio: Optional["Studio"] = None,
186
186
  image: Optional[str] = None,
187
187
  env: Optional[Dict[str, str]] = None,
188
188
  interruptible: bool = False,
189
189
  cloud_account: Optional[str] = None,
190
+ cloud_provider: Optional[Union["CloudProvider", str]] = None,
190
191
  image_credentials: Optional[str] = None,
191
192
  cloud_account_auth: bool = False,
192
- artifacts_local: Optional[str] = None,
193
- artifacts_remote: Optional[str] = None,
194
193
  entrypoint: str = "sh -c",
194
+ path_mappings: Optional[Dict[str, str]] = None,
195
+ max_runtime: Optional[int] = None,
196
+ artifacts_local: Optional[str] = None, # deprecated in favor of path_mappings
197
+ artifacts_remote: Optional[str] = None, # deprecated in favor of path_mappings
198
+ reuse_snapshot: bool = True,
195
199
  ) -> "MMT":
196
200
  """Submit a new multi-machine job to the Lightning AI platform.
197
201
 
@@ -206,30 +210,40 @@ class MMT(_BaseMMT):
206
210
  interruptible: Whether the job should run on interruptible instances. They are cheaper but can be preempted.
207
211
  cloud_account: The cloud account to run the job on.
208
212
  Defaults to the studio cloud account if running with studio compute env.
209
- If not provided will fall back to the teamspaces default cloud account.
213
+ If not provided and `cloud_account_provider` is set, will resolve cluster from this, else
214
+ will fall back to the teamspaces default cloud account.
215
+ cloud_account_provider: The provider to select the cloud-account from.
216
+ If set, must be in agreement with the provider from the cloud_account (if specified).
217
+ If not specified, falls backto the teamspace default cloud account.
210
218
  image_credentials: The credentials used to pull the image. Required if the image is private.
211
219
  This should be the name of the respective credentials secret created on the Lightning AI platform.
212
220
  cloud_account_auth: Whether to authenticate with the cloud account to pull the image.
213
221
  Required if the registry is part of a cloud provider (e.g. ECR).
214
- artifacts_local: The path of inside the docker container, you want to persist images from.
215
- CAUTION: When setting this to "/", it will effectively erase your container.
216
- Only supported for jobs with a docker image compute environment.
217
- artifacts_remote: The remote storage to persist your artifacts to.
218
- Should be of format <CONNECTION_TYPE>:<CONNECTION_NAME>:<PATH_WITHIN_CONNECTION>.
219
- PATH_WITHIN_CONNECTION hereby is a path relative to the connection's root.
220
- E.g. efs:data:some-path would result in an EFS connection named `data` and to the path `some-path`
221
- within it.
222
- Note that the connection needs to be added to the teamspace already in order for it to be found.
223
- Only supported for jobs with a docker image compute environment.
224
222
  entrypoint: The entrypoint of your docker container. Defaults to `sh -c` which
225
223
  just runs the provided command in a standard shell.
226
224
  To use the pre-defined entrypoint of the provided image, set this to an empty string.
227
225
  Only applicable when submitting docker jobs.
226
+ path_mappings: Dictionary of path mappings. The keys are the path inside the container whereas the value
227
+ represents the data-connection name and the path inside that connection.
228
+ Should be of form
229
+ {
230
+ "<CONTAINER_PATH_1>": "<CONNECTION_NAME_1>:<PATH_WITHIN_CONNECTION_1>",
231
+ "<CONTAINER_PATH_2>": "<CONNECTION_NAME_2>"
232
+ }
233
+ If the path inside the connection is omitted it's assumed to be the root path of that connection.
234
+ Only applicable when submitting docker jobs.
235
+ max_runtime: the duration (in seconds) for which to allocate the machine.
236
+ Irrelevant for most machines, required for some of the top-end machines on GCP.
237
+ If in doubt, set it. Won't have an effect on machines not requiring it.
238
+ Defaults to 3h
239
+ reuse_snapshot: Whether the job should reuse a Studio snapshot when multiple jobs for the same Studio are
240
+ submitted. Turning this off may result in longer job startup times. Defaults to True.
228
241
  """
229
242
  self._job = self._internal_mmt._submit(
230
243
  num_machines=num_machines,
231
244
  machine=machine,
232
245
  cloud_account=cloud_account,
246
+ cloud_provider=cloud_provider,
233
247
  command=command,
234
248
  studio=studio,
235
249
  image=image,
@@ -237,8 +251,12 @@ class MMT(_BaseMMT):
237
251
  interruptible=interruptible,
238
252
  image_credentials=image_credentials,
239
253
  cloud_account_auth=cloud_account_auth,
254
+ entrypoint=entrypoint,
255
+ path_mappings=path_mappings,
240
256
  artifacts_local=artifacts_local,
241
257
  artifacts_remote=artifacts_remote,
258
+ max_runtime=max_runtime,
259
+ reuse_snapshot=reuse_snapshot,
242
260
  )
243
261
  return self
244
262
 
@@ -264,7 +282,7 @@ class MMT(_BaseMMT):
264
282
  return self._internal_mmt.machines
265
283
 
266
284
  @property
267
- def machine(self) -> "Machine":
285
+ def machine(self) -> Union["Machine", str]:
268
286
  """Returns the machine type this job is running on."""
269
287
  return self._internal_mmt.machine
270
288
 
lightning_sdk/mmt/v1.py CHANGED
@@ -7,7 +7,7 @@ from lightning_sdk.job.work import Work
7
7
  from lightning_sdk.status import Status
8
8
 
9
9
  if TYPE_CHECKING:
10
- from lightning_sdk.machine import Machine
10
+ from lightning_sdk.machine import CloudProvider, Machine
11
11
  from lightning_sdk.organization import Organization
12
12
  from lightning_sdk.studio import Studio
13
13
  from lightning_sdk.teamspace import Teamspace
@@ -43,18 +43,22 @@ class _MMTV1(_BaseMMT):
43
43
  def _submit(
44
44
  self,
45
45
  num_machines: int,
46
- machine: "Machine",
46
+ machine: Union["Machine", str],
47
47
  command: Optional[str] = None,
48
48
  studio: Optional["Studio"] = None,
49
49
  image: Optional[str] = None,
50
50
  env: Optional[Dict[str, str]] = None,
51
51
  interruptible: bool = False,
52
52
  cloud_account: Optional[str] = None,
53
+ cloud_provider: Optional[Union["CloudProvider", str]] = None,
53
54
  image_credentials: Optional[str] = None,
54
55
  cloud_account_auth: bool = False,
56
+ entrypoint: str = "sh -c",
57
+ path_mappings: Optional[Dict[str, str]] = None,
58
+ max_runtime: Optional[int] = None,
55
59
  artifacts_local: Optional[str] = None,
56
60
  artifacts_remote: Optional[str] = None,
57
- entrypoint: str = "sh -c",
61
+ reuse_snapshot: bool = True,
58
62
  ) -> "_MMTV1":
59
63
  """Submit a new multi-machine job to the Lightning AI platform.
60
64
 
@@ -88,35 +92,15 @@ class _MMTV1(_BaseMMT):
88
92
  just runs the provided command in a standard shell.
89
93
  To use the pre-defined entrypoint of the provided image, set this to an empty string.
90
94
  Only applicable when submitting docker jobs.
95
+ path_mappings: The mappings from data connection inside your container (not supported)
96
+ max_runtime: the duration (in seconds) for which to allocate the machine.
97
+ Irrelevant for most machines, required for some of the top-end machines on GCP.
98
+ If in doubt, set it. Won't have an effect on machines not requiring it.
99
+ Defaults to 3h
100
+ reuse_snapshot: Whether the job should reuse a Studio snapshot when multiple jobs for the same Studio are
101
+ submitted. Turning this off may result in longer job startup times. Defaults to True.
91
102
  """
92
- if studio is None:
93
- raise ValueError("Studio is required for submitting jobs")
94
- if image is not None or image_credentials is not None or cloud_account_auth or entrypoint != "sh -c":
95
- raise ValueError("Image is not supported for submitting jobs")
96
-
97
- if artifacts_local is not None or artifacts_remote is not None:
98
- raise ValueError("Specifying how to persist artifacts is not yet supported with jobs")
99
-
100
- if env is not None:
101
- raise ValueError("Environment variables are not supported for submitting jobs")
102
- if command is None:
103
- raise ValueError("Command is required for submitting multi-machine jobs")
104
-
105
- _submitted = self._job_api.submit_job(
106
- name=self._name,
107
- num_machines=num_machines,
108
- command=command,
109
- studio_id=studio._studio.id,
110
- teamspace_id=self._teamspace.id,
111
- cloud_account=cloud_account or "",
112
- machine=machine,
113
- interruptible=interruptible,
114
- strategy="parallel",
115
- )
116
-
117
- self._name = _submitted.name
118
- self._job = _submitted
119
- return self
103
+ raise NotImplementedError("Cannot submit new mmts with MMTV1!")
120
104
 
121
105
  def _update_internal_job(self) -> None:
122
106
  try:
@@ -166,7 +150,7 @@ class _MMTV1(_BaseMMT):
166
150
  return f"/teamspace/jobs/{self.name}/snapshot"
167
151
 
168
152
  @property
169
- def machine(self) -> "Machine":
153
+ def machine(self) -> Union["Machine", str]:
170
154
  """Returns the machine type this job is running on."""
171
155
  return self.machines[0].machine
172
156
 
lightning_sdk/mmt/v2.py CHANGED
@@ -3,10 +3,11 @@ from typing import TYPE_CHECKING, Dict, Optional, Tuple, Union
3
3
  from lightning_sdk.api.mmt_api import MMTApiV2
4
4
  from lightning_sdk.api.utils import _get_cloud_url
5
5
  from lightning_sdk.status import Status
6
+ from lightning_sdk.utils.resolve import _get_org_id
6
7
 
7
8
  if TYPE_CHECKING:
8
9
  from lightning_sdk.job.job import Job
9
- from lightning_sdk.machine import Machine
10
+ from lightning_sdk.machine import CloudProvider, Machine
10
11
  from lightning_sdk.organization import Organization
11
12
  from lightning_sdk.studio import Studio
12
13
  from lightning_sdk.teamspace import Teamspace
@@ -42,18 +43,22 @@ class _MMTV2(_BaseMMT):
42
43
  def _submit(
43
44
  self,
44
45
  num_machines: int,
45
- machine: "Machine",
46
+ machine: Union["Machine", str],
46
47
  command: Optional[str] = None,
47
48
  studio: Optional["Studio"] = None,
48
49
  image: Optional[str] = None,
49
50
  env: Optional[Dict[str, str]] = None,
50
51
  interruptible: bool = False,
51
52
  cloud_account: Optional[str] = None,
53
+ cloud_provider: Optional[Union["CloudProvider", str]] = None,
52
54
  image_credentials: Optional[str] = None,
53
55
  cloud_account_auth: bool = False,
54
- artifacts_local: Optional[str] = None,
55
- artifacts_remote: Optional[str] = None,
56
56
  entrypoint: str = "sh -c",
57
+ path_mappings: Optional[Dict[str, str]] = None,
58
+ max_runtime: Optional[int] = None,
59
+ artifacts_local: Optional[str] = None, # deprecated in favor of path_mappings
60
+ artifacts_remote: Optional[str] = None, # deprecated in favor of path_mappings
61
+ reuse_snapshot: bool = True,
57
62
  ) -> "_MMTV2":
58
63
  """Submit a new multi-machine job to the Lightning AI platform.
59
64
 
@@ -68,25 +73,34 @@ class _MMTV2(_BaseMMT):
68
73
  interruptible: Whether the job should run on interruptible instances. They are cheaper but can be preempted.
69
74
  cloud_account: The cloud account to run the job on.
70
75
  Defaults to the studio cloud account if running with studio compute env.
71
- If not provided will fall back to the teamspaces default cloud account.
76
+ If not provided and `cloud_account_provider` is set, will resolve cluster from this, else
77
+ will fall back to the teamspaces default cloud account.
78
+ cloud_account_provider: The provider to select the cloud-account from.
79
+ If set, must be in agreement with the provider from the cloud_account (if specified).
80
+ If not specified, falls backto the teamspace default cloud account.
72
81
  image_credentials: The credentials used to pull the image. Required if the image is private.
73
82
  This should be the name of the respective credentials secret created on the Lightning AI platform.
74
83
  cloud_account_auth: Whether to authenticate with the cloud account to pull the image.
75
84
  Required if the registry is part of a cloud provider (e.g. ECR).
76
- artifacts_local: The path of inside the docker container, you want to persist images from.
77
- CAUTION: When setting this to "/", it will effectively erase your container.
78
- Only supported for jobs with a docker image compute environment.
79
- artifacts_remote: The remote storage to persist your artifacts to.
80
- Should be of format <CONNECTION_TYPE>:<CONNECTION_NAME>:<PATH_WITHIN_CONNECTION>.
81
- PATH_WITHIN_CONNECTION hereby is a path relative to the connection's root.
82
- E.g. efs:data:some-path would result in an EFS connection named `data` and to the path `some-path`
83
- within it.
84
- Note that the connection needs to be added to the teamspace already in order for it to be found.
85
- Only supported for jobs with a docker image compute environment.
86
85
  entrypoint: The entrypoint of your docker container. Defaults to `sh -c` which
87
86
  just runs the provided command in a standard shell.
88
87
  To use the pre-defined entrypoint of the provided image, set this to an empty string.
89
88
  Only applicable when submitting docker jobs.
89
+ path_mappings: Dictionary of path mappings. The keys are the path inside the container whereas the value
90
+ represents the data-connection name and the path inside that connection.
91
+ Should be of form
92
+ {
93
+ "<CONTAINER_PATH_1>": "<CONNECTION_NAME_1>:<PATH_WITHIN_CONNECTION_1>",
94
+ "<CONTAINER_PATH_2>": "<CONNECTION_NAME_2>"
95
+ }
96
+ If the path inside the connection is omitted it's assumed to be the root path of that connection.
97
+ Only applicable when submitting docker jobs.
98
+ max_runtime: the duration (in seconds) for which to allocate the machine.
99
+ Irrelevant for most machines, required for some of the top-end machines on GCP.
100
+ If in doubt, set it. Won't have an effect on machines not requiring it.
101
+ Defaults to 3h
102
+ reuse_snapshot: Whether the job should reuse a Studio snapshot when multiple jobs for the same Studio are
103
+ submitted. Turning this off may result in longer job startup times. Defaults to True.
90
104
  """
91
105
  # Command is required if Studio is provided to know what to run
92
106
  # Image is mutually exclusive with Studio
@@ -104,6 +118,14 @@ class _MMTV2(_BaseMMT):
104
118
  studio_id = None
105
119
  if image is None:
106
120
  raise ValueError("either image or studio must be provided")
121
+
122
+ cloud_account = self._cloud_account_api.resolve_cloud_account(
123
+ self._teamspace.id,
124
+ cloud_account=cloud_account,
125
+ cloud_provider=cloud_provider,
126
+ default_cloud_account=self._teamspace.default_cloud_account,
127
+ )
128
+
107
129
  submitted = self._job_api.submit_job(
108
130
  name=self.name,
109
131
  num_machines=num_machines,
@@ -117,9 +139,12 @@ class _MMTV2(_BaseMMT):
117
139
  env=env,
118
140
  image_credentials=image_credentials,
119
141
  cloud_account_auth=cloud_account_auth,
142
+ entrypoint=entrypoint,
143
+ path_mappings=path_mappings,
120
144
  artifacts_local=artifacts_local,
121
145
  artifacts_remote=artifacts_remote,
122
- entrypoint=entrypoint,
146
+ max_runtime=max_runtime,
147
+ reuse_snapshot=reuse_snapshot,
123
148
  )
124
149
  self._job = submitted
125
150
  self._name = submitted.name
@@ -169,9 +194,13 @@ class _MMTV2(_BaseMMT):
169
194
  raise NotImplementedError
170
195
 
171
196
  @property
172
- def machine(self) -> "Machine":
197
+ def machine(self) -> Union["Machine", str]:
173
198
  """Returns the machine type this job is running on."""
174
- return self._job_api._get_job_machine_from_spec(self._guaranteed_job.spec)
199
+ return self._job_api._get_job_machine_from_spec(
200
+ self._guaranteed_job.spec,
201
+ self.teamspace.id,
202
+ _get_org_id(self.teamspace),
203
+ )
175
204
 
176
205
  def _update_internal_job(self) -> None:
177
206
  if getattr(self, "_job", None) is None:
lightning_sdk/models.py CHANGED
@@ -4,10 +4,11 @@ from pathlib import Path
4
4
  from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
5
5
 
6
6
  from lightning_sdk.api import OrgApi, TeamspaceApi, UserApi
7
+ from lightning_sdk.lightning_cloud.openapi import V1ModelVersionArchive
7
8
  from lightning_sdk.lightning_cloud.openapi.models import V1Membership, V1OwnerType
8
9
  from lightning_sdk.lightning_cloud.openapi.rest import ApiException
9
10
  from lightning_sdk.user import User
10
- from lightning_sdk.utils.resolve import _get_authed_user
11
+ from lightning_sdk.utils.resolve import _get_authed_user, _resolve_teamspace
11
12
 
12
13
  if TYPE_CHECKING:
13
14
  from lightning_sdk.teamspace import Teamspace
@@ -72,24 +73,37 @@ def _get_teamspace(name: str, organization: str) -> "Teamspace":
72
73
  raise RuntimeError(f"Teamspace `{requested_teamspace}` not found. Available teamspaces: {os.linesep}\t{options}")
73
74
 
74
75
 
75
- def _parse_model_name_and_version(name: str) -> Tuple[str, str, str, str]:
76
+ def _extend_model_name_with_teamspace(name: str) -> str:
77
+ """Extend the model name with the teamspace if it can be determined from env. variables."""
78
+ if "/" in name:
79
+ return name
80
+ # do some magic if you run studio
81
+ teamspace = _resolve_teamspace(None, None, None)
82
+ if not teamspace:
83
+ raise ValueError(
84
+ f"Model name must be in the format `organization/teamspace/model_name` but you provided '{name}'."
85
+ )
86
+ return f"{teamspace.owner.name}/{teamspace.name}/{name}"
87
+
88
+
89
+ def _parse_org_teamspace_model_version(name: str) -> Tuple[str, str, str, Optional[str]]:
76
90
  """Parse the name argument into its components."""
77
91
  try:
78
92
  org_name, teamspace_name, model_name = name.split("/")
79
- parts = model_name.split(":")
80
- if len(parts) == 1:
81
- return org_name, teamspace_name, parts[0], "latest"
82
- if len(parts) == 2:
83
- return org_name, teamspace_name, parts[0], parts[1]
84
- # The rest of the validation for name and version happens in the backend
85
- raise ValueError(
86
- "Model version is expected to be in the format `entity/modelname:version` separated by a"
87
- f" single colon, but got: {name}"
88
- )
89
93
  except ValueError as err:
90
94
  raise ValueError(
91
- f"Model name must be in the format 'organization/teamspace/model' but you provided '{name}'."
95
+ f"Model name must be in the format `organization/teamspace/model_name` but you provided '{name}'."
92
96
  ) from err
97
+ parts = model_name.split(":")
98
+ if len(parts) == 1:
99
+ return org_name, teamspace_name, parts[0], None
100
+ if len(parts) == 2:
101
+ return org_name, teamspace_name, parts[0], parts[1]
102
+ # The rest of the validation for name and version happens in the backend
103
+ raise ValueError(
104
+ "Model version is expected to be in the format `organization/teamspace/model_name:version`"
105
+ f" separated by a single colon, but got: {name}"
106
+ )
93
107
 
94
108
 
95
109
  def download_model(
@@ -105,33 +119,33 @@ def download_model(
105
119
  download_dir: The directory where the Model should be downloaded.
106
120
  progress_bar: Whether to show a progress bar when downloading.
107
121
  """
108
- teamspace_owner_name, teamspace_name, model_name, version = _parse_model_name_and_version(name)
109
-
110
- download_dir = Path(download_dir)
111
-
122
+ name = _extend_model_name_with_teamspace(name)
123
+ teamspace_owner_name, teamspace_name, model_name, version = _parse_org_teamspace_model_version(name)
112
124
  api = TeamspaceApi()
113
125
 
114
126
  try:
115
127
  return api.download_model_files(
116
128
  name=model_name,
117
129
  version=version,
118
- download_dir=download_dir,
130
+ download_dir=Path(download_dir).expanduser().resolve(),
119
131
  teamspace_name=teamspace_name,
120
132
  teamspace_owner_name=teamspace_owner_name,
121
133
  progress_bar=progress_bar,
122
134
  )
123
135
  except ApiException as e:
124
- # if we get an error, check if the teamspace actually exists (and print the list)
125
- # TODO: ideally this would match a specific error about teamspace not being found
126
- _ = _get_teamspace(name=teamspace_name, organization=teamspace_owner_name)
127
- raise e
136
+ if e.status == 404:
137
+ raise RuntimeError(
138
+ f"Model '{name}' not found. Either the model doesn't exist or you don't have access to it."
139
+ ) from None
140
+ raise RuntimeError(f"Error downloading model. Status code: {e.status}.") from None
128
141
 
129
142
 
130
143
  def upload_model(
131
144
  name: str,
132
- path: Union[Path, str] = ".",
145
+ path: Union[str, Path, List[Union[str, Path]]] = ".",
133
146
  cloud_account: Optional[str] = None,
134
147
  progress_bar: bool = True,
148
+ metadata: Optional[Dict[str, Any]] = None,
135
149
  ) -> UploadedModelInfo:
136
150
  """Upload a Model.
137
151
 
@@ -142,12 +156,48 @@ def upload_model(
142
156
  cloud_account: The name of the cloud account to store the Model in.
143
157
  If not provided, the default cloud account for the Teamspace will be used.
144
158
  progress_bar: Whether to show a progress bar for the upload.
159
+ metadata: Metadata to attach to the uploaded model.
160
+ If not provided, an empty dictionary will be used.
145
161
  """
146
- org_name, teamspace_name, model_name, _ = _parse_model_name_and_version(name)
162
+ name = _extend_model_name_with_teamspace(name)
163
+ org_name, teamspace_name, model_name, version = _parse_org_teamspace_model_version(name)
147
164
  teamspace = _get_teamspace(name=teamspace_name, organization=org_name)
148
165
  return teamspace.upload_model(
149
166
  path=path,
150
167
  name=model_name,
168
+ version=version,
151
169
  cloud_account=cloud_account,
152
170
  progress_bar=progress_bar,
171
+ metadata=metadata,
153
172
  )
173
+
174
+
175
+ def delete_model(
176
+ name: str,
177
+ ) -> None:
178
+ """Delete a model or a version of model.
179
+
180
+ Args:
181
+ name: The name of the model you want to delete or with specified version it deltes only that version.
182
+ This should have the format <ORGANIZATION-NAME>/<TEAMSPACE-NAME>/<MODEL-NAME> for full model deletion
183
+ or <ORGANIZATION-NAME>/<TEAMSPACE-NAME>/<MODEL-NAME>:<VERSION> for version deletion.
184
+ """
185
+ name = _extend_model_name_with_teamspace(name)
186
+ org_name, teamspace_name, model_name, version = _parse_org_teamspace_model_version(name)
187
+ teamspace = _get_teamspace(name=teamspace_name, organization=org_name)
188
+ teamspace.delete_model(name=f"{model_name}:{version}" if version else model_name)
189
+
190
+
191
+ def list_model_versions(
192
+ name: str,
193
+ ) -> List[V1ModelVersionArchive]:
194
+ """List all versions of a model.
195
+
196
+ Args:
197
+ name: The name of the model you want to list versions for.
198
+ This should have the format <ORGANIZATION-NAME>/<TEAMSPACE-NAME>/<MODEL-NAME>.
199
+ """
200
+ name = _extend_model_name_with_teamspace(name)
201
+ org_name, teamspace_name, model_name, _ = _parse_org_teamspace_model_version(name)
202
+ teamspace = _get_teamspace(name=teamspace_name, organization=org_name)
203
+ return teamspace.list_model_versions(name=model_name)
@@ -40,6 +40,10 @@ class Organization(Owner):
40
40
  """The organization's ID."""
41
41
  return self._org.id
42
42
 
43
+ @property
44
+ def default_cloud_account(self) -> Optional[str]:
45
+ return self._org.preferred_cluster or None
46
+
43
47
  def __repr__(self) -> str:
44
48
  """Returns reader friendly representation."""
45
49
  return f"Organization(name={self.name})"
lightning_sdk/owner.py CHANGED
@@ -2,12 +2,13 @@ from abc import ABC, abstractmethod
2
2
  from typing import TYPE_CHECKING, List
3
3
 
4
4
  from lightning_sdk.api import TeamspaceApi
5
+ from lightning_sdk.utils.logging import TrackCallsABCMeta
5
6
 
6
7
  if TYPE_CHECKING:
7
8
  from lightning_sdk.teamspace import Teamspace
8
9
 
9
10
 
10
- class Owner(ABC):
11
+ class Owner(ABC, metaclass=TrackCallsABCMeta):
11
12
  """Represents an owner of teamspaces and studios."""
12
13
 
13
14
  def __init__(self) -> None: