From 38bb7aedfa1407a3c648bd9489f69f0260463226 Mon Sep 17 00:00:00 2001 From: jo Date: Tue, 12 Aug 2025 12:22:10 +0200 Subject: [PATCH 1/2] fix: rename BoundModelBase to BaseBoundModel --- hcloud/core/__init__.py | 3 ++- hcloud/core/client.py | 30 +++++++++++++++++++++++++++--- tests/unit/core/test_client.py | 6 +++--- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/hcloud/core/__init__.py b/hcloud/core/__init__.py index d2d22686..2ba98b53 100644 --- a/hcloud/core/__init__.py +++ b/hcloud/core/__init__.py @@ -1,9 +1,10 @@ from __future__ import annotations -from .client import BaseResourceClient, BoundModelBase, ClientEntityBase +from .client import BaseBoundModel, BaseResourceClient, BoundModelBase, ClientEntityBase from .domain import BaseDomain, DomainIdentityMixin, Meta, Pagination __all__ = [ + "BaseBoundModel", "BaseDomain", "BaseResourceClient", "BoundModelBase", diff --git a/hcloud/core/client.py b/hcloud/core/client.py index f14a8144..b3558de2 100644 --- a/hcloud/core/client.py +++ b/hcloud/core/client.py @@ -5,6 +5,7 @@ if TYPE_CHECKING: from .._client import Client + from .domain import BaseDomain class BaseResourceClient: @@ -69,10 +70,10 @@ def __init__(self, client: Client): super().__init__(client) -class BoundModelBase: - """Bound Model Base""" +class BaseBoundModel: + """Base Bound Model""" - model: Any + model: type[BaseDomain] def __init__( self, @@ -121,3 +122,26 @@ def __eq__(self, other: Any) -> bool: if not isinstance(other, self.__class__): return NotImplemented return self.data_model == other.data_model + + +class BoundModelBase(BaseBoundModel): + """ + Kept for backward compatibility. + + .. deprecated:: 2.6.0 + Use :class:``hcloud.core.client.BaseBoundModel`` instead. + """ + + def __init__( + self, + client: BaseResourceClient, + data: dict, + complete: bool = True, + ): + warnings.warn( + "The 'hcloud.core.client.BoundModelBase' class is deprecated, please use the " + "'hcloud.core.client.BaseBoundModel' class instead.", + DeprecationWarning, + stacklevel=2, + ) + super().__init__(client, data, complete) diff --git a/tests/unit/core/test_client.py b/tests/unit/core/test_client.py index 755f4e5b..c8c22d80 100644 --- a/tests/unit/core/test_client.py +++ b/tests/unit/core/test_client.py @@ -6,10 +6,10 @@ import pytest from hcloud.actions import ActionsPageResult -from hcloud.core import BaseDomain, BaseResourceClient, BoundModelBase, Meta +from hcloud.core import BaseBoundModel, BaseDomain, BaseResourceClient, Meta -class TestBoundModelBase: +class TestBaseBoundModel: @pytest.fixture() def bound_model_class(self): class Model(BaseDomain): @@ -21,7 +21,7 @@ def __init__(self, id, name="", description=""): self.name = name self.description = description - class BoundModel(BoundModelBase, Model): + class BoundModel(BaseBoundModel, Model): model = Model return BoundModel From 66c7f0df36514bf98eabe0ba9497f7e7b05a43c5 Mon Sep 17 00:00:00 2001 From: jo Date: Tue, 12 Aug 2025 15:19:59 +0200 Subject: [PATCH 2/2] refactor: rename BoundModelBase --- hcloud/actions/client.py | 4 ++-- hcloud/certificates/client.py | 4 ++-- hcloud/datacenters/client.py | 4 ++-- hcloud/firewalls/client.py | 4 ++-- hcloud/floating_ips/client.py | 4 ++-- hcloud/images/client.py | 4 ++-- hcloud/isos/client.py | 4 ++-- hcloud/load_balancer_types/client.py | 4 ++-- hcloud/load_balancers/client.py | 4 ++-- hcloud/locations/client.py | 4 ++-- hcloud/networks/client.py | 4 ++-- hcloud/placement_groups/client.py | 4 ++-- hcloud/primary_ips/client.py | 4 ++-- hcloud/server_types/client.py | 4 ++-- hcloud/servers/client.py | 4 ++-- hcloud/ssh_keys/client.py | 4 ++-- hcloud/volumes/client.py | 4 ++-- 17 files changed, 34 insertions(+), 34 deletions(-) diff --git a/hcloud/actions/client.py b/hcloud/actions/client.py index 1538c28d..55bfd9dc 100644 --- a/hcloud/actions/client.py +++ b/hcloud/actions/client.py @@ -4,14 +4,14 @@ import warnings from typing import TYPE_CHECKING, Any, NamedTuple -from ..core import BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from .domain import Action, ActionFailedException, ActionTimeoutException if TYPE_CHECKING: from .._client import Client -class BoundAction(BoundModelBase, Action): +class BoundAction(BaseBoundModel, Action): _client: ActionsClient model = Action diff --git a/hcloud/certificates/client.py b/hcloud/certificates/client.py index 21c05ecc..8eff1a87 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 BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from .domain import ( Certificate, CreateManagedCertificateResponse, @@ -15,7 +15,7 @@ from .._client import Client -class BoundCertificate(BoundModelBase, Certificate): +class BoundCertificate(BaseBoundModel, Certificate): _client: CertificatesClient model = Certificate diff --git a/hcloud/datacenters/client.py b/hcloud/datacenters/client.py index ec5c6a45..850b8f42 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 BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from ..locations import BoundLocation from ..server_types import BoundServerType from .domain import Datacenter, DatacenterServerTypes @@ -11,7 +11,7 @@ from .._client import Client -class BoundDatacenter(BoundModelBase, Datacenter): +class BoundDatacenter(BaseBoundModel, Datacenter): _client: DatacentersClient model = Datacenter diff --git a/hcloud/firewalls/client.py b/hcloud/firewalls/client.py index 16ce27b3..220a46b5 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 BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from .domain import ( CreateFirewallResponse, Firewall, @@ -17,7 +17,7 @@ from .._client import Client -class BoundFirewall(BoundModelBase, Firewall): +class BoundFirewall(BaseBoundModel, Firewall): _client: FirewallsClient model = Firewall diff --git a/hcloud/floating_ips/client.py b/hcloud/floating_ips/client.py index 53b425ec..cd34bbac 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 BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from ..locations import BoundLocation from .domain import CreateFloatingIPResponse, FloatingIP @@ -13,7 +13,7 @@ from ..servers import BoundServer, Server -class BoundFloatingIP(BoundModelBase, FloatingIP): +class BoundFloatingIP(BaseBoundModel, FloatingIP): _client: FloatingIPsClient model = FloatingIP diff --git a/hcloud/images/client.py b/hcloud/images/client.py index 2596f185..45780631 100644 --- a/hcloud/images/client.py +++ b/hcloud/images/client.py @@ -4,14 +4,14 @@ from typing import TYPE_CHECKING, Any, NamedTuple from ..actions import ActionsPageResult, BoundAction, ResourceActionsClient -from ..core import BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from .domain import Image if TYPE_CHECKING: from .._client import Client -class BoundImage(BoundModelBase, Image): +class BoundImage(BaseBoundModel, Image): _client: ImagesClient model = Image diff --git a/hcloud/isos/client.py b/hcloud/isos/client.py index 50739d41..dad3e37e 100644 --- a/hcloud/isos/client.py +++ b/hcloud/isos/client.py @@ -2,14 +2,14 @@ from typing import TYPE_CHECKING, Any, NamedTuple -from ..core import BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from .domain import Iso if TYPE_CHECKING: from .._client import Client -class BoundIso(BoundModelBase, Iso): +class BoundIso(BaseBoundModel, Iso): _client: IsosClient model = Iso diff --git a/hcloud/load_balancer_types/client.py b/hcloud/load_balancer_types/client.py index 8ed250e8..cbf569f9 100644 --- a/hcloud/load_balancer_types/client.py +++ b/hcloud/load_balancer_types/client.py @@ -2,14 +2,14 @@ from typing import TYPE_CHECKING, Any, NamedTuple -from ..core import BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from .domain import LoadBalancerType if TYPE_CHECKING: from .._client import Client -class BoundLoadBalancerType(BoundModelBase, LoadBalancerType): +class BoundLoadBalancerType(BaseBoundModel, LoadBalancerType): _client: LoadBalancerTypesClient model = LoadBalancerType diff --git a/hcloud/load_balancers/client.py b/hcloud/load_balancers/client.py index 761d4031..4e9cb16f 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 BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from ..load_balancer_types import BoundLoadBalancerType from ..locations import BoundLocation from ..metrics import Metrics @@ -40,7 +40,7 @@ from ..networks import Network -class BoundLoadBalancer(BoundModelBase, LoadBalancer): +class BoundLoadBalancer(BaseBoundModel, LoadBalancer): _client: LoadBalancersClient model = LoadBalancer diff --git a/hcloud/locations/client.py b/hcloud/locations/client.py index 75ba25a4..27e0d4ea 100644 --- a/hcloud/locations/client.py +++ b/hcloud/locations/client.py @@ -2,14 +2,14 @@ from typing import TYPE_CHECKING, Any, NamedTuple -from ..core import BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from .domain import Location if TYPE_CHECKING: from .._client import Client -class BoundLocation(BoundModelBase, Location): +class BoundLocation(BaseBoundModel, Location): _client: LocationsClient model = Location diff --git a/hcloud/networks/client.py b/hcloud/networks/client.py index 956b8101..ff7e6ec7 100644 --- a/hcloud/networks/client.py +++ b/hcloud/networks/client.py @@ -3,14 +3,14 @@ from typing import TYPE_CHECKING, Any, NamedTuple from ..actions import ActionsPageResult, BoundAction, ResourceActionsClient -from ..core import BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from .domain import Network, NetworkRoute, NetworkSubnet if TYPE_CHECKING: from .._client import Client -class BoundNetwork(BoundModelBase, Network): +class BoundNetwork(BaseBoundModel, Network): _client: NetworksClient model = Network diff --git a/hcloud/placement_groups/client.py b/hcloud/placement_groups/client.py index 6b719058..96ae2017 100644 --- a/hcloud/placement_groups/client.py +++ b/hcloud/placement_groups/client.py @@ -3,14 +3,14 @@ from typing import TYPE_CHECKING, Any, NamedTuple from ..actions import BoundAction -from ..core import BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from .domain import CreatePlacementGroupResponse, PlacementGroup if TYPE_CHECKING: from .._client import Client -class BoundPlacementGroup(BoundModelBase, PlacementGroup): +class BoundPlacementGroup(BaseBoundModel, PlacementGroup): _client: PlacementGroupsClient model = PlacementGroup diff --git a/hcloud/primary_ips/client.py b/hcloud/primary_ips/client.py index 0171535e..b18f35db 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 BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from .domain import CreatePrimaryIPResponse, PrimaryIP if TYPE_CHECKING: @@ -11,7 +11,7 @@ from ..datacenters import BoundDatacenter, Datacenter -class BoundPrimaryIP(BoundModelBase, PrimaryIP): +class BoundPrimaryIP(BaseBoundModel, PrimaryIP): _client: PrimaryIPsClient model = PrimaryIP diff --git a/hcloud/server_types/client.py b/hcloud/server_types/client.py index 62ebe6f5..222d9459 100644 --- a/hcloud/server_types/client.py +++ b/hcloud/server_types/client.py @@ -2,14 +2,14 @@ from typing import TYPE_CHECKING, Any, NamedTuple -from ..core import BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from .domain import ServerType if TYPE_CHECKING: from .._client import Client -class BoundServerType(BoundModelBase, ServerType): +class BoundServerType(BaseBoundModel, ServerType): _client: ServerTypesClient model = ServerType diff --git a/hcloud/servers/client.py b/hcloud/servers/client.py index ef98b197..3a14623d 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 BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from ..datacenters import BoundDatacenter from ..firewalls import BoundFirewall from ..floating_ips import BoundFloatingIP @@ -48,7 +48,7 @@ from .domain import ServerCreatePublicNetwork -class BoundServer(BoundModelBase, Server): +class BoundServer(BaseBoundModel, Server): _client: ServersClient model = Server diff --git a/hcloud/ssh_keys/client.py b/hcloud/ssh_keys/client.py index a1340722..9b5e8f22 100644 --- a/hcloud/ssh_keys/client.py +++ b/hcloud/ssh_keys/client.py @@ -2,14 +2,14 @@ from typing import TYPE_CHECKING, Any, NamedTuple -from ..core import BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from .domain import SSHKey if TYPE_CHECKING: from .._client import Client -class BoundSSHKey(BoundModelBase, SSHKey): +class BoundSSHKey(BaseBoundModel, SSHKey): _client: SSHKeysClient model = SSHKey diff --git a/hcloud/volumes/client.py b/hcloud/volumes/client.py index a51d42d6..ef7a5057 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 BaseResourceClient, BoundModelBase, Meta +from ..core import BaseBoundModel, BaseResourceClient, Meta from ..locations import BoundLocation from .domain import CreateVolumeResponse, Volume @@ -13,7 +13,7 @@ from ..servers import BoundServer, Server -class BoundVolume(BoundModelBase, Volume): +class BoundVolume(BaseBoundModel, Volume): _client: VolumesClient model = Volume