lightning-sdk 2025.10.14__py3-none-any.whl → 2025.10.22__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 (53) hide show
  1. lightning_sdk/__init__.py +6 -3
  2. lightning_sdk/api/base_studio_api.py +13 -9
  3. lightning_sdk/api/license_api.py +26 -59
  4. lightning_sdk/api/studio_api.py +7 -2
  5. lightning_sdk/base_studio.py +30 -17
  6. lightning_sdk/cli/base_studio/list.py +1 -3
  7. lightning_sdk/cli/entrypoint.py +8 -34
  8. lightning_sdk/cli/studio/connect.py +42 -92
  9. lightning_sdk/cli/studio/create.py +23 -1
  10. lightning_sdk/cli/studio/start.py +12 -2
  11. lightning_sdk/cli/utils/get_base_studio.py +24 -0
  12. lightning_sdk/cli/utils/handle_machine_and_gpus_args.py +71 -0
  13. lightning_sdk/cli/utils/logging.py +121 -0
  14. lightning_sdk/cli/utils/ssh_connection.py +1 -1
  15. lightning_sdk/constants.py +1 -0
  16. lightning_sdk/helpers.py +53 -34
  17. lightning_sdk/lightning_cloud/login.py +260 -10
  18. lightning_sdk/lightning_cloud/openapi/__init__.py +10 -3
  19. lightning_sdk/lightning_cloud/openapi/api/auth_service_api.py +97 -0
  20. lightning_sdk/lightning_cloud/openapi/api/product_license_service_api.py +108 -108
  21. lightning_sdk/lightning_cloud/openapi/models/__init__.py +10 -3
  22. lightning_sdk/lightning_cloud/openapi/models/create_machine_request_represents_the_request_to_create_a_machine.py +27 -1
  23. lightning_sdk/lightning_cloud/openapi/models/externalv1_cloud_space_instance_status.py +27 -1
  24. lightning_sdk/lightning_cloud/openapi/models/id_fork_body1.py +27 -1
  25. lightning_sdk/lightning_cloud/openapi/models/license_key_validate_body.py +123 -0
  26. lightning_sdk/lightning_cloud/openapi/models/v1_create_license_request.py +175 -0
  27. lightning_sdk/lightning_cloud/openapi/models/v1_delete_license_response.py +97 -0
  28. lightning_sdk/lightning_cloud/openapi/models/v1_external_cluster_spec.py +27 -1
  29. lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_transfer_estimate_response.py +29 -3
  30. lightning_sdk/lightning_cloud/openapi/models/v1_incident.py +27 -1
  31. lightning_sdk/lightning_cloud/openapi/models/v1_incident_detail.py +149 -0
  32. lightning_sdk/lightning_cloud/openapi/models/v1_incident_event.py +27 -1
  33. lightning_sdk/lightning_cloud/openapi/models/v1_license.py +227 -0
  34. lightning_sdk/lightning_cloud/openapi/models/{v1_list_product_licenses_response.py → v1_list_license_response.py} +16 -16
  35. lightning_sdk/lightning_cloud/openapi/models/v1_machine.py +27 -1
  36. lightning_sdk/lightning_cloud/openapi/models/v1_slack_notifier.py +53 -1
  37. lightning_sdk/lightning_cloud/openapi/models/v1_token_login_request.py +123 -0
  38. lightning_sdk/lightning_cloud/openapi/models/v1_token_login_response.py +123 -0
  39. lightning_sdk/lightning_cloud/openapi/models/v1_token_owner_type.py +104 -0
  40. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +53 -79
  41. lightning_sdk/lightning_cloud/openapi/models/{v1_product_license_check_response.py → v1_validate_license_response.py} +21 -21
  42. lightning_sdk/lightning_cloud/rest_client.py +48 -45
  43. lightning_sdk/machine.py +2 -0
  44. lightning_sdk/studio.py +14 -2
  45. lightning_sdk/utils/license.py +13 -0
  46. {lightning_sdk-2025.10.14.dist-info → lightning_sdk-2025.10.22.dist-info}/METADATA +1 -1
  47. {lightning_sdk-2025.10.14.dist-info → lightning_sdk-2025.10.22.dist-info}/RECORD +51 -41
  48. lightning_sdk/lightning_cloud/openapi/models/v1_product_license.py +0 -435
  49. lightning_sdk/services/license.py +0 -363
  50. {lightning_sdk-2025.10.14.dist-info → lightning_sdk-2025.10.22.dist-info}/LICENSE +0 -0
  51. {lightning_sdk-2025.10.14.dist-info → lightning_sdk-2025.10.22.dist-info}/WHEEL +0 -0
  52. {lightning_sdk-2025.10.14.dist-info → lightning_sdk-2025.10.22.dist-info}/entry_points.txt +0 -0
  53. {lightning_sdk-2025.10.14.dist-info → lightning_sdk-2025.10.22.dist-info}/top_level.txt +0 -0
