lightning-sdk 0.2.11__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.
Files changed (61) hide show
  1. lightning_sdk/__init__.py +1 -1
  2. lightning_sdk/api/deployment_api.py +35 -3
  3. lightning_sdk/api/lit_container_api.py +13 -7
  4. lightning_sdk/api/llm_api.py +46 -0
  5. lightning_sdk/api/studio_api.py +17 -0
  6. lightning_sdk/cli/entrypoint.py +1 -1
  7. lightning_sdk/cli/serve.py +221 -62
  8. lightning_sdk/deployment/deployment.py +53 -7
  9. lightning_sdk/lightning_cloud/openapi/__init__.py +11 -1
  10. lightning_sdk/lightning_cloud/openapi/api/__init__.py +1 -0
  11. lightning_sdk/lightning_cloud/openapi/api/cloud_space_environment_template_service_api.py +4 -4
  12. lightning_sdk/lightning_cloud/openapi/api/cluster_service_api.py +13 -1
  13. lightning_sdk/lightning_cloud/openapi/api/data_connection_service_api.py +4 -4
  14. lightning_sdk/lightning_cloud/openapi/api/git_credentials_service_api.py +497 -0
  15. lightning_sdk/lightning_cloud/openapi/api/jobs_service_api.py +124 -0
  16. lightning_sdk/lightning_cloud/openapi/models/__init__.py +10 -1
  17. lightning_sdk/lightning_cloud/openapi/models/assistant_id_conversations_body.py +27 -1
  18. lightning_sdk/lightning_cloud/openapi/models/create_deployment_request_defines_a_spec_for_the_job_that_allows_for_autoscaling_jobs.py +27 -1
  19. lightning_sdk/lightning_cloud/openapi/models/deployments_id_body.py +27 -1
  20. lightning_sdk/lightning_cloud/openapi/models/orgs_id_body.py +27 -1
  21. lightning_sdk/lightning_cloud/openapi/models/projects_id_body.py +27 -1
  22. lightning_sdk/lightning_cloud/openapi/models/update.py +65 -195
  23. lightning_sdk/lightning_cloud/openapi/models/update1.py +357 -0
  24. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_provider.py +1 -0
  25. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_template.py +27 -1
  26. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_accelerator.py +27 -1
  27. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_security_options.py +27 -1
  28. lightning_sdk/lightning_cloud/openapi/models/v1_cluster_spec.py +79 -1
  29. lightning_sdk/lightning_cloud/openapi/models/v1_create_deployment_request.py +27 -1
  30. lightning_sdk/lightning_cloud/openapi/models/v1_create_git_credentials_request.py +175 -0
  31. lightning_sdk/lightning_cloud/openapi/models/v1_delete_cloud_space_environment_template_response.py +1 -53
  32. lightning_sdk/lightning_cloud/openapi/models/v1_delete_git_credentials_response.py +97 -0
  33. lightning_sdk/lightning_cloud/openapi/models/v1_deployment.py +27 -1
  34. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_state.py +2 -0
  35. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_response.py +1 -27
  36. lightning_sdk/lightning_cloud/openapi/models/v1_git_credentials.py +227 -0
  37. lightning_sdk/lightning_cloud/openapi/models/v1_job_resource.py +279 -0
  38. lightning_sdk/lightning_cloud/openapi/models/v1_job_type.py +108 -0
  39. lightning_sdk/lightning_cloud/openapi/models/v1_list_git_credentials_response.py +123 -0
  40. lightning_sdk/lightning_cloud/openapi/models/v1_list_job_resources_response.py +123 -0
  41. lightning_sdk/lightning_cloud/openapi/models/v1_nebius_direct_v1.py +149 -0
  42. lightning_sdk/lightning_cloud/openapi/models/v1_organization.py +55 -1
  43. lightning_sdk/lightning_cloud/openapi/models/v1_project_settings.py +29 -1
  44. lightning_sdk/lightning_cloud/openapi/models/v1_reservation_billing_session.py +279 -0
  45. lightning_sdk/lightning_cloud/openapi/models/v1_resources.py +55 -3
  46. lightning_sdk/lightning_cloud/openapi/models/v1_update_user_request.py +1 -27
  47. lightning_sdk/lightning_cloud/openapi/models/v1_usage.py +27 -1
  48. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +157 -1
  49. lightning_sdk/llm/__init__.py +3 -0
  50. lightning_sdk/llm/llm.py +118 -0
  51. lightning_sdk/plugin.py +19 -0
  52. lightning_sdk/serve.py +4 -6
  53. lightning_sdk/studio.py +33 -0
  54. {lightning_sdk-0.2.11.dist-info → lightning_sdk-0.2.13.dist-info}/METADATA +1 -1
  55. {lightning_sdk-0.2.11.dist-info → lightning_sdk-0.2.13.dist-info}/RECORD +60 -47
  56. lightning_sdk/lightning_cloud/openapi/models/environmenttemplates_id_body.py +0 -253
  57. /lightning_sdk/cli/{docker.py → docker_cli.py} +0 -0
  58. {lightning_sdk-0.2.11.dist-info → lightning_sdk-0.2.13.dist-info}/LICENSE +0 -0
  59. {lightning_sdk-0.2.11.dist-info → lightning_sdk-0.2.13.dist-info}/WHEEL +0 -0
  60. {lightning_sdk-0.2.11.dist-info → lightning_sdk-0.2.13.dist-info}/entry_points.txt +0 -0
  61. {lightning_sdk-0.2.11.dist-info → lightning_sdk-0.2.13.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,149 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ external/v1/auth_service.proto
5
+
6
+ No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501
7
+
8
+ OpenAPI spec version: version not set
9
+
10
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
11
+
12
+ NOTE
13
+ ----
14
+ standard swagger-codegen-cli for this python client has been modified
15
+ by custom templates. The purpose of these templates is to include
16
+ typing information in the API and Model code. Please refer to the
17
+ main grid repository for more info
18
+ """
19
+
20
+ import pprint
21
+ import re # noqa: F401
22
+
23
+ from typing import TYPE_CHECKING
24
+
25
+ import six
26
+
27
+ if TYPE_CHECKING:
28
+ from datetime import datetime
29
+ from lightning_sdk.lightning_cloud.openapi.models import *
30
+
31
+ class V1NebiusDirectV1(object):
32
+ """NOTE: This class is auto generated by the swagger code generator program.
33
+
34
+ Do not edit the class manually.
35
+ """
36
+ """
37
+ Attributes:
38
+ swagger_types (dict): The key is attribute name
39
+ and the value is attribute type.
40
+ attribute_map (dict): The key is attribute name
41
+ and the value is json key in definition.
42
+ """
43
+ swagger_types = {
44
+ 'primary_region': 'str',
45
+ 'regions': 'list[str]'
46
+ }
47
+
48
+ attribute_map = {
49
+ 'primary_region': 'primaryRegion',
50
+ 'regions': 'regions'
51
+ }
52
+
53
+ def __init__(self, primary_region: 'str' =None, regions: 'list[str]' =None): # noqa: E501
54
+ """V1NebiusDirectV1 - a model defined in Swagger""" # noqa: E501
55
+ self._primary_region = None
56
+ self._regions = None
57
+ self.discriminator = None
58
+ if primary_region is not None:
59
+ self.primary_region = primary_region
60
+ if regions is not None:
61
+ self.regions = regions
62
+
63
+ @property
64
+ def primary_region(self) -> 'str':
65
+ """Gets the primary_region of this V1NebiusDirectV1. # noqa: E501
66
+
67
+
68
+ :return: The primary_region of this V1NebiusDirectV1. # noqa: E501
69
+ :rtype: str
70
+ """
71
+ return self._primary_region
72
+
73
+ @primary_region.setter
74
+ def primary_region(self, primary_region: 'str'):
75
+ """Sets the primary_region of this V1NebiusDirectV1.
76
+
77
+
78
+ :param primary_region: The primary_region of this V1NebiusDirectV1. # noqa: E501
79
+ :type: str
80
+ """
81
+
82
+ self._primary_region = primary_region
83
+
84
+ @property
85
+ def regions(self) -> 'list[str]':
86
+ """Gets the regions of this V1NebiusDirectV1. # noqa: E501
87
+
88
+
89
+ :return: The regions of this V1NebiusDirectV1. # noqa: E501
90
+ :rtype: list[str]
91
+ """
92
+ return self._regions
93
+
94
+ @regions.setter
95
+ def regions(self, regions: 'list[str]'):
96
+ """Sets the regions of this V1NebiusDirectV1.
97
+
98
+
99
+ :param regions: The regions of this V1NebiusDirectV1. # noqa: E501
100
+ :type: list[str]
101
+ """
102
+
103
+ self._regions = regions
104
+
105
+ def to_dict(self) -> dict:
106
+ """Returns the model properties as a dict"""
107
+ result = {}
108
+
109
+ for attr, _ in six.iteritems(self.swagger_types):
110
+ value = getattr(self, attr)
111
+ if isinstance(value, list):
112
+ result[attr] = list(map(
113
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
114
+ value
115
+ ))
116
+ elif hasattr(value, "to_dict"):
117
+ result[attr] = value.to_dict()
118
+ elif isinstance(value, dict):
119
+ result[attr] = dict(map(
120
+ lambda item: (item[0], item[1].to_dict())
121
+ if hasattr(item[1], "to_dict") else item,
122
+ value.items()
123
+ ))
124
+ else:
125
+ result[attr] = value
126
+ if issubclass(V1NebiusDirectV1, dict):
127
+ for key, value in self.items():
128
+ result[key] = value
129
+
130
+ return result
131
+
132
+ def to_str(self) -> str:
133
+ """Returns the string representation of the model"""
134
+ return pprint.pformat(self.to_dict())
135
+
136
+ def __repr__(self) -> str:
137
+ """For `print` and `pprint`"""
138
+ return self.to_str()
139
+
140
+ def __eq__(self, other: 'V1NebiusDirectV1') -> bool:
141
+ """Returns true if both objects are equal"""
142
+ if not isinstance(other, V1NebiusDirectV1):
143
+ return False
144
+
145
+ return self.__dict__ == other.__dict__
146
+
147
+ def __ne__(self, other: 'V1NebiusDirectV1') -> bool:
148
+ """Returns true if both objects are not equal"""
149
+ return not self == other
@@ -44,6 +44,7 @@ class V1Organization(object):
44
44
  'alerts_config': 'V1AlertsConfig',
45
45
  'allow_aws_saas': 'bool',
46
46
  'allow_budgeting': 'bool',
47
+ 'allow_external_project_duplication': 'bool',
47
48
  'allow_gcp_saas': 'bool',
48
49
  'allow_guest': 'bool',
49
50
  'allow_lambda_saas': 'bool',
@@ -64,6 +65,7 @@ class V1Organization(object):
64
65
  'featured_gallery': 'bool',
65
66
  'full_story_end_date': 'datetime',
66
67
  'full_story_start_date': 'datetime',
68
+ 'general_teamspace': 'bool',
67
69
  'id': 'str',
68
70
  'location': 'str',
69
71
  'name': 'str',
@@ -81,6 +83,7 @@ class V1Organization(object):
81
83
  'alerts_config': 'alertsConfig',
82
84
  'allow_aws_saas': 'allowAwsSaas',
83
85
  'allow_budgeting': 'allowBudgeting',
86
+ 'allow_external_project_duplication': 'allowExternalProjectDuplication',
84
87
  'allow_gcp_saas': 'allowGcpSaas',
85
88
  'allow_guest': 'allowGuest',
86
89
  'allow_lambda_saas': 'allowLambdaSaas',
@@ -101,6 +104,7 @@ class V1Organization(object):
101
104
  'featured_gallery': 'featuredGallery',
102
105
  'full_story_end_date': 'fullStoryEndDate',
103
106
  'full_story_start_date': 'fullStoryStartDate',
107
+ 'general_teamspace': 'generalTeamspace',
104
108
  'id': 'id',
105
109
  'location': 'location',
106
110
  'name': 'name',
@@ -114,11 +118,12 @@ class V1Organization(object):
114
118
  'workload_max_run_duration': 'workloadMaxRunDuration'
115
119
  }
116
120
 
117
- def __init__(self, alerts_config: 'V1AlertsConfig' =None, allow_aws_saas: 'bool' =None, allow_budgeting: 'bool' =None, allow_gcp_saas: 'bool' =None, allow_guest: 'bool' =None, allow_lambda_saas: 'bool' =None, allow_marketplace: 'bool' =None, allow_member_invitations: 'bool' =None, allow_member_teamspace_creation: 'bool' =None, allow_vultr_saas: 'bool' =None, auto_invite_by_domain: 'bool' =None, auto_join_domain_validations: 'dict(str, V1AutoJoinDomainValidation)' =None, auto_join_domains: 'list[str]' =None, created_at: 'datetime' =None, default_machine_image_version: 'str' =None, default_machine_type: 'str' =None, description: 'str' =None, display_name: 'str' =None, domain: 'str' =None, email: 'str' =None, featured_gallery: 'bool' =None, full_story_end_date: 'datetime' =None, full_story_start_date: 'datetime' =None, id: 'str' =None, location: 'str' =None, name: 'str' =None, preferred_cluster: 'str' =None, preferred_deployment_provider: 'str' =None, preferred_studio_provider: 'str' =None, start_studios_on_spot_instance: 'bool' =None, teamspace_default_credits: 'float' =None, twitter_username: 'str' =None, updated_at: 'datetime' =None, workload_max_run_duration: 'str' =None): # noqa: E501
121
+ def __init__(self, alerts_config: 'V1AlertsConfig' =None, allow_aws_saas: 'bool' =None, allow_budgeting: 'bool' =None, allow_external_project_duplication: 'bool' =None, allow_gcp_saas: 'bool' =None, allow_guest: 'bool' =None, allow_lambda_saas: 'bool' =None, allow_marketplace: 'bool' =None, allow_member_invitations: 'bool' =None, allow_member_teamspace_creation: 'bool' =None, allow_vultr_saas: 'bool' =None, auto_invite_by_domain: 'bool' =None, auto_join_domain_validations: 'dict(str, V1AutoJoinDomainValidation)' =None, auto_join_domains: 'list[str]' =None, created_at: 'datetime' =None, default_machine_image_version: 'str' =None, default_machine_type: 'str' =None, description: 'str' =None, display_name: 'str' =None, domain: 'str' =None, email: 'str' =None, featured_gallery: 'bool' =None, full_story_end_date: 'datetime' =None, full_story_start_date: 'datetime' =None, general_teamspace: 'bool' =None, id: 'str' =None, location: 'str' =None, name: 'str' =None, preferred_cluster: 'str' =None, preferred_deployment_provider: 'str' =None, preferred_studio_provider: 'str' =None, start_studios_on_spot_instance: 'bool' =None, teamspace_default_credits: 'float' =None, twitter_username: 'str' =None, updated_at: 'datetime' =None, workload_max_run_duration: 'str' =None): # noqa: E501
118
122
  """V1Organization - a model defined in Swagger""" # noqa: E501
119
123
  self._alerts_config = None
120
124
  self._allow_aws_saas = None
121
125
  self._allow_budgeting = None
126
+ self._allow_external_project_duplication = None
122
127
  self._allow_gcp_saas = None
123
128
  self._allow_guest = None
124
129
  self._allow_lambda_saas = None
@@ -139,6 +144,7 @@ class V1Organization(object):
139
144
  self._featured_gallery = None
140
145
  self._full_story_end_date = None
141
146
  self._full_story_start_date = None
147
+ self._general_teamspace = None
142
148
  self._id = None
143
149
  self._location = None
144
150
  self._name = None
@@ -157,6 +163,8 @@ class V1Organization(object):
157
163
  self.allow_aws_saas = allow_aws_saas
158
164
  if allow_budgeting is not None:
159
165
  self.allow_budgeting = allow_budgeting
166
+ if allow_external_project_duplication is not None:
167
+ self.allow_external_project_duplication = allow_external_project_duplication
160
168
  if allow_gcp_saas is not None:
161
169
  self.allow_gcp_saas = allow_gcp_saas
162
170
  if allow_guest is not None:
@@ -197,6 +205,8 @@ class V1Organization(object):
197
205
  self.full_story_end_date = full_story_end_date
198
206
  if full_story_start_date is not None:
199
207
  self.full_story_start_date = full_story_start_date
208
+ if general_teamspace is not None:
209
+ self.general_teamspace = general_teamspace
200
210
  if id is not None:
201
211
  self.id = id
202
212
  if location is not None:
@@ -283,6 +293,29 @@ class V1Organization(object):
283
293
 
284
294
  self._allow_budgeting = allow_budgeting
285
295
 
296
+ @property
297
+ def allow_external_project_duplication(self) -> 'bool':
298
+ """Gets the allow_external_project_duplication of this V1Organization. # noqa: E501
299
+
300
+ This is an org level setting which will allow whether or not studios in a teamspace can be duplicated outside of teamspaces. Enabling this will allow teamspaces in an org to configure their own individual settings. # noqa: E501
301
+
302
+ :return: The allow_external_project_duplication of this V1Organization. # noqa: E501
303
+ :rtype: bool
304
+ """
305
+ return self._allow_external_project_duplication
306
+
307
+ @allow_external_project_duplication.setter
308
+ def allow_external_project_duplication(self, allow_external_project_duplication: 'bool'):
309
+ """Sets the allow_external_project_duplication of this V1Organization.
310
+
311
+ This is an org level setting which will allow whether or not studios in a teamspace can be duplicated outside of teamspaces. Enabling this will allow teamspaces in an org to configure their own individual settings. # noqa: E501
312
+
313
+ :param allow_external_project_duplication: The allow_external_project_duplication of this V1Organization. # noqa: E501
314
+ :type: bool
315
+ """
316
+
317
+ self._allow_external_project_duplication = allow_external_project_duplication
318
+
286
319
  @property
287
320
  def allow_gcp_saas(self) -> 'bool':
288
321
  """Gets the allow_gcp_saas of this V1Organization. # noqa: E501
@@ -703,6 +736,27 @@ class V1Organization(object):
703
736
 
704
737
  self._full_story_start_date = full_story_start_date
705
738
 
739
+ @property
740
+ def general_teamspace(self) -> 'bool':
741
+ """Gets the general_teamspace of this V1Organization. # noqa: E501
742
+
743
+
744
+ :return: The general_teamspace of this V1Organization. # noqa: E501
745
+ :rtype: bool
746
+ """
747
+ return self._general_teamspace
748
+
749
+ @general_teamspace.setter
750
+ def general_teamspace(self, general_teamspace: 'bool'):
751
+ """Sets the general_teamspace of this V1Organization.
752
+
753
+
754
+ :param general_teamspace: The general_teamspace of this V1Organization. # noqa: E501
755
+ :type: bool
756
+ """
757
+
758
+ self._general_teamspace = general_teamspace
759
+
706
760
  @property
707
761
  def id(self) -> 'str':
708
762
  """Gets the id of this V1Organization. # noqa: E501
@@ -42,6 +42,7 @@ class V1ProjectSettings(object):
42
42
  """
43
43
  swagger_types = {
44
44
  'allow_aws_saas': 'bool',
45
+ 'allow_external_project_duplication': 'bool',
45
46
  'allow_gcp_saas': 'bool',
46
47
  'allow_lambda_saas': 'bool',
47
48
  'allow_vultr_saas': 'bool',
@@ -56,6 +57,7 @@ class V1ProjectSettings(object):
56
57
 
57
58
  attribute_map = {
58
59
  'allow_aws_saas': 'allowAwsSaas',
60
+ 'allow_external_project_duplication': 'allowExternalProjectDuplication',
59
61
  'allow_gcp_saas': 'allowGcpSaas',
60
62
  'allow_lambda_saas': 'allowLambdaSaas',
61
63
  'allow_vultr_saas': 'allowVultrSaas',
@@ -68,9 +70,10 @@ class V1ProjectSettings(object):
68
70
  'start_studio_on_spot_instance': 'startStudioOnSpotInstance'
69
71
  }
70
72
 
71
- def __init__(self, allow_aws_saas: 'bool' =None, allow_gcp_saas: 'bool' =None, allow_lambda_saas: 'bool' =None, allow_vultr_saas: 'bool' =None, default_machine_image_version: 'str' =None, default_machine_type: 'str' =None, preferred_cluster: 'str' =None, preferred_deployment_provider: 'str' =None, preferred_studio_provider: 'str' =None, same_compute_on_resume: 'bool' =None, start_studio_on_spot_instance: 'bool' =None): # noqa: E501
73
+ def __init__(self, allow_aws_saas: 'bool' =None, allow_external_project_duplication: 'bool' =None, allow_gcp_saas: 'bool' =None, allow_lambda_saas: 'bool' =None, allow_vultr_saas: 'bool' =None, default_machine_image_version: 'str' =None, default_machine_type: 'str' =None, preferred_cluster: 'str' =None, preferred_deployment_provider: 'str' =None, preferred_studio_provider: 'str' =None, same_compute_on_resume: 'bool' =None, start_studio_on_spot_instance: 'bool' =None): # noqa: E501
72
74
  """V1ProjectSettings - a model defined in Swagger""" # noqa: E501
73
75
  self._allow_aws_saas = None
76
+ self._allow_external_project_duplication = None
74
77
  self._allow_gcp_saas = None
75
78
  self._allow_lambda_saas = None
76
79
  self._allow_vultr_saas = None
@@ -84,6 +87,8 @@ class V1ProjectSettings(object):
84
87
  self.discriminator = None
85
88
  if allow_aws_saas is not None:
86
89
  self.allow_aws_saas = allow_aws_saas
90
+ if allow_external_project_duplication is not None:
91
+ self.allow_external_project_duplication = allow_external_project_duplication
87
92
  if allow_gcp_saas is not None:
88
93
  self.allow_gcp_saas = allow_gcp_saas
89
94
  if allow_lambda_saas is not None:
@@ -126,6 +131,29 @@ class V1ProjectSettings(object):
126
131
 
127
132
  self._allow_aws_saas = allow_aws_saas
128
133
 
134
+ @property
135
+ def allow_external_project_duplication(self) -> 'bool':
136
+ """Gets the allow_external_project_duplication of this V1ProjectSettings. # noqa: E501
137
+
138
+ Allows teamspace admins to configure whether or not they want members to be able to duplicate studios without admin intervention. # noqa: E501
139
+
140
+ :return: The allow_external_project_duplication of this V1ProjectSettings. # noqa: E501
141
+ :rtype: bool
142
+ """
143
+ return self._allow_external_project_duplication
144
+
145
+ @allow_external_project_duplication.setter
146
+ def allow_external_project_duplication(self, allow_external_project_duplication: 'bool'):
147
+ """Sets the allow_external_project_duplication of this V1ProjectSettings.
148
+
149
+ Allows teamspace admins to configure whether or not they want members to be able to duplicate studios without admin intervention. # noqa: E501
150
+
151
+ :param allow_external_project_duplication: The allow_external_project_duplication of this V1ProjectSettings. # noqa: E501
152
+ :type: bool
153
+ """
154
+
155
+ self._allow_external_project_duplication = allow_external_project_duplication
156
+
129
157
  @property
130
158
  def allow_gcp_saas(self) -> 'bool':
131
159
  """Gets the allow_gcp_saas of this V1ProjectSettings. # noqa: E501
@@ -0,0 +1,279 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ external/v1/auth_service.proto
5
+
6
+ No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501
7
+
8
+ OpenAPI spec version: version not set
9
+
10
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
11
+
12
+ NOTE
13
+ ----
14
+ standard swagger-codegen-cli for this python client has been modified
15
+ by custom templates. The purpose of these templates is to include
16
+ typing information in the API and Model code. Please refer to the
17
+ main grid repository for more info
18
+ """
19
+
20
+ import pprint
21
+ import re # noqa: F401
22
+
23
+ from typing import TYPE_CHECKING
24
+
25
+ import six
26
+
27
+ if TYPE_CHECKING:
28
+ from datetime import datetime
29
+ from lightning_sdk.lightning_cloud.openapi.models import *
30
+
31
+ class V1ReservationBillingSession(object):
32
+ """NOTE: This class is auto generated by the swagger code generator program.
33
+
34
+ Do not edit the class manually.
35
+ """
36
+ """
37
+ Attributes:
38
+ swagger_types (dict): The key is attribute name
39
+ and the value is attribute type.
40
+ attribute_map (dict): The key is attribute name
41
+ and the value is json key in definition.
42
+ """
43
+ swagger_types = {
44
+ 'cluster_id': 'str',
45
+ 'cost': 'float',
46
+ 'end_time': 'datetime',
47
+ 'machine_type': 'str',
48
+ 'num_instances': 'str',
49
+ 'project_id': 'str',
50
+ 'start_time': 'datetime'
51
+ }
52
+
53
+ attribute_map = {
54
+ 'cluster_id': 'clusterId',
55
+ 'cost': 'cost',
56
+ 'end_time': 'endTime',
57
+ 'machine_type': 'machineType',
58
+ 'num_instances': 'numInstances',
59
+ 'project_id': 'projectId',
60
+ 'start_time': 'startTime'
61
+ }
62
+
63
+ def __init__(self, cluster_id: 'str' =None, cost: 'float' =None, end_time: 'datetime' =None, machine_type: 'str' =None, num_instances: 'str' =None, project_id: 'str' =None, start_time: 'datetime' =None): # noqa: E501
64
+ """V1ReservationBillingSession - a model defined in Swagger""" # noqa: E501
65
+ self._cluster_id = None
66
+ self._cost = None
67
+ self._end_time = None
68
+ self._machine_type = None
69
+ self._num_instances = None
70
+ self._project_id = None
71
+ self._start_time = None
72
+ self.discriminator = None
73
+ if cluster_id is not None:
74
+ self.cluster_id = cluster_id
75
+ if cost is not None:
76
+ self.cost = cost
77
+ if end_time is not None:
78
+ self.end_time = end_time
79
+ if machine_type is not None:
80
+ self.machine_type = machine_type
81
+ if num_instances is not None:
82
+ self.num_instances = num_instances
83
+ if project_id is not None:
84
+ self.project_id = project_id
85
+ if start_time is not None:
86
+ self.start_time = start_time
87
+
88
+ @property
89
+ def cluster_id(self) -> 'str':
90
+ """Gets the cluster_id of this V1ReservationBillingSession. # noqa: E501
91
+
92
+
93
+ :return: The cluster_id of this V1ReservationBillingSession. # noqa: E501
94
+ :rtype: str
95
+ """
96
+ return self._cluster_id
97
+
98
+ @cluster_id.setter
99
+ def cluster_id(self, cluster_id: 'str'):
100
+ """Sets the cluster_id of this V1ReservationBillingSession.
101
+
102
+
103
+ :param cluster_id: The cluster_id of this V1ReservationBillingSession. # noqa: E501
104
+ :type: str
105
+ """
106
+
107
+ self._cluster_id = cluster_id
108
+
109
+ @property
110
+ def cost(self) -> 'float':
111
+ """Gets the cost of this V1ReservationBillingSession. # noqa: E501
112
+
113
+
114
+ :return: The cost of this V1ReservationBillingSession. # noqa: E501
115
+ :rtype: float
116
+ """
117
+ return self._cost
118
+
119
+ @cost.setter
120
+ def cost(self, cost: 'float'):
121
+ """Sets the cost of this V1ReservationBillingSession.
122
+
123
+
124
+ :param cost: The cost of this V1ReservationBillingSession. # noqa: E501
125
+ :type: float
126
+ """
127
+
128
+ self._cost = cost
129
+
130
+ @property
131
+ def end_time(self) -> 'datetime':
132
+ """Gets the end_time of this V1ReservationBillingSession. # noqa: E501
133
+
134
+
135
+ :return: The end_time of this V1ReservationBillingSession. # noqa: E501
136
+ :rtype: datetime
137
+ """
138
+ return self._end_time
139
+
140
+ @end_time.setter
141
+ def end_time(self, end_time: 'datetime'):
142
+ """Sets the end_time of this V1ReservationBillingSession.
143
+
144
+
145
+ :param end_time: The end_time of this V1ReservationBillingSession. # noqa: E501
146
+ :type: datetime
147
+ """
148
+
149
+ self._end_time = end_time
150
+
151
+ @property
152
+ def machine_type(self) -> 'str':
153
+ """Gets the machine_type of this V1ReservationBillingSession. # noqa: E501
154
+
155
+
156
+ :return: The machine_type of this V1ReservationBillingSession. # noqa: E501
157
+ :rtype: str
158
+ """
159
+ return self._machine_type
160
+
161
+ @machine_type.setter
162
+ def machine_type(self, machine_type: 'str'):
163
+ """Sets the machine_type of this V1ReservationBillingSession.
164
+
165
+
166
+ :param machine_type: The machine_type of this V1ReservationBillingSession. # noqa: E501
167
+ :type: str
168
+ """
169
+
170
+ self._machine_type = machine_type
171
+
172
+ @property
173
+ def num_instances(self) -> 'str':
174
+ """Gets the num_instances of this V1ReservationBillingSession. # noqa: E501
175
+
176
+
177
+ :return: The num_instances of this V1ReservationBillingSession. # noqa: E501
178
+ :rtype: str
179
+ """
180
+ return self._num_instances
181
+
182
+ @num_instances.setter
183
+ def num_instances(self, num_instances: 'str'):
184
+ """Sets the num_instances of this V1ReservationBillingSession.
185
+
186
+
187
+ :param num_instances: The num_instances of this V1ReservationBillingSession. # noqa: E501
188
+ :type: str
189
+ """
190
+
191
+ self._num_instances = num_instances
192
+
193
+ @property
194
+ def project_id(self) -> 'str':
195
+ """Gets the project_id of this V1ReservationBillingSession. # noqa: E501
196
+
197
+
198
+ :return: The project_id of this V1ReservationBillingSession. # noqa: E501
199
+ :rtype: str
200
+ """
201
+ return self._project_id
202
+
203
+ @project_id.setter
204
+ def project_id(self, project_id: 'str'):
205
+ """Sets the project_id of this V1ReservationBillingSession.
206
+
207
+
208
+ :param project_id: The project_id of this V1ReservationBillingSession. # noqa: E501
209
+ :type: str
210
+ """
211
+
212
+ self._project_id = project_id
213
+
214
+ @property
215
+ def start_time(self) -> 'datetime':
216
+ """Gets the start_time of this V1ReservationBillingSession. # noqa: E501
217
+
218
+
219
+ :return: The start_time of this V1ReservationBillingSession. # noqa: E501
220
+ :rtype: datetime
221
+ """
222
+ return self._start_time
223
+
224
+ @start_time.setter
225
+ def start_time(self, start_time: 'datetime'):
226
+ """Sets the start_time of this V1ReservationBillingSession.
227
+
228
+
229
+ :param start_time: The start_time of this V1ReservationBillingSession. # noqa: E501
230
+ :type: datetime
231
+ """
232
+
233
+ self._start_time = start_time
234
+
235
+ def to_dict(self) -> dict:
236
+ """Returns the model properties as a dict"""
237
+ result = {}
238
+
239
+ for attr, _ in six.iteritems(self.swagger_types):
240
+ value = getattr(self, attr)
241
+ if isinstance(value, list):
242
+ result[attr] = list(map(
243
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
244
+ value
245
+ ))
246
+ elif hasattr(value, "to_dict"):
247
+ result[attr] = value.to_dict()
248
+ elif isinstance(value, dict):
249
+ result[attr] = dict(map(
250
+ lambda item: (item[0], item[1].to_dict())
251
+ if hasattr(item[1], "to_dict") else item,
252
+ value.items()
253
+ ))
254
+ else:
255
+ result[attr] = value
256
+ if issubclass(V1ReservationBillingSession, dict):
257
+ for key, value in self.items():
258
+ result[key] = value
259
+
260
+ return result
261
+
262
+ def to_str(self) -> str:
263
+ """Returns the string representation of the model"""
264
+ return pprint.pformat(self.to_dict())
265
+
266
+ def __repr__(self) -> str:
267
+ """For `print` and `pprint`"""
268
+ return self.to_str()
269
+
270
+ def __eq__(self, other: 'V1ReservationBillingSession') -> bool:
271
+ """Returns true if both objects are equal"""
272
+ if not isinstance(other, V1ReservationBillingSession):
273
+ return False
274
+
275
+ return self.__dict__ == other.__dict__
276
+
277
+ def __ne__(self, other: 'V1ReservationBillingSession') -> bool:
278
+ """Returns true if both objects are not equal"""
279
+ return not self == other