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,72 @@
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.bid_status_response_status import BidStatusResponseStatus
10
+
11
+ T = TypeVar("T", bound="BidStatusResponse")
12
+
13
+
14
+ @_attrs_define
15
+ class BidStatusResponse:
16
+ """Response model for the detailed bid status endpoint.
17
+
18
+ Attributes:
19
+ bid_fid (str):
20
+ status (BidStatusResponseStatus):
21
+ """
22
+
23
+ bid_fid: str
24
+ status: BidStatusResponseStatus
25
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
26
+
27
+ def to_dict(self) -> dict[str, Any]:
28
+ bid_fid = self.bid_fid
29
+
30
+ status = self.status.value
31
+
32
+ field_dict: dict[str, Any] = {}
33
+ field_dict.update(self.additional_properties)
34
+ field_dict.update(
35
+ {
36
+ "bid_fid": bid_fid,
37
+ "status": status,
38
+ }
39
+ )
40
+
41
+ return field_dict
42
+
43
+ @classmethod
44
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
45
+ d = dict(src_dict)
46
+ bid_fid = d.pop("bid_fid")
47
+
48
+ status = BidStatusResponseStatus(d.pop("status"))
49
+
50
+ bid_status_response = cls(
51
+ bid_fid=bid_fid,
52
+ status=status,
53
+ )
54
+
55
+ bid_status_response.additional_properties = d
56
+ return bid_status_response
57
+
58
+ @property
59
+ def additional_keys(self) -> list[str]:
60
+ return list(self.additional_properties.keys())
61
+
62
+ def __getitem__(self, key: str) -> Any:
63
+ return self.additional_properties[key]
64
+
65
+ def __setitem__(self, key: str, value: Any) -> None:
66
+ self.additional_properties[key] = value
67
+
68
+ def __delitem__(self, key: str) -> None:
69
+ del self.additional_properties[key]
70
+
71
+ def __contains__(self, key: str) -> bool:
72
+ return key in self.additional_properties
@@ -0,0 +1,15 @@
1
+ from __future__ import annotations
2
+
3
+ from enum import Enum
4
+
5
+
6
+ class BidStatusResponseStatus(str, Enum):
7
+ ALLOCATED = "Allocated"
8
+ OPEN = "Open"
9
+ PAUSED = "Paused"
10
+ PREEMPTING = "Preempting"
11
+ RELOCATING = "Relocating"
12
+ TERMINATED = "Terminated"
13
+
14
+ def __str__(self) -> str:
15
+ return str(self.value)
@@ -0,0 +1,60 @@
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
+ T = TypeVar("T", bound="CheckAvailabilityResponse")
10
+
11
+
12
+ @_attrs_define
13
+ class CheckAvailabilityResponse:
14
+ """Attributes:
15
+ available (bool):
16
+ """
17
+
18
+ available: bool
19
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
20
+
21
+ def to_dict(self) -> dict[str, Any]:
22
+ available = self.available
23
+
24
+ field_dict: dict[str, Any] = {}
25
+ field_dict.update(self.additional_properties)
26
+ field_dict.update(
27
+ {
28
+ "available": available,
29
+ }
30
+ )
31
+
32
+ return field_dict
33
+
34
+ @classmethod
35
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
36
+ d = dict(src_dict)
37
+ available = d.pop("available")
38
+
39
+ check_availability_response = cls(
40
+ available=available,
41
+ )
42
+
43
+ check_availability_response.additional_properties = d
44
+ return check_availability_response
45
+
46
+ @property
47
+ def additional_keys(self) -> list[str]:
48
+ return list(self.additional_properties.keys())
49
+
50
+ def __getitem__(self, key: str) -> Any:
51
+ return self.additional_properties[key]
52
+
53
+ def __setitem__(self, key: str, value: Any) -> None:
54
+ self.additional_properties[key] = value
55
+
56
+ def __delitem__(self, key: str) -> None:
57
+ del self.additional_properties[key]
58
+
59
+ def __contains__(self, key: str) -> bool:
60
+ return key in self.additional_properties
@@ -0,0 +1,68 @@
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
+ T = TypeVar("T", bound="CreateApiKeyRequest")
10
+
11
+
12
+ @_attrs_define
13
+ class CreateApiKeyRequest:
14
+ """Attributes:
15
+ name (str):
16
+ expires_at (str):
17
+ """
18
+
19
+ name: str
20
+ expires_at: str
21
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
22
+
23
+ def to_dict(self) -> dict[str, Any]:
24
+ name = self.name
25
+
26
+ expires_at = self.expires_at
27
+
28
+ field_dict: dict[str, Any] = {}
29
+ field_dict.update(self.additional_properties)
30
+ field_dict.update(
31
+ {
32
+ "name": name,
33
+ "expires_at": expires_at,
34
+ }
35
+ )
36
+
37
+ return field_dict
38
+
39
+ @classmethod
40
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
41
+ d = dict(src_dict)
42
+ name = d.pop("name")
43
+
44
+ expires_at = d.pop("expires_at")
45
+
46
+ create_api_key_request = cls(
47
+ name=name,
48
+ expires_at=expires_at,
49
+ )
50
+
51
+ create_api_key_request.additional_properties = d
52
+ return create_api_key_request
53
+
54
+ @property
55
+ def additional_keys(self) -> list[str]:
56
+ return list(self.additional_properties.keys())
57
+
58
+ def __getitem__(self, key: str) -> Any:
59
+ return self.additional_properties[key]
60
+
61
+ def __setitem__(self, key: str, value: Any) -> None:
62
+ self.additional_properties[key] = value
63
+
64
+ def __delitem__(self, key: str) -> None:
65
+ del self.additional_properties[key]
66
+
67
+ def __contains__(self, key: str) -> bool:
68
+ return key in self.additional_properties
@@ -0,0 +1,122 @@
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="CreateApiKeyResponse")
12
+
13
+
14
+ @_attrs_define
15
+ class CreateApiKeyResponse:
16
+ """Attributes:
17
+ fid (str):
18
+ name (str):
19
+ created_at (str):
20
+ expires_at (str):
21
+ snippet (str):
22
+ secret (str):
23
+ deactivated_at (None | str | Unset):
24
+ """
25
+
26
+ fid: str
27
+ name: str
28
+ created_at: str
29
+ expires_at: str
30
+ snippet: str
31
+ secret: str
32
+ deactivated_at: None | str | Unset = UNSET
33
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
34
+
35
+ def to_dict(self) -> dict[str, Any]:
36
+ fid = self.fid
37
+
38
+ name = self.name
39
+
40
+ created_at = self.created_at
41
+
42
+ expires_at = self.expires_at
43
+
44
+ snippet = self.snippet
45
+
46
+ secret = self.secret
47
+
48
+ deactivated_at: None | str | Unset
49
+ if isinstance(self.deactivated_at, Unset):
50
+ deactivated_at = UNSET
51
+ else:
52
+ deactivated_at = self.deactivated_at
53
+
54
+ field_dict: dict[str, Any] = {}
55
+ field_dict.update(self.additional_properties)
56
+ field_dict.update(
57
+ {
58
+ "fid": fid,
59
+ "name": name,
60
+ "created_at": created_at,
61
+ "expires_at": expires_at,
62
+ "snippet": snippet,
63
+ "secret": secret,
64
+ }
65
+ )
66
+ if deactivated_at is not UNSET:
67
+ field_dict["deactivated_at"] = deactivated_at
68
+
69
+ return field_dict
70
+
71
+ @classmethod
72
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
73
+ d = dict(src_dict)
74
+ fid = d.pop("fid")
75
+
76
+ name = d.pop("name")
77
+
78
+ created_at = d.pop("created_at")
79
+
80
+ expires_at = d.pop("expires_at")
81
+
82
+ snippet = d.pop("snippet")
83
+
84
+ secret = d.pop("secret")
85
+
86
+ def _parse_deactivated_at(data: object) -> None | str | Unset:
87
+ if data is None:
88
+ return data
89
+ if isinstance(data, Unset):
90
+ return data
91
+ return cast(None | str | Unset, data)
92
+
93
+ deactivated_at = _parse_deactivated_at(d.pop("deactivated_at", UNSET))
94
+
95
+ create_api_key_response = cls(
96
+ fid=fid,
97
+ name=name,
98
+ created_at=created_at,
99
+ expires_at=expires_at,
100
+ snippet=snippet,
101
+ secret=secret,
102
+ deactivated_at=deactivated_at,
103
+ )
104
+
105
+ create_api_key_response.additional_properties = d
106
+ return create_api_key_response
107
+
108
+ @property
109
+ def additional_keys(self) -> list[str]:
110
+ return list(self.additional_properties.keys())
111
+
112
+ def __getitem__(self, key: str) -> Any:
113
+ return self.additional_properties[key]
114
+
115
+ def __setitem__(self, key: str, value: Any) -> None:
116
+ self.additional_properties[key] = value
117
+
118
+ def __delitem__(self, key: str) -> None:
119
+ del self.additional_properties[key]
120
+
121
+ def __contains__(self, key: str) -> bool:
122
+ return key in self.additional_properties
@@ -0,0 +1,116 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import TYPE_CHECKING, Any, Self, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ if TYPE_CHECKING:
10
+ from ..models.launch_specification_model import LaunchSpecificationModel
11
+
12
+
13
+ T = TypeVar("T", bound="CreateBidRequest")
14
+
15
+
16
+ @_attrs_define
17
+ class CreateBidRequest:
18
+ """Attributes:
19
+ project (str):
20
+ region (str):
21
+ instance_type (str):
22
+ limit_price (str):
23
+ instance_quantity (int):
24
+ name (str):
25
+ launch_specification (LaunchSpecificationModel):
26
+ """
27
+
28
+ project: str
29
+ region: str
30
+ instance_type: str
31
+ limit_price: str
32
+ instance_quantity: int
33
+ name: str
34
+ launch_specification: LaunchSpecificationModel
35
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
36
+
37
+ def to_dict(self) -> dict[str, Any]:
38
+ project = self.project
39
+
40
+ region = self.region
41
+
42
+ instance_type = self.instance_type
43
+
44
+ limit_price = self.limit_price
45
+
46
+ instance_quantity = self.instance_quantity
47
+
48
+ name = self.name
49
+
50
+ launch_specification = self.launch_specification.to_dict()
51
+
52
+ field_dict: dict[str, Any] = {}
53
+ field_dict.update(self.additional_properties)
54
+ field_dict.update(
55
+ {
56
+ "project": project,
57
+ "region": region,
58
+ "instance_type": instance_type,
59
+ "limit_price": limit_price,
60
+ "instance_quantity": instance_quantity,
61
+ "name": name,
62
+ "launch_specification": launch_specification,
63
+ }
64
+ )
65
+
66
+ return field_dict
67
+
68
+ @classmethod
69
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
70
+ from ..models.launch_specification_model import LaunchSpecificationModel
71
+
72
+ d = dict(src_dict)
73
+ project = d.pop("project")
74
+
75
+ region = d.pop("region")
76
+
77
+ instance_type = d.pop("instance_type")
78
+
79
+ limit_price = d.pop("limit_price")
80
+
81
+ instance_quantity = d.pop("instance_quantity")
82
+
83
+ name = d.pop("name")
84
+
85
+ launch_specification = LaunchSpecificationModel.from_dict(
86
+ d.pop("launch_specification")
87
+ )
88
+
89
+ create_bid_request = cls(
90
+ project=project,
91
+ region=region,
92
+ instance_type=instance_type,
93
+ limit_price=limit_price,
94
+ instance_quantity=instance_quantity,
95
+ name=name,
96
+ launch_specification=launch_specification,
97
+ )
98
+
99
+ create_bid_request.additional_properties = d
100
+ return create_bid_request
101
+
102
+ @property
103
+ def additional_keys(self) -> list[str]:
104
+ return list(self.additional_properties.keys())
105
+
106
+ def __getitem__(self, key: str) -> Any:
107
+ return self.additional_properties[key]
108
+
109
+ def __setitem__(self, key: str, value: Any) -> None:
110
+ self.additional_properties[key] = value
111
+
112
+ def __delitem__(self, key: str) -> None:
113
+ del self.additional_properties[key]
114
+
115
+ def __contains__(self, key: str) -> bool:
116
+ return key in self.additional_properties
@@ -0,0 +1,136 @@
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.create_kubernetes_cluster_request_k8s_version import (
10
+ CreateKubernetesClusterRequestK8SVersion,
11
+ )
12
+ from ..types import UNSET, Unset
13
+
14
+ T = TypeVar("T", bound="CreateKubernetesClusterRequest")
15
+
16
+
17
+ @_attrs_define
18
+ class CreateKubernetesClusterRequest:
19
+ """Attributes:
20
+ name (str):
21
+ project (str):
22
+ region (str):
23
+ ssh_keys (list[str]):
24
+ instance_type (str):
25
+ k8s_version (CreateKubernetesClusterRequestK8SVersion | Unset): Default:
26
+ CreateKubernetesClusterRequestK8SVersion.VALUE_0.
27
+ image_version (None | str | Unset):
28
+ """
29
+
30
+ name: str
31
+ project: str
32
+ region: str
33
+ ssh_keys: list[str]
34
+ instance_type: str
35
+ k8s_version: CreateKubernetesClusterRequestK8SVersion | Unset = (
36
+ CreateKubernetesClusterRequestK8SVersion.VALUE_0
37
+ )
38
+ image_version: None | str | Unset = UNSET
39
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
40
+
41
+ def to_dict(self) -> dict[str, Any]:
42
+ name = self.name
43
+
44
+ project = self.project
45
+
46
+ region = self.region
47
+
48
+ ssh_keys = self.ssh_keys
49
+
50
+ instance_type = self.instance_type
51
+
52
+ k8s_version: str | Unset = UNSET
53
+ if not isinstance(self.k8s_version, Unset):
54
+ k8s_version = self.k8s_version.value
55
+
56
+ image_version: None | str | Unset
57
+ if isinstance(self.image_version, Unset):
58
+ image_version = UNSET
59
+ else:
60
+ image_version = self.image_version
61
+
62
+ field_dict: dict[str, Any] = {}
63
+ field_dict.update(self.additional_properties)
64
+ field_dict.update(
65
+ {
66
+ "name": name,
67
+ "project": project,
68
+ "region": region,
69
+ "ssh_keys": ssh_keys,
70
+ "instance_type": instance_type,
71
+ }
72
+ )
73
+ if k8s_version is not UNSET:
74
+ field_dict["k8s_version"] = k8s_version
75
+ if image_version is not UNSET:
76
+ field_dict["image_version"] = image_version
77
+
78
+ return field_dict
79
+
80
+ @classmethod
81
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
82
+ d = dict(src_dict)
83
+ name = d.pop("name")
84
+
85
+ project = d.pop("project")
86
+
87
+ region = d.pop("region")
88
+
89
+ ssh_keys = cast(list[str], d.pop("ssh_keys"))
90
+
91
+ instance_type = d.pop("instance_type")
92
+
93
+ _k8s_version = d.pop("k8s_version", UNSET)
94
+ k8s_version: CreateKubernetesClusterRequestK8SVersion | Unset
95
+ if isinstance(_k8s_version, Unset):
96
+ k8s_version = UNSET
97
+ else:
98
+ k8s_version = CreateKubernetesClusterRequestK8SVersion(_k8s_version)
99
+
100
+ def _parse_image_version(data: object) -> None | str | Unset:
101
+ if data is None:
102
+ return data
103
+ if isinstance(data, Unset):
104
+ return data
105
+ return cast(None | str | Unset, data)
106
+
107
+ image_version = _parse_image_version(d.pop("image_version", UNSET))
108
+
109
+ create_kubernetes_cluster_request = cls(
110
+ name=name,
111
+ project=project,
112
+ region=region,
113
+ ssh_keys=ssh_keys,
114
+ instance_type=instance_type,
115
+ k8s_version=k8s_version,
116
+ image_version=image_version,
117
+ )
118
+
119
+ create_kubernetes_cluster_request.additional_properties = d
120
+ return create_kubernetes_cluster_request
121
+
122
+ @property
123
+ def additional_keys(self) -> list[str]:
124
+ return list(self.additional_properties.keys())
125
+
126
+ def __getitem__(self, key: str) -> Any:
127
+ return self.additional_properties[key]
128
+
129
+ def __setitem__(self, key: str, value: Any) -> None:
130
+ self.additional_properties[key] = value
131
+
132
+ def __delitem__(self, key: str) -> None:
133
+ del self.additional_properties[key]
134
+
135
+ def __contains__(self, key: str) -> bool:
136
+ 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 CreateKubernetesClusterRequestK8SVersion(str, Enum):
7
+ VALUE_0 = "1.34"
8
+ VALUE_1 = "1.29"
9
+
10
+ def __str__(self) -> str:
11
+ return str(self.value)