@@ -166,6 +166,7 @@ from lightning_sdk.lightning_cloud.openapi.models.jobs_id_body1 import JobsIdBod
166
166
  from lightning_sdk.lightning_cloud.openapi.models.jobs_id_body2 import JobsIdBody2
167
167
  from lightning_sdk.lightning_cloud.openapi.models.jobs_id_body3 import JobsIdBody3
168
168
  from lightning_sdk.lightning_cloud.openapi.models.kubernetestemplates_id_body import KubernetestemplatesIdBody
169
+ from lightning_sdk.lightning_cloud.openapi.models.license_key_validate_body import LicenseKeyValidateBody
169
170
  from lightning_sdk.lightning_cloud.openapi.models.litdatasets_dataset_id_body import LitdatasetsDatasetIdBody
170
171
  from lightning_sdk.lightning_cloud.openapi.models.litloggermetrics_id_body import LitloggermetricsIdBody
171
172
  from lightning_sdk.lightning_cloud.openapi.models.litpages_id_body import LitpagesIdBody
@@ -394,6 +395,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_create_deployment_request i
394
395
  from lightning_sdk.lightning_cloud.openapi.models.v1_create_deployment_template_request import V1CreateDeploymentTemplateRequest
395
396
  from lightning_sdk.lightning_cloud.openapi.models.v1_create_git_credentials_request import V1CreateGitCredentialsRequest
396
397
  from lightning_sdk.lightning_cloud.openapi.models.v1_create_job_request import V1CreateJobRequest
398
+ from lightning_sdk.lightning_cloud.openapi.models.v1_create_license_request import V1CreateLicenseRequest
397
399
  from lightning_sdk.lightning_cloud.openapi.models.v1_create_lit_dataset_multi_part_upload_response import V1CreateLitDatasetMultiPartUploadResponse
398
400
  from lightning_sdk.lightning_cloud.openapi.models.v1_create_lit_page_request import V1CreateLitPageRequest
399
401
  from lightning_sdk.lightning_cloud.openapi.models.v1_create_lit_page_response import V1CreateLitPageResponse
@@ -452,6 +454,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_delete_incident_response im
452
454
  from lightning_sdk.lightning_cloud.openapi.models.v1_delete_index_response import V1DeleteIndexResponse
453
455
  from lightning_sdk.lightning_cloud.openapi.models.v1_delete_job_response import V1DeleteJobResponse
454
456
  from lightning_sdk.lightning_cloud.openapi.models.v1_delete_kubernetes_template_response import V1DeleteKubernetesTemplateResponse
457
+ from lightning_sdk.lightning_cloud.openapi.models.v1_delete_license_response import V1DeleteLicenseResponse
455
458
  from lightning_sdk.lightning_cloud.openapi.models.v1_delete_lightning_run_response import V1DeleteLightningRunResponse
456
459
  from lightning_sdk.lightning_cloud.openapi.models.v1_delete_lightningapp_instance_artifact_response import V1DeleteLightningappInstanceArtifactResponse
457
460
  from lightning_sdk.lightning_cloud.openapi.models.v1_delete_lightningapp_instance_response import V1DeleteLightningappInstanceResponse
@@ -630,6 +633,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_ids_logger_metrics import V
630
633
  from lightning_sdk.lightning_cloud.openapi.models.v1_image_spec import V1ImageSpec
631
634
  from lightning_sdk.lightning_cloud.openapi.models.v1_image_state import V1ImageState
632
635
  from lightning_sdk.lightning_cloud.openapi.models.v1_incident import V1Incident
636
+ from lightning_sdk.lightning_cloud.openapi.models.v1_incident_detail import V1IncidentDetail
633
637
  from lightning_sdk.lightning_cloud.openapi.models.v1_incident_event import V1IncidentEvent
634
638
  from lightning_sdk.lightning_cloud.openapi.models.v1_incident_message import V1IncidentMessage
635
639
  from lightning_sdk.lightning_cloud.openapi.models.v1_incident_severity import V1IncidentSeverity
@@ -662,6 +666,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_kubernetes_direct_v1_status
662
666
  from lightning_sdk.lightning_cloud.openapi.models.v1_kubernetes_template import V1KubernetesTemplate
663
667
  from lightning_sdk.lightning_cloud.openapi.models.v1_kubernetes_template_property import V1KubernetesTemplateProperty
664
668
  from lightning_sdk.lightning_cloud.openapi.models.v1_lambda_labs_direct_v1 import V1LambdaLabsDirectV1
669
+ from lightning_sdk.lightning_cloud.openapi.models.v1_license import V1License
665
670
  from lightning_sdk.lightning_cloud.openapi.models.v1_lightning_app_user import V1LightningAppUser
