lightning-sdk 0.2.4__py3-none-any.whl → 0.2.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 (103) hide show
  1. lightning_sdk/__init__.py +1 -1
  2. lightning_sdk/ai_hub.py +3 -1
  3. lightning_sdk/api/ai_hub_api.py +15 -0
  4. lightning_sdk/api/studio_api.py +0 -8
  5. lightning_sdk/deployment/deployment.py +32 -4
  6. lightning_sdk/lightning_cloud/openapi/__init__.py +49 -1
  7. lightning_sdk/lightning_cloud/openapi/api/__init__.py +4 -0
  8. lightning_sdk/lightning_cloud/openapi/api/cloud_space_environment_template_service_api.py +537 -0
  9. lightning_sdk/lightning_cloud/openapi/api/cluster_service_api.py +10 -6
  10. lightning_sdk/lightning_cloud/openapi/api/lit_dataset_service_api.py +1973 -0
  11. lightning_sdk/lightning_cloud/openapi/api/lit_registry_service_api.py +5 -1
  12. lightning_sdk/lightning_cloud/openapi/api/models_store_api.py +20 -20
  13. lightning_sdk/lightning_cloud/openapi/api/pipeline_templates_service_api.py +339 -0
  14. lightning_sdk/lightning_cloud/openapi/api/pipelines_service_api.py +5 -1
  15. lightning_sdk/lightning_cloud/openapi/api/schedules_service_api.py +573 -0
  16. lightning_sdk/lightning_cloud/openapi/api/slurm_jobs_user_service_api.py +202 -0
  17. lightning_sdk/lightning_cloud/openapi/models/__init__.py +45 -1
  18. lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityblock_body.py +15 -15
  19. lightning_sdk/lightning_cloud/openapi/models/cluster_id_slurmusers_body.py +201 -0
  20. lightning_sdk/lightning_cloud/openapi/models/dataset_id_versions_body.py +149 -0
  21. lightning_sdk/lightning_cloud/openapi/models/dataset_id_visibility_body.py +149 -0
  22. lightning_sdk/lightning_cloud/openapi/models/environmenttemplates_id_body.py +227 -0
  23. lightning_sdk/lightning_cloud/openapi/models/externalv1_cloud_space_instance_status.py +69 -69
  24. lightning_sdk/lightning_cloud/openapi/models/litdatasets_dataset_id_body.py +149 -0
  25. lightning_sdk/lightning_cloud/openapi/models/orgs_id_body.py +27 -1
  26. lightning_sdk/lightning_cloud/openapi/models/pipelines_id_body.py +69 -17
  27. lightning_sdk/lightning_cloud/openapi/models/pipelinetemplates_id_body.py +331 -0
  28. lightning_sdk/lightning_cloud/openapi/models/project_id_litdatasets_body.py +227 -0
  29. lightning_sdk/lightning_cloud/openapi/models/project_id_pipelines_body.py +17 -17
  30. lightning_sdk/lightning_cloud/openapi/models/project_id_schedules_body.py +201 -0
  31. lightning_sdk/lightning_cloud/openapi/models/schedules_id_body.py +383 -0
  32. lightning_sdk/lightning_cloud/openapi/models/slurm_jobs_body.py +15 -15
  33. lightning_sdk/lightning_cloud/openapi/models/upload_id_complete_body1.py +149 -0
  34. lightning_sdk/lightning_cloud/openapi/models/upload_id_parts_body1.py +149 -0
  35. lightning_sdk/lightning_cloud/openapi/models/v1_agent_job.py +124 -20
  36. lightning_sdk/lightning_cloud/openapi/models/v1_assistant_model_status.py +2 -0
  37. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_provider.py +1 -0
  38. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space.py +27 -1
  39. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_template.py +253 -0
  40. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_spec.py +27 -1
  41. lightning_sdk/lightning_cloud/openapi/models/v1_complete_lit_dataset_multi_part_upload_response.py +97 -0
  42. lightning_sdk/lightning_cloud/openapi/models/v1_complete_lit_dataset_upload_response.py +97 -0
  43. lightning_sdk/lightning_cloud/openapi/models/v1_create_cloud_space_environment_template_request.py +149 -0
  44. lightning_sdk/lightning_cloud/openapi/models/v1_create_lit_dataset_multi_part_upload_response.py +123 -0
  45. lightning_sdk/lightning_cloud/openapi/models/v1_create_organization_request.py +27 -1
  46. lightning_sdk/lightning_cloud/openapi/models/v1_create_pipeline_template_request.py +383 -0
  47. lightning_sdk/lightning_cloud/openapi/models/v1_create_project_request.py +27 -1
  48. lightning_sdk/lightning_cloud/openapi/models/{v1_pipeline_schedule.py → v1_delete_cloud_space_environment_template_response.py} +32 -32
  49. lightning_sdk/lightning_cloud/openapi/models/v1_delete_lit_dataset_response.py +97 -0
  50. lightning_sdk/lightning_cloud/openapi/models/v1_delete_lit_dataset_version_response.py +97 -0
  51. lightning_sdk/lightning_cloud/openapi/models/v1_delete_schedule_response.py +175 -0
  52. lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_size_response.py +79 -1
  53. lightning_sdk/lightning_cloud/openapi/models/v1_get_lit_dataset_file_upload_urls_response.py +123 -0
  54. lightning_sdk/lightning_cloud/openapi/models/v1_get_lit_dataset_files_url_response.py +149 -0
  55. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_response.py +27 -1
  56. lightning_sdk/lightning_cloud/openapi/models/v1_instance_overprovisioning_spec.py +79 -27
  57. lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py +27 -1
  58. lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_environment_templates_response.py +123 -0
  59. lightning_sdk/lightning_cloud/openapi/models/v1_list_lit_dataset_versions_response.py +123 -0
  60. lightning_sdk/lightning_cloud/openapi/models/v1_list_lit_datasets_response.py +123 -0
  61. lightning_sdk/lightning_cloud/openapi/models/v1_list_schedules_response.py +123 -0
  62. lightning_sdk/lightning_cloud/openapi/models/v1_list_slurm_cluster_users_response.py +123 -0
  63. lightning_sdk/lightning_cloud/openapi/models/v1_lit_dataset.py +539 -0
  64. lightning_sdk/lightning_cloud/openapi/models/v1_lit_dataset_file.py +175 -0
  65. lightning_sdk/lightning_cloud/openapi/models/v1_lit_dataset_version_archive.py +435 -0
  66. lightning_sdk/lightning_cloud/openapi/models/v1_lit_registry_project.py +27 -1
  67. lightning_sdk/lightning_cloud/openapi/models/v1_lit_repository.py +27 -1
  68. lightning_sdk/lightning_cloud/openapi/models/v1_magic_link_login_request.py +27 -1
  69. lightning_sdk/lightning_cloud/openapi/models/v1_managed_model.py +107 -3
  70. lightning_sdk/lightning_cloud/openapi/models/v1_organization.py +53 -1
  71. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline.py +69 -17
  72. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_parameter.py +435 -0
  73. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_parameter_placement.py +149 -0
  74. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_parameter_placement_type.py +106 -0
  75. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_parameter_type.py +106 -0
  76. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_template.py +513 -0
  77. lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_template_visibility_type.py +105 -0
  78. lightning_sdk/lightning_cloud/openapi/models/v1_project_settings.py +27 -1
  79. lightning_sdk/lightning_cloud/openapi/models/v1_schedule.py +435 -0
  80. lightning_sdk/lightning_cloud/openapi/models/v1_schedule_resource_type.py +103 -0
  81. lightning_sdk/lightning_cloud/openapi/models/v1_slurm_cluster_user.py +227 -0
  82. lightning_sdk/lightning_cloud/openapi/models/v1_slurm_job.py +58 -6
  83. lightning_sdk/lightning_cloud/openapi/models/v1_slurm_node.py +31 -291
  84. lightning_sdk/lightning_cloud/openapi/models/v1_update_lit_dataset_visibility_response.py +123 -0
  85. lightning_sdk/lightning_cloud/openapi/models/v1_update_user_request.py +27 -1
  86. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +157 -105
  87. lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_endpoint_response.py +27 -1
  88. lightning_sdk/lightning_cloud/openapi/models/v1_voltage_park_direct_v1.py +203 -0
  89. lightning_sdk/lightning_cloud/openapi/models/version_default_body.py +29 -29
  90. lightning_sdk/lightning_cloud/openapi/models/version_default_body1.py +149 -0
  91. lightning_sdk/lightning_cloud/openapi/models/version_uploads_body1.py +123 -0
  92. lightning_sdk/lightning_cloud/openapi/models/versions_version_body1.py +123 -0
  93. lightning_sdk/lightning_cloud/rest_client.py +2 -0
  94. lightning_sdk/pipeline/types.py +28 -2
  95. lightning_sdk/pipeline/utils.py +1 -1
  96. lightning_sdk/plugin.py +0 -6
  97. lightning_sdk/utils/resolve.py +1 -0
  98. {lightning_sdk-0.2.4.dist-info → lightning_sdk-0.2.5.dist-info}/METADATA +1 -1
  99. {lightning_sdk-0.2.4.dist-info → lightning_sdk-0.2.5.dist-info}/RECORD +103 -55
  100. {lightning_sdk-0.2.4.dist-info → lightning_sdk-0.2.5.dist-info}/WHEEL +1 -1
  101. {lightning_sdk-0.2.4.dist-info → lightning_sdk-0.2.5.dist-info}/LICENSE +0 -0
  102. {lightning_sdk-0.2.4.dist-info → lightning_sdk-0.2.5.dist-info}/entry_points.txt +0 -0
  103. {lightning_sdk-0.2.4.dist-info → lightning_sdk-0.2.5.dist-info}/top_level.txt +0 -0
