lightning-sdk 2025.8.6rc1__py3-none-any.whl → 2025.8.6rc2__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 CHANGED
@@ -32,6 +32,6 @@ __all__ = [
32
32
  "User",
33
33
  ]
34
34
 
35
- __version__ = "2025.08.06rc1"
35
+ __version__ = "2025.08.06rc2"
36
36
  _check_version_and_prompt_upgrade(__version__)
37
37
  _set_tqdm_envvars_noninteractive()
@@ -4,9 +4,15 @@ import datetime
4
4
  import json
5
5
  import os
6
6
  import threading
7
+ import time
7
8
  import warnings
8
9
  from typing import Any, AsyncGenerator, Dict, Generator, List, Optional, Union
10
+ from urllib.parse import urlencode
9
11
 
12
+ from rich.prompt import Confirm
13
+
14
+ from lightning_sdk.lightning_cloud import env
15
+ from lightning_sdk.lightning_cloud.login import Auth, AuthServer
10
16
  from lightning_sdk.lightning_cloud.openapi.models import (
11
17
  StreamResultOfV1ConversationResponseChunk,
12
18
  V1ConversationResponseChunk,
@@ -15,6 +21,48 @@ from lightning_sdk.lightning_cloud.openapi.models import (
15
21
  )
16
22
  from lightning_sdk.lightning_cloud.rest_client import LightningClient
17
23
 
24
+ LITAI_CODE = os.environ.get("LITAI_CODE", "x334uv8t7v")
25
+
26
+
27
+ class _AuthServer(AuthServer):
28
+ def __init__(self, model: str, *args: Any, **kwargs: Any) -> None:
29
+ self._model = model
30
+ super().__init__(*args, **kwargs)
31
+
32
+ def get_auth_url(self, port: int) -> str:
33
+ redirect_uri = f"http://localhost:{port}/login-complete"
34
+ params = urlencode({"redirectTo": redirect_uri, "okbhrt": LITAI_CODE, "litaimodel": self._model})
35
+ return f"{env.LIGHTNING_CLOUD_URL}/sign-in?{params}"
36
+
37
+
38
+ class _AuthLitAI(Auth):
39
+ def __init__(self, model: str, shall_confirm: bool = False) -> None:
40
+ super().__init__()
41
+ self._model = model
42
+ self._shall_confirm = shall_confirm
43
+
44
+ def _run_server(self) -> None:
45
+ if self._shall_confirm:
46
+ proceed = Confirm.ask(
47
+ "[bold yellow]LitAI needs to authenticate with Lightning AI.[/bold yellow]\n"
48
+ "This will open a browser window for login.\n"
49
+ "Do you want to continue?",
50
+ default=True,
51
+ )
52
+ if not proceed:
53
+ raise RuntimeError(
54
+ "Login cancelled. Please login at https://lightning.ai/sign-up. Or run `lightning login` to login."
55
+ )
56
+ print("Opening browser for authentication...")
57
+ print("Please come back to the terminal after logging in.")
58
+ time.sleep(1)
59
+ _AuthServer(self._model).login_with_browser(self)
60
+
61
+
62
+ def authenticate(model: str, shall_confirm: bool = True) -> None:
63
+ auth = _AuthLitAI(model, shall_confirm)
64
+ auth.authenticate()
65
+
18
66
 
19
67
  class LLMApi:
20
68
  def __init__(self) -> None:
lightning_sdk/llm/llm.py CHANGED
@@ -2,7 +2,7 @@ import os
2
2
  from typing import Any, AsyncGenerator, ClassVar, Dict, Generator, List, Optional, Tuple, Union
3
3
 
4
4
  from lightning_sdk.api import TeamspaceApi, UserApi
5
- from lightning_sdk.api.llm_api import LLMApi
5
+ from lightning_sdk.api.llm_api import LLMApi, authenticate
6
6
  from lightning_sdk.lightning_cloud.openapi.models.v1_conversation_response_chunk import V1ConversationResponseChunk
7
7
  from lightning_sdk.llm.public_assistants import PUBLIC_MODELS
8
8
 
@@ -56,9 +56,9 @@ class LLM:
56
56
  "(e.g., 'my-org/my-teamspace')."
57
57
  ) from e
