lightning-sdk 2025.9.4__py3-none-any.whl → 2025.9.10__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 (36) hide show
  1. lightning_sdk/__init__.py +1 -1
  2. lightning_sdk/api/llm_api.py +19 -0
  3. lightning_sdk/api/studio_api.py +25 -4
  4. lightning_sdk/lightning_cloud/openapi/__init__.py +14 -0
  5. lightning_sdk/lightning_cloud/openapi/api/k8_s_cluster_service_api.py +744 -13
  6. lightning_sdk/lightning_cloud/openapi/models/__init__.py +14 -0
  7. lightning_sdk/lightning_cloud/openapi/models/id_render_body.py +123 -0
  8. lightning_sdk/lightning_cloud/openapi/models/kubernetestemplates_id_body.py +227 -0
  9. lightning_sdk/lightning_cloud/openapi/models/metricsstream_create_body.py +27 -1
  10. lightning_sdk/lightning_cloud/openapi/models/project_id_kubernetestemplates_body.py +227 -0
  11. lightning_sdk/lightning_cloud/openapi/models/v1_ai_pod_v1.py +53 -1
  12. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_security_options.py +27 -1
  13. lightning_sdk/lightning_cloud/openapi/models/v1_delete_kubernetes_template_response.py +97 -0
  14. lightning_sdk/lightning_cloud/openapi/models/v1_firewall_rule.py +175 -0
  15. lightning_sdk/lightning_cloud/openapi/models/v1_incident_event.py +565 -0
  16. lightning_sdk/lightning_cloud/openapi/models/v1_incident_severity.py +105 -0
  17. lightning_sdk/lightning_cloud/openapi/models/v1_incident_type.py +105 -0
  18. lightning_sdk/lightning_cloud/openapi/models/v1_k8s_incident_indexes.py +149 -0
  19. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_template.py +383 -0
  20. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_template_property.py +227 -0
  21. lightning_sdk/lightning_cloud/openapi/models/v1_list_incident_events_response.py +123 -0
  22. lightning_sdk/lightning_cloud/openapi/models/v1_list_kubernetes_templates_response.py +123 -0
  23. lightning_sdk/lightning_cloud/openapi/models/v1_metrics_stream.py +27 -1
  24. lightning_sdk/lightning_cloud/openapi/models/v1_quote_annual_upsell_response.py +29 -3
  25. lightning_sdk/lightning_cloud/openapi/models/v1_render_kubernetes_template_response.py +123 -0
  26. lightning_sdk/lightning_cloud/openapi/models/v1_secret_type.py +1 -0
  27. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +154 -102
  28. lightning_sdk/llm/llm.py +82 -7
  29. lightning_sdk/llm/public_assistants.py +2 -2
  30. lightning_sdk/studio.py +30 -3
  31. {lightning_sdk-2025.9.4.dist-info → lightning_sdk-2025.9.10.dist-info}/METADATA +1 -1
  32. {lightning_sdk-2025.9.4.dist-info → lightning_sdk-2025.9.10.dist-info}/RECORD +36 -22
  33. {lightning_sdk-2025.9.4.dist-info → lightning_sdk-2025.9.10.dist-info}/entry_points.txt +1 -0
  34. {lightning_sdk-2025.9.4.dist-info → lightning_sdk-2025.9.10.dist-info}/LICENSE +0 -0
  35. {lightning_sdk-2025.9.4.dist-info → lightning_sdk-2025.9.10.dist-info}/WHEEL +0 -0
  36. {lightning_sdk-2025.9.4.dist-info → lightning_sdk-2025.9.10.dist-info}/top_level.txt +0 -0
lightning_sdk/__init__.py CHANGED
@@ -32,6 +32,6 @@ __all__ = [
32
32
  "User",
33
33
  ]
34
34
 
35
- __version__ = "2025.09.04"
35
+ __version__ = "2025.09.10"
36
36
  _check_version_and_prompt_upgrade(__version__)
37
37
  _set_tqdm_envvars_noninteractive()