@@ -152,12 +152,20 @@ class Job:
152
152
  self.wait_for = wait_for
153
153
 
154
154
  def to_proto(self, teamspace: "Teamspace", cloud_account: str, shared_filesystem: bool) -> V1PipelineStep:
155
+ studio = _get_studio(self.studio)
156
+ if isinstance(studio, Studio):
157
+ if self.cloud_account is None:
158
+ self.cloud_account = studio.cloud_account
159
+ elif studio.cloud_account != self.cloud_account:
160
+ raise ValueError("The provided cloud account doesn't match the studio")
161
+
155
162
  _validate_cloud_account(cloud_account, self.cloud_account, shared_filesystem)
163
+
156
164
  body = JobApiV2._create_job_body(
157
165
  name=self.name,
158
166
  command=self.command,
159
167
  cloud_account=self.cloud_account or cloud_account,
160
- studio_id=None,
168
+ studio_id=studio._studio.id if isinstance(studio, Studio) else None,
161
169
  image=self.image,
162
170
  machine=self.machine,
163
171
  interruptible=self.interruptible,
@@ -220,13 +228,21 @@ class MMT:
220
228
  self.wait_for = wait_for
221
229
 
222
230
  def to_proto(self, teamspace: "Teamspace", cloud_account: str, shared_filesystem: bool) -> V1PipelineStep:
231
+ studio = _get_studio(self.studio)
232
+ if isinstance(studio, Studio):
233
+ if self.cloud_account is None:
234
+ self.cloud_account = studio.cloud_account
235
+ elif studio.cloud_account != self.cloud_account:
236
+ raise ValueError("The provided cloud account doesn't match the studio")
237
+
223
238
  _validate_cloud_account(cloud_account, self.cloud_account, shared_filesystem)
239
+
224
240
  body = MMTApiV2._create_mmt_body(
225
241
  name=self.name,
226
242
  num_machines=self.num_machines,
227
243
  command=self.command,
228
244
  cloud_account=self.cloud_account or cloud_account,
229
- studio_id=self.studio.studio_id if isinstance(self.studio, Studio) else None,
245
+ studio_id=studio._studio.id if isinstance(studio, Studio) else None,
230
246
  image=self.image,
231
247
  machine=self.machine,
232
248
  interruptible=self.interruptible,
@@ -266,3 +282,13 @@ def _validate_cloud_account(pipeline_cloud_account: str, step_cloud_account: str
266
282
  "With shared filesystem enabled, all the pipeline steps wait_for to be on the same cluster."
267
283
  f" Found {pipeline_cloud_account} and {step_cloud_account}"
268
284
  )
285
+
286
+
287
+ def _get_studio(studio: Union["Studio", str, None]) -> Union[Studio, None]:
288
+ if studio is None:
289
+ return None
290
+
291
+ if isinstance(studio, Studio):
292
+ return studio
293
+
294
+ return Studio(studio)
@@ -43,7 +43,7 @@ def prepare_steps(steps: List["V1PipelineStep"]) -> List["V1PipelineStep"]:
43
43
  else:
44
44
  for name in current_step.wait_for:
45
45
  if current_step.name == name:
46
- raise ValueError("You can only reference prior steps")
46
+ raise ValueError(f"You can only reference prior steps. Found {current_step.name}")
47
47
 
48
48
  if name not in name_to_step:
49
49
  raise ValueError(f"The step {current_step_idx} doesn't have a valid wait_for. Found {name}")
lightning_sdk/plugin.py CHANGED
@@ -303,7 +303,6 @@ class SlurmJobsPlugin(_Plugin):
303
303
  name: Optional[str] = None,
304
304
  cluster_id: Optional[str] = None,
305
305
  work_dir: str = "/home/lightning_manager",
306
- num_gpus: int = 1,
307
306
  sync_env: bool = True,
308
307
  cache_id: Optional[str] = None,
309
308
  ) -> "Externalv1LightningappInstance":
@@ -315,7 +314,6 @@ class SlurmJobsPlugin(_Plugin):
315
314
  cluster_id: The name of the SLURM Cluster to submit the job on.
316
315
  If the cluster_id isn't provided, the oldest running SLURM cluster will be selected.
317
316
  work_dir: The position where the the files will be created on the SLURM cluster.
318
- num_gpus: The number of GPUs requested.
319
317
  sync_env: Whether to force an environement sync.
320
318
  cache_id: A string to avoid re-downloading the Studio files to the SLURM cluster.
321
319
  If you update your files and don't change the cache_id, they won't be used.
@@ -326,9 +324,6 @@ class SlurmJobsPlugin(_Plugin):
326
324
  if work_dir == "":
327
325
  raise ValueError("The argument `work_dir` needs to be a proper path on the SLURM Cluster.")
328
326
 
329
- if num_gpus <= 0:
330
- raise ValueError("The argument `num_gpus` needs to be strictly positive.")
331
-
332
327
  if name is None:
333
328
  name = _run_name("slurm")
334
329
 
@@ -392,7 +387,6 @@ class SlurmJobsPlugin(_Plugin):
392
387
  sync_env=sync_env,
393
388
  work_dir=work_dir,
394
389
  service_id=service_id,
395
- num_gpus=num_gpus,
396
390
  cache_id=cache_id,
397
391
  ),
398
392
  )
@@ -77,6 +77,7 @@ def _resolve_org(org: Optional[Union[str, "Organization"]]) -> Optional["Organiz
77
77
 
78
78
  if isinstance(org, Organization):
79
79
  return org
80
+
80
81
  org = _resolve_org_name(org)
81
82
 
82
83
  if org is None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lightning_sdk
3
- Version: 0.2.4
3
+ Version: 0.2.5
4
4
  Summary: SDK to develop using Lightning AI Studios
5
5
  Author-email: Lightning-AI <justus@lightning.ai>
6
6
  License: MIT License