666
671
  from lightning_sdk.lightning_cloud.openapi.models.v1_lightning_auth import V1LightningAuth
667
672
  from lightning_sdk.lightning_cloud.openapi.models.v1_lightning_basic_auth import V1LightningBasicAuth
@@ -745,6 +750,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_list_jobs_response import V
745
750
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_joinable_organizations_response import V1ListJoinableOrganizationsResponse
746
751
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_kai_scheduler_queues_metrics_response import V1ListKaiSchedulerQueuesMetricsResponse
747
752
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_kubernetes_templates_response import V1ListKubernetesTemplatesResponse
753
+ from lightning_sdk.lightning_cloud.openapi.models.v1_list_license_response import V1ListLicenseResponse
748
754
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_lightning_run_response import V1ListLightningRunResponse
749
755
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_lightningapp_instance_artifacts_response import V1ListLightningappInstanceArtifactsResponse
750
756
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_lightningapp_instance_events_response import V1ListLightningappInstanceEventsResponse
@@ -775,7 +781,6 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_list_organization_cluster_e
775
781
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_organizations_response import V1ListOrganizationsResponse
776
782
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_pipelines_response import V1ListPipelinesResponse
777
783
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_pod_metrics_response import V1ListPodMetricsResponse
778
- from lightning_sdk.lightning_cloud.openapi.models.v1_list_product_licenses_response import V1ListProductLicensesResponse
779
784
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_profiler_captures_response import V1ListProfilerCapturesResponse
780
785
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_project_artifacts_response import V1ListProjectArtifactsResponse
781
786
  from lightning_sdk.lightning_cloud.openapi.models.v1_list_project_cluster_accelerators_response import V1ListProjectClusterAcceleratorsResponse
@@ -887,8 +892,6 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_plugins_list_response impor
887
892
  from lightning_sdk.lightning_cloud.openapi.models.v1_pod_metrics import V1PodMetrics
888
893
  from lightning_sdk.lightning_cloud.openapi.models.v1_post_cloud_space_artifact_events_response import V1PostCloudSpaceArtifactEventsResponse
889
894
  from lightning_sdk.lightning_cloud.openapi.models.v1_presigned_url import V1PresignedUrl
890
- from lightning_sdk.lightning_cloud.openapi.models.v1_product_license import V1ProductLicense
891
- from lightning_sdk.lightning_cloud.openapi.models.v1_product_license_check_response import V1ProductLicenseCheckResponse
892
895
  from lightning_sdk.lightning_cloud.openapi.models.v1_profiler_capture import V1ProfilerCapture
893
896
  from lightning_sdk.lightning_cloud.openapi.models.v1_profiler_enabled_response import V1ProfilerEnabledResponse
894
897
  from lightning_sdk.lightning_cloud.openapi.models.v1_project import V1Project
@@ -1010,6 +1013,9 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_system_metrics_aggregated i
1010
1013
  from lightning_sdk.lightning_cloud.openapi.models.v1_system_metrics_list import V1SystemMetricsList
1011
1014
  from lightning_sdk.lightning_cloud.openapi.models.v1_telemetry import V1Telemetry
1012
1015
  from lightning_sdk.lightning_cloud.openapi.models.v1_timestamp_code_telemetry import V1TimestampCodeTelemetry
1016
+ from lightning_sdk.lightning_cloud.openapi.models.v1_token_login_request import V1TokenLoginRequest
1017
+ from lightning_sdk.lightning_cloud.openapi.models.v1_token_login_response import V1TokenLoginResponse
1018
+ from lightning_sdk.lightning_cloud.openapi.models.v1_token_owner_type import V1TokenOwnerType
1013
1019
  from lightning_sdk.lightning_cloud.openapi.models.v1_token_usage import V1TokenUsage
1014
1020
  from lightning_sdk.lightning_cloud.openapi.models.v1_tool import V1Tool
1015
1021
  from lightning_sdk.lightning_cloud.openapi.models.v1_tool_call import V1ToolCall
@@ -1074,6 +1080,7 @@ from lightning_sdk.lightning_cloud.openapi.models.v1_validate_auto_join_domain_r
1074
1080
  from lightning_sdk.lightning_cloud.openapi.models.v1_validate_data_connection_response import V1ValidateDataConnectionResponse
1075
1081
  from lightning_sdk.lightning_cloud.openapi.models.v1_validate_deployment_image_request import V1ValidateDeploymentImageRequest
1076
1082
  from lightning_sdk.lightning_cloud.openapi.models.v1_validate_deployment_image_response import V1ValidateDeploymentImageResponse
1083
+ from lightning_sdk.lightning_cloud.openapi.models.v1_validate_license_response import V1ValidateLicenseResponse
1077
1084
  from lightning_sdk.lightning_cloud.openapi.models.v1_validate_managed_endpoint_request import V1ValidateManagedEndpointRequest