@@ -16,6 +16,7 @@ from lightning_sdk.lightning_cloud.login import Auth, AuthServer
16
16
  from lightning_sdk.lightning_cloud.openapi.models import (
17
17
  StreamResultOfV1ConversationResponseChunk,
18
18
  V1ConversationResponseChunk,
19
+ V1ManagedModel,
19
20
  V1ResponseChoice,
20
21
  V1ResponseChoiceDelta,
21
22
  )
@@ -67,13 +68,23 @@ def authenticate(model: str, shall_confirm: bool = True) -> None:
67
68
  class LLMApi:
68
69
  def __init__(self) -> None:
69
70
  self._client = LightningClient(retry=False, max_tries=0)
71
+ self._assistant = None
72
+ self._model = None
70
73
 
71
74
  def get_assistant(self, model_provider: str, model_name: str, user_name: str, org_name: str) -> str:
72
75
  result = self._client.assistants_service_get_managed_model_assistant(
73
76
  model_provider=model_provider, model_name=model_name, user_name=user_name, org_name=org_name
74
77
  )
78
+ self._assistant = result
75
79
  return result.id
76
80
 
81
+ def get_model_metadata(self, teamspace_id: str, model_name: str) -> V1ManagedModel:
82
+ if self._assistant and not self._model:
83
+ self._model = self._client.assistants_service_get_managed_model_by_name(
84
+ teamspace_id, self._assistant.managed_endpoint_id, model_name
85
+ )
86
+ return self._model
87
+
77
88
  def _parse_stream_line(self, decoded_line: str) -> Optional[V1ConversationResponseChunk]:
78
89
  try:
79
90
  payload = json.loads(decoded_line)
@@ -132,6 +143,7 @@ class LLMApi:
132
143
  metadata: Optional[Dict[str, str]] = None,
133
144
  stream: bool = False,
134
145
  tools: Optional[List[Dict[str, Any]]] = None,
146
+ reasoning_effort: Optional[str] = None,
135
147
  **kwargs: Any,
136
148
  ) -> Union[V1ConversationResponseChunk, Generator[V1ConversationResponseChunk, None, None]]:
137
149
  is_internal_conversation = os.getenv("LIGHTNING_INTERNAL_CONVERSATION", "false").lower() == "true"
@@ -161,6 +173,9 @@ class LLMApi:
161
173
  if max_completion_tokens is not None:
162
174
  body["max_completion_tokens"] = max_completion_tokens
163
175
 
176
+ if reasoning_effort:
177
+ body["reasoning_effort"] = reasoning_effort
178
+
164
179
  if images:
165
180
  for image in images:
166
181
  url = image
@@ -191,6 +206,7 @@ class LLMApi:
191
206
  name: Optional[str] = None,
192
207
  metadata: Optional[Dict[str, str]] = None,
193
208
  stream: bool = False,
209
+ reasoning_effort: Optional[str] = None,
194
210
  **kwargs: Any,
195
211
  ) -> Union[V1ConversationResponseChunk, AsyncGenerator[V1ConversationResponseChunk, None]]:
196
212
  is_internal_conversation = os.getenv("LIGHTNING_INTERNAL_CONVERSATION", "false").lower() == "true"
@@ -220,6 +236,9 @@ class LLMApi:
220
236
  if max_completion_tokens is not None:
221
237
  body["max_completion_tokens"] = max_completion_tokens
222
238
 
239
+ if reasoning_effort:
240
+ body["reasoning_effort"] = reasoning_effort
241
+
223
242
  if images:
224
243
  for image in images:
225
244
  url = image
@@ -261,12 +261,19 @@ class StudioApi:
261
261
  return getattr(getattr(studio.code_status, "in_use", None), "phase", None)
262
262
 
263
263
  def _request_switch(
264
- self, studio_id: str, teamspace_id: str, machine: Union[Machine, str], interruptible: bool
264
+ self,
265
+ studio_id: str,
266
+ teamspace_id: str,
267
+ machine: Union[Machine, str],
268
+ interruptible: bool,
269
+ cloud_account: Optional[str],
265
270
  ) -> None:
266
271
  """Switches given Studio to a new machine type."""
267
272
  compute_name = _machine_to_compute_name(machine)
268
273
  # TODO: UI sends disk size here, maybe we need to also?
