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,115 @@
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.public_lifecycle_script_scope import PublicLifecycleScriptScope
10
+ from ..types import UNSET, Unset
11
+
12
+ T = TypeVar("T", bound="CreateLifecycleScriptRequest")
13
+
14
+
15
+ @_attrs_define
16
+ class CreateLifecycleScriptRequest:
17
+ """Attributes:
18
+ project (str):
19
+ name (str):
20
+ content (str):
21
+ description (None | str | Unset):
22
+ scope (PublicLifecycleScriptScope | Unset):
23
+ """
24
+
25
+ project: str
26
+ name: str
27
+ content: str
28
+ description: None | str | Unset = UNSET
29
+ scope: PublicLifecycleScriptScope | Unset = UNSET
30
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
31
+
32
+ def to_dict(self) -> dict[str, Any]:
33
+ project = self.project
34
+
35
+ name = self.name
36
+
37
+ content = self.content
38
+
39
+ description: None | str | Unset
40
+ if isinstance(self.description, Unset):
41
+ description = UNSET
42
+ else:
43
+ description = self.description
44
+
45
+ scope: str | Unset = UNSET
46
+ if not isinstance(self.scope, Unset):
47
+ scope = self.scope.value
48
+
49
+ field_dict: dict[str, Any] = {}
50
+ field_dict.update(self.additional_properties)
51
+ field_dict.update(
52
+ {
53
+ "project": project,
54
+ "name": name,
55
+ "content": content,
56
+ }
57
+ )
58
+ if description is not UNSET:
59
+ field_dict["description"] = description
60
+ if scope is not UNSET:
61
+ field_dict["scope"] = scope
62
+
63
+ return field_dict
64
+
65
+ @classmethod
66
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
67
+ d = dict(src_dict)
68
+ project = d.pop("project")
69
+
70
+ name = d.pop("name")
71
+
72
+ content = d.pop("content")
73
+
74
+ def _parse_description(data: object) -> None | str | Unset:
75
+ if data is None:
76
+ return data
77
+ if isinstance(data, Unset):
78
+ return data
79
+ return cast(None | str | Unset, data)
80
+
81
+ description = _parse_description(d.pop("description", UNSET))
82
+
83
+ _scope = d.pop("scope", UNSET)
84
+ scope: PublicLifecycleScriptScope | Unset
85
+ if isinstance(_scope, Unset):
86
+ scope = UNSET
87
+ else:
88
+ scope = PublicLifecycleScriptScope(_scope)
89
+
90
+ create_lifecycle_script_request = cls(
91
+ project=project,
92
+ name=name,
93
+ content=content,
94
+ description=description,
95
+ scope=scope,
96
+ )
97
+
98
+ create_lifecycle_script_request.additional_properties = d
99
+ return create_lifecycle_script_request
100
+
101
+ @property
102
+ def additional_keys(self) -> list[str]:
103
+ return list(self.additional_properties.keys())
104
+
105
+ def __getitem__(self, key: str) -> Any:
106
+ return self.additional_properties[key]
107
+
108
+ def __setitem__(self, key: str, value: Any) -> None:
109
+ self.additional_properties[key] = value
110
+
111
+ def __delitem__(self, key: str) -> None:
112
+ del self.additional_properties[key]
113
+
114
+ def __contains__(self, key: str) -> bool:
115
+ return key in self.additional_properties
@@ -0,0 +1,124 @@
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="CreateReservationRequest")
14
+
15
+
16
+ @_attrs_define
17
+ class CreateReservationRequest:
18
+ """Attributes:
19
+ project (str):
20
+ instance_type (str):
21
+ region (str):
22
+ start_time (str):
23
+ end_time (str):
24
+ instance_quantity (int):
25
+ name (str):
26
+ launch_specification (LaunchSpecificationModel):
27
+ """
28
+
29
+ project: str
30
+ instance_type: str
31
+ region: str
32
+ start_time: str
33
+ end_time: str
34
+ instance_quantity: int
35
+ name: str
36
+ launch_specification: LaunchSpecificationModel
37
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
38
+
39
+ def to_dict(self) -> dict[str, Any]:
40
+ project = self.project
41
+
42
+ instance_type = self.instance_type
43
+
44
+ region = self.region
45
+
46
+ start_time = self.start_time
47
+
48
+ end_time = self.end_time
49
+
50
+ instance_quantity = self.instance_quantity
51
+
52
+ name = self.name
53
+
54
+ launch_specification = self.launch_specification.to_dict()
55
+
56
+ field_dict: dict[str, Any] = {}
57
+ field_dict.update(self.additional_properties)
58
+ field_dict.update(
59
+ {
60
+ "project": project,
61
+ "instance_type": instance_type,
62
+ "region": region,
63
+ "start_time": start_time,
64
+ "end_time": end_time,
65
+ "instance_quantity": instance_quantity,
66
+ "name": name,
67
+ "launch_specification": launch_specification,
68
+ }
69
+ )
70
+
71
+ return field_dict
72
+
73
+ @classmethod
74
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
75
+ from ..models.launch_specification_model import LaunchSpecificationModel
76
+
77
+ d = dict(src_dict)
78
+ project = d.pop("project")
79
+
80
+ instance_type = d.pop("instance_type")
81
+
82
+ region = d.pop("region")
83
+
84
+ start_time = d.pop("start_time")
85
+
86
+ end_time = d.pop("end_time")
87
+
88
+ instance_quantity = d.pop("instance_quantity")
89
+
90
+ name = d.pop("name")
91
+
92
+ launch_specification = LaunchSpecificationModel.from_dict(
93
+ d.pop("launch_specification")
94
+ )
95
+
96
+ create_reservation_request = cls(
97
+ project=project,
98
+ instance_type=instance_type,
99
+ region=region,
100
+ start_time=start_time,
101
+ end_time=end_time,
102
+ instance_quantity=instance_quantity,
103
+ name=name,
104
+ launch_specification=launch_specification,
105
+ )
106
+
107
+ create_reservation_request.additional_properties = d
108
+ return create_reservation_request
109
+
110
+ @property
111
+ def additional_keys(self) -> list[str]:
112
+ return list(self.additional_properties.keys())
113
+
114
+ def __getitem__(self, key: str) -> Any:
115
+ return self.additional_properties[key]
116
+
117
+ def __setitem__(self, key: str, value: Any) -> None:
118
+ self.additional_properties[key] = value
119
+
120
+ def __delitem__(self, key: str) -> None:
121
+ del self.additional_properties[key]
122
+
123
+ def __contains__(self, key: str) -> bool:
124
+ return key in self.additional_properties
@@ -0,0 +1,99 @@
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="CreateSshKeyRequest")
12
+
13
+
14
+ @_attrs_define
15
+ class CreateSshKeyRequest:
16
+ """Attributes:
17
+ project (str):
18
+ name (str):
19
+ public_key (None | str | Unset):
20
+ required (bool | Unset): Default: False.
21
+ """
22
+
23
+ project: str
24
+ name: str
25
+ public_key: None | str | Unset = UNSET
26
+ required: bool | Unset = False
27
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
+
29
+ def to_dict(self) -> dict[str, Any]:
30
+ project = self.project
31
+
32
+ name = self.name
33
+
34
+ public_key: None | str | Unset
35
+ if isinstance(self.public_key, Unset):
36
+ public_key = UNSET
37
+ else:
38
+ public_key = self.public_key
39
+
40
+ required = self.required
41
+
42
+ field_dict: dict[str, Any] = {}
43
+ field_dict.update(self.additional_properties)
44
+ field_dict.update(
45
+ {
46
+ "project": project,
47
+ "name": name,
48
+ }
49
+ )
50
+ if public_key is not UNSET:
51
+ field_dict["public_key"] = public_key
52
+ if required is not UNSET:
53
+ field_dict["required"] = required
54
+
55
+ return field_dict
56
+
57
+ @classmethod
58
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
59
+ d = dict(src_dict)
60
+ project = d.pop("project")
61
+
62
+ name = d.pop("name")
63
+
64
+ def _parse_public_key(data: object) -> None | str | Unset:
65
+ if data is None:
66
+ return data
67
+ if isinstance(data, Unset):
68
+ return data
69
+ return cast(None | str | Unset, data)
70
+
71
+ public_key = _parse_public_key(d.pop("public_key", UNSET))
72
+
73
+ required = d.pop("required", UNSET)
74
+
75
+ create_ssh_key_request = cls(
76
+ project=project,
77
+ name=name,
78
+ public_key=public_key,
79
+ required=required,
80
+ )
81
+
82
+ create_ssh_key_request.additional_properties = d
83
+ return create_ssh_key_request
84
+
85
+ @property
86
+ def additional_keys(self) -> list[str]:
87
+ return list(self.additional_properties.keys())
88
+
89
+ def __getitem__(self, key: str) -> Any:
90
+ return self.additional_properties[key]
91
+
92
+ def __setitem__(self, key: str, value: Any) -> None:
93
+ self.additional_properties[key] = value
94
+
95
+ def __delitem__(self, key: str) -> None:
96
+ del self.additional_properties[key]
97
+
98
+ def __contains__(self, key: str) -> bool:
99
+ return key in self.additional_properties
@@ -0,0 +1,98 @@
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.create_volume_request_disk_interface import (
10
+ CreateVolumeRequestDiskInterface,
11
+ )
12
+
13
+ T = TypeVar("T", bound="CreateVolumeRequest")
14
+
15
+
16
+ @_attrs_define
17
+ class CreateVolumeRequest:
18
+ """Request model for creating a new storage volume.
19
+
20
+ Attributes:
21
+ name (str):
22
+ project (str):
23
+ disk_interface (CreateVolumeRequestDiskInterface):
24
+ region (str):
25
+ size_gb (Any):
26
+ """
27
+
28
+ name: str
29
+ project: str
30
+ disk_interface: CreateVolumeRequestDiskInterface
31
+ region: str
32
+ size_gb: Any
33
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
34
+
35
+ def to_dict(self) -> dict[str, Any]:
36
+ name = self.name
37
+
38
+ project = self.project
39
+
40
+ disk_interface = self.disk_interface.value
41
+
42
+ region = self.region
43
+
44
+ size_gb = self.size_gb
45
+
46
+ field_dict: dict[str, Any] = {}
47
+ field_dict.update(self.additional_properties)
48
+ field_dict.update(
49
+ {
50
+ "name": name,
51
+ "project": project,
52
+ "disk_interface": disk_interface,
53
+ "region": region,
54
+ "size_gb": size_gb,
55
+ }
56
+ )
57
+
58
+ return field_dict
59
+
60
+ @classmethod
61
+ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self:
62
+ d = dict(src_dict)
63
+ name = d.pop("name")
64
+
65
+ project = d.pop("project")
66
+
67
+ disk_interface = CreateVolumeRequestDiskInterface(d.pop("disk_interface"))
68
+
69
+ region = d.pop("region")
70
+
71
+ size_gb = d.pop("size_gb")
72
+
73
+ create_volume_request = cls(
74
+ name=name,
75
+ project=project,
76
+ disk_interface=disk_interface,
77
+ region=region,
78
+ size_gb=size_gb,
79
+ )
80
+
81
+ create_volume_request.additional_properties = d
82
+ return create_volume_request
83
+
84
+ @property
85
+ def additional_keys(self) -> list[str]:
86
+ return list(self.additional_properties.keys())
87
+
88
+ def __getitem__(self, key: str) -> Any:
89
+ return self.additional_properties[key]
90
+
91
+ def __setitem__(self, key: str, value: Any) -> None:
92
+ self.additional_properties[key] = value
93
+
94
+ def __delitem__(self, key: str) -> None:
95
+ del self.additional_properties[key]
96
+
97
+ def __contains__(self, key: str) -> bool:
98
+ 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 CreateVolumeRequestDiskInterface(str, Enum):
7
+ BLOCK = "Block"
8
+ FILE = "File"
9
+
10
+ def __str__(self) -> str:
11
+ return str(self.value)
@@ -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="CreatedSshKeyModel")
12
+
13
+
14
+ @_attrs_define
15
+ class CreatedSshKeyModel:
16
+ """Attributes:
17
+ fid (str):
18
+ name (str):
19
+ project (str):
20
+ public_key (str):
21
+ created_at (str):
22
+ required (bool):
23
+ private_key (None | str | Unset):
24
+ """
25
+
26
+ fid: str
27
+ name: str
28
+ project: str
29
+ public_key: str
30
+ created_at: str
31
+ required: bool
32
+ private_key: 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
+ project = self.project
41
+
42
+ public_key = self.public_key
43
+
44
+ created_at = self.created_at
45
+
46
+ required = self.required
47
+
48
+ private_key: None | str | Unset
49
+ if isinstance(self.private_key, Unset):
50
+ private_key = UNSET
51
+ else:
52
+ private_key = self.private_key
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
+ "project": project,
61
+ "public_key": public_key,
62
+ "created_at": created_at,
63
+ "required": required,
64
+ }
65
+ )
66
+ if private_key is not UNSET:
67
+ field_dict["private_key"] = private_key
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
+ project = d.pop("project")
79
+
80
+ public_key = d.pop("public_key")
81
+
82
+ created_at = d.pop("created_at")
83
+
84
+ required = d.pop("required")
85
+
86
+ def _parse_private_key(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
+ private_key = _parse_private_key(d.pop("private_key", UNSET))
94
+
95
+ created_ssh_key_model = cls(
96
+ fid=fid,
97
+ name=name,
98
+ project=project,
99
+ public_key=public_key,
100
+ created_at=created_at,
101
+ required=required,
102
+ private_key=private_key,
103
+ )
104
+
105
+ created_ssh_key_model.additional_properties = d
106
+ return created_ssh_key_model
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