latitudesh-python-sdk 1.1.0__py3-none-any.whl → 2.0.0__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.

Potentially problematic release.


This version of latitudesh-python-sdk might be problematic. Click here for more details.

Files changed (81) hide show
  1. latitudesh_python_sdk/_hooks/types.py +7 -0
  2. latitudesh_python_sdk/_version.py +6 -4
  3. latitudesh_python_sdk/apikeys.py +22 -18
  4. latitudesh_python_sdk/basesdk.py +12 -20
  5. latitudesh_python_sdk/billing.py +2 -0
  6. latitudesh_python_sdk/events_sdk.py +2 -0
  7. latitudesh_python_sdk/firewalls_sdk.py +18 -2
  8. latitudesh_python_sdk/httpclient.py +6 -16
  9. latitudesh_python_sdk/ipaddresses_sdk.py +4 -0
  10. latitudesh_python_sdk/models/__init__.py +2563 -1126
  11. latitudesh_python_sdk/models/assign_server_virtual_networkop.py +2 -2
  12. latitudesh_python_sdk/models/{bandwidth_plan.py → bandwidth_plan_data.py} +9 -9
  13. latitudesh_python_sdk/models/bandwidth_plans.py +14 -3
  14. latitudesh_python_sdk/models/custom_tag.py +15 -0
  15. latitudesh_python_sdk/models/custom_tag_data.py +54 -0
  16. latitudesh_python_sdk/models/custom_tags.py +26 -0
  17. latitudesh_python_sdk/models/delete_ssh_keyop.py +16 -0
  18. latitudesh_python_sdk/models/delete_user_dataop.py +16 -0
  19. latitudesh_python_sdk/models/event_data.py +98 -0
  20. latitudesh_python_sdk/models/events.py +16 -1
  21. latitudesh_python_sdk/models/filesystem_data.py +4 -0
  22. latitudesh_python_sdk/models/firewall.py +15 -0
  23. latitudesh_python_sdk/models/firewall_assignment_data.py +50 -0
  24. latitudesh_python_sdk/models/firewall_assignments.py +29 -0
  25. latitudesh_python_sdk/models/firewall_data.py +71 -0
  26. latitudesh_python_sdk/models/firewall_server.py +4 -1
  27. latitudesh_python_sdk/models/firewalls.py +7 -7
  28. latitudesh_python_sdk/models/get_firewall_assignmentsop.py +3 -3
  29. latitudesh_python_sdk/models/get_ssh_keyop.py +30 -0
  30. latitudesh_python_sdk/models/get_ssh_keysop.py +22 -0
  31. latitudesh_python_sdk/models/get_traffic_consumptionop.py +8 -4
  32. latitudesh_python_sdk/models/get_user_dataop.py +31 -0
  33. latitudesh_python_sdk/models/get_users_dataop.py +35 -0
  34. latitudesh_python_sdk/models/operating_system_data.py +65 -0
  35. latitudesh_python_sdk/models/operating_systems.py +15 -0
  36. latitudesh_python_sdk/models/out_of_band_connection.py +4 -4
  37. latitudesh_python_sdk/models/patch_user_dataop.py +69 -0
  38. latitudesh_python_sdk/models/post_ssh_keyop.py +58 -0
  39. latitudesh_python_sdk/models/post_user_dataop.py +45 -0
  40. latitudesh_python_sdk/models/project_include.py +3 -0
  41. latitudesh_python_sdk/models/put_ssh_keyop.py +80 -0
  42. latitudesh_python_sdk/models/role.py +11 -0
  43. latitudesh_python_sdk/models/server_data.py +8 -0
  44. latitudesh_python_sdk/models/{ssh_key.py → ssh_keys.py} +13 -2
  45. latitudesh_python_sdk/models/storage_plan_data.py +47 -0
  46. latitudesh_python_sdk/models/storage_plans.py +14 -3
  47. latitudesh_python_sdk/models/update_serverop.py +60 -10
  48. latitudesh_python_sdk/models/user_data.py +11 -0
  49. latitudesh_python_sdk/models/virtual_network.py +19 -0
  50. latitudesh_python_sdk/models/virtual_network1.py +15 -0
  51. latitudesh_python_sdk/models/virtual_network_assignment.py +41 -0
  52. latitudesh_python_sdk/models/virtual_network_assignment_data.py +68 -0
  53. latitudesh_python_sdk/models/virtual_network_assignments.py +5 -5
  54. latitudesh_python_sdk/models/virtual_network_data.py +88 -0
  55. latitudesh_python_sdk/models/virtual_networks.py +3 -3
  56. latitudesh_python_sdk/operatingsystems_sdk.py +2 -0
  57. latitudesh_python_sdk/plans.py +42 -26
  58. latitudesh_python_sdk/privatenetworks.py +44 -28
  59. latitudesh_python_sdk/projects_sdk.py +36 -28
  60. latitudesh_python_sdk/regions_sdk.py +4 -0
  61. latitudesh_python_sdk/roles.py +4 -0
  62. latitudesh_python_sdk/sdk.py +110 -73
  63. latitudesh_python_sdk/sdkconfiguration.py +0 -7
  64. latitudesh_python_sdk/servers_sdk.py +102 -46
  65. latitudesh_python_sdk/{sshkeys.py → sshkeys_sdk.py} +1030 -5
  66. latitudesh_python_sdk/storage.py +8 -0
  67. latitudesh_python_sdk/tags.py +30 -22
  68. latitudesh_python_sdk/teams_sdk.py +6 -0
  69. latitudesh_python_sdk/teamsmembers.py +6 -0
  70. latitudesh_python_sdk/traffic_sdk.py +12 -8
  71. latitudesh_python_sdk/userdata_sdk.py +1029 -0
  72. latitudesh_python_sdk/userprofile.py +6 -0
  73. latitudesh_python_sdk/utils/__init__.py +131 -46
  74. latitudesh_python_sdk/utils/forms.py +49 -28
  75. latitudesh_python_sdk/virtualmachines.py +36 -18
  76. latitudesh_python_sdk/vpnsessions.py +38 -26
  77. {latitudesh_python_sdk-1.1.0.dist-info → latitudesh_python_sdk-2.0.0.dist-info}/METADATA +30 -20
  78. {latitudesh_python_sdk-1.1.0.dist-info → latitudesh_python_sdk-2.0.0.dist-info}/RECORD +80 -61
  79. {latitudesh_python_sdk-1.1.0.dist-info → latitudesh_python_sdk-2.0.0.dist-info}/WHEEL +1 -1
  80. latitudesh_python_sdk/models/storage_plan.py +0 -36
  81. {latitudesh_python_sdk-1.1.0.dist-info → latitudesh_python_sdk-2.0.0.dist-info}/LICENSE +0 -0
@@ -73,6 +73,7 @@ class Roles(BaseSDK):
73
73
 
74
74
  http_res = self.do_request(
75
75
  hook_ctx=HookContext(
76
+ config=self.sdk_configuration,
76
77
  base_url=base_url or "",
77
78
  operation_id="get-roles",
78
79
  oauth2_scopes=[],
@@ -193,6 +194,7 @@ class Roles(BaseSDK):
193
194
 
194
195
  http_res = await self.do_request_async(
195
196
  hook_ctx=HookContext(
197
+ config=self.sdk_configuration,
196
198
  base_url=base_url or "",
197
199
  operation_id="get-roles",
198
200
  oauth2_scopes=[],
@@ -307,6 +309,7 @@ class Roles(BaseSDK):
307
309
 
308
310
  http_res = self.do_request(
309
311
  hook_ctx=HookContext(
312
+ config=self.sdk_configuration,
310
313
  base_url=base_url or "",
311
314
  operation_id="get-role-id",
312
315
  oauth2_scopes=[],
@@ -402,6 +405,7 @@ class Roles(BaseSDK):
402
405
 
403
406
  http_res = await self.do_request_async(
404
407
  hook_ctx=HookContext(
408
+ config=self.sdk_configuration,
405
409
  base_url=base_url or "",
406
410
  operation_id="get-role-id",
407
411
  oauth2_scopes=[],
@@ -6,60 +6,96 @@ from .sdkconfiguration import SDKConfiguration
6
6
  from .utils.logger import Logger, get_default_logger
7
7
  from .utils.retries import RetryConfig
8
8
  import httpx
9
+ import importlib
9
10
  from latitudesh_python_sdk import models, utils
10
11
  from latitudesh_python_sdk._hooks import SDKHooks
11
- from latitudesh_python_sdk.apikeys import APIKeys
12
- from latitudesh_python_sdk.billing import Billing
13
- from latitudesh_python_sdk.events_sdk import EventsSDK
14
- from latitudesh_python_sdk.firewalls_sdk import FirewallsSDK
15
- from latitudesh_python_sdk.ipaddresses_sdk import IPAddressesSDK
16
- from latitudesh_python_sdk.operatingsystems_sdk import OperatingSystemsSDK
17
- from latitudesh_python_sdk.plans import Plans
18
- from latitudesh_python_sdk.privatenetworks import PrivateNetworks
19
- from latitudesh_python_sdk.projects_sdk import ProjectsSDK
20
- from latitudesh_python_sdk.regions_sdk import RegionsSDK
21
- from latitudesh_python_sdk.roles import Roles
22
- from latitudesh_python_sdk.servers_sdk import ServersSDK
23
- from latitudesh_python_sdk.sshkeys import SSHKeys
24
- from latitudesh_python_sdk.storage import Storage
25
- from latitudesh_python_sdk.tags import Tags
26
- from latitudesh_python_sdk.teams_sdk import TeamsSDK
27
- from latitudesh_python_sdk.teamsmembers import TeamsMembers
28
- from latitudesh_python_sdk.traffic_sdk import TrafficSDK
29
12
  from latitudesh_python_sdk.types import OptionalNullable, UNSET
30
- from latitudesh_python_sdk.userdata_sdk import UserDataSDK
31
- from latitudesh_python_sdk.userprofile import UserProfile
32
- from latitudesh_python_sdk.virtualmachines import VirtualMachines
33
- from latitudesh_python_sdk.vpnsessions import VpnSessions
34
- from typing import Any, Callable, Dict, List, Optional, Union, cast
13
+ from typing import Any, Callable, Dict, List, Optional, TYPE_CHECKING, Union, cast
35
14
  import weakref
36
15
 
16
+ if TYPE_CHECKING:
17
+ from latitudesh_python_sdk.apikeys import APIKeys
18
+ from latitudesh_python_sdk.billing import Billing
19
+ from latitudesh_python_sdk.events_sdk import EventsSDK
20
+ from latitudesh_python_sdk.firewalls_sdk import FirewallsSDK
21
+ from latitudesh_python_sdk.ipaddresses_sdk import IPAddressesSDK
22
+ from latitudesh_python_sdk.operatingsystems_sdk import OperatingSystemsSDK
23
+ from latitudesh_python_sdk.plans import Plans
24
+ from latitudesh_python_sdk.privatenetworks import PrivateNetworks
25
+ from latitudesh_python_sdk.projects_sdk import ProjectsSDK
26
+ from latitudesh_python_sdk.regions_sdk import RegionsSDK
27
+ from latitudesh_python_sdk.roles import Roles
28
+ from latitudesh_python_sdk.servers_sdk import ServersSDK
29
+ from latitudesh_python_sdk.sshkeys_sdk import SSHKeysSDK
30
+ from latitudesh_python_sdk.storage import Storage
31
+ from latitudesh_python_sdk.tags import Tags
32
+ from latitudesh_python_sdk.teams_sdk import TeamsSDK
33
+ from latitudesh_python_sdk.teamsmembers import TeamsMembers
34
+ from latitudesh_python_sdk.traffic_sdk import TrafficSDK
35
+ from latitudesh_python_sdk.userdata_sdk import UserDataSDK
36
+ from latitudesh_python_sdk.userprofile import UserProfile
37
+ from latitudesh_python_sdk.virtualmachines import VirtualMachines
38
+ from latitudesh_python_sdk.vpnsessions import VpnSessions
39
+
37
40
 
38
41
  class Latitudesh(BaseSDK):
39
42
  r"""Latitude.sh API: The Latitude.sh API is a RESTful API to manage your Latitude.sh account. It allows you to perform the same actions as the Latitude.sh dashboard."""
40
43
 
41
- api_keys: APIKeys
42
- billing: Billing
43
- events: EventsSDK
44
- firewalls: FirewallsSDK
45
- ip_addresses: IPAddressesSDK
46
- teams_members: TeamsMembers
47
- operating_systems: OperatingSystemsSDK
48
- plans: Plans
49
- projects: ProjectsSDK
50
- regions: RegionsSDK
51
- roles: Roles
52
- servers: ServersSDK
53
- ssh_keys: SSHKeys
54
- storage: Storage
55
- tags: Tags
56
- teams: TeamsSDK
57
- traffic: TrafficSDK
58
- user_data: UserDataSDK
59
- user_profile: UserProfile
60
- virtual_machines: VirtualMachines
61
- private_networks: PrivateNetworks
62
- vpn_sessions: VpnSessions
44
+ api_keys: "APIKeys"
45
+ billing: "Billing"
46
+ events: "EventsSDK"
47
+ firewalls: "FirewallsSDK"
48
+ ip_addresses: "IPAddressesSDK"
49
+ teams_members: "TeamsMembers"
50
+ operating_systems: "OperatingSystemsSDK"
51
+ plans: "Plans"
52
+ projects: "ProjectsSDK"
53
+ regions: "RegionsSDK"
54
+ roles: "Roles"
55
+ servers: "ServersSDK"
56
+ ssh_keys: "SSHKeysSDK"
57
+ storage: "Storage"
58
+ tags: "Tags"
59
+ teams: "TeamsSDK"
60
+ traffic: "TrafficSDK"
61
+ user_data: "UserDataSDK"
62
+ user_profile: "UserProfile"
63
+ virtual_machines: "VirtualMachines"
64
+ private_networks: "PrivateNetworks"
65
+ vpn_sessions: "VpnSessions"
66
+ _sub_sdk_map = {
67
+ "api_keys": ("latitudesh_python_sdk.apikeys", "APIKeys"),
68
+ "billing": ("latitudesh_python_sdk.billing", "Billing"),
69
+ "events": ("latitudesh_python_sdk.events_sdk", "EventsSDK"),
70
+ "firewalls": ("latitudesh_python_sdk.firewalls_sdk", "FirewallsSDK"),
71
+ "ip_addresses": ("latitudesh_python_sdk.ipaddresses_sdk", "IPAddressesSDK"),
72
+ "teams_members": ("latitudesh_python_sdk.teamsmembers", "TeamsMembers"),
73
+ "operating_systems": (
74
+ "latitudesh_python_sdk.operatingsystems_sdk",
75
+ "OperatingSystemsSDK",
76
+ ),
77
+ "plans": ("latitudesh_python_sdk.plans", "Plans"),
78
+ "projects": ("latitudesh_python_sdk.projects_sdk", "ProjectsSDK"),
79
+ "regions": ("latitudesh_python_sdk.regions_sdk", "RegionsSDK"),
80
+ "roles": ("latitudesh_python_sdk.roles", "Roles"),
81
+ "servers": ("latitudesh_python_sdk.servers_sdk", "ServersSDK"),
82
+ "ssh_keys": ("latitudesh_python_sdk.sshkeys_sdk", "SSHKeysSDK"),
83
+ "storage": ("latitudesh_python_sdk.storage", "Storage"),
84
+ "tags": ("latitudesh_python_sdk.tags", "Tags"),
85
+ "teams": ("latitudesh_python_sdk.teams_sdk", "TeamsSDK"),
86
+ "traffic": ("latitudesh_python_sdk.traffic_sdk", "TrafficSDK"),
87
+ "user_data": ("latitudesh_python_sdk.userdata_sdk", "UserDataSDK"),
88
+ "user_profile": ("latitudesh_python_sdk.userprofile", "UserProfile"),
89
+ "virtual_machines": (
90
+ "latitudesh_python_sdk.virtualmachines",
91
+ "VirtualMachines",
92
+ ),
93
+ "private_networks": (
94
+ "latitudesh_python_sdk.privatenetworks",
95
+ "PrivateNetworks",
96
+ ),
97
+ "vpn_sessions": ("latitudesh_python_sdk.vpnsessions", "VpnSessions"),
98
+ }
63
99
 
64
100
  def __init__(
65
101
  self,
@@ -145,6 +181,9 @@ class Latitudesh(BaseSDK):
145
181
 
146
182
  hooks = SDKHooks()
147
183
 
184
+ # pylint: disable=protected-access
185
+ self.sdk_configuration.__dict__["_hooks"] = hooks
186
+
148
187
  current_server_url, *_ = self.sdk_configuration.get_server_details()
149
188
  server_url, self.sdk_configuration.client = hooks.sdk_init(
150
189
  current_server_url, client
@@ -152,9 +191,6 @@ class Latitudesh(BaseSDK):
152
191
  if current_server_url != server_url:
153
192
  self.sdk_configuration.server_url = server_url
154
193
 
155
- # pylint: disable=protected-access
156
- self.sdk_configuration.__dict__["_hooks"] = hooks
157
-
158
194
  weakref.finalize(
159
195
  self,
160
196
  close_clients,
@@ -165,31 +201,32 @@ class Latitudesh(BaseSDK):
165
201
  self.sdk_configuration.async_client_supplied,
166
202
  )
167
203
 
168
- self._init_sdks()
169
-
170
- def _init_sdks(self):
171
- self.api_keys = APIKeys(self.sdk_configuration)
172
- self.billing = Billing(self.sdk_configuration)
173
- self.events = EventsSDK(self.sdk_configuration)
174
- self.firewalls = FirewallsSDK(self.sdk_configuration)
175
- self.ip_addresses = IPAddressesSDK(self.sdk_configuration)
176
- self.teams_members = TeamsMembers(self.sdk_configuration)
177
- self.operating_systems = OperatingSystemsSDK(self.sdk_configuration)
178
- self.plans = Plans(self.sdk_configuration)
179
- self.projects = ProjectsSDK(self.sdk_configuration)
180
- self.regions = RegionsSDK(self.sdk_configuration)
181
- self.roles = Roles(self.sdk_configuration)
182
- self.servers = ServersSDK(self.sdk_configuration)
183
- self.ssh_keys = SSHKeys(self.sdk_configuration)
184
- self.storage = Storage(self.sdk_configuration)
185
- self.tags = Tags(self.sdk_configuration)
186
- self.teams = TeamsSDK(self.sdk_configuration)
187
- self.traffic = TrafficSDK(self.sdk_configuration)
188
- self.user_data = UserDataSDK(self.sdk_configuration)
189
- self.user_profile = UserProfile(self.sdk_configuration)
190
- self.virtual_machines = VirtualMachines(self.sdk_configuration)
191
- self.private_networks = PrivateNetworks(self.sdk_configuration)
192
- self.vpn_sessions = VpnSessions(self.sdk_configuration)
204
+ def __getattr__(self, name: str):
205
+ if name in self._sub_sdk_map:
206
+ module_path, class_name = self._sub_sdk_map[name]
207
+ try:
208
+ module = importlib.import_module(module_path)
209
+ klass = getattr(module, class_name)
210
+ instance = klass(self.sdk_configuration)
211
+ setattr(self, name, instance)
212
+ return instance
213
+ except ImportError as e:
214
+ raise AttributeError(
215
+ f"Failed to import module {module_path} for attribute {name}: {e}"
216
+ ) from e
217
+ except AttributeError as e:
218
+ raise AttributeError(
219
+ f"Failed to find class {class_name} in module {module_path} for attribute {name}: {e}"
220
+ ) from e
221
+
222
+ raise AttributeError(
223
+ f"'{type(self).__name__}' object has no attribute '{name}'"
224
+ )
225
+
226
+ def __dir__(self):
227
+ default_attrs = list(super().__dir__())
228
+ lazy_attrs = list(self._sub_sdk_map.keys())
229
+ return sorted(list(set(default_attrs + lazy_attrs)))
193
230
 
194
231
  def __enter__(self):
195
232
  return self
@@ -1,6 +1,5 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
- from ._hooks import SDKHooks
4
3
  from ._version import (
5
4
  __gen_version__,
6
5
  __openapi_doc_version__,
@@ -42,9 +41,6 @@ class SDKConfiguration:
42
41
  retry_config: OptionalNullable[RetryConfig] = Field(default_factory=lambda: UNSET)
43
42
  timeout_ms: Optional[int] = None
44
43
 
45
- def __post_init__(self):
46
- self._hooks = SDKHooks()
47
-
48
44
  def get_server_details(self) -> Tuple[str, Dict[str, str]]:
49
45
  if self.server_url is not None and self.server_url:
50
46
  return remove_suffix(self.server_url, "/"), {}
@@ -52,6 +48,3 @@ class SDKConfiguration:
52
48
  self.server_idx = 0
53
49
 
54
50
  return SERVERS[self.server_idx], self.server_defaults[self.server_idx]
55
-
56
- def get_hooks(self) -> SDKHooks:
57
- return self._hooks