lightning-sdk 0.1.57__py3-none-any.whl → 0.2.0__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.
- lightning_sdk/__init__.py +5 -3
- lightning_sdk/api/deployment_api.py +23 -11
- lightning_sdk/api/job_api.py +42 -7
- lightning_sdk/api/lit_container_api.py +88 -22
- lightning_sdk/api/mmt_api.py +46 -8
- lightning_sdk/api/pipeline_api.py +50 -0
- lightning_sdk/api/teamspace_api.py +2 -2
- lightning_sdk/api/utils.py +15 -5
- lightning_sdk/cli/ai_hub.py +30 -65
- lightning_sdk/cli/coloring.py +60 -0
- lightning_sdk/cli/configure.py +25 -40
- lightning_sdk/cli/connect.py +7 -20
- lightning_sdk/cli/create.py +83 -0
- lightning_sdk/cli/delete.py +72 -75
- lightning_sdk/cli/docker.py +77 -0
- lightning_sdk/cli/download.py +71 -111
- lightning_sdk/cli/entrypoint.py +44 -65
- lightning_sdk/cli/generate.py +28 -43
- lightning_sdk/cli/inspect.py +22 -50
- lightning_sdk/cli/list.py +281 -222
- lightning_sdk/cli/mmts_menu.py +1 -1
- lightning_sdk/cli/open.py +62 -0
- lightning_sdk/cli/run.py +430 -263
- lightning_sdk/cli/serve.py +162 -189
- lightning_sdk/cli/start.py +55 -36
- lightning_sdk/cli/stop.py +97 -55
- lightning_sdk/cli/switch.py +53 -36
- lightning_sdk/cli/upload.py +318 -245
- lightning_sdk/deployment/__init__.py +2 -0
- lightning_sdk/deployment/deployment.py +33 -8
- lightning_sdk/lightning_cloud/openapi/__init__.py +21 -0
- lightning_sdk/lightning_cloud/openapi/api/__init__.py +1 -0
- lightning_sdk/lightning_cloud/openapi/api/assistants_service_api.py +10 -6
- lightning_sdk/lightning_cloud/openapi/api/jobs_service_api.py +355 -4
- lightning_sdk/lightning_cloud/openapi/api/lit_logger_service_api.py +4 -4
- lightning_sdk/lightning_cloud/openapi/api/lit_registry_service_api.py +14 -2
- lightning_sdk/lightning_cloud/openapi/api/pipelines_service_api.py +670 -0
- lightning_sdk/lightning_cloud/openapi/api/storage_service_api.py +303 -4
- lightning_sdk/lightning_cloud/openapi/models/__init__.py +20 -0
- lightning_sdk/lightning_cloud/openapi/models/agents_id_body.py +17 -69
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityreservations_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/create.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/create_deployment_request_defines_a_spec_for_the_job_that_allows_for_autoscaling_jobs.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/deployments_id_body.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/id_visibility_body1.py +1 -27
- lightning_sdk/lightning_cloud/openapi/models/id_visibility_body2.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/org_id_memberships_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/orgs_id_body.py +157 -1
- lightning_sdk/lightning_cloud/openapi/models/pipelines_id_body.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_pipelines_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/projects_id_body.py +157 -1
- lightning_sdk/lightning_cloud/openapi/models/slurm_jobs_body.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/uploads_upload_id_body.py +1 -27
- lightning_sdk/lightning_cloud/openapi/models/uploads_upload_id_body1.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_agent_job.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_assistant.py +17 -69
- lightning_sdk/lightning_cloud/openapi/models/v1_capacity_block_offering.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_artifact_event_type.py +1 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_accelerator.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_capacity_reservation.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_security_options.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_complete_upload_temporary_artifact_request.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_deployment_request.py +461 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_deployment_template_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_job_request.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_managed_endpoint_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_multi_machine_job_request.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_data_connection.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_pipeline_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_details.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_filestore_data_connection.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_job.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_mmt.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_find_capacity_block_offering_response.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_job.py +133 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_job_timing.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_list_pipelines_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_registry_artifact.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_repository.py +29 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_managed_model.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_state.py +2 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_organization.py +157 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline.py +487 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_step.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_step_status.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_step_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_project_settings.py +157 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_restart_timing.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_rule_resource.py +1 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_shared_filesystem.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_job.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_update_job_visibility_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_upload_temporary_artifact_request.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +95 -355
- lightning_sdk/lightning_cloud/openapi/models/validate.py +27 -1
- lightning_sdk/lightning_cloud/rest_client.py +4 -2
- lightning_sdk/machine.py +25 -1
- lightning_sdk/models.py +18 -12
- lightning_sdk/pipeline/__init__.py +4 -0
- lightning_sdk/pipeline/pipeline.py +109 -0
- lightning_sdk/pipeline/types.py +268 -0
- lightning_sdk/pipeline/utils.py +69 -0
- lightning_sdk/plugin.py +9 -10
- lightning_sdk/services/utilities.py +2 -2
- lightning_sdk/studio.py +5 -1
- lightning_sdk/teamspace.py +1 -1
- lightning_sdk/utils/resolve.py +12 -1
- {lightning_sdk-0.1.57.dist-info → lightning_sdk-0.2.0.dist-info}/METADATA +6 -8
- {lightning_sdk-0.1.57.dist-info → lightning_sdk-0.2.0.dist-info}/RECORD +117 -88
- lightning_sdk/cli/legacy.py +0 -135
- {lightning_sdk-0.1.57.dist-info → lightning_sdk-0.2.0.dist-info}/LICENSE +0 -0
- {lightning_sdk-0.1.57.dist-info → lightning_sdk-0.2.0.dist-info}/WHEEL +0 -0
- {lightning_sdk-0.1.57.dist-info → lightning_sdk-0.2.0.dist-info}/entry_points.txt +0 -0
- {lightning_sdk-0.1.57.dist-info → lightning_sdk-0.2.0.dist-info}/top_level.txt +0 -0
lightning_sdk/studio.py
CHANGED
|
@@ -160,7 +160,11 @@ class Studio:
|
|
|
160
160
|
status = self.status
|
|
161
161
|
|
|
162
162
|
if interruptible is None:
|
|
163
|
-
|
|
163
|
+
interruptible_override = os.environ.get("LIGHTNING_INTERRUPTIBLE_OVERRIDE", None)
|
|
164
|
+
if interruptible_override is not None:
|
|
165
|
+
interruptible = interruptible_override.lower() == "true"
|
|
166
|
+
else:
|
|
167
|
+
interruptible = self.teamspace.start_studios_on_interruptible
|
|
164
168
|
|
|
165
169
|
if status == Status.Running:
|
|
166
170
|
curr_machine = _machine_to_compute_name(self.machine) if self.machine is not None else None
|
lightning_sdk/teamspace.py
CHANGED
|
@@ -115,7 +115,7 @@ class Teamspace:
|
|
|
115
115
|
return self._teamspace.project_settings.preferred_cluster
|
|
116
116
|
|
|
117
117
|
@property
|
|
118
|
-
def
|
|
118
|
+
def start_studios_on_interruptible(self) -> bool:
|
|
119
119
|
return self._teamspace.project_settings.start_studio_on_spot_instance
|
|
120
120
|
|
|
121
121
|
@property
|
lightning_sdk/utils/resolve.py
CHANGED
|
@@ -5,10 +5,12 @@ from contextlib import contextmanager
|
|
|
5
5
|
from typing import TYPE_CHECKING, Generator, List, Optional, Tuple, Union
|
|
6
6
|
|
|
7
7
|
from lightning_sdk.api import TeamspaceApi, UserApi
|
|
8
|
+
from lightning_sdk.api.utils import _get_cloud_url
|
|
8
9
|
from lightning_sdk.machine import Machine
|
|
9
10
|
|
|
10
11
|
if TYPE_CHECKING:
|
|
11
12
|
from lightning_sdk.organization import Organization
|
|
13
|
+
from lightning_sdk.studio import Studio
|
|
12
14
|
from lightning_sdk.teamspace import Teamspace
|
|
13
15
|
from lightning_sdk.user import User
|
|
14
16
|
|
|
@@ -179,7 +181,7 @@ def skip_studio_init() -> Generator[None, None, None]:
|
|
|
179
181
|
def _parse_model_and_version(name: str) -> Tuple[str, str]:
|
|
180
182
|
parts = name.split(":")
|
|
181
183
|
if len(parts) == 1:
|
|
182
|
-
return parts[0], "
|
|
184
|
+
return parts[0], "default"
|
|
183
185
|
if len(parts) == 2:
|
|
184
186
|
return parts[0], parts[1]
|
|
185
187
|
# The rest of the validation for name and version happens in the backend
|
|
@@ -194,3 +196,12 @@ def in_studio() -> bool:
|
|
|
194
196
|
has_cloudspace_id = bool(os.getenv("LIGHTNING_CLOUD_SPACE_ID", None))
|
|
195
197
|
is_interactive = os.getenv("LIGHTNING_INTERACTIVE", "false") == "true"
|
|
196
198
|
return has_cloudspace_id and is_interactive
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
def _get_studio_url(studio: "Studio", turn_on: bool = False) -> str:
|
|
202
|
+
cloud_url = _get_cloud_url().replace(":443", "")
|
|
203
|
+
base_url = f"{cloud_url}/{studio.owner.name}/{studio.teamspace.name}/studios/{studio.name}/code"
|
|
204
|
+
|
|
205
|
+
if turn_on:
|
|
206
|
+
return f"{base_url}?turnOn=true"
|
|
207
|
+
return base_url
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: lightning_sdk
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: SDK to develop using Lightning AI Studios
|
|
5
5
|
Author-email: Lightning-AI <justus@lightning.ai>
|
|
6
6
|
License: MIT License
|
|
@@ -32,22 +32,20 @@ Requires-Python: >=3.8
|
|
|
32
32
|
Description-Content-Type: text/markdown
|
|
33
33
|
License-File: LICENSE
|
|
34
34
|
Requires-Dist: backoff
|
|
35
|
+
Requires-Dist: click
|
|
36
|
+
Requires-Dist: docker
|
|
35
37
|
Requires-Dist: fastapi
|
|
38
|
+
Requires-Dist: packaging
|
|
36
39
|
Requires-Dist: pyjwt
|
|
37
|
-
Requires-Dist: python-multipart
|
|
38
40
|
Requires-Dist: requests
|
|
39
41
|
Requires-Dist: rich
|
|
42
|
+
Requires-Dist: simple-term-menu
|
|
40
43
|
Requires-Dist: six
|
|
44
|
+
Requires-Dist: tqdm
|
|
41
45
|
Requires-Dist: urllib3
|
|
42
46
|
Requires-Dist: uvicorn
|
|
43
47
|
Requires-Dist: websocket-client
|
|
44
|
-
Requires-Dist: tqdm
|
|
45
|
-
Requires-Dist: fire
|
|
46
|
-
Requires-Dist: simple-term-menu
|
|
47
|
-
Requires-Dist: lightning-utilities
|
|
48
|
-
Requires-Dist: docker
|
|
49
48
|
Requires-Dist: wget
|
|
50
|
-
Requires-Dist: click
|
|
51
49
|
Provides-Extra: serve
|
|
52
50
|
Requires-Dist: litserve>=0.2.5; extra == "serve"
|
|
53
51
|
|