mithril-client 0.1.0a1__cp314-cp314-macosx_11_0_arm64.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 (163) hide show
  1. mithril/__init__.py +7 -0
  2. mithril/_mcli.cpython-314-darwin.so +0 -0
  3. mithril/_mcli.pyi +7 -0
  4. mithril/_mcli_entry.py +75 -0
  5. mithril/api/__init__.py +7 -0
  6. mithril/api/bindings/.gitattributes +2 -0
  7. mithril/api/bindings/__init__.py +10 -0
  8. mithril/api/bindings/api/__init__.py +1 -0
  9. mithril/api/bindings/api/api_keys/__init__.py +1 -0
  10. mithril/api/bindings/api/api_keys/create_api_key_v2_api_keys_post.py +179 -0
  11. mithril/api/bindings/api/api_keys/get_api_keys_v2_api_keys_get.py +141 -0
  12. mithril/api/bindings/api/api_keys/revoke_api_key_v2_api_keys_key_fid_delete.py +173 -0
  13. mithril/api/bindings/api/image_versions/__init__.py +1 -0
  14. mithril/api/bindings/api/image_versions/get_image_versions_v2_image_versions_get.py +141 -0
  15. mithril/api/bindings/api/image_versions/get_mcc_image_versions_v2_mcc_image_versions_get.py +179 -0
  16. mithril/api/bindings/api/instance_types/__init__.py +1 -0
  17. mithril/api/bindings/api/instance_types/get_instance_types_v2_instance_types_get.py +137 -0
  18. mithril/api/bindings/api/instances/__init__.py +1 -0
  19. mithril/api/bindings/api/instances/get_instance_status_v2_instances_instance_id_status_get.py +165 -0
  20. mithril/api/bindings/api/instances/get_instances_v2_instances_get.py +409 -0
  21. mithril/api/bindings/api/kubernetes_clusters/__init__.py +1 -0
  22. mithril/api/bindings/api/kubernetes_clusters/create_kubernetes_cluster_v2_kubernetes_clusters_post.py +171 -0
  23. mithril/api/bindings/api/kubernetes_clusters/delete_kubernetes_cluster_v2_kubernetes_clusters_cluster_fid_delete.py +163 -0
  24. mithril/api/bindings/api/kubernetes_clusters/get_kubernetes_cluster_v2_kubernetes_clusters_cluster_fid_get.py +165 -0
  25. mithril/api/bindings/api/kubernetes_clusters/get_kubernetes_clusters_v2_kubernetes_clusters_get.py +175 -0
  26. mithril/api/bindings/api/lifecycle_scripts/__init__.py +1 -0
  27. mithril/api/bindings/api/lifecycle_scripts/create_lifecycle_script_v2_lifecycle_scripts_post.py +171 -0
  28. mithril/api/bindings/api/lifecycle_scripts/delete_lifecycle_script_v2_lifecycle_scripts_ls_fid_delete.py +155 -0
  29. mithril/api/bindings/api/lifecycle_scripts/get_lifecycle_script_content_v2_lifecycle_scripts_ls_fid_content_get.py +155 -0
  30. mithril/api/bindings/api/lifecycle_scripts/list_lifecycle_scripts_v2_lifecycle_scripts_get.py +247 -0
  31. mithril/api/bindings/api/lifecycle_scripts/update_lifecycle_script_v2_lifecycle_scripts_ls_fid_patch.py +179 -0
  32. mithril/api/bindings/api/pricing/__init__.py +1 -0
  33. mithril/api/bindings/api/pricing/get_current_prices_v2_v2_pricing_current_get.py +217 -0
  34. mithril/api/bindings/api/pricing/get_historical_prices_v2_v2_pricing_history_get.py +222 -0
  35. mithril/api/bindings/api/profile/__init__.py +1 -0
  36. mithril/api/bindings/api/profile/get_me_v2_me_get.py +132 -0
  37. mithril/api/bindings/api/profile/get_my_teammates_v2_me_teammates_get.py +153 -0
  38. mithril/api/bindings/api/projects/__init__.py +1 -0
  39. mithril/api/bindings/api/projects/get_projects_v2_projects_get.py +137 -0
  40. mithril/api/bindings/api/quotas/__init__.py +1 -0
  41. mithril/api/bindings/api/quotas/get_quotas_v2_quotas_get.py +175 -0
  42. mithril/api/bindings/api/reservations/__init__.py +1 -0
  43. mithril/api/bindings/api/reservations/create_reservation_v2_reservation_post.py +171 -0
  44. mithril/api/bindings/api/reservations/extend_reservation_v2_reservation_reservation_fid_extend_post.py +187 -0
  45. mithril/api/bindings/api/reservations/get_availability_v2_reservation_availability_get.py +664 -0
  46. mithril/api/bindings/api/reservations/get_extension_availability_v2_reservation_reservation_fid_extension_availability_get.py +165 -0
  47. mithril/api/bindings/api/reservations/get_reservations_v2_reservation_get.py +309 -0
  48. mithril/api/bindings/api/reservations/update_reservation_v2_reservation_reservation_fid_patch.py +187 -0
  49. mithril/api/bindings/api/spot/__init__.py +1 -0
  50. mithril/api/bindings/api/spot/cancel_bid_v2_spot_bids_bid_fid_delete.py +161 -0
  51. mithril/api/bindings/api/spot/create_bid_v2_spot_bids_post.py +171 -0
  52. mithril/api/bindings/api/spot/get_auctions_v2_spot_availability_get.py +137 -0
  53. mithril/api/bindings/api/spot/get_bid_history_v2_spot_bids_bid_fid_history_get.py +193 -0
  54. mithril/api/bindings/api/spot/get_bid_status_v2_spot_bids_bid_fid_status_get.py +189 -0
  55. mithril/api/bindings/api/spot/get_bid_v2_spot_bids_bid_fid_get.py +163 -0
  56. mithril/api/bindings/api/spot/get_bids_v2_spot_bids_get.py +330 -0
  57. mithril/api/bindings/api/spot/update_bid_v2_spot_bids_bid_fid_patch.py +185 -0
  58. mithril/api/bindings/api/ssh_keys/__init__.py +1 -0
  59. mithril/api/bindings/api/ssh_keys/create_ssh_key_v2_ssh_keys_post.py +175 -0
  60. mithril/api/bindings/api/ssh_keys/delete_ssh_key_v2_ssh_keys_ssh_key_fid_delete.py +167 -0
  61. mithril/api/bindings/api/ssh_keys/get_ssh_keys_v2_ssh_keys_get.py +175 -0
  62. mithril/api/bindings/api/ssh_keys/update_ssh_key_v2_ssh_keys_ssh_key_fid_patch.py +187 -0
  63. mithril/api/bindings/api/volumes/__init__.py +1 -0
  64. mithril/api/bindings/api/volumes/create_volume_v2_volumes_post.py +211 -0
  65. mithril/api/bindings/api/volumes/delete_volume_v2_volumes_volume_fid_delete.py +199 -0
  66. mithril/api/bindings/api/volumes/get_volumes_v2_volumes_get.py +239 -0
  67. mithril/api/bindings/api/volumes/update_volume_v2_volumes_volume_fid_patch.py +243 -0
  68. mithril/api/bindings/client.py +284 -0
  69. mithril/api/bindings/errors.py +18 -0
  70. mithril/api/bindings/models/__init__.py +169 -0
  71. mithril/api/bindings/models/api_key_model.py +114 -0
  72. mithril/api/bindings/models/auction_model.py +146 -0
  73. mithril/api/bindings/models/availability_slot_model.py +76 -0
  74. mithril/api/bindings/models/bid_history_event_model.py +157 -0
  75. mithril/api/bindings/models/bid_history_event_model_event_type.py +19 -0
  76. mithril/api/bindings/models/bid_history_response.py +84 -0
  77. mithril/api/bindings/models/bid_model.py +191 -0
  78. mithril/api/bindings/models/bid_model_status.py +14 -0
  79. mithril/api/bindings/models/bid_status_response.py +72 -0
  80. mithril/api/bindings/models/bid_status_response_status.py +15 -0
  81. mithril/api/bindings/models/check_availability_response.py +60 -0
  82. mithril/api/bindings/models/create_api_key_request.py +68 -0
  83. mithril/api/bindings/models/create_api_key_response.py +122 -0
  84. mithril/api/bindings/models/create_bid_request.py +116 -0
  85. mithril/api/bindings/models/create_kubernetes_cluster_request.py +136 -0
  86. mithril/api/bindings/models/create_kubernetes_cluster_request_k8s_version.py +11 -0
  87. mithril/api/bindings/models/create_lifecycle_script_request.py +115 -0
  88. mithril/api/bindings/models/create_reservation_request.py +124 -0
  89. mithril/api/bindings/models/create_ssh_key_request.py +99 -0
  90. mithril/api/bindings/models/create_volume_request.py +98 -0
  91. mithril/api/bindings/models/create_volume_request_disk_interface.py +11 -0
  92. mithril/api/bindings/models/created_ssh_key_model.py +122 -0
  93. mithril/api/bindings/models/current_prices_response.py +202 -0
  94. mithril/api/bindings/models/extend_reservation_request.py +60 -0
  95. mithril/api/bindings/models/extension_availability_response.py +68 -0
  96. mithril/api/bindings/models/get_availability_v2_reservation_availability_get_mode.py +12 -0
  97. mithril/api/bindings/models/get_bids_response.py +96 -0
  98. mithril/api/bindings/models/get_bids_v2_spot_bids_get_sort_by.py +11 -0
  99. mithril/api/bindings/models/get_bids_v2_spot_bids_get_status.py +14 -0
  100. mithril/api/bindings/models/get_instances_response.py +96 -0
  101. mithril/api/bindings/models/get_instances_v2_instances_get_order_type_in_type_0_item.py +11 -0
  102. mithril/api/bindings/models/get_instances_v2_instances_get_sort_by.py +12 -0
  103. mithril/api/bindings/models/get_instances_v2_instances_get_status_in_type_0_item.py +24 -0
  104. mithril/api/bindings/models/get_latest_end_time_response.py +68 -0
  105. mithril/api/bindings/models/get_reservations_response.py +96 -0
  106. mithril/api/bindings/models/get_reservations_v2_reservation_get_sort_by.py +11 -0
  107. mithril/api/bindings/models/get_reservations_v2_reservation_get_status.py +14 -0
  108. mithril/api/bindings/models/historical_price_point_model.py +94 -0
  109. mithril/api/bindings/models/historical_prices_response_model.py +76 -0
  110. mithril/api/bindings/models/http_validation_error.py +78 -0
  111. mithril/api/bindings/models/image_version_model.py +224 -0
  112. mithril/api/bindings/models/instance_model.py +211 -0
  113. mithril/api/bindings/models/instance_model_status.py +24 -0
  114. mithril/api/bindings/models/instance_status_response.py +141 -0
  115. mithril/api/bindings/models/instance_status_response_status.py +24 -0
  116. mithril/api/bindings/models/instance_type_model.py +170 -0
  117. mithril/api/bindings/models/kubernetes_cluster_model.py +207 -0
  118. mithril/api/bindings/models/kubernetes_cluster_model_status.py +12 -0
  119. mithril/api/bindings/models/launch_specification_model.py +152 -0
  120. mithril/api/bindings/models/lifecycle_script_model.py +134 -0
  121. mithril/api/bindings/models/lifecycle_script_scope.py +12 -0
  122. mithril/api/bindings/models/list_lifecycle_scripts_response.py +96 -0
  123. mithril/api/bindings/models/list_lifecycle_scripts_v2_lifecycle_scripts_get_sort_by.py +11 -0
  124. mithril/api/bindings/models/me_response.py +126 -0
  125. mithril/api/bindings/models/new_ssh_key_model.py +100 -0
  126. mithril/api/bindings/models/persistent_disk_change.py +92 -0
  127. mithril/api/bindings/models/project_model.py +76 -0
  128. mithril/api/bindings/models/public_lifecycle_script_scope.py +11 -0
  129. mithril/api/bindings/models/quota_model.py +132 -0
  130. mithril/api/bindings/models/reservation_model.py +215 -0
  131. mithril/api/bindings/models/reservation_model_status.py +14 -0
  132. mithril/api/bindings/models/size.py +70 -0
  133. mithril/api/bindings/models/size_unit.py +18 -0
  134. mithril/api/bindings/models/sort_direction.py +11 -0
  135. mithril/api/bindings/models/teammate_response.py +158 -0
  136. mithril/api/bindings/models/update_bid_request.py +143 -0
  137. mithril/api/bindings/models/update_lifecycle_script_request.py +109 -0
  138. mithril/api/bindings/models/update_reservation_request.py +103 -0
  139. mithril/api/bindings/models/update_ssh_key_request.py +60 -0
  140. mithril/api/bindings/models/update_volume_request.py +65 -0
  141. mithril/api/bindings/models/validation_error.py +89 -0
  142. mithril/api/bindings/models/volume_model.py +140 -0
  143. mithril/api/bindings/models/volume_model_attachments.py +46 -0
  144. mithril/api/bindings/models/volume_model_interface.py +11 -0
  145. mithril/api/bindings/types.py +56 -0
  146. mithril/api/client.py +138 -0
  147. mithril/cli/__init__.py +7 -0
  148. mithril/cli/commands/__init__.py +15 -0
  149. mithril/cli/commands/help.py +88 -0
  150. mithril/cli/commands/launch.py +353 -0
  151. mithril/cli/main.py +68 -0
  152. mithril/cli/utils/__init__.py +1 -0
  153. mithril/cli/utils/skypilot_passthrough.py +38 -0
  154. mithril/cli/utils/streaming.py +235 -0
  155. mithril/cli/utils/volumes.py +110 -0
  156. mithril/config.py +47 -0
  157. mithril/py.typed +0 -0
  158. mithril/sky/__init__.py +141 -0
  159. mithril/sky/client.py +176 -0
  160. mithril_client-0.1.0a1.dist-info/METADATA +56 -0
  161. mithril_client-0.1.0a1.dist-info/RECORD +163 -0
  162. mithril_client-0.1.0a1.dist-info/WHEEL +4 -0
  163. mithril_client-0.1.0a1.dist-info/entry_points.txt +3 -0