269
274
  body = IdCodeconfigBody(compute_config=V1UserRequestedComputeConfig(name=compute_name, spot=interruptible))
275
+ if cloud_account:
276
+ body.compute_config.cluster_override = cloud_account
270
277
  self._client.cloud_space_service_update_cloud_space_instance_config(
271
278
  id=studio_id,
272
279
  project_id=teamspace_id,
@@ -274,11 +281,20 @@ class StudioApi:
274
281
  )
275
282
 
276
283
  def switch_studio_machine(
277
- self, studio_id: str, teamspace_id: str, machine: Union[Machine, str], interruptible: bool
284
+ self,
285
+ studio_id: str,
286
+ teamspace_id: str,
287
+ machine: Union[Machine, str],
288
+ interruptible: bool,
289
+ cloud_account: Optional[str],
278
290
  ) -> None:
279
291
  """Switches given Studio to a new machine type."""
280
292
  self._request_switch(
281
- studio_id=studio_id, teamspace_id=teamspace_id, machine=machine, interruptible=interruptible
293
+ studio_id=studio_id,
294
+ teamspace_id=teamspace_id,
295
+ machine=machine,
296
+ interruptible=interruptible,
297
+ cloud_account=cloud_account,
282
298
  )
283
299
 
284
300
  # Wait until it's time to switch
@@ -324,12 +340,17 @@ class StudioApi:
324
340
  machine: Union[Machine, str],
325
341
  interruptible: bool,
326
342
  progress: Any, # StudioProgressTracker - avoid circular import
343
+ cloud_account: Optional[str],
327
344
  ) -> None:
328
345
  """Switches given Studio to a new machine type with progress tracking."""
329
346
  progress.update_progress(10, "Requesting machine switch...")
330
347
 
331
348
  self._request_switch(
332
- studio_id=studio_id, teamspace_id=teamspace_id, machine=machine, interruptible=interruptible
349
+ studio_id=studio_id,
350
+ teamspace_id=teamspace_id,
351
+ machine=machine,
352
+ interruptible=interruptible,
353
+ cloud_account=cloud_account,
333
354
  )
334
355
 
335
356
  progress.update_progress(20, "Waiting for machine allocation...")
@@ -146,6 +146,7 @@ from lightning_sdk.lightning_cloud.openapi.models.id_output_body import IdOutput
146
146
  from lightning_sdk.lightning_cloud.openapi.models.id_publications_body import IdPublicationsBody
147
147
  from lightning_sdk.lightning_cloud.openapi.models.id_publications_body1 import IdPublicationsBody1
148
148
  from lightning_sdk.lightning_cloud.openapi.models.id_release_body import IdReleaseBody
149
+ from lightning_sdk.lightning_cloud.openapi.models.id_render_body import IdRenderBody
149
150
  from lightning_sdk.lightning_cloud.openapi.models.id_reportlogsactivity_body import IdReportlogsactivityBody
150
151
  from lightning_sdk.lightning_cloud.openapi.models.id_reportrestarttimings_body import IdReportrestarttimingsBody
151
152
  from lightning_sdk.lightning_cloud.openapi.models.id_sleepconfig_body import IdSleepconfigBody
@@ -159,6 +160,7 @@ from lightning_sdk.lightning_cloud.openapi.models.jobs_id_body import JobsIdBody
159
160
  from lightning_sdk.lightning_cloud.openapi.models.jobs_id_body1 import JobsIdBody1
160
161
  from lightning_sdk.lightning_cloud.openapi.models.jobs_id_body2 import JobsIdBody2
161
162
  from lightning_sdk.lightning_cloud.openapi.models.jobs_id_body3 import JobsIdBody3
163
+ from lightning_sdk.lightning_cloud.openapi.models.kubernetestemplates_id_body import KubernetestemplatesIdBody
162
164
  from lightning_sdk.lightning_cloud.openapi.models.litdatasets_dataset_id_body import LitdatasetsDatasetIdBody
163
165
  from lightning_sdk.lightning_cloud.openapi.models.litloggermetrics_id_body import LitloggermetricsIdBody
164
166
  from lightning_sdk.lightning_cloud.openapi.models.litpages_id_body import LitpagesIdBody
