Skip to content

Commit 0896801

Browse files
committed
refactor: pass list function to _get_first_by helper
This will be useful for coming Storage Box sub resources, which may use different list functions.
1 parent 8e32b04 commit 0896801

File tree

18 files changed

+22
-23
lines changed

18 files changed

+22
-23
lines changed

hcloud/certificates/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ def get_by_name(self, name: str) -> BoundCertificate | None:
202202
Used to get certificate by name.
203203
:return: :class:`BoundCertificate <hcloud.certificates.client.BoundCertificate>`
204204
"""
205-
return self._get_first_by(name=name)
205+
return self._get_first_by(self.get_list, name=name)
206206

207207
def create(
208208
self,

hcloud/core/client.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,8 @@ def _iter_pages( # type: ignore[no-untyped-def]
4646

4747
return results
4848

49-
def _get_first_by(self, **kwargs): # type: ignore[no-untyped-def]
50-
assert hasattr(self, "get_list")
51-
# pylint: disable=no-member
52-
entities, _ = self.get_list(**kwargs)
49+
def _get_first_by(self, list_function: Callable, *args, **kwargs): # type: ignore[no-untyped-def]
50+
entities, _ = list_function(*args, **kwargs)
5351
return entities[0] if entities else None
5452

5553

hcloud/datacenters/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,4 +115,4 @@ def get_by_name(self, name: str) -> BoundDatacenter | None:
115115
Used to get datacenter by name.
116116
:return: :class:`BoundDatacenter <hcloud.datacenters.client.BoundDatacenter>`
117117
"""
118-
return self._get_first_by(name=name)
118+
return self._get_first_by(self.get_list, name=name)

hcloud/firewalls/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ def get_by_name(self, name: str) -> BoundFirewall | None:
351351
Used to get Firewall by name.
352352
:return: :class:`BoundFirewall <hcloud.firewalls.client.BoundFirewall>`
353353
"""
354-
return self._get_first_by(name=name)
354+
return self._get_first_by(self.get_list, name=name)
355355

356356
def create(
357357
self,

hcloud/floating_ips/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ def get_by_name(self, name: str) -> BoundFloatingIP | None:
293293
Used to get Floating IP by name.
294294
:return: :class:`BoundFloatingIP <hcloud.floating_ips.client.BoundFloatingIP>`
295295
"""
296-
return self._get_first_by(name=name)
296+
return self._get_first_by(self.get_list, name=name)
297297

298298
def create(
299299
self,

hcloud/images/client.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ def get_by_name(self, name: str) -> BoundImage | None:
329329
DeprecationWarning,
330330
stacklevel=2,
331331
)
332-
return self._get_first_by(name=name)
332+
return self._get_first_by(self.get_list, name=name)
333333

334334
def get_by_name_and_architecture(
335335
self,
@@ -349,6 +349,7 @@ def get_by_name_and_architecture(
349349
:return: :class:`BoundImage <hcloud.images.client.BoundImage>`
350350
"""
351351
return self._get_first_by(
352+
self.get_list,
352353
name=name,
353354
architecture=[architecture],
354355
include_deprecated=include_deprecated,

hcloud/isos/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,4 @@ def get_by_name(self, name: str) -> BoundIso | None:
9999
Used to get iso by name.
100100
:return: :class:`BoundIso <hcloud.isos.client.BoundIso>`
101101
"""
102-
return self._get_first_by(name=name)
102+
return self._get_first_by(self.get_list, name=name)

hcloud/load_balancer_types/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,4 @@ def get_by_name(self, name: str) -> BoundLoadBalancerType | None:
8181
Used to get Load Balancer type by name.
8282
:return: :class:`BoundLoadBalancerType <hcloud.load_balancer_types.client.BoundLoadBalancerType>`
8383
"""
84-
return self._get_first_by(name=name)
84+
return self._get_first_by(self.get_list, name=name)

hcloud/load_balancers/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ def get_by_name(self, name: str) -> BoundLoadBalancer | None:
467467
Used to get Load Balancer by name.
468468
:return: :class:`BoundLoadBalancer <hcloud.load_balancers.client.BoundLoadBalancer>`
469469
"""
470-
return self._get_first_by(name=name)
470+
return self._get_first_by(self.get_list, name=name)
471471

472472
def create(
473473
self,

hcloud/locations/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,4 @@ def get_by_name(self, name: str) -> BoundLocation | None:
7676
Used to get location by name.
7777
:return: :class:`BoundLocation <hcloud.locations.client.BoundLocation>`
7878
"""
79-
return self._get_first_by(name=name)
79+
return self._get_first_by(self.get_list, name=name)

0 commit comments

Comments
 (0)