@@ -0,0 +1,207 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, Self, TypeVar, cast
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ from ..models.kubernetes_cluster_model_status import KubernetesClusterModelStatus
10
+ from ..types import UNSET, Unset
11
+
12
+ T = TypeVar("T", bound="KubernetesClusterModel")
13
+
14
+
15
+ @_attrs_define
16
+ class KubernetesClusterModel:
17
+ """Attributes:
18
+ fid (str):
19
+ project (str):
20
+ name (str):
21
+ region (str):
22
+ created_at (str):
23
+ ssh_keys (list[str]):
24
+ instances (list[str]):
25
+ status (KubernetesClusterModelStatus):
26
+ k8s_version (str):
27
+ kube_host (None | str | Unset):
28
+ join_command (None | str | Unset):
29
+ deleted_at (None | str | Unset):
30
+ user_fid (None | str | Unset):
31
+ """
32
+
33
+ fid: str
34
+ project: str
35
+ name: str
36
+ region: str
37
+ created_at: str
38
+ ssh_keys: list[str]
39
+ instances: list[str]
40
+ status: KubernetesClusterModelStatus
41
+ k8s_version: str
42
+ kube_host: None | str | Unset = UNSET
43
+ join_command: None | str | Unset = UNSET
44
+ deleted_at: None | str | Unset = UNSET
45
+ user_fid: None | str | Unset = UNSET
46
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
47
+
48
+ def to_dict(self) -> dict[str, Any]:
49
+ fid = self.fid
50
+
51
+ project = self.project
52
+
53
+ name = self.name
54
+
55
+ region = self.region
56
+
57
+ created_at = self.created_at
58
+
59
+ ssh_keys = self.ssh_keys
60
+
61
+ instances = self.instances
62
+
63
+ status = self.status.value
64
+
65
+ k8s_version = self.k8s_version
66
+
67
+ kube_host: None | str | Unset
68
+ if isinstance(self.kube_host, Unset):
69
+ kube_host = UNSET
70
+ else:
71
+ kube_host = self.kube_host
72
+
73
+ join_command: None | str | Unset
74
+ if isinstance(self.join_command, Unset):
75
+ join_command = UNSET
76
+ else:
77
+ join_command = self.join_command
78
+
79
+ deleted_at: None | str | Unset
80
+ if isinstance(self.deleted_at, Unset):
81
+ deleted_at = UNSET
82
+ else:
83
+ deleted_at = self.deleted_at
84
+
85
+ user_fid: None | str | Unset
86
+ if isinstance(self.user_fid, Unset):
87
+ user_fid = UNSET
88
+ else:
89
+ user_fid = self.user_fid
90
+
91
+ field_dict: dict[str, Any] = {}
92
+ field_dict.update(self.additional_properties)
93
+ field_dict.update(
94
+ {
95
+ "fid": fid,
96
+ "project": project,
97
+ "name": name,
98
+ "region": region,
99
+ "created_at": created_at,
100
+ "ssh_keys": ssh_keys,
101
+ "instances": instances,
102
+ "status": status,
103
+ "k8s_version": k8s_version,
104
+ }
105
+ )
106
+ if kube_host is not UNSET:
107
+ field_dict["kube_host"] = kube_host
108
+ if join_command is not UNSET:
109
+ field_dict["join_command"] = join_command
110
+ if deleted_at is not UNSET:
111
+ field_dict["deleted_at"] = deleted_at
112
+ if user_fid is not UNSET:
113
+ field_dict["user_fid"] = user_fid
114
+
115
+ return field_dict
116
+
117
+ @classmethod
118
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
119
+ d = dict(src_dict)
120
+ fid = d.pop("fid")
121
+
122
+ project = d.pop("project")
123
+
124
+ name = d.pop("name")
125
+
126
+ region = d.pop("region")
127
+
128
+ created_at = d.pop("created_at")
129
+
130
+ ssh_keys = cast(list[str], d.pop("ssh_keys"))
131
+
132
+ instances = cast(list[str], d.pop("instances"))
133
+
134
+ status = KubernetesClusterModelStatus(d.pop("status"))
135
+
136
+ k8s_version = d.pop("k8s_version")
137
+
138
+ def _parse_kube_host(data: object) -> None | str | Unset:
139
+ if data is None:
140
+ return data
141
+ if isinstance(data, Unset):
142
+ return data
143
+ return cast(None | str | Unset, data)
144
+
145
+ kube_host = _parse_kube_host(d.pop("kube_host", UNSET))
146
+
147
+ def _parse_join_command(data: object) -> None | str | Unset:
148
+ if data is None:
149
+ return data
150
+ if isinstance(data, Unset):
151
+ return data
152
+ return cast(None | str | Unset, data)
153
+
154
+ join_command = _parse_join_command(d.pop("join_command", UNSET))
155
+
156
+ def _parse_deleted_at(data: object) -> None | str | Unset:
157
+ if data is None:
158
+ return data
159
+ if isinstance(data, Unset):
160
+ return data
161
+ return cast(None | str | Unset, data)
162
+
163
+ deleted_at = _parse_deleted_at(d.pop("deleted_at", UNSET))
164
+
165
+ def _parse_user_fid(data: object) -> None | str | Unset:
166
+ if data is None:
167
+ return data
168
+ if isinstance(data, Unset):
169
+ return data
170
+ return cast(None | str | Unset, data)
171
+
172
+ user_fid = _parse_user_fid(d.pop("user_fid", UNSET))
173
+
174
+ kubernetes_cluster_model = cls(
175
+ fid=fid,
176
+ project=project,
177
+ name=name,
178
+ region=region,
179
+ created_at=created_at,
180
+ ssh_keys=ssh_keys,
181
+ instances=instances,
182
+ status=status,
183
+ k8s_version=k8s_version,
184
+ kube_host=kube_host,
185
+ join_command=join_command,
186
+ deleted_at=deleted_at,
187
+ user_fid=user_fid,
188
+ )
189
+
190
+ kubernetes_cluster_model.additional_properties = d
191
+ return kubernetes_cluster_model
192
+
193
+ @property
194
+ def additional_keys(self) -> list[str]:
195
+ return list(self.additional_properties.keys())
196
+
197
+ def __getitem__(self, key: str) -> Any:
198
+ return self.additional_properties[key]
199
+
200
+ def __setitem__(self, key: str, value: Any) -> None:
201
+ self.additional_properties[key] = value
202
+
203
+ def __delitem__(self, key: str) -> None:
204
+ del self.additional_properties[key]
205
+
206
+ def __contains__(self, key: str) -> bool:
207
+ return key in self.additional_properties
@@ -0,0 +1,12 @@
1
+ from __future__ import annotations
2
+
3
+ from enum import Enum
4
+
5
+
6
+ class KubernetesClusterModelStatus(str, Enum):
7
+ AVAILABLE = "Available"
8
+ PENDING = "Pending"
9
+ TERMINATED = "Terminated"
10
+
11
+ def __str__(self) -> str:
12
+ return str(self.value)
@@ -0,0 +1,152 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, Self, TypeVar, cast
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ from ..types import UNSET, Unset
10
+
11
+ T = TypeVar("T", bound="LaunchSpecificationModel")
12
+
13
+
14
+ @_attrs_define
15
+ class LaunchSpecificationModel:
16
+ """Attributes:
17
+ volumes (list[str]): List of volume FIDs
18
+ ssh_keys (list[str]): List of SSH key FIDs
19
+ startup_script (None | str | Unset):
20
+ kubernetes_cluster (None | str | Unset):
21
+ image_version (None | str | Unset):
22
+ memory_gb (int | None | Unset):
23
+ """
24
+
25
+ volumes: list[str]
26
+ ssh_keys: list[str]
27
+ startup_script: None | str | Unset = UNSET
28
+ kubernetes_cluster: None | str | Unset = UNSET
29
+ image_version: None | str | Unset = UNSET
30
+ memory_gb: int | None | Unset = UNSET
31
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
32
+
33
+ def to_dict(self) -> dict[str, Any]:
34
+ volumes = self.volumes
35
+
36
+ ssh_keys = self.ssh_keys
37
+
38
+ startup_script: None | str | Unset
39
+ if isinstance(self.startup_script, Unset):
40
+ startup_script = UNSET
41
+ else:
42
+ startup_script = self.startup_script
43
+
44
+ kubernetes_cluster: None | str | Unset
45
+ if isinstance(self.kubernetes_cluster, Unset):
46
+ kubernetes_cluster = UNSET
47
+ else:
48
+ kubernetes_cluster = self.kubernetes_cluster
49
+
50
+ image_version: None | str | Unset
51
+ if isinstance(self.image_version, Unset):
52
+ image_version = UNSET
53
+ else:
54
+ image_version = self.image_version
55
+
56
+ memory_gb: int | None | Unset
57
+ if isinstance(self.memory_gb, Unset):
58
+ memory_gb = UNSET
59
+ else:
60
+ memory_gb = self.memory_gb
61
+
62
+ field_dict: dict[str, Any] = {}
63
+ field_dict.update(self.additional_properties)
64
+ field_dict.update(
65
+ {
66
+ "volumes": volumes,
67
+ "ssh_keys": ssh_keys,
68
+ }
69
+ )
70
+ if startup_script is not UNSET:
71
+ field_dict["startup_script"] = startup_script
72
+ if kubernetes_cluster is not UNSET:
73
+ field_dict["kubernetes_cluster"] = kubernetes_cluster
74
+ if image_version is not UNSET:
75
+ field_dict["image_version"] = image_version
76
+ if memory_gb is not UNSET:
77
+ field_dict["memory_gb"] = memory_gb
78
+
79
+ return field_dict
80
+
81
+ @classmethod
82
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
83
+ d = dict(src_dict)
84
+ volumes = cast(list[str], d.pop("volumes"))
85
+
86
+ ssh_keys = cast(list[str], d.pop("ssh_keys"))
87
+
88
+ def _parse_startup_script(data: object) -> None | str | Unset:
89
+ if data is None:
90
+ return data
91
+ if isinstance(data, Unset):
92
+ return data
93
+ return cast(None | str | Unset, data)
94
+
95
+ startup_script = _parse_startup_script(d.pop("startup_script", UNSET))
96
+
97
+ def _parse_kubernetes_cluster(data: object) -> None | str | Unset:
98
+ if data is None:
99
+ return data
100
+ if isinstance(data, Unset):
101
+ return data
102
+ return cast(None | str | Unset, data)
103
+
104
+ kubernetes_cluster = _parse_kubernetes_cluster(
105
+ d.pop("kubernetes_cluster", UNSET)
106
+ )
107
+
108
+ def _parse_image_version(data: object) -> None | str | Unset:
109
+ if data is None:
110
+ return data
111
+ if isinstance(data, Unset):
112
+ return data
113
+ return cast(None | str | Unset, data)
114
+
115
+ image_version = _parse_image_version(d.pop("image_version", UNSET))
116
+
117
+ def _parse_memory_gb(data: object) -> int | None | Unset:
118
+ if data is None:
119
+ return data
120
+ if isinstance(data, Unset):
121
+ return data
122
+ return cast(int | None | Unset, data)
123
+
124
+ memory_gb = _parse_memory_gb(d.pop("memory_gb", UNSET))
125
+
126
+ launch_specification_model = cls(
127
+ volumes=volumes,
128
+ ssh_keys=ssh_keys,
129
+ startup_script=startup_script,
130
+ kubernetes_cluster=kubernetes_cluster,
131
+ image_version=image_version,
132
+ memory_gb=memory_gb,
133
+ )
134
+
135
+ launch_specification_model.additional_properties = d
136
+ return launch_specification_model
137
+
138
+ @property
139
+ def additional_keys(self) -> list[str]:
140
+ return list(self.additional_properties.keys())
141
+
142
+ def __getitem__(self, key: str) -> Any:
143
+ return self.additional_properties[key]
144
+
145
+ def __setitem__(self, key: str, value: Any) -> None:
146
+ self.additional_properties[key] = value
147
+
148
+ def __delitem__(self, key: str) -> None:
149
+ del self.additional_properties[key]
150
+
151
+ def __contains__(self, key: str) -> bool:
152
+ return key in self.additional_properties
@@ -0,0 +1,134 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, Self, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ from ..models.lifecycle_script_scope import LifecycleScriptScope
10
+
11
+ T = TypeVar("T", bound="LifecycleScriptModel")
12
+
13
+
14
+ @_attrs_define
15
+ class LifecycleScriptModel:
16
+ """Attributes:
17
+ fid (str):
18
+ name (str):
19
+ description (str):
20
+ content_url (str):
21
+ project (str):
22
+ created_at (str):
23
+ created_by (str):
24
+ last_modified_at (str):
25
+ last_modified_by (str):
26
+ scope (LifecycleScriptScope):
27
+ """
28
+
29
+ fid: str
30
+ name: str
31
+ description: str
32
+ content_url: str
33
+ project: str
34
+ created_at: str
35
+ created_by: str
36
+ last_modified_at: str
37
+ last_modified_by: str
38
+ scope: LifecycleScriptScope
39
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
40
+
41
+ def to_dict(self) -> dict[str, Any]:
42
+ fid = self.fid
43
+
44
+ name = self.name
45
+
46
+ description = self.description
47
+
48
+ content_url = self.content_url
49
+
50
+ project = self.project
51
+
52
+ created_at = self.created_at
53
+
54
+ created_by = self.created_by
55
+
56
+ last_modified_at = self.last_modified_at
57
+
58
+ last_modified_by = self.last_modified_by
59
+
60
+ scope = self.scope.value
61
+
62
+ field_dict: dict[str, Any] = {}
63
+ field_dict.update(self.additional_properties)
64
+ field_dict.update(
65
+ {
66
+ "fid": fid,
67
+ "name": name,
68
+ "description": description,
69
+ "content_url": content_url,
70
+ "project": project,
71
+ "created_at": created_at,
72
+ "created_by": created_by,
73
+ "last_modified_at": last_modified_at,
74
+ "last_modified_by": last_modified_by,
75
+ "scope": scope,
76
+ }
77
+ )
78
+
79
+ return field_dict
80
+
81
+ @classmethod
82
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
83
+ d = dict(src_dict)
84
+ fid = d.pop("fid")
85
+
86
+ name = d.pop("name")
87
+
88
+ description = d.pop("description")
89
+
90
+ content_url = d.pop("content_url")
91
+
92
+ project = d.pop("project")
93
+
94
+ created_at = d.pop("created_at")
95
+
96
+ created_by = d.pop("created_by")
97
+
98
+ last_modified_at = d.pop("last_modified_at")
99
+
100
+ last_modified_by = d.pop("last_modified_by")
101
+
102
+ scope = LifecycleScriptScope(d.pop("scope"))
103
+
104
+ lifecycle_script_model = cls(
105
+ fid=fid,
106
+ name=name,
107
+ description=description,
108
+ content_url=content_url,
109
+ project=project,
110
+ created_at=created_at,
111
+ created_by=created_by,
112
+ last_modified_at=last_modified_at,
113
+ last_modified_by=last_modified_by,
114
+ scope=scope,
115
+ )
116
+
117
+ lifecycle_script_model.additional_properties = d
118
+ return lifecycle_script_model
119
+
120
+ @property
121
+ def additional_keys(self) -> list[str]:
122
+ return list(self.additional_properties.keys())
123
+
124
+ def __getitem__(self, key: str) -> Any:
125
+ return self.additional_properties[key]
126
+
127
+ def __setitem__(self, key: str, value: Any) -> None:
128
+ self.additional_properties[key] = value
129
+
130
+ def __delitem__(self, key: str) -> None:
131
+ del self.additional_properties[key]
132
+
133
+ def __contains__(self, key: str) -> bool:
134
+ return key in self.additional_properties
@@ -0,0 +1,12 @@
1
+ from __future__ import annotations
2
+
3
+ from enum import Enum
4
+
5
+
6
+ class LifecycleScriptScope(str, Enum):
7
+ ORGANIZATION = "ORGANIZATION"
8
+ PLATFORM = "PLATFORM"
9
+ PROJECT = "PROJECT"
10
+
11
+ def __str__(self) -> str:
12
+ return str(self.value)
@@ -0,0 +1,96 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import TYPE_CHECKING, Any, Self, TypeVar, cast
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ from ..types import UNSET, Unset
10
+
11
+ if TYPE_CHECKING:
12
+ from ..models.lifecycle_script_model import LifecycleScriptModel
13
+
14
+
15
+ T = TypeVar("T", bound="ListLifecycleScriptsResponse")
16
+
17
+
18
+ @_attrs_define
19
+ class ListLifecycleScriptsResponse:
20
+ """Attributes:
21
+ data (list[LifecycleScriptModel]):
22
+ next_cursor (None | str | Unset):
23
+ """
24
+
25
+ data: list[LifecycleScriptModel]
26
+ next_cursor: None | str | Unset = UNSET
27
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
+
29
+ def to_dict(self) -> dict[str, Any]:
30
+ data = []
31
+ for data_item_data in self.data:
32
+ data_item = data_item_data.to_dict()
33
+ data.append(data_item)
34
+
35
+ next_cursor: None | str | Unset
36
+ if isinstance(self.next_cursor, Unset):
37
+ next_cursor = UNSET
38
+ else:
39
+ next_cursor = self.next_cursor
40
+
41
+ field_dict: dict[str, Any] = {}
42
+ field_dict.update(self.additional_properties)
43
+ field_dict.update(
44
+ {
45
+ "data": data,
46
+ }
47
+ )
48
+ if next_cursor is not UNSET:
49
+ field_dict["next_cursor"] = next_cursor
50
+
51
+ return field_dict
52
+
53
+ @classmethod
54
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
55
+ from ..models.lifecycle_script_model import LifecycleScriptModel
56
+
57
+ d = dict(src_dict)
58
+ data = []
59
+ _data = d.pop("data")
60
+ for data_item_data in _data:
61
+ data_item = LifecycleScriptModel.from_dict(data_item_data)
62
+
63
+ data.append(data_item)
64
+
65
+ def _parse_next_cursor(data: object) -> None | str | Unset:
66
+ if data is None:
67
+ return data
68
+ if isinstance(data, Unset):
69
+ return data
70
+ return cast(None | str | Unset, data)
71
+
72
+ next_cursor = _parse_next_cursor(d.pop("next_cursor", UNSET))
73
+
74
+ list_lifecycle_scripts_response = cls(
75
+ data=data,
76
+ next_cursor=next_cursor,
77
+ )
78
+
79
+ list_lifecycle_scripts_response.additional_properties = d
80
+ return list_lifecycle_scripts_response
81
+
82
+ @property
83
+ def additional_keys(self) -> list[str]:
84
+ return list(self.additional_properties.keys())
85
+
86
+ def __getitem__(self, key: str) -> Any:
87
+ return self.additional_properties[key]
88
+
89
+ def __setitem__(self, key: str, value: Any) -> None:
90
+ self.additional_properties[key] = value
91
+
92
+ def __delitem__(self, key: str) -> None:
93
+ del self.additional_properties[key]
94
+
95
+ def __contains__(self, key: str) -> bool:
96
+ return key in self.additional_properties
@@ -0,0 +1,11 @@
1
+ from __future__ import annotations
2
+
3
+ from enum import Enum
4
+
5
+
6
+ class ListLifecycleScriptsV2LifecycleScriptsGetSortBy(str, Enum):
7
+ CREATED_AT = "created_at"
8
+ LAST_MODIFIED_AT = "last_modified_at"
9
+
10
+ def __str__(self) -> str:
11
+ return str(self.value)