@@ -193,6 +195,7 @@ from lightning_sdk.lightning_cloud.openapi.models.project_id_endpoints_body impo
193
195
  from lightning_sdk.lightning_cloud.openapi.models.project_id_getapp_body import ProjectIdGetappBody
194
196
  from lightning_sdk.lightning_cloud.openapi.models.project_id_invite_body import ProjectIdInviteBody
195
197
  from lightning_sdk.lightning_cloud.openapi.models.project_id_jobs_body import ProjectIdJobsBody
198
+ from lightning_sdk.lightning_cloud.openapi.models.project_id_kubernetestemplates_body import ProjectIdKubernetestemplatesBody
196
199
  from lightning_sdk.lightning_cloud.openapi.models.project_id_litdatasets_body import ProjectIdLitdatasetsBody
197
200
  from lightning_sdk.lightning_cloud.openapi.models.project_id_litregistry_body import ProjectIdLitregistryBody
198
201
  from lightning_sdk.lightning_cloud.openapi.models.project_id_memberships_body import ProjectIdMembershipsBody
@@ -433,6 +436,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_delete_endpoint_response im
433
436
  from lightning_sdk.lightning_cloud.openapi.models.v1_delete_git_credentials_response import V1DeleteGitCredentialsResponse
434
437
  from lightning_sdk.lightning_cloud.openapi.models.v1_delete_index_response import V1DeleteIndexResponse
435
438
  from lightning_sdk.lightning_cloud.openapi.models.v1_delete_job_response import V1DeleteJobResponse
439
+ from lightning_sdk.lightning_cloud.openapi.models.v1_delete_kubernetes_template_response import V1DeleteKubernetesTemplateResponse
436
440
  from lightning_sdk.lightning_cloud.openapi.models.v1_delete_lightning_run_response import V1DeleteLightningRunResponse
437
441
  from lightning_sdk.lightning_cloud.openapi.models.v1_delete_lightningapp_instance_artifact_response import V1DeleteLightningappInstanceArtifactResponse
438
442
  from lightning_sdk.lightning_cloud.openapi.models.v1_delete_lightningapp_instance_response import V1DeleteLightningappInstanceResponse
@@ -531,6 +535,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_filesystem_slurm_job import
531
535
  from lightning_sdk.lightning_cloud.openapi.models.v1_filesystem_snowflake_connection import V1FilesystemSnowflakeConnection
532
536
  from lightning_sdk.lightning_cloud.openapi.models.v1_filesystem_work import V1FilesystemWork
533
537
  from lightning_sdk.lightning_cloud.openapi.models.v1_find_capacity_block_offering_response import V1FindCapacityBlockOfferingResponse
538
+ from lightning_sdk.lightning_cloud.openapi.models.v1_firewall_rule import V1FirewallRule
534
539
  from lightning_sdk.lightning_cloud.openapi.models.v1_flowserver import V1Flowserver
535
540
  from lightning_sdk.lightning_cloud.openapi.models.v1_folder_index_status import V1FolderIndexStatus
536
541
  from lightning_sdk.lightning_cloud.openapi.models.v1_function_call import V1FunctionCall
@@ -606,6 +611,9 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_health_check_http_get impor
606
611
  from lightning_sdk.lightning_cloud.openapi.models.v1_ids_logger_metrics import V1IdsLoggerMetrics
607
612
  from lightning_sdk.lightning_cloud.openapi.models.v1_image_spec import V1ImageSpec
608
613
  from lightning_sdk.lightning_cloud.openapi.models.v1_image_state import V1ImageState
614
+ from lightning_sdk.lightning_cloud.openapi.models.v1_incident_event import V1IncidentEvent
615
+ from lightning_sdk.lightning_cloud.openapi.models.v1_incident_severity import V1IncidentSeverity
616
+ from lightning_sdk.lightning_cloud.openapi.models.v1_incident_type import V1IncidentType
609
617
  from lightning_sdk.lightning_cloud.openapi.models.v1_index import V1Index
610
618
  from lightning_sdk.lightning_cloud.openapi.models.v1_input import V1Input