1078
1085
  from lightning_sdk.lightning_cloud.openapi.models.v1_validate_managed_endpoint_response import V1ValidateManagedEndpointResponse
1079
1086
  from lightning_sdk.lightning_cloud.openapi.models.v1_validate_managed_model_response import V1ValidateManagedModelResponse
@@ -698,6 +698,103 @@ class AuthServiceApi(object):
698
698
  _request_timeout=params.get('_request_timeout'),
699
699
  collection_formats=collection_formats)
700
700
 
701
+ def auth_service_token_login(self, body: 'V1TokenLoginRequest', **kwargs) -> 'V1TokenLoginResponse': # noqa: E501
702
+ """auth_service_token_login # noqa: E501
703
+
704
+ This method makes a synchronous HTTP request by default. To make an
705
+ asynchronous HTTP request, please pass async_req=True
706
+ >>> thread = api.auth_service_token_login(body, async_req=True)
707
+ >>> result = thread.get()
708
+
709
+ :param async_req bool
710
+ :param V1TokenLoginRequest body: (required)
711
+ :return: V1TokenLoginResponse
712
+ If the method is called asynchronously,
713
+ returns the request thread.
714
+ """
715
+ kwargs['_return_http_data_only'] = True
716
+ if kwargs.get('async_req'):
717
+ return self.auth_service_token_login_with_http_info(body, **kwargs) # noqa: E501
718
+ else:
719
+ (data) = self.auth_service_token_login_with_http_info(body, **kwargs) # noqa: E501
720
+ return data
721
+
722
+ def auth_service_token_login_with_http_info(self, body: 'V1TokenLoginRequest', **kwargs) -> 'V1TokenLoginResponse': # noqa: E501
723
+ """auth_service_token_login # noqa: E501
724
+
725
+ This method makes a synchronous HTTP request by default. To make an
726
+ asynchronous HTTP request, please pass async_req=True
727
+ >>> thread = api.auth_service_token_login_with_http_info(body, async_req=True)
728
+ >>> result = thread.get()
729
+
730
+ :param async_req bool
731
+ :param V1TokenLoginRequest body: (required)
732
+ :return: V1TokenLoginResponse
733
+ If the method is called asynchronously,
734
+ returns the request thread.
735
+ """
736
+
737
+ all_params = ['body'] # noqa: E501
738
+ all_params.append('async_req')
739
+ all_params.append('_return_http_data_only')
740
+ all_params.append('_preload_content')
741
+ all_params.append('_request_timeout')
742
+
743
+ params = locals()
744
+ for key, val in six.iteritems(params['kwargs']):
745
+ if key not in all_params:
746
+ raise TypeError(
747
+ "Got an unexpected keyword argument '%s'"
748
+ " to method auth_service_token_login" % key
749
+ )
750
+ params[key] = val
751
+ del params['kwargs']
752
+ # verify the required parameter 'body' is set
753
+ if ('body' not in params or
754
+ params['body'] is None):
755
+ raise ValueError("Missing the required parameter `body` when calling `auth_service_token_login`") # noqa: E501
756
+
757
+ collection_formats = {}
758
+
759
+ path_params = {}
760
+
761
+ query_params = []
762
+
763
+ header_params = {}
764
+
765
+ form_params = []
766
+ local_var_files = {}
767
+
768
+ body_params = None
769
+ if 'body' in params:
770
+ body_params = params['body']
771
+ # HTTP header `Accept`
772
+ header_params['Accept'] = self.api_client.select_header_accept(
773
+ ['application/json']) # noqa: E501
774
+
775
+ # HTTP header `Content-Type`
776
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
777
+ ['application/json']) # noqa: E501
778
+
779
+ # Authentication setting
780
+ auth_settings = [] # noqa: E501
781
+
782
+ return self.api_client.call_api(
783
+ '/v1/auth/token-login', 'POST',
784
+ path_params,
785
+ query_params,
786
+ header_params,
787
+ body=body_params,
788
+ post_params=form_params,
789
+ files=local_var_files,
790
+ response_type='V1TokenLoginResponse', # noqa: E501
791
+ auth_settings=auth_settings,
792
+ async_req=params.get('async_req'),
793
+ _return_http_data_only=params.get('_return_http_data_only'),
794
+ _preload_content=params.get('_preload_content', True),
795
+ _request_timeout=params.get('_request_timeout'),
796
+ collection_formats=collection_formats)
797
+
701
798
  def auth_service_update_user(self, body: 'V1UpdateUserRequest', **kwargs) -> 'V1GetUserResponse': # noqa: E501
702
799
  """TODO: change `GetUserResponse` to `User` # noqa: E501
703
800