58
58
 
59
+ self._model_provider, self._model_name = self._parse_model_name(name)
59
60
  self._get_auth_info(teamspace_name)
60
61
 
61
- self._model_provider, self._model_name = self._parse_model_name(name)
62
62
  self._enable_async = enable_async
63
63
 
64
64
  # Reuse LLMApi per teamspace (as billing is based on teamspace)
@@ -98,6 +98,7 @@ class LLM:
98
98
  if teamspace_name is None:
99
99
  # local users with no given teamspace
100
100
  try:
101
+ authenticate(model=f"{self.provider}/{self.name}")
101
102
  teamspace_api = TeamspaceApi()
102
103
  user_api = UserApi()
103
104
  authed_user = user_api._client.auth_service_get_user()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lightning_sdk
3
- Version: 2025.8.6rc1
3
+ Version: 2025.8.6rc2
4
4
  Summary: SDK to develop using Lightning AI Studios
5
5
  Author-email: Lightning-AI <justus@lightning.ai>
6
6
  License: MIT License
@@ -1,5 +1,5 @@
1
1
  docs/source/conf.py,sha256=r8yX20eC-4mHhMTd0SbQb5TlSWHhO6wnJ0VJ_FBFpag,13249
2
- lightning_sdk/__init__.py,sha256=qnwB64Jaqr_ltm_0_b24mmEhBByB07nWnm-woXvM0GI,1148
2
+ lightning_sdk/__init__.py,sha256=RU76LC0UCj27gaVXAzO6X0pZVp3K7w14hQhPwc_7rOA,1148
3
3
  lightning_sdk/agents.py,sha256=ly6Ma1j0ZgGPFyvPvMN28JWiB9dATIstFa5XM8pMi6I,1577
4
4
  lightning_sdk/ai_hub.py,sha256=iI1vNhgcz_Ff1c3rN1ogN7dK-r-HXRj6NMtS2cA14UA,6925
5
5
  lightning_sdk/base_studio.py,sha256=_Pwwl37R9GRd7t-f2kO5aQXiLNrP4sUtUNht2ZkP8LE,3678
@@ -26,7 +26,7 @@ lightning_sdk/api/deployment_api.py,sha256=v2AfoTDkQ-1CBh75FOjFkRpf6yc3U_edDy43u
26
26
  lightning_sdk/api/job_api.py,sha256=7spFPyotlSQ0Krx6WymslnpSQaaeOmFkydvhtg6p0Ic,16410
27
27
  lightning_sdk/api/license_api.py,sha256=XV3RhefyPQDYjwY9AaBZe4rByZTEAnsvLDxcdm9q0Wo,2438
28
28
  lightning_sdk/api/lit_container_api.py,sha256=jCJVwd-3MNjejL9FyvH89pzt-SeG3G8qCJD16iTMJAQ,11454
29
- lightning_sdk/api/llm_api.py,sha256=oc3OB1l0Jca5Nc6MAkfI-Nq-42hXJkgmkSqn22J4TeA,9261
29
+ lightning_sdk/api/llm_api.py,sha256=HSCpTyPknKAv6j0UYIzasXK2mFYt7FE3KF5TGUYvo2w,11049
30
30
  lightning_sdk/api/mmt_api.py,sha256=hIBsGiJ2qn5UjcHDxP5WUyKGT_AIFfpSHrQVwg0afBw,10699
31
31
  lightning_sdk/api/org_api.py,sha256=Ze3z_ATVrukobujV5YdC42DKj45Vuwl7X52q_Vr-o3U,803
32
32
  lightning_sdk/api/pipeline_api.py,sha256=rJYp_FN7uUjC5xbc6K67l2eRSmVuOkijd5i8Nm5BF7I,4621
@@ -1081,7 +1081,7 @@ lightning_sdk/lightning_cloud/utils/dataset.py,sha256=4nUspe8iAaRPgSYpXA2uAQCgyd
1081
1081
  lightning_sdk/lightning_cloud/utils/name_generator.py,sha256=MkciuA10332V0mcE2PxLIiwWomWE0Fm_gNGK01vwRr4,58046
1082
1082
  lightning_sdk/lightning_cloud/utils/network.py,sha256=axPgl8rhyPcPjxiztDxyksfxax3VNg2OXL5F5Uc81b4,406
1083
1083
  lightning_sdk/llm/__init__.py,sha256=ErZva0HqN2iPtK_6hI6GN7A_HPGNrHo3wYh7vyFdO3Q,57
1084
- lightning_sdk/llm/llm.py,sha256=doRKMKceSxR0qN7uvwMc0qEl-wCd-Dn66EKQOwTk2V8,15574
1084
+ lightning_sdk/llm/llm.py,sha256=zWUUymFi2gzx4e3M-Uv3vrEPPAnBACcdQJGylIDoRbk,15659
1085
1085
  lightning_sdk/llm/public_assistants.py,sha256=ZhzHGJtg_XhPKj4w9xtjHDuBW_iSUUoqGfXqvM8kL8c,955
1086
1086
  lightning_sdk/mmt/__init__.py,sha256=ExMu90-96bGBnyp5h0CErQszUGB1-PcjC4-R8_NYbeY,117
1087
1087
  lightning_sdk/mmt/base.py,sha256=iqVudKDxazomuezj6l7pa-m9I1EQnM82OKs4ZQbo4Ck,16434
@@ -1103,9 +1103,9 @@ lightning_sdk/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
1103
1103
  lightning_sdk/utils/dynamic.py,sha256=glUTO1JC9APtQ6Gr9SO02a3zr56-sPAXM5C3NrTpgyQ,1959
1104
1104
  lightning_sdk/utils/enum.py,sha256=h2JRzqoBcSlUdanFHmkj_j5DleBHAu1esQYUsdNI-hU,4106
1105
1105
  lightning_sdk/utils/resolve.py,sha256=JjHwWNQq375d1JBcVkJrZWkcTehvuTxF2h6awvSUDoo,8094
1106
- lightning_sdk-2025.8.6rc1.dist-info/LICENSE,sha256=uFIuZwj5z-4TeF2UuacPZ1o17HkvKObT8fY50qN84sg,1064
1107
- lightning_sdk-2025.8.6rc1.dist-info/METADATA,sha256=JEU93V1stWNTBz13PGuOwpa4nIs_7UVMhreZt93DH2M,4110
1108
- lightning_sdk-2025.8.6rc1.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
1109
- lightning_sdk-2025.8.6rc1.dist-info/entry_points.txt,sha256=msB9PJWIJ784dX-OP8by51d4IbKYH3Fj1vCuA9oXjHY,68
1110
- lightning_sdk-2025.8.6rc1.dist-info/top_level.txt,sha256=ps8doKILFXmN7F1mHncShmnQoTxKBRPIcchC8TpoBw4,19
1111
- lightning_sdk-2025.8.6rc1.dist-info/RECORD,,
1106
+ lightning_sdk-2025.8.6rc2.dist-info/LICENSE,sha256=uFIuZwj5z-4TeF2UuacPZ1o17HkvKObT8fY50qN84sg,1064
1107
+ lightning_sdk-2025.8.6rc2.dist-info/METADATA,sha256=_2gP2vLcex82G8EH6aWUzvqJNAhkf0nCFI1FqcqvqmU,4110
1108
+ lightning_sdk-2025.8.6rc2.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
1109
+ lightning_sdk-2025.8.6rc2.dist-info/entry_points.txt,sha256=msB9PJWIJ784dX-OP8by51d4IbKYH3Fj1vCuA9oXjHY,68
1110
+ lightning_sdk-2025.8.6rc2.dist-info/top_level.txt,sha256=ps8doKILFXmN7F1mHncShmnQoTxKBRPIcchC8TpoBw4,19
1111
+ lightning_sdk-2025.8.6rc2.dist-info/RECORD,,