611
619
  from lightning_sdk.lightning_cloud.openapi.models.v1_instance_overprovisioning_spec import V1InstanceOverprovisioningSpec
@@ -625,10 +633,13 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_job_spec import V1JobSpec
625
633
  from lightning_sdk.lightning_cloud.openapi.models.v1_job_timing import V1JobTiming
626
634
  from lightning_sdk.lightning_cloud.openapi.models.v1_job_type import V1JobType
627
635
  from lightning_sdk.lightning_cloud.openapi.models.v1_joinable_organization import V1JoinableOrganization
636
+ from lightning_sdk.lightning_cloud.openapi.models.v1_k8s_incident_indexes import V1K8sIncidentIndexes
628
637
  from lightning_sdk.lightning_cloud.openapi.models.v1_keep_alive_cloud_space_instance_response import V1KeepAliveCloudSpaceInstanceResponse
629
638
  from lightning_sdk.lightning_cloud.openapi.models.v1_knowledge_configuration import V1KnowledgeConfiguration
630
639
  from lightning_sdk.lightning_cloud.openapi.models.v1_kubernetes_direct_v1 import V1KubernetesDirectV1
631
640
  from lightning_sdk.lightning_cloud.openapi.models.v1_kubernetes_direct_v1_status import V1KubernetesDirectV1Status
641
+ from lightning_sdk.lightning_cloud.openapi.models.v1_kubernetes_template import V1KubernetesTemplate
642
+ from lightning_sdk.lightning_cloud.openapi.models.v1_kubernetes_template_property import V1KubernetesTemplateProperty
632
643
  from lightning_sdk.lightning_cloud.openapi.models.v1_lambda_labs_direct_v1 import V1LambdaLabsDirectV1
633
644
  from lightning_sdk.lightning_cloud.openapi.models.v1_lightning_app_user import V1LightningAppUser
634
645
  from lightning_sdk.lightning_cloud.openapi.models.v1_lightning_auth import V1LightningAuth
@@ -702,10 +713,12 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_list_filesystem_snowflake_r
702
713
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_gallery_components_response import V1ListGalleryComponentsResponse
703
714
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_gallery_lightningapps_response import V1ListGalleryLightningappsResponse
704
715
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_git_credentials_response import V1ListGitCredentialsResponse
716
+ from lightning_sdk.lightning_cloud.openapi.models.v1_list_incident_events_response import V1ListIncidentEventsResponse
705
717
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_job_files_response import V1ListJobFilesResponse
706
718
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_job_resources_response import V1ListJobResourcesResponse
707
719
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_jobs_response import V1ListJobsResponse
708
720
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_joinable_organizations_response import V1ListJoinableOrganizationsResponse
721
+ from lightning_sdk.lightning_cloud.openapi.models.v1_list_kubernetes_templates_response import V1ListKubernetesTemplatesResponse
709
722
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_lightning_run_response import V1ListLightningRunResponse
710
723
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_lightningapp_instance_artifacts_response import V1ListLightningappInstanceArtifactsResponse
711
724
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_lightningapp_instance_events_response import V1ListLightningappInstanceEventsResponse
@@ -879,6 +892,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_refresh_request import V1Re
879
892
  from lightning_sdk.lightning_cloud.openapi.models.v1_refresh_response import V1RefreshResponse
880
893
  from lightning_sdk.lightning_cloud.openapi.models.v1_region_state import V1RegionState
881
894
  from lightning_sdk.lightning_cloud.openapi.models.v1_regional_load_balancer import V1RegionalLoadBalancer
895
+ from lightning_sdk.lightning_cloud.openapi.models.v1_render_kubernetes_template_response import V1RenderKubernetesTemplateResponse
882
896
  from lightning_sdk.lightning_cloud.openapi.models.v1_report_cloud_space_instance_stop_at_response import V1ReportCloudSpaceInstanceStopAtResponse
883
897
  from lightning_sdk.lightning_cloud.openapi.models.v1_report_cloud_space_instance_system_metrics_response import V1ReportCloudSpaceInstanceSystemMetricsResponse
884
898
  from lightning_sdk.lightning_cloud.openapi.models.v1_report_k8s_cluster_metrics_response import V1ReportK8sClusterMetricsResponse