lightning-sdk 0.2.12__py3-none-any.whl → 0.2.13__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 +1 -1
- lightning_sdk/api/llm_api.py +17 -5
- lightning_sdk/api/studio_api.py +17 -0
- lightning_sdk/cli/entrypoint.py +1 -1
- lightning_sdk/cli/serve.py +149 -39
- lightning_sdk/deployment/deployment.py +2 -2
- lightning_sdk/lightning_cloud/openapi/__init__.py +6 -0
- lightning_sdk/lightning_cloud/openapi/api/__init__.py +1 -0
- lightning_sdk/lightning_cloud/openapi/api/git_credentials_service_api.py +497 -0
- lightning_sdk/lightning_cloud/openapi/api/jobs_service_api.py +14 -5
- lightning_sdk/lightning_cloud/openapi/models/__init__.py +5 -0
- lightning_sdk/lightning_cloud/openapi/models/deployments_id_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_accelerator.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_security_options.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_spec.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_git_credentials_request.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_git_credentials_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_state.py +2 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_git_credentials.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_git_credentials_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_job_resources_response.py +15 -15
- lightning_sdk/lightning_cloud/openapi/models/v1_nebius_direct_v1.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +53 -1
- lightning_sdk/llm/llm.py +92 -30
- lightning_sdk/plugin.py +19 -0
- lightning_sdk/studio.py +33 -0
- {lightning_sdk-0.2.12.dist-info → lightning_sdk-0.2.13.dist-info}/METADATA +1 -1
- {lightning_sdk-0.2.12.dist-info → lightning_sdk-0.2.13.dist-info}/RECORD +34 -28
- /lightning_sdk/cli/{docker.py → docker_cli.py} +0 -0
- {lightning_sdk-0.2.12.dist-info → lightning_sdk-0.2.13.dist-info}/LICENSE +0 -0
- {lightning_sdk-0.2.12.dist-info → lightning_sdk-0.2.13.dist-info}/WHEEL +0 -0
- {lightning_sdk-0.2.12.dist-info → lightning_sdk-0.2.13.dist-info}/entry_points.txt +0 -0
- {lightning_sdk-0.2.12.dist-info → lightning_sdk-0.2.13.dist-info}/top_level.txt +0 -0
lightning_sdk/__init__.py
CHANGED
lightning_sdk/api/llm_api.py
CHANGED
|
@@ -8,16 +8,25 @@ class LLMApi:
|
|
|
8
8
|
def __init__(self) -> None:
|
|
9
9
|
self._client = LightningClient(retry=False, max_tries=0)
|
|
10
10
|
|
|
11
|
-
def list_models(self) -> List[str]:
|
|
12
|
-
result = self._client.assistants_service_list_assistant_managed_endpoints()
|
|
13
|
-
return result.endpoints
|
|
14
|
-
|
|
15
11
|
def get_public_models(self) -> List[str]:
|
|
16
12
|
result = self._client.assistants_service_list_assistants(published=True)
|
|
17
13
|
return result.assistants
|
|
18
14
|
|
|
15
|
+
def get_org_models(self, org_id: str) -> List[str]:
|
|
16
|
+
result = self._client.assistants_service_list_assistants(org_id=org_id)
|
|
17
|
+
return result.assistants
|
|
18
|
+
|
|
19
|
+
def get_user_models(self, user_id: str) -> List[str]:
|
|
20
|
+
result = self._client.assistants_service_list_assistants(user_id=user_id)
|
|
21
|
+
return result.assistants
|
|
22
|
+
|
|
19
23
|
def start_conversation(
|
|
20
|
-
self,
|
|
24
|
+
self,
|
|
25
|
+
prompt: str,
|
|
26
|
+
system_prompt: Optional[str],
|
|
27
|
+
max_completion_tokens: Optional[int],
|
|
28
|
+
assistant_id: str,
|
|
29
|
+
conversation_id: Optional[str],
|
|
21
30
|
) -> V1ConversationResponseChunk:
|
|
22
31
|
body = {
|
|
23
32
|
"message": {
|
|
@@ -29,6 +38,9 @@ class LLMApi:
|
|
|
29
38
|
}
|
|
30
39
|
],
|
|
31
40
|
},
|
|
41
|
+
"max_completion_tokens": max_completion_tokens,
|
|
32
42
|
}
|
|
43
|
+
if conversation_id:
|
|
44
|
+
body["conversation_id"] = conversation_id
|
|
33
45
|
result = self._client.assistants_service_start_conversation(body, assistant_id)
|
|
34
46
|
return result.result
|
lightning_sdk/api/studio_api.py
CHANGED
|
@@ -36,13 +36,16 @@ from lightning_sdk.lightning_cloud.openapi import (
|
|
|
36
36
|
V1CloudSpaceInstanceConfig,
|
|
37
37
|
V1CloudSpaceSeedFile,
|
|
38
38
|
V1CloudSpaceState,
|
|
39
|
+
V1EndpointType,
|
|
39
40
|
V1GetCloudSpaceInstanceStatusResponse,
|
|
40
41
|
V1GetLongRunningCommandInCloudSpaceResponse,
|
|
41
42
|
V1LoginRequest,
|
|
42
43
|
V1Plugin,
|
|
43
44
|
V1PluginsListResponse,
|
|
45
|
+
V1UpstreamCloudSpace,
|
|
44
46
|
V1UserRequestedComputeConfig,
|
|
45
47
|
)
|
|
48
|
+
from lightning_sdk.lightning_cloud.openapi.models import ProjectIdEndpointsBody
|
|
46
49
|
from lightning_sdk.lightning_cloud.rest_client import LightningClient
|
|
47
50
|
from lightning_sdk.machine import Machine
|
|
48
51
|
|
|
@@ -668,6 +671,20 @@ class StudioApi:
|
|
|
668
671
|
interruptible=interruptible,
|
|
669
672
|
)
|
|
670
673
|
|
|
674
|
+
def start_new_port(self, teamspace_id: str, studio_id: str, name: str, port: int, auto_start: bool = False) -> str:
|
|
675
|
+
"""Starts a new port to the given Studio."""
|
|
676
|
+
endpoint = self._client.endpoint_service_create_endpoint(
|
|
677
|
+
project_id=teamspace_id,
|
|
678
|
+
body=ProjectIdEndpointsBody(
|
|
679
|
+
name=name,
|
|
680
|
+
ports=[str(port)],
|
|
681
|
+
cloudspace=V1UpstreamCloudSpace(
|
|
682
|
+
cloudspace_id=studio_id, port=str(port), type=V1EndpointType.PLUGIN_PORT, auto_start=auto_start
|
|
683
|
+
),
|
|
684
|
+
),
|
|
685
|
+
)
|
|
686
|
+
return endpoint.urls[0]
|
|
687
|
+
|
|
671
688
|
def _create_app(
|
|
672
689
|
self, studio_id: str, teamspace_id: str, cloud_account: str, plugin_type: str, **other_arguments: Any
|
|
673
690
|
) -> Externalv1LightningappInstance:
|
lightning_sdk/cli/entrypoint.py
CHANGED
|
@@ -14,7 +14,7 @@ from lightning_sdk.cli.configure import configure
|
|
|
14
14
|
from lightning_sdk.cli.connect import connect
|
|
15
15
|
from lightning_sdk.cli.create import create
|
|
16
16
|
from lightning_sdk.cli.delete import delete
|
|
17
|
-
from lightning_sdk.cli.
|
|
17
|
+
from lightning_sdk.cli.docker_cli import dockerize
|
|
18
18
|
from lightning_sdk.cli.download import download
|
|
19
19
|
from lightning_sdk.cli.generate import generate
|
|
20
20
|
from lightning_sdk.cli.inspect import inspect
|
lightning_sdk/cli/serve.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import concurrent.futures
|
|
1
2
|
import os
|
|
2
3
|
import socket
|
|
3
4
|
import subprocess
|
|
@@ -7,7 +8,7 @@ from datetime import datetime
|
|
|
7
8
|
from enum import Enum
|
|
8
9
|
from pathlib import Path
|
|
9
10
|
from threading import Thread
|
|
10
|
-
from typing import List, Optional, TypedDict, Union
|
|
11
|
+
from typing import Dict, List, Optional, TypedDict, Union
|
|
11
12
|
from urllib.parse import urlencode
|
|
12
13
|
|
|
13
14
|
import click
|
|
@@ -20,12 +21,18 @@ from lightning_sdk.api import UserApi
|
|
|
20
21
|
from lightning_sdk.api.lit_container_api import LitContainerApi
|
|
21
22
|
from lightning_sdk.api.utils import _get_registry_url
|
|
22
23
|
from lightning_sdk.cli.teamspace_menu import _TeamspacesMenu
|
|
24
|
+
from lightning_sdk.cli.upload import (
|
|
25
|
+
_dump_current_upload_state,
|
|
26
|
+
_resolve_previous_upload_state,
|
|
27
|
+
_start_parallel_upload,
|
|
28
|
+
)
|
|
23
29
|
from lightning_sdk.lightning_cloud import env
|
|
24
30
|
from lightning_sdk.lightning_cloud.login import Auth, AuthServer
|
|
25
31
|
from lightning_sdk.lightning_cloud.openapi import V1CloudSpace
|
|
26
32
|
from lightning_sdk.lightning_cloud.rest_client import LightningClient
|
|
27
33
|
from lightning_sdk.serve import _LitServeDeployer
|
|
28
|
-
from lightning_sdk.
|
|
34
|
+
from lightning_sdk.studio import Studio
|
|
35
|
+
from lightning_sdk.utils.resolve import _get_authed_user, _get_studio_url, _resolve_teamspace
|
|
29
36
|
|
|
30
37
|
_MACHINE_VALUES = tuple([machine.name for machine in Machine.__dict__.values() if isinstance(machine, Machine)])
|
|
31
38
|
_POLL_TIMEOUT = 600
|
|
@@ -86,7 +93,14 @@ def deploy() -> None:
|
|
|
86
93
|
default="CPU",
|
|
87
94
|
show_default=True,
|
|
88
95
|
type=click.Choice(_MACHINE_VALUES),
|
|
89
|
-
help="
|
|
96
|
+
help="Machine type to deploy the API on. Defaults to CPU.",
|
|
97
|
+
)
|
|
98
|
+
@click.option(
|
|
99
|
+
"--devbox",
|
|
100
|
+
default=None,
|
|
101
|
+
show_default=True,
|
|
102
|
+
type=click.Choice(_MACHINE_VALUES),
|
|
103
|
+
help="Machine type to build the API on. Setting this argument will open the server in a Studio.",
|
|
90
104
|
)
|
|
91
105
|
@click.option(
|
|
92
106
|
"--interruptible",
|
|
@@ -134,7 +148,8 @@ def api(
|
|
|
134
148
|
local: bool,
|
|
135
149
|
name: Optional[str],
|
|
136
150
|
non_interactive: bool,
|
|
137
|
-
machine: str,
|
|
151
|
+
machine: Optional[str],
|
|
152
|
+
devbox: Optional[str],
|
|
138
153
|
interruptible: bool,
|
|
139
154
|
teamspace: Optional[str],
|
|
140
155
|
org: Optional[str],
|
|
@@ -151,9 +166,10 @@ def api(
|
|
|
151
166
|
script_path=script_path,
|
|
152
167
|
easy=easy,
|
|
153
168
|
local=local,
|
|
154
|
-
|
|
169
|
+
name=name,
|
|
155
170
|
non_interactive=non_interactive,
|
|
156
171
|
machine=machine,
|
|
172
|
+
devbox=devbox,
|
|
157
173
|
interruptible=interruptible,
|
|
158
174
|
teamspace=teamspace,
|
|
159
175
|
org=org,
|
|
@@ -171,10 +187,11 @@ def api_impl(
|
|
|
171
187
|
script_path: Union[str, Path],
|
|
172
188
|
easy: bool = False,
|
|
173
189
|
local: bool = False,
|
|
174
|
-
|
|
190
|
+
name: Optional[str] = None,
|
|
175
191
|
tag: Optional[str] = None,
|
|
176
192
|
non_interactive: bool = False,
|
|
177
193
|
machine: str = "CPU",
|
|
194
|
+
devbox: Optional[str] = None,
|
|
178
195
|
interruptible: bool = False,
|
|
179
196
|
teamspace: Optional[str] = None,
|
|
180
197
|
org: Optional[str] = None,
|
|
@@ -196,41 +213,44 @@ def api_impl(
|
|
|
196
213
|
|
|
197
214
|
_LitServeDeployer.generate_client() if easy else None
|
|
198
215
|
|
|
199
|
-
if not
|
|
216
|
+
if not name:
|
|
200
217
|
timestr = datetime.now().strftime("%b-%d-%H_%M")
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
if not local:
|
|
204
|
-
repository = repository or "litserve-model"
|
|
205
|
-
machine = Machine.from_str(machine)
|
|
206
|
-
return _handle_cloud(
|
|
207
|
-
script_path,
|
|
208
|
-
console,
|
|
209
|
-
repository=repository,
|
|
210
|
-
tag=tag,
|
|
211
|
-
non_interactive=non_interactive,
|
|
212
|
-
machine=machine,
|
|
213
|
-
interruptible=interruptible,
|
|
214
|
-
teamspace=teamspace,
|
|
215
|
-
org=org,
|
|
216
|
-
user=user,
|
|
217
|
-
cloud_account=cloud_account,
|
|
218
|
-
port=port,
|
|
219
|
-
min_replica=min_replica,
|
|
220
|
-
max_replica=max_replica,
|
|
221
|
-
replicas=replicas,
|
|
222
|
-
include_credentials=include_credentials,
|
|
223
|
-
)
|
|
218
|
+
name = f"litserve-{timestr}".lower()
|
|
224
219
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
220
|
+
if local:
|
|
221
|
+
try:
|
|
222
|
+
subprocess.run(
|
|
223
|
+
["python", str(script_path)],
|
|
224
|
+
check=True,
|
|
225
|
+
text=True,
|
|
226
|
+
)
|
|
227
|
+
return None
|
|
228
|
+
except subprocess.CalledProcessError as e:
|
|
229
|
+
error_msg = f"Script execution failed with exit code {e.returncode}\nstdout: {e.stdout}\nstderr: {e.stderr}"
|
|
230
|
+
raise RuntimeError(error_msg) from None
|
|
231
|
+
|
|
232
|
+
if devbox:
|
|
233
|
+
return _handle_devbox(name, script_path, console, non_interactive, devbox, interruptible, teamspace, org, user)
|
|
234
|
+
|
|
235
|
+
machine = Machine.from_str(machine)
|
|
236
|
+
return _handle_cloud(
|
|
237
|
+
script_path,
|
|
238
|
+
console,
|
|
239
|
+
repository=name,
|
|
240
|
+
tag=tag,
|
|
241
|
+
non_interactive=non_interactive,
|
|
242
|
+
machine=machine,
|
|
243
|
+
interruptible=interruptible,
|
|
244
|
+
teamspace=teamspace,
|
|
245
|
+
org=org,
|
|
246
|
+
user=user,
|
|
247
|
+
cloud_account=cloud_account,
|
|
248
|
+
port=port,
|
|
249
|
+
min_replica=min_replica,
|
|
250
|
+
max_replica=max_replica,
|
|
251
|
+
replicas=replicas,
|
|
252
|
+
include_credentials=include_credentials,
|
|
253
|
+
)
|
|
234
254
|
|
|
235
255
|
|
|
236
256
|
class _AuthServer(AuthServer):
|
|
@@ -433,6 +453,96 @@ def _upload_container(
|
|
|
433
453
|
return True
|
|
434
454
|
|
|
435
455
|
|
|
456
|
+
# TODO: Move the rest of the devbox logic here
|
|
457
|
+
class _LitServeDevbox:
|
|
458
|
+
"""Build LitServe API in a Studio."""
|
|
459
|
+
|
|
460
|
+
def resolve_previous_upload(self, studio: Studio, folder: str) -> Dict[str, str]:
|
|
461
|
+
remote_path = "."
|
|
462
|
+
pairs = {}
|
|
463
|
+
for root, _, files in os.walk(folder):
|
|
464
|
+
rel_root = os.path.relpath(root, folder)
|
|
465
|
+
for f in files:
|
|
466
|
+
pairs[os.path.join(root, f)] = os.path.join(remote_path, rel_root, f)
|
|
467
|
+
return _resolve_previous_upload_state(studio, remote_path, pairs)
|
|
468
|
+
|
|
469
|
+
def upload_folder(self, studio: Studio, folder: str, upload_state: Dict[str, str]) -> None:
|
|
470
|
+
with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:
|
|
471
|
+
futures = _start_parallel_upload(executor, studio, upload_state)
|
|
472
|
+
total_files = len(upload_state)
|
|
473
|
+
|
|
474
|
+
with Progress(
|
|
475
|
+
SpinnerColumn(),
|
|
476
|
+
TextColumn("[progress.description]{task.description}"),
|
|
477
|
+
TimeElapsedColumn(),
|
|
478
|
+
console=Console(),
|
|
479
|
+
transient=True,
|
|
480
|
+
) as progress:
|
|
481
|
+
upload_task = progress.add_task(f"[cyan]Uploading {total_files} files to Studio...", total=total_files)
|
|
482
|
+
for f in concurrent.futures.as_completed(futures):
|
|
483
|
+
upload_state.pop(f.result())
|
|
484
|
+
_dump_current_upload_state(studio, ".", upload_state)
|
|
485
|
+
progress.update(upload_task, advance=1)
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
def _handle_devbox(
|
|
489
|
+
name: str,
|
|
490
|
+
script_path: Path,
|
|
491
|
+
console: Console,
|
|
492
|
+
non_interactive: bool = False,
|
|
493
|
+
devbox: Machine = "CPU",
|
|
494
|
+
interruptible: bool = False,
|
|
495
|
+
teamspace: Optional[str] = None,
|
|
496
|
+
org: Optional[str] = None,
|
|
497
|
+
user: Optional[str] = None,
|
|
498
|
+
) -> None:
|
|
499
|
+
if script_path.suffix != ".py":
|
|
500
|
+
console.print("❌ Error: Only Python files (.py) are supported for development servers", style="red")
|
|
501
|
+
return
|
|
502
|
+
|
|
503
|
+
resolved_teamspace = select_teamspace(teamspace, org, user)
|
|
504
|
+
studio = Studio(name=name, teamspace=resolved_teamspace)
|
|
505
|
+
lit_devbox = _LitServeDevbox()
|
|
506
|
+
|
|
507
|
+
studio_url = _get_studio_url(studio, turn_on=True)
|
|
508
|
+
pathlib_path = Path(script_path).resolve()
|
|
509
|
+
ok = False
|
|
510
|
+
studio_path = f"{studio.owner.name}/{studio.teamspace.name}/{studio.name}"
|
|
511
|
+
|
|
512
|
+
console.print("\n=== Lightning Studio Setup ===")
|
|
513
|
+
console.print(f"🔧 [bold]Setting up Studio:[/bold] {studio_path}")
|
|
514
|
+
console.print(f"📁 [bold]Local project:[/bold] {pathlib_path.parent}")
|
|
515
|
+
|
|
516
|
+
upload_state = lit_devbox.resolve_previous_upload(studio, pathlib_path.parent)
|
|
517
|
+
if non_interactive:
|
|
518
|
+
console.print(f"🌐 [bold]Opening Studio:[/bold] [link={studio_url}]{studio_url}[/link]")
|
|
519
|
+
ok = webbrowser.open(studio_url)
|
|
520
|
+
else:
|
|
521
|
+
if Confirm.ask("Would you like to open your Studio in the browser?", default=True):
|
|
522
|
+
console.print(f"🌐 [bold]Opening Studio:[/bold] [link={studio_url}]{studio_url}[/link]")
|
|
523
|
+
ok = webbrowser.open(studio_url)
|
|
524
|
+
|
|
525
|
+
if not ok:
|
|
526
|
+
console.print(f"🔗 [bold]Access Studio:[/bold] [link={studio_url}]{studio_url}[/link]")
|
|
527
|
+
|
|
528
|
+
console.print("\n⚡ Initializing Studio (this typically takes 1-2 minutes)...")
|
|
529
|
+
studio.start(machine=devbox, interruptible=interruptible)
|
|
530
|
+
studio.install_plugin("custom-port")
|
|
531
|
+
console.print("🔌 Configuring server port...")
|
|
532
|
+
studio.run_plugin("custom-port", port=8000) # TODO: Remove hardcoded port and fetch from LitServe
|
|
533
|
+
|
|
534
|
+
console.print("📤 Syncing project files to Studio...")
|
|
535
|
+
lit_devbox.upload_folder(studio, pathlib_path.parent, upload_state)
|
|
536
|
+
|
|
537
|
+
# Add completion message with next steps
|
|
538
|
+
console.print("\n✅ Studio ready!")
|
|
539
|
+
console.print("\n📋 [bold]Next steps:[/bold]")
|
|
540
|
+
console.print(" [bold]1.[/bold] Server code will be available in the Studio")
|
|
541
|
+
console.print(" [bold]2.[/bold] The Studio is now running with the specified configuration")
|
|
542
|
+
console.print(" [bold]3.[/bold] Modify and run your server directly in the Studio")
|
|
543
|
+
# TODO: Once server running is implemented
|
|
544
|
+
|
|
545
|
+
|
|
436
546
|
def _handle_cloud(
|
|
437
547
|
script_path: Union[str, Path],
|
|
438
548
|
console: Console,
|
|
@@ -283,7 +283,7 @@ class Deployment:
|
|
|
283
283
|
health_check=health_check,
|
|
284
284
|
release_strategy=release_strategy,
|
|
285
285
|
quantity=quantity,
|
|
286
|
-
include_credentials=include_credentials
|
|
286
|
+
include_credentials=include_credentials,
|
|
287
287
|
)
|
|
288
288
|
|
|
289
289
|
def stop(self) -> None:
|
|
@@ -362,7 +362,7 @@ class Deployment:
|
|
|
362
362
|
return None
|
|
363
363
|
|
|
364
364
|
@property
|
|
365
|
-
def env(self) -> Optional[
|
|
365
|
+
def env(self) -> Optional[List[Union[Secret, Env]]]:
|
|
366
366
|
"""The env configuration of the deployment."""
|
|
367
367
|
if self._deployment:
|
|
368
368
|
self._deployment = self._deployment_api.get_deployment_by_name(self._name, self._teamspace.id)
|
|
@@ -36,6 +36,7 @@ from lightning_sdk.lightning_cloud.openapi.api.deployment_templates_service_api
|
|
|
36
36
|
from lightning_sdk.lightning_cloud.openapi.api.endpoint_service_api import EndpointServiceApi
|
|
37
37
|
from lightning_sdk.lightning_cloud.openapi.api.experiments_service_api import ExperimentsServiceApi
|
|
38
38
|
from lightning_sdk.lightning_cloud.openapi.api.file_system_service_api import FileSystemServiceApi
|
|
39
|
+
from lightning_sdk.lightning_cloud.openapi.api.git_credentials_service_api import GitCredentialsServiceApi
|
|
39
40
|
from lightning_sdk.lightning_cloud.openapi.api.jobs_service_api import JobsServiceApi
|
|
40
41
|
from lightning_sdk.lightning_cloud.openapi.api.lightningapp_instance_service_api import LightningappInstanceServiceApi
|
|
41
42
|
from lightning_sdk.lightning_cloud.openapi.api.lightningapp_v2_service_api import LightningappV2ServiceApi
|
|
@@ -345,6 +346,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_create_cluster_request impo
|
|
|
345
346
|
from lightning_sdk.lightning_cloud.openapi.models.v1_create_cluster_response import V1CreateClusterResponse
|
|
346
347
|
from lightning_sdk.lightning_cloud.openapi.models.v1_create_deployment_request import V1CreateDeploymentRequest
|
|
347
348
|
from lightning_sdk.lightning_cloud.openapi.models.v1_create_deployment_template_request import V1CreateDeploymentTemplateRequest
|
|
349
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_create_git_credentials_request import V1CreateGitCredentialsRequest
|
|
348
350
|
from lightning_sdk.lightning_cloud.openapi.models.v1_create_job_request import V1CreateJobRequest
|
|
349
351
|
from lightning_sdk.lightning_cloud.openapi.models.v1_create_lit_dataset_multi_part_upload_response import V1CreateLitDatasetMultiPartUploadResponse
|
|
350
352
|
from lightning_sdk.lightning_cloud.openapi.models.v1_create_lit_page_request import V1CreateLitPageRequest
|
|
@@ -391,6 +393,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_delete_deployment_release_r
|
|
|
391
393
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_deployment_response import V1DeleteDeploymentResponse
|
|
392
394
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_endpoint_response import V1DeleteEndpointResponse
|
|
393
395
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_file_endpoint_response import V1DeleteFileEndpointResponse
|
|
396
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_git_credentials_response import V1DeleteGitCredentialsResponse
|
|
394
397
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_index_response import V1DeleteIndexResponse
|
|
395
398
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_job_response import V1DeleteJobResponse
|
|
396
399
|
from lightning_sdk.lightning_cloud.openapi.models.v1_delete_lightning_run_response import V1DeleteLightningRunResponse
|
|
@@ -534,6 +537,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_get_user_notification_prefe
|
|
|
534
537
|
from lightning_sdk.lightning_cloud.openapi.models.v1_get_user_response import V1GetUserResponse
|
|
535
538
|
from lightning_sdk.lightning_cloud.openapi.models.v1_get_user_storage_breakdown_response import V1GetUserStorageBreakdownResponse
|
|
536
539
|
from lightning_sdk.lightning_cloud.openapi.models.v1_get_user_storage_response import V1GetUserStorageResponse
|
|
540
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_git_credentials import V1GitCredentials
|
|
537
541
|
from lightning_sdk.lightning_cloud.openapi.models.v1_google_cloud_direct_v1 import V1GoogleCloudDirectV1
|
|
538
542
|
from lightning_sdk.lightning_cloud.openapi.models.v1_google_cloud_direct_v1_status import V1GoogleCloudDirectV1Status
|
|
539
543
|
from lightning_sdk.lightning_cloud.openapi.models.v1_header import V1Header
|
|
@@ -625,6 +629,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_slurm_jobs_
|
|
|
625
629
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_snowflake_response import V1ListFilesystemSnowflakeResponse
|
|
626
630
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_gallery_components_response import V1ListGalleryComponentsResponse
|
|
627
631
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_gallery_lightningapps_response import V1ListGalleryLightningappsResponse
|
|
632
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_list_git_credentials_response import V1ListGitCredentialsResponse
|
|
628
633
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_job_files_response import V1ListJobFilesResponse
|
|
629
634
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_job_resources_response import V1ListJobResourcesResponse
|
|
630
635
|
from lightning_sdk.lightning_cloud.openapi.models.v1_list_jobs_response import V1ListJobsResponse
|
|
@@ -720,6 +725,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_multi_machine_job_fault_tol
|
|
|
720
725
|
from lightning_sdk.lightning_cloud.openapi.models.v1_multi_machine_job_state import V1MultiMachineJobState
|
|
721
726
|
from lightning_sdk.lightning_cloud.openapi.models.v1_multi_machine_job_status import V1MultiMachineJobStatus
|
|
722
727
|
from lightning_sdk.lightning_cloud.openapi.models.v1_named_get_logger_metrics import V1NamedGetLoggerMetrics
|
|
728
|
+
from lightning_sdk.lightning_cloud.openapi.models.v1_nebius_direct_v1 import V1NebiusDirectV1
|
|
723
729
|
from lightning_sdk.lightning_cloud.openapi.models.v1_network_config import V1NetworkConfig
|
|
724
730
|
from lightning_sdk.lightning_cloud.openapi.models.v1_new_feature import V1NewFeature
|
|
725
731
|
from lightning_sdk.lightning_cloud.openapi.models.v1_notification_preference import V1NotificationPreference
|
|
@@ -17,6 +17,7 @@ from lightning_sdk.lightning_cloud.openapi.api.deployment_templates_service_api
|
|
|
17
17
|
from lightning_sdk.lightning_cloud.openapi.api.endpoint_service_api import EndpointServiceApi
|
|
18
18
|
from lightning_sdk.lightning_cloud.openapi.api.experiments_service_api import ExperimentsServiceApi
|
|
19
19
|
from lightning_sdk.lightning_cloud.openapi.api.file_system_service_api import FileSystemServiceApi
|
|
20
|
+
from lightning_sdk.lightning_cloud.openapi.api.git_credentials_service_api import GitCredentialsServiceApi
|
|
20
21
|
from lightning_sdk.lightning_cloud.openapi.api.jobs_service_api import JobsServiceApi
|
|
21
22
|
from lightning_sdk.lightning_cloud.openapi.api.lightningapp_instance_service_api import LightningappInstanceServiceApi
|
|
22
23
|
from lightning_sdk.lightning_cloud.openapi.api.lightningapp_v2_service_api import LightningappV2ServiceApi
|