diff --git a/hcloud/actions/client.py b/hcloud/actions/client.py index 7ec192c8..e9033323 100644 --- a/hcloud/actions/client.py +++ b/hcloud/actions/client.py @@ -4,7 +4,7 @@ import warnings from typing import TYPE_CHECKING, Any, NamedTuple -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from .domain import Action, ActionFailedException, ActionTimeoutException if TYPE_CHECKING: @@ -50,7 +50,7 @@ class ActionsPageResult(NamedTuple): meta: Meta -class ResourceActionsClient(ClientEntityBase): +class ResourceActionsClient(ResourceClientBase): _resource: str def __init__(self, client: Client, resource: str | None): diff --git a/hcloud/certificates/client.py b/hcloud/certificates/client.py index cb1aef58..06423995 100644 --- a/hcloud/certificates/client.py +++ b/hcloud/certificates/client.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING, Any, NamedTuple from ..actions import ActionsPageResult, BoundAction, ResourceActionsClient -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from .domain import ( Certificate, CreateManagedCertificateResponse, @@ -103,7 +103,7 @@ class CertificatesPageResult(NamedTuple): meta: Meta -class CertificatesClient(ClientEntityBase): +class CertificatesClient(ResourceClientBase): _client: Client actions: ResourceActionsClient diff --git a/hcloud/core/__init__.py b/hcloud/core/__init__.py index b553546a..4fb66e86 100644 --- a/hcloud/core/__init__.py +++ b/hcloud/core/__init__.py @@ -1,13 +1,14 @@ from __future__ import annotations -from .client import BoundModelBase, ClientEntityBase +from .client import BoundModelBase, ClientEntityBase, ResourceClientBase from .domain import BaseDomain, DomainIdentityMixin, Meta, Pagination __all__ = [ + "BaseDomain", "BoundModelBase", "ClientEntityBase", - "BaseDomain", "DomainIdentityMixin", "Meta", "Pagination", + "ResourceClientBase", ] diff --git a/hcloud/core/client.py b/hcloud/core/client.py index 0b86c837..9b52f368 100644 --- a/hcloud/core/client.py +++ b/hcloud/core/client.py @@ -1,12 +1,13 @@ from __future__ import annotations +import warnings from typing import TYPE_CHECKING, Any, Callable if TYPE_CHECKING: from .._client import Client -class ClientEntityBase: +class ResourceClientBase: _client: Client max_per_page: int = 50 @@ -50,6 +51,24 @@ def _get_first_by(self, **kwargs): # type: ignore[no-untyped-def] return entities[0] if entities else None +class ClientEntityBase(ResourceClientBase): + """ + Kept for backward compatibility. + + .. deprecated:: 2.6.0 + Use :class:``hcloud.core.client.ResourceClientBase`` instead. + """ + + def __init__(self, client: Client): + warnings.warn( + "The 'hcloud.core.client.ClientEntityBase' class is deprecated, please use the " + "'hcloud.core.client.ResourceClientBase' class instead.", + DeprecationWarning, + stacklevel=2, + ) + super().__init__(client) + + class BoundModelBase: """Bound Model Base""" @@ -57,7 +76,7 @@ class BoundModelBase: def __init__( self, - client: ClientEntityBase, + client: ResourceClientBase, data: dict, complete: bool = True, ): diff --git a/hcloud/datacenters/client.py b/hcloud/datacenters/client.py index 935a7c77..4a1b0434 100644 --- a/hcloud/datacenters/client.py +++ b/hcloud/datacenters/client.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Any, NamedTuple -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from ..locations import BoundLocation from ..server_types import BoundServerType from .domain import Datacenter, DatacenterServerTypes @@ -55,7 +55,7 @@ class DatacentersPageResult(NamedTuple): meta: Meta -class DatacentersClient(ClientEntityBase): +class DatacentersClient(ResourceClientBase): _client: Client def get_by_id(self, id: int) -> BoundDatacenter: diff --git a/hcloud/firewalls/client.py b/hcloud/firewalls/client.py index ae365a4b..2157e8f5 100644 --- a/hcloud/firewalls/client.py +++ b/hcloud/firewalls/client.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING, Any, NamedTuple from ..actions import ActionsPageResult, BoundAction, ResourceActionsClient -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from .domain import ( CreateFirewallResponse, Firewall, @@ -183,7 +183,7 @@ class FirewallsPageResult(NamedTuple): meta: Meta -class FirewallsClient(ClientEntityBase): +class FirewallsClient(ResourceClientBase): _client: Client actions: ResourceActionsClient diff --git a/hcloud/floating_ips/client.py b/hcloud/floating_ips/client.py index 9306ac2f..824cfdbb 100644 --- a/hcloud/floating_ips/client.py +++ b/hcloud/floating_ips/client.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING, Any, NamedTuple from ..actions import ActionsPageResult, BoundAction, ResourceActionsClient -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from ..locations import BoundLocation from .domain import CreateFloatingIPResponse, FloatingIP @@ -139,7 +139,7 @@ class FloatingIPsPageResult(NamedTuple): meta: Meta -class FloatingIPsClient(ClientEntityBase): +class FloatingIPsClient(ResourceClientBase): _client: Client actions: ResourceActionsClient diff --git a/hcloud/images/client.py b/hcloud/images/client.py index 36c59e06..c7af92d9 100644 --- a/hcloud/images/client.py +++ b/hcloud/images/client.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING, Any, NamedTuple from ..actions import ActionsPageResult, BoundAction, ResourceActionsClient -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from .domain import Image if TYPE_CHECKING: @@ -112,7 +112,7 @@ class ImagesPageResult(NamedTuple): meta: Meta -class ImagesClient(ClientEntityBase): +class ImagesClient(ResourceClientBase): _client: Client actions: ResourceActionsClient diff --git a/hcloud/isos/client.py b/hcloud/isos/client.py index 31620d8f..abb28617 100644 --- a/hcloud/isos/client.py +++ b/hcloud/isos/client.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Any, NamedTuple -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from .domain import Iso if TYPE_CHECKING: @@ -20,7 +20,7 @@ class IsosPageResult(NamedTuple): meta: Meta -class IsosClient(ClientEntityBase): +class IsosClient(ResourceClientBase): _client: Client def get_by_id(self, id: int) -> BoundIso: diff --git a/hcloud/load_balancer_types/client.py b/hcloud/load_balancer_types/client.py index 5f332c6e..3691e419 100644 --- a/hcloud/load_balancer_types/client.py +++ b/hcloud/load_balancer_types/client.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Any, NamedTuple -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from .domain import LoadBalancerType if TYPE_CHECKING: @@ -20,7 +20,7 @@ class LoadBalancerTypesPageResult(NamedTuple): meta: Meta -class LoadBalancerTypesClient(ClientEntityBase): +class LoadBalancerTypesClient(ResourceClientBase): _client: Client def get_by_id(self, id: int) -> BoundLoadBalancerType: diff --git a/hcloud/load_balancers/client.py b/hcloud/load_balancers/client.py index 2de1c2d7..5553352f 100644 --- a/hcloud/load_balancers/client.py +++ b/hcloud/load_balancers/client.py @@ -7,7 +7,7 @@ from ..actions import ActionsPageResult, BoundAction, ResourceActionsClient from ..certificates import BoundCertificate -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from ..load_balancer_types import BoundLoadBalancerType from ..locations import BoundLocation from ..metrics import Metrics @@ -369,7 +369,7 @@ class LoadBalancersPageResult(NamedTuple): meta: Meta -class LoadBalancersClient(ClientEntityBase): +class LoadBalancersClient(ResourceClientBase): _client: Client actions: ResourceActionsClient diff --git a/hcloud/locations/client.py b/hcloud/locations/client.py index 411a184d..6adb980a 100644 --- a/hcloud/locations/client.py +++ b/hcloud/locations/client.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Any, NamedTuple -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from .domain import Location if TYPE_CHECKING: @@ -20,7 +20,7 @@ class LocationsPageResult(NamedTuple): meta: Meta -class LocationsClient(ClientEntityBase): +class LocationsClient(ResourceClientBase): _client: Client def get_by_id(self, id: int) -> BoundLocation: diff --git a/hcloud/networks/client.py b/hcloud/networks/client.py index c446ae6b..b8248d7a 100644 --- a/hcloud/networks/client.py +++ b/hcloud/networks/client.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING, Any, NamedTuple from ..actions import ActionsPageResult, BoundAction, ResourceActionsClient -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from .domain import Network, NetworkRoute, NetworkSubnet if TYPE_CHECKING: @@ -166,7 +166,7 @@ class NetworksPageResult(NamedTuple): meta: Meta -class NetworksClient(ClientEntityBase): +class NetworksClient(ResourceClientBase): _client: Client actions: ResourceActionsClient diff --git a/hcloud/placement_groups/client.py b/hcloud/placement_groups/client.py index 0c53724f..a5524afe 100644 --- a/hcloud/placement_groups/client.py +++ b/hcloud/placement_groups/client.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING, Any, NamedTuple from ..actions import BoundAction -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from .domain import CreatePlacementGroupResponse, PlacementGroup if TYPE_CHECKING: @@ -43,7 +43,7 @@ class PlacementGroupsPageResult(NamedTuple): meta: Meta -class PlacementGroupsClient(ClientEntityBase): +class PlacementGroupsClient(ResourceClientBase): _client: Client def get_by_id(self, id: int) -> BoundPlacementGroup: diff --git a/hcloud/primary_ips/client.py b/hcloud/primary_ips/client.py index 818737c5..b3985e56 100644 --- a/hcloud/primary_ips/client.py +++ b/hcloud/primary_ips/client.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING, Any, NamedTuple from ..actions import BoundAction, ResourceActionsClient -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from .domain import CreatePrimaryIPResponse, PrimaryIP if TYPE_CHECKING: @@ -97,7 +97,7 @@ class PrimaryIPsPageResult(NamedTuple): meta: Meta -class PrimaryIPsClient(ClientEntityBase): +class PrimaryIPsClient(ResourceClientBase): _client: Client actions: ResourceActionsClient diff --git a/hcloud/server_types/client.py b/hcloud/server_types/client.py index 6901d995..1f1a7de3 100644 --- a/hcloud/server_types/client.py +++ b/hcloud/server_types/client.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Any, NamedTuple -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from .domain import ServerType if TYPE_CHECKING: @@ -20,7 +20,7 @@ class ServerTypesPageResult(NamedTuple): meta: Meta -class ServerTypesClient(ClientEntityBase): +class ServerTypesClient(ResourceClientBase): _client: Client def get_by_id(self, id: int) -> BoundServerType: diff --git a/hcloud/servers/client.py b/hcloud/servers/client.py index 397b0bf2..89c0c4eb 100644 --- a/hcloud/servers/client.py +++ b/hcloud/servers/client.py @@ -6,7 +6,7 @@ from dateutil.parser import isoparse from ..actions import ActionsPageResult, BoundAction, ResourceActionsClient -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from ..datacenters import BoundDatacenter from ..firewalls import BoundFirewall from ..floating_ips import BoundFloatingIP @@ -482,7 +482,7 @@ class ServersPageResult(NamedTuple): meta: Meta -class ServersClient(ClientEntityBase): +class ServersClient(ResourceClientBase): _client: Client actions: ResourceActionsClient diff --git a/hcloud/ssh_keys/client.py b/hcloud/ssh_keys/client.py index 12064ea9..a68b5153 100644 --- a/hcloud/ssh_keys/client.py +++ b/hcloud/ssh_keys/client.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Any, NamedTuple -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from .domain import SSHKey if TYPE_CHECKING: @@ -41,7 +41,7 @@ class SSHKeysPageResult(NamedTuple): meta: Meta -class SSHKeysClient(ClientEntityBase): +class SSHKeysClient(ResourceClientBase): _client: Client def get_by_id(self, id: int) -> BoundSSHKey: diff --git a/hcloud/volumes/client.py b/hcloud/volumes/client.py index 371a8bd1..15a71c4d 100644 --- a/hcloud/volumes/client.py +++ b/hcloud/volumes/client.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING, Any, NamedTuple from ..actions import ActionsPageResult, BoundAction, ResourceActionsClient -from ..core import BoundModelBase, ClientEntityBase, Meta +from ..core import BoundModelBase, Meta, ResourceClientBase from ..locations import BoundLocation from .domain import CreateVolumeResponse, Volume @@ -135,7 +135,7 @@ class VolumesPageResult(NamedTuple): meta: Meta -class VolumesClient(ClientEntityBase): +class VolumesClient(ResourceClientBase): _client: Client actions: ResourceActionsClient diff --git a/tests/unit/core/test_client.py b/tests/unit/core/test_client.py index 4a6542eb..72e90879 100644 --- a/tests/unit/core/test_client.py +++ b/tests/unit/core/test_client.py @@ -6,7 +6,7 @@ import pytest from hcloud.actions import ActionsPageResult -from hcloud.core import BaseDomain, BoundModelBase, ClientEntityBase, Meta +from hcloud.core import BaseDomain, BoundModelBase, Meta, ResourceClientBase class TestBoundModelBase: @@ -99,7 +99,7 @@ def test_equality(self, bound_model_class, client): assert bound_model_a != bound_model_b.data_model -class TestClientEntityBase: +class TestResourceClientBase: @pytest.fixture() def client_class_constructor(self): def constructor(json_content_function): @@ -107,7 +107,7 @@ class CandiesPageResult(NamedTuple): candies: list[Any] meta: Meta - class CandiesClient(ClientEntityBase): + class CandiesClient(ResourceClientBase): def get_list(self, status=None, page=None, per_page=None): json_content = json_content_function(page) results = [ @@ -122,7 +122,7 @@ def get_list(self, status=None, page=None, per_page=None): @pytest.fixture() def client_class_with_actions_constructor(self): def constructor(json_content_function): - class CandiesClient(ClientEntityBase): + class CandiesClient(ResourceClientBase): def get_actions_list(self, status, page=None, per_page=None): json_content = json_content_function(page) results = [