Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-hcloud for openSUSE:Factory 
checked in at 2025-11-21 16:56:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-hcloud (Old)
 and      /work/SRC/openSUSE:Factory/.python-hcloud.new.2061 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-hcloud"

Fri Nov 21 16:56:35 2025 rev:14 rq:1318839 version:2.11.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-hcloud/python-hcloud.changes      
2025-11-10 19:20:59.573535776 +0100
+++ /work/SRC/openSUSE:Factory/.python-hcloud.new.2061/python-hcloud.changes    
2025-11-21 16:57:27.736342332 +0100
@@ -1,0 +2,8 @@
+Thu Nov 20 09:35:03 UTC 2025 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- Update to 2.11.1
+  * support reloading sub resource bound models (#590)
+- from version 2.11.0
+  * DNS support is now generally available (#581)
+
+-------------------------------------------------------------------

Old:
----
  hcloud-2.10.0.tar.gz

New:
----
  hcloud-2.11.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-hcloud.spec ++++++
--- /var/tmp/diff_new_pack.drIXgH/_old  2025-11-21 16:57:28.364368797 +0100
+++ /var/tmp/diff_new_pack.drIXgH/_new  2025-11-21 16:57:28.368368965 +0100
@@ -17,7 +17,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-hcloud
-Version:        2.10.0
+Version:        2.11.1
 Release:        0
 Summary:        Hetzner Cloud Python library
 License:        MIT

++++++ hcloud-2.10.0.tar.gz -> hcloud-2.11.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/CHANGELOG.md 
new/hcloud-2.11.1/CHANGELOG.md
--- old/hcloud-2.10.0/CHANGELOG.md      2025-11-07 14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/CHANGELOG.md      2025-11-14 14:02:21.000000000 +0100
@@ -1,5 +1,25 @@
 # Changelog
 
+## 
[v2.11.1](https://github.com/hetznercloud/hcloud-python/releases/tag/v2.11.1)
+
+### Bug Fixes
+
+- support reloading sub resource bound models (#590)
+
+## 
[v2.11.0](https://github.com/hetznercloud/hcloud-python/releases/tag/v2.11.0)
+
+### DNS API is now generally available
+
+The DNS API is now generally available, as well as support for features in 
this project that are related to the DNS API.
+
+To migrate existing zones to the new DNS API, see the [DNS migration 
guide](https://docs.hetzner.com/networking/dns/migration-to-hetzner-console/process).
+
+See the [changelog](https://docs.hetzner.cloud/changelog#2025-11-10-dns-ga) 
for more details.
+
+### Features
+
+- DNS support is now generally available (#581)
+
 ## 
[v2.10.0](https://github.com/hetznercloud/hcloud-python/releases/tag/v2.10.0)
 
 ### Features
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/PKG-INFO new/hcloud-2.11.1/PKG-INFO
--- old/hcloud-2.10.0/PKG-INFO  2025-11-07 14:42:55.555976400 +0100
+++ new/hcloud-2.11.1/PKG-INFO  2025-11-14 14:02:31.712159900 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: hcloud
-Version: 2.10.0
+Version: 2.11.1
 Summary: Official Hetzner Cloud python library
 Home-page: https://github.com/hetznercloud/hcloud-python
 Author: Hetzner Cloud GmbH
@@ -33,7 +33,7 @@
 Provides-Extra: test
 Requires-Dist: coverage<7.12,>=7.11; extra == "test"
 Requires-Dist: pylint<4.1,>=4; extra == "test"
-Requires-Dist: pytest<8.5,>=8; extra == "test"
+Requires-Dist: pytest<9.1,>=9; extra == "test"
 Requires-Dist: pytest-cov<7.1,>=7; extra == "test"
 Requires-Dist: mypy<1.19,>=1.18; extra == "test"
 Requires-Dist: types-python-dateutil; extra == "test"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/_version.py 
new/hcloud-2.11.1/hcloud/_version.py
--- old/hcloud-2.10.0/hcloud/_version.py        2025-11-07 14:42:42.000000000 
+0100
+++ new/hcloud-2.11.1/hcloud/_version.py        2025-11-14 14:02:21.000000000 
+0100
@@ -1,3 +1,3 @@
 from __future__ import annotations
 
-__version__ = "2.10.0"  # x-releaser-pleaser-version
+__version__ = "2.11.1"  # x-releaser-pleaser-version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/certificates/client.py 
new/hcloud-2.11.1/hcloud/certificates/client.py
--- old/hcloud-2.10.0/hcloud/certificates/client.py     2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/hcloud/certificates/client.py     2025-11-14 
14:02:21.000000000 +0100
@@ -202,7 +202,7 @@
                Used to get certificate by name.
         :return: :class:`BoundCertificate 
<hcloud.certificates.client.BoundCertificate>`
         """
-        return self._get_first_by(name=name)
+        return self._get_first_by(self.get_list, name=name)
 
     def create(
         self,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/core/client.py 
new/hcloud-2.11.1/hcloud/core/client.py
--- old/hcloud-2.10.0/hcloud/core/client.py     2025-11-07 14:42:42.000000000 
+0100
+++ new/hcloud-2.11.1/hcloud/core/client.py     2025-11-14 14:02:21.000000000 
+0100
@@ -46,10 +46,8 @@
 
         return results
 
-    def _get_first_by(self, **kwargs):  # type: ignore[no-untyped-def]
-        assert hasattr(self, "get_list")
-        # pylint: disable=no-member
-        entities, _ = self.get_list(**kwargs)
+    def _get_first_by(self, list_function: Callable, *args, **kwargs):  # 
type: ignore[no-untyped-def]
+        entities, _ = list_function(*args, **kwargs)
         return entities[0] if entities else None
 
 
@@ -105,10 +103,13 @@
             value = getattr(self.data_model, name)
         return value
 
-    def reload(self) -> None:
-        """Reloads the model and tries to get all data from the APIx"""
+    def _get_self(self) -> BoundModelBase:
         assert hasattr(self._client, "get_by_id")
-        bound_model = self._client.get_by_id(self.data_model.id)
+        return self._client.get_by_id(self.data_model.id)
+
+    def reload(self) -> None:
+        """Reloads the model and tries to get all data from the API"""
+        bound_model = self._get_self()
         self.data_model = bound_model.data_model
         self.complete = True
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/datacenters/client.py 
new/hcloud-2.11.1/hcloud/datacenters/client.py
--- old/hcloud-2.10.0/hcloud/datacenters/client.py      2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/hcloud/datacenters/client.py      2025-11-14 
14:02:21.000000000 +0100
@@ -115,4 +115,4 @@
                Used to get datacenter by name.
         :return: :class:`BoundDatacenter 
<hcloud.datacenters.client.BoundDatacenter>`
         """
-        return self._get_first_by(name=name)
+        return self._get_first_by(self.get_list, name=name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/firewalls/client.py 
new/hcloud-2.11.1/hcloud/firewalls/client.py
--- old/hcloud-2.10.0/hcloud/firewalls/client.py        2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/hcloud/firewalls/client.py        2025-11-14 
14:02:21.000000000 +0100
@@ -351,7 +351,7 @@
                Used to get Firewall by name.
         :return: :class:`BoundFirewall <hcloud.firewalls.client.BoundFirewall>`
         """
-        return self._get_first_by(name=name)
+        return self._get_first_by(self.get_list, name=name)
 
     def create(
         self,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/floating_ips/client.py 
new/hcloud-2.11.1/hcloud/floating_ips/client.py
--- old/hcloud-2.10.0/hcloud/floating_ips/client.py     2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/hcloud/floating_ips/client.py     2025-11-14 
14:02:21.000000000 +0100
@@ -293,7 +293,7 @@
                Used to get Floating IP by name.
         :return: :class:`BoundFloatingIP 
<hcloud.floating_ips.client.BoundFloatingIP>`
         """
-        return self._get_first_by(name=name)
+        return self._get_first_by(self.get_list, name=name)
 
     def create(
         self,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/images/client.py 
new/hcloud-2.11.1/hcloud/images/client.py
--- old/hcloud-2.10.0/hcloud/images/client.py   2025-11-07 14:42:42.000000000 
+0100
+++ new/hcloud-2.11.1/hcloud/images/client.py   2025-11-14 14:02:21.000000000 
+0100
@@ -329,7 +329,7 @@
             DeprecationWarning,
             stacklevel=2,
         )
-        return self._get_first_by(name=name)
+        return self._get_first_by(self.get_list, name=name)
 
     def get_by_name_and_architecture(
         self,
@@ -349,6 +349,7 @@
         :return: :class:`BoundImage <hcloud.images.client.BoundImage>`
         """
         return self._get_first_by(
+            self.get_list,
             name=name,
             architecture=[architecture],
             include_deprecated=include_deprecated,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/isos/client.py 
new/hcloud-2.11.1/hcloud/isos/client.py
--- old/hcloud-2.10.0/hcloud/isos/client.py     2025-11-07 14:42:42.000000000 
+0100
+++ new/hcloud-2.11.1/hcloud/isos/client.py     2025-11-14 14:02:21.000000000 
+0100
@@ -99,4 +99,4 @@
                Used to get iso by name.
         :return: :class:`BoundIso <hcloud.isos.client.BoundIso>`
         """
-        return self._get_first_by(name=name)
+        return self._get_first_by(self.get_list, name=name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/load_balancer_types/client.py 
new/hcloud-2.11.1/hcloud/load_balancer_types/client.py
--- old/hcloud-2.10.0/hcloud/load_balancer_types/client.py      2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/hcloud/load_balancer_types/client.py      2025-11-14 
14:02:21.000000000 +0100
@@ -81,4 +81,4 @@
                Used to get Load Balancer type by name.
         :return: :class:`BoundLoadBalancerType 
<hcloud.load_balancer_types.client.BoundLoadBalancerType>`
         """
-        return self._get_first_by(name=name)
+        return self._get_first_by(self.get_list, name=name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/load_balancers/client.py 
new/hcloud-2.11.1/hcloud/load_balancers/client.py
--- old/hcloud-2.10.0/hcloud/load_balancers/client.py   2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/hcloud/load_balancers/client.py   2025-11-14 
14:02:21.000000000 +0100
@@ -467,7 +467,7 @@
                Used to get Load Balancer by name.
         :return: :class:`BoundLoadBalancer 
<hcloud.load_balancers.client.BoundLoadBalancer>`
         """
-        return self._get_first_by(name=name)
+        return self._get_first_by(self.get_list, name=name)
 
     def create(
         self,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/locations/client.py 
new/hcloud-2.11.1/hcloud/locations/client.py
--- old/hcloud-2.10.0/hcloud/locations/client.py        2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/hcloud/locations/client.py        2025-11-14 
14:02:21.000000000 +0100
@@ -76,4 +76,4 @@
                Used to get location by name.
         :return: :class:`BoundLocation <hcloud.locations.client.BoundLocation>`
         """
-        return self._get_first_by(name=name)
+        return self._get_first_by(self.get_list, name=name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/networks/client.py 
new/hcloud-2.11.1/hcloud/networks/client.py
--- old/hcloud-2.10.0/hcloud/networks/client.py 2025-11-07 14:42:42.000000000 
+0100
+++ new/hcloud-2.11.1/hcloud/networks/client.py 2025-11-14 14:02:21.000000000 
+0100
@@ -252,7 +252,7 @@
                Used to get network by name.
         :return: :class:`BoundNetwork <hcloud.networks.client.BoundNetwork>`
         """
-        return self._get_first_by(name=name)
+        return self._get_first_by(self.get_list, name=name)
 
     def create(
         self,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/placement_groups/client.py 
new/hcloud-2.11.1/hcloud/placement_groups/client.py
--- old/hcloud-2.10.0/hcloud/placement_groups/client.py 2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/hcloud/placement_groups/client.py 2025-11-14 
14:02:21.000000000 +0100
@@ -131,7 +131,7 @@
                Used to get Placement Group by name
         :return: class:`BoundPlacementGroup 
<hcloud.placement_groups.client.BoundPlacementGroup>`
         """
-        return self._get_first_by(name=name)
+        return self._get_first_by(self.get_list, name=name)
 
     def create(
         self,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/primary_ips/client.py 
new/hcloud-2.11.1/hcloud/primary_ips/client.py
--- old/hcloud-2.10.0/hcloud/primary_ips/client.py      2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/hcloud/primary_ips/client.py      2025-11-14 
14:02:21.000000000 +0100
@@ -189,7 +189,7 @@
                Used to get Primary IP by name.
         :return: :class:`BoundPrimaryIP 
<hcloud.primary_ips.client.BoundPrimaryIP>`
         """
-        return self._get_first_by(name=name)
+        return self._get_first_by(self.get_list, name=name)
 
     def create(
         self,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/server_types/client.py 
new/hcloud-2.11.1/hcloud/server_types/client.py
--- old/hcloud-2.10.0/hcloud/server_types/client.py     2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/hcloud/server_types/client.py     2025-11-14 
14:02:21.000000000 +0100
@@ -99,4 +99,4 @@
                Used to get Server type by name.
         :return: :class:`BoundServerType 
<hcloud.server_types.client.BoundServerType>`
         """
-        return self._get_first_by(name=name)
+        return self._get_first_by(self.get_list, name=name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/servers/client.py 
new/hcloud-2.11.1/hcloud/servers/client.py
--- old/hcloud-2.10.0/hcloud/servers/client.py  2025-11-07 14:42:42.000000000 
+0100
+++ new/hcloud-2.11.1/hcloud/servers/client.py  2025-11-14 14:02:21.000000000 
+0100
@@ -596,7 +596,7 @@
                Used to get server by name.
         :return: :class:`BoundServer <hcloud.servers.client.BoundServer>`
         """
-        return self._get_first_by(name=name)
+        return self._get_first_by(self.get_list, name=name)
 
     # pylint: disable=too-many-branches,too-many-locals
     def create(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/ssh_keys/client.py 
new/hcloud-2.11.1/hcloud/ssh_keys/client.py
--- old/hcloud-2.10.0/hcloud/ssh_keys/client.py 2025-11-07 14:42:42.000000000 
+0100
+++ new/hcloud-2.11.1/hcloud/ssh_keys/client.py 2025-11-14 14:02:21.000000000 
+0100
@@ -121,7 +121,7 @@
                Used to get ssh key by name.
         :return: :class:`BoundSSHKey <hcloud.ssh_keys.client.BoundSSHKey>`
         """
-        return self._get_first_by(name=name)
+        return self._get_first_by(self.get_list, name=name)
 
     def get_by_fingerprint(self, fingerprint: str) -> BoundSSHKey | None:
         """Get ssh key by fingerprint
@@ -130,7 +130,7 @@
                 Used to get ssh key by fingerprint.
         :return: :class:`BoundSSHKey <hcloud.ssh_keys.client.BoundSSHKey>`
         """
-        return self._get_first_by(fingerprint=fingerprint)
+        return self._get_first_by(self.get_list, fingerprint=fingerprint)
 
     def create(
         self,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/volumes/client.py 
new/hcloud-2.11.1/hcloud/volumes/client.py
--- old/hcloud-2.10.0/hcloud/volumes/client.py  2025-11-07 14:42:42.000000000 
+0100
+++ new/hcloud-2.11.1/hcloud/volumes/client.py  2025-11-14 14:02:21.000000000 
+0100
@@ -225,7 +225,7 @@
                Used to get volume by name.
         :return: :class:`BoundVolume <hcloud.volumes.client.BoundVolume>`
         """
-        return self._get_first_by(name=name)
+        return self._get_first_by(self.get_list, name=name)
 
     def create(
         self,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud/zones/client.py 
new/hcloud-2.11.1/hcloud/zones/client.py
--- old/hcloud-2.10.0/hcloud/zones/client.py    2025-11-07 14:42:42.000000000 
+0100
+++ new/hcloud-2.11.1/hcloud/zones/client.py    2025-11-14 14:02:21.000000000 
+0100
@@ -59,10 +59,6 @@
         See https://docs.hetzner.cloud/reference/cloud#zones-update-a-zone
 
         :param labels: User-defined labels (key/value pairs) for the Resource.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.update(self, labels=labels)
 
@@ -71,10 +67,6 @@
         Deletes the Zone.
 
         See https://docs.hetzner.cloud/reference/cloud#zones-delete-a-zone
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.delete(self)
 
@@ -83,10 +75,6 @@
         Returns a generated Zone file in BIND (RFC 1034/1035) format.
 
         See https://docs.hetzner.cloud/reference/cloud#zones-export-a-zone-file
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.export_zonefile(self)
 
@@ -107,10 +95,6 @@
         :param sort: Sort resources by field and direction.
         :param page: Page number to return.
         :param per_page: Maximum number of entries returned per page.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.get_actions_list(
             self,
@@ -133,10 +117,6 @@
 
         :param status: Filter the actions by status. The response will only 
contain actions matching the specified statuses.
         :param sort: Sort resources by field and direction.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.get_actions(
             self,
@@ -154,10 +134,6 @@
         See 
https://docs.hetzner.cloud/reference/cloud#zone-actions-import-a-zone-file
 
         :param zonefile: Zone file to import.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.import_zonefile(self, zonefile=zonefile)
 
@@ -172,10 +148,6 @@
         See 
https://docs.hetzner.cloud/reference/cloud#zone-actions-change-a-zones-protection
 
         :param delete: Prevents the Zone from being deleted.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.change_protection(self, delete=delete)
 
@@ -189,10 +161,6 @@
         See 
https://docs.hetzner.cloud/reference/cloud#zone-actions-change-a-zones-default-ttl
 
         :param ttl: Default Time To Live (TTL) of the Zone.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.change_ttl(self, ttl=ttl)
 
@@ -206,10 +174,6 @@
         See 
https://docs.hetzner.cloud/reference/cloud#zone-actions-change-a-zones-primary-nameservers
 
         :param primary_nameservers: Primary nameservers of the Zone.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.change_primary_nameservers(
             self,
@@ -228,10 +192,6 @@
 
         :param name: Name of the RRSet.
         :param type: Type of the RRSet.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.get_rrset(self, name=name, type=type)
 
@@ -256,10 +216,6 @@
         :param sort: Sort resources by field and direction.
         :param page: Page number to return.
         :param per_page: Maximum number of entries returned per page.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.get_rrset_list(
             self,
@@ -288,10 +244,6 @@
         :param type: Filter resources by their type. The response will only 
contain the resources matching exactly the specified type.
         :param label_selector: Filter resources by labels. The response will 
only contain resources matching the label selector.
         :param sort: Sort resources by field and direction.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.get_rrset_all(
             self,
@@ -320,10 +272,6 @@
         :param ttl: Time To Live (TTL) of the RRSet.
         :param labels: User-defined labels (key/value pairs) for the Resource.
         :param records: Records of the RRSet.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.create_rrset(
             self,
@@ -347,10 +295,6 @@
 
         :param rrset: RRSet to update.
         :param labels: User-defined labels (key/value pairs) for the Resource.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.update_rrset(rrset=rrset, labels=labels)
 
@@ -364,10 +308,6 @@
         See 
https://docs.hetzner.cloud/reference/cloud#zone-rrsets-delete-an-rrset
 
         :param rrset: RRSet to delete.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.delete_rrset(rrset=rrset)
 
@@ -384,10 +324,6 @@
 
         :param rrset: RRSet to update.
         :param change: Prevent the Zone from being changed (deletion and 
updates).
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.change_rrset_protection(rrset=rrset, change=change)
 
@@ -403,10 +339,6 @@
 
         :param rrset: RRSet to update.
         :param change: Time To Live (TTL) of the RRSet.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.change_rrset_ttl(rrset=rrset, ttl=ttl)
 
@@ -424,10 +356,6 @@
         :param rrset: RRSet to update.
         :param records: Records to add to the RRSet.
         :param ttl: Time To Live (TTL) of the RRSet.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.add_rrset_records(rrset=rrset, records=records, 
ttl=ttl)
 
@@ -443,10 +371,6 @@
 
         :param rrset: RRSet to update.
         :param records: Records to remove from the RRSet.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.remove_rrset_records(rrset=rrset, records=records)
 
@@ -462,10 +386,6 @@
 
         :param rrset: RRSet to update.
         :param records: Records to set in the RRSet.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.set_rrset_records(rrset=rrset, records=records)
 
@@ -486,6 +406,13 @@
 
         super().__init__(client, data, complete)
 
+    def _get_self(self) -> BoundZoneRRSet:
+        return self._client.get_rrset(
+            self.data_model.zone,
+            self.data_model.name,
+            self.data_model.type,
+        )
+
     def update_rrset(
         self,
         *,
@@ -497,10 +424,6 @@
         See 
https://docs.hetzner.cloud/reference/cloud#zone-rrsets-update-an-rrset
 
         :param labels: User-defined labels (key/value pairs) for the Resource.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.update_rrset(self, labels=labels)
 
@@ -511,10 +434,6 @@
         Deletes the ZoneRRSet.
 
         See 
https://docs.hetzner.cloud/reference/cloud#zone-rrsets-delete-an-rrset
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.delete_rrset(self)
 
@@ -529,10 +448,6 @@
         See 
https://docs.hetzner.cloud/reference/cloud#zone-rrset-actions-change-an-rrsets-protection
 
         :param change: Prevent the Zone from being changed (deletion and 
updates).
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.change_rrset_protection(self, change=change)
 
@@ -546,10 +461,6 @@
         See 
https://docs.hetzner.cloud/reference/cloud#zone-rrset-actions-change-an-rrsets-ttl
 
         :param change: Time To Live (TTL) of the RRSet.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.change_rrset_ttl(self, ttl=ttl)
 
@@ -565,10 +476,6 @@
 
         :param records: Records to add to the RRSet.
         :param ttl: Time To Live (TTL) of the RRSet.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.add_rrset_records(self, records=records, ttl=ttl)
 
@@ -582,10 +489,6 @@
         See 
https://docs.hetzner.cloud/reference/cloud#zone-rrset-actions-remove-records-from-an-rrset
 
         :param records: Records to remove from the RRSet.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.remove_rrset_records(self, records=records)
 
@@ -599,10 +502,6 @@
         See 
https://docs.hetzner.cloud/reference/cloud#zone-rrset-actions-set-records-of-an-rrset
 
         :param records: Records to set in the RRSet.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._client.set_rrset_records(self, records=records)
 
@@ -622,10 +521,6 @@
     ZoneClient is a client for the Zone (DNS) API.
 
     See https://docs.hetzner.cloud/reference/cloud#zones and 
https://docs.hetzner.cloud/reference/cloud#zone-rrsets.
-
-    Experimental:
-        DNS API is in beta, breaking changes may occur within minor releases.
-        See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for more 
details.
     """
 
     _base_url = "/zones"
@@ -647,10 +542,6 @@
         See https://docs.hetzner.cloud/reference/cloud#zones-get-a-zone
 
         :param id_or_name: ID or Name of the Zone.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         response = self._client.request(
             method="GET",
@@ -679,10 +570,6 @@
         :param sort: Sort resources by field and direction.
         :param page: Page number to return.
         :param per_page: Maximum number of entries returned per page.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         params: dict[str, Any] = {}
         if name is not None:
@@ -725,10 +612,6 @@
         :param mode: Filter resources by their mode. The response will only 
contain the resources matching exactly the specified mode.
         :param label_selector: Filter resources by labels. The response will 
only contain resources matching the label selector.
         :param sort: Sort resources by field and direction.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._iter_pages(
             self.get_list,
@@ -763,10 +646,6 @@
         :param primary_nameservers: Primary nameservers of the Zone.
         :param rrsets: RRSets to be added to the Zone.
         :param zonefile: Zone file to import.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         data: dict[str, Any] = {
             "name": name,
@@ -807,10 +686,6 @@
 
         :param zone: Zone to update.
         :param labels: User-defined labels (key/value pairs) for the Resource.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         data: dict[str, Any] = {}
         if labels is not None:
@@ -833,10 +708,6 @@
         See https://docs.hetzner.cloud/reference/cloud#zones-delete-a-zone
 
         :param zone: Zone to delete.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         response = self._client.request(
             method="DELETE",
@@ -857,10 +728,6 @@
         See https://docs.hetzner.cloud/reference/cloud#zones-export-a-zone-file
 
         :param zone: Zone to export the zone file from.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         response = self._client.request(
             method="GET",
@@ -887,10 +754,6 @@
         :param sort: Sort resources by field and direction.
         :param page: Page number to return.
         :param per_page: Maximum number of entries returned per page.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         params: dict[str, Any] = {}
         if status is not None:
@@ -927,10 +790,6 @@
         :param zone: Zone to fetch the Actions from.
         :param status: Filter the actions by status. The response will only 
contain actions matching the specified statuses.
         :param sort: Sort resources by field and direction.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._iter_pages(
             self.get_actions_list,
@@ -951,10 +810,6 @@
 
         :param zone: Zone to import the zone file into.
         :param zonefile: Zone file to import.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         data: dict[str, Any] = {
             "zonefile": zonefile,
@@ -980,10 +835,6 @@
 
         :param zone: Zone to update.
         :param delete: Prevents the Zone from being deleted.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         data: dict[str, Any] = {}
         if delete is not None:
@@ -1008,10 +859,6 @@
 
         :param zone: Zone to update.
         :param ttl: Default Time To Live (TTL) of the Zone.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         data: dict[str, Any] = {
             "ttl": ttl,
@@ -1036,10 +883,6 @@
 
         :param zone: Zone to update.
         :param primary_nameservers: Primary nameservers of the Zone.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         data: dict[str, Any] = {
             "primary_nameservers": [o.to_payload() for o in 
primary_nameservers],
@@ -1066,10 +909,6 @@
         :param zone: Zone to fetch the RRSet from.
         :param name: Name of the RRSet.
         :param type: Type of the RRSet.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         response = self._client.request(
             method="GET",
@@ -1100,10 +939,6 @@
         :param sort: Sort resources by field and direction.
         :param page: Page number to return.
         :param per_page: Maximum number of entries returned per page.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         params: dict[str, Any] = {}
         if name is not None:
@@ -1148,10 +983,6 @@
         :param type: Filter resources by their type. The response will only 
contain the resources matching exactly the specified type.
         :param label_selector: Filter resources by labels. The response will 
only contain resources matching the label selector.
         :param sort: Sort resources by field and direction.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         return self._iter_pages(
             self.get_rrset_list,
@@ -1183,10 +1014,6 @@
         :param ttl: Time To Live (TTL) of the RRSet.
         :param labels: User-defined labels (key/value pairs) for the Resource.
         :param records: Records of the RRSet.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         data: dict[str, Any] = {
             "name": name,
@@ -1222,10 +1049,6 @@
 
         :param rrset: RRSet to update.
         :param labels: User-defined labels (key/value pairs) for the Resource.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         if rrset.zone is None:
             raise ValueError("rrset zone property is none")
@@ -1251,10 +1074,6 @@
         See 
https://docs.hetzner.cloud/reference/cloud#zone-rrsets-delete-an-rrset
 
         :param rrset: RRSet to delete.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         if rrset.zone is None:
             raise ValueError("rrset zone property is none")
@@ -1280,10 +1099,6 @@
 
         :param rrset: RRSet to update.
         :param change: Prevent the Zone from being changed (deletion and 
updates).
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         if rrset.zone is None:
             raise ValueError("rrset zone property is none")
@@ -1311,10 +1126,6 @@
 
         :param rrset: RRSet to update.
         :param change: Time To Live (TTL) of the RRSet.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         if rrset.zone is None:
             raise ValueError("rrset zone property is none")
@@ -1344,10 +1155,6 @@
         :param rrset: RRSet to update.
         :param records: Records to add to the RRSet.
         :param ttl: Time To Live (TTL) of the RRSet.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         if rrset.zone is None:
             raise ValueError("rrset zone property is none")
@@ -1377,10 +1184,6 @@
 
         :param rrset: RRSet to update.
         :param records: Records to remove from the RRSet.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         if rrset.zone is None:
             raise ValueError("rrset zone property is none")
@@ -1408,10 +1211,6 @@
 
         :param rrset: RRSet to update.
         :param records: Records to set in the RRSet.
-
-        Experimental:
-            DNS API is in beta, breaking changes may occur within minor 
releases.
-            See https://docs.hetzner.cloud/changelog#2025-10-07-dns-beta for 
more details.
         """
         if rrset.zone is None:
             raise ValueError("rrset zone property is none")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud.egg-info/PKG-INFO 
new/hcloud-2.11.1/hcloud.egg-info/PKG-INFO
--- old/hcloud-2.10.0/hcloud.egg-info/PKG-INFO  2025-11-07 14:42:55.000000000 
+0100
+++ new/hcloud-2.11.1/hcloud.egg-info/PKG-INFO  2025-11-14 14:02:31.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: hcloud
-Version: 2.10.0
+Version: 2.11.1
 Summary: Official Hetzner Cloud python library
 Home-page: https://github.com/hetznercloud/hcloud-python
 Author: Hetzner Cloud GmbH
@@ -33,7 +33,7 @@
 Provides-Extra: test
 Requires-Dist: coverage<7.12,>=7.11; extra == "test"
 Requires-Dist: pylint<4.1,>=4; extra == "test"
-Requires-Dist: pytest<8.5,>=8; extra == "test"
+Requires-Dist: pytest<9.1,>=9; extra == "test"
 Requires-Dist: pytest-cov<7.1,>=7; extra == "test"
 Requires-Dist: mypy<1.19,>=1.18; extra == "test"
 Requires-Dist: types-python-dateutil; extra == "test"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/hcloud.egg-info/requires.txt 
new/hcloud-2.11.1/hcloud.egg-info/requires.txt
--- old/hcloud-2.10.0/hcloud.egg-info/requires.txt      2025-11-07 
14:42:55.000000000 +0100
+++ new/hcloud-2.11.1/hcloud.egg-info/requires.txt      2025-11-14 
14:02:31.000000000 +0100
@@ -10,7 +10,7 @@
 [test]
 coverage<7.12,>=7.11
 pylint<4.1,>=4
-pytest<8.5,>=8
+pytest<9.1,>=9
 pytest-cov<7.1,>=7
 mypy<1.19,>=1.18
 types-python-dateutil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/setup.py new/hcloud-2.11.1/setup.py
--- old/hcloud-2.10.0/setup.py  2025-11-07 14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/setup.py  2025-11-14 14:02:21.000000000 +0100
@@ -7,7 +7,7 @@
 
 setup(
     name="hcloud",
-    version="2.10.0",  # x-releaser-pleaser-version
+    version="2.11.1",  # x-releaser-pleaser-version
     keywords="hcloud hetzner cloud",
     description="Official Hetzner Cloud python library",
     long_description=readme,
@@ -48,7 +48,7 @@
         "test": [
             "coverage>=7.11,<7.12",
             "pylint>=4,<4.1",
-            "pytest>=8,<8.5",
+            "pytest>=9,<9.1",
             "pytest-cov>=7,<7.1",
             "mypy>=1.18,<1.19",
             "types-python-dateutil",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/actions/test_domain.py 
new/hcloud-2.11.1/tests/unit/actions/test_domain.py
--- old/hcloud-2.10.0/tests/unit/actions/test_domain.py 2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/actions/test_domain.py 2025-11-14 
14:02:21.000000000 +0100
@@ -20,7 +20,7 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
 
 
 class TestAction:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/certificates/test_domain.py 
new/hcloud-2.11.1/tests/unit/certificates/test_domain.py
--- old/hcloud-2.10.0/tests/unit/certificates/test_domain.py    2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/certificates/test_domain.py    2025-11-14 
14:02:21.000000000 +0100
@@ -21,7 +21,7 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
 
 
 class TestCertificate:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/conftest.py 
new/hcloud-2.11.1/tests/unit/conftest.py
--- old/hcloud-2.10.0/tests/unit/conftest.py    2025-11-07 14:42:42.000000000 
+0100
+++ new/hcloud-2.11.1/tests/unit/conftest.py    2025-11-14 14:02:21.000000000 
+0100
@@ -188,6 +188,10 @@
             lambda m: inspect.ismethod(m)
             and m.__func__ in bound_model.__class__.__dict__.values(),
         ):
+            # Ignore private methods
+            if name.startswith("_"):
+                continue
+
             # Actions methods are already tested in TestBoundModelActions.
             if name in ("__init__", "get_actions", "get_actions_list"):
                 continue
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/core/test_client.py 
new/hcloud-2.11.1/tests/unit/core/test_client.py
--- old/hcloud-2.10.0/tests/unit/core/test_client.py    2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/core/test_client.py    2025-11-14 
14:02:21.000000000 +0100
@@ -47,7 +47,7 @@
             client=client, data={"id": 1, "name": "name", "description": 
"description"}
         )
         with pytest.raises(AttributeError):
-            bound_model.content
+            _ = bound_model.content
         client.get_by_id.assert_not_called()
 
     def test_get_exists_model_attribute_incomplete_model(
@@ -77,7 +77,7 @@
     ):
         bound_model = bound_model_class(client=client, data={"id": 1}, 
complete=False)
         with pytest.raises(AttributeError):
-            bound_model.content
+            _ = bound_model.content
         client.get_by_id.assert_not_called()
         assert bound_model.complete is False
 
@@ -137,7 +137,7 @@
     def test_iter_pages_no_meta(self, client_class_constructor):
         json_content = {"candies": [1, 2]}
 
-        def json_content_function(p):
+        def json_content_function(_):
             return json_content
 
         candies_client = client_class_constructor(json_content_function)
@@ -152,7 +152,7 @@
             "meta": {"pagination": {"page": 1, "per_page": 11, "next_page": 
None}},
         }
 
-        def json_content_function(p):
+        def json_content_function(_):
             return json_content
 
         candies_client = client_class_constructor(json_content_function)
@@ -218,23 +218,23 @@
     def test_get_first_by_result_exists(self, client_class_constructor):
         json_content = {"candies": [1]}
 
-        def json_content_function(p):
+        def json_content_function(_):
             return json_content
 
         candies_client = client_class_constructor(json_content_function)
 
-        result = candies_client._get_first_by(status="sweet")
+        result = candies_client._get_first_by(candies_client.get_list, 
status="sweet")
 
         assert result == (1, None, "sweet", None)
 
     def test_get_first_by_result_does_not_exist(self, 
client_class_constructor):
         json_content = {"candies": []}
 
-        def json_content_function(p):
+        def json_content_function(_):
             return json_content
 
         candies_client = client_class_constructor(json_content_function)
 
-        result = candies_client._get_first_by(status="sweet")
+        result = candies_client._get_first_by(candies_client.get_list, 
status="sweet")
 
         assert result is None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/datacenters/test_domain.py 
new/hcloud-2.11.1/tests/unit/datacenters/test_domain.py
--- old/hcloud-2.10.0/tests/unit/datacenters/test_domain.py     2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/datacenters/test_domain.py     2025-11-14 
14:02:21.000000000 +0100
@@ -13,4 +13,4 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/deprecation/test_domain.py 
new/hcloud-2.11.1/tests/unit/deprecation/test_domain.py
--- old/hcloud-2.10.0/tests/unit/deprecation/test_domain.py     2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/deprecation/test_domain.py     2025-11-14 
14:02:21.000000000 +0100
@@ -12,4 +12,4 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/exp/test_zone.py 
new/hcloud-2.11.1/tests/unit/exp/test_zone.py
--- old/hcloud-2.10.0/tests/unit/exp/test_zone.py       2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/exp/test_zone.py       2025-11-14 
14:02:21.000000000 +0100
@@ -17,8 +17,8 @@
     assert is_txt_record_quoted(value) == expected
 
 
-manyA = "a" * 255
-someB = "b" * 10
+MANY_A = "a" * 255
+SOME_B = "b" * 10
 
 
 @pytest.mark.parametrize(
@@ -30,7 +30,7 @@
         ("hello\nworld", '"hello\nworld"'),
         ('hello "world"', '"hello \\"world\\""'),
         ('hello "world', '"hello \\"world"'),
-        (manyA + someB, f'"{manyA}" "{someB}"'),
+        (MANY_A + SOME_B, f'"{MANY_A}" "{SOME_B}"'),
     ],
 )
 def test_format_txt_record(value: str, expected: str):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/firewalls/test_domain.py 
new/hcloud-2.11.1/tests/unit/firewalls/test_domain.py
--- old/hcloud-2.10.0/tests/unit/firewalls/test_domain.py       2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/firewalls/test_domain.py       2025-11-14 
14:02:21.000000000 +0100
@@ -25,7 +25,7 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
 
 
 class TestFirewall:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/floating_ips/test_client.py 
new/hcloud-2.11.1/tests/unit/floating_ips/test_client.py
--- old/hcloud-2.10.0/tests/unit/floating_ips/test_client.py    2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/floating_ips/test_client.py    2025-11-14 
14:02:21.000000000 +0100
@@ -228,14 +228,10 @@
         assert bound_floating_ip.description == "Web Frontend"
         assert action.id == 13
 
-    @pytest.mark.parametrize(
-        "server", [Server(id=1), BoundServer(mock.MagicMock(), dict(id=1))]
-    )
     def test_create_with_name(
         self,
         request_mock: mock.MagicMock,
         floating_ips_client: FloatingIPsClient,
-        server,
         floating_ip_create_response,
     ):
         request_mock.return_value = floating_ip_create_response
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/floating_ips/test_domain.py 
new/hcloud-2.11.1/tests/unit/floating_ips/test_domain.py
--- old/hcloud-2.10.0/tests/unit/floating_ips/test_domain.py    2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/floating_ips/test_domain.py    2025-11-14 
14:02:21.000000000 +0100
@@ -15,12 +15,12 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
 
 
 class TestFloatingIP:
     def test_created_is_datetime(self):
-        floatingIP = FloatingIP(id=1, created="2016-01-30T23:50+00:00")
-        assert floatingIP.created == datetime.datetime(
+        floating_ip = FloatingIP(id=1, created="2016-01-30T23:50+00:00")
+        assert floating_ip.created == datetime.datetime(
             2016, 1, 30, 23, 50, tzinfo=timezone.utc
         )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/images/test_domain.py 
new/hcloud-2.11.1/tests/unit/images/test_domain.py
--- old/hcloud-2.10.0/tests/unit/images/test_domain.py  2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/images/test_domain.py  2025-11-14 
14:02:21.000000000 +0100
@@ -15,7 +15,7 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
 
 
 class TestImage:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/isos/test_domain.py 
new/hcloud-2.11.1/tests/unit/isos/test_domain.py
--- old/hcloud-2.10.0/tests/unit/isos/test_domain.py    2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/isos/test_domain.py    2025-11-14 
14:02:21.000000000 +0100
@@ -14,7 +14,7 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
 
 
 class TestIso:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hcloud-2.10.0/tests/unit/load_balancer_types/test_domain.py 
new/hcloud-2.11.1/tests/unit/load_balancer_types/test_domain.py
--- old/hcloud-2.10.0/tests/unit/load_balancer_types/test_domain.py     
2025-11-07 14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/load_balancer_types/test_domain.py     
2025-11-14 14:02:21.000000000 +0100
@@ -12,4 +12,4 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hcloud-2.10.0/tests/unit/load_balancers/test_domain.py 
new/hcloud-2.11.1/tests/unit/load_balancers/test_domain.py
--- old/hcloud-2.10.0/tests/unit/load_balancers/test_domain.py  2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/load_balancers/test_domain.py  2025-11-14 
14:02:21.000000000 +0100
@@ -52,7 +52,7 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
 
 
 class TestLoadBalancers:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/locations/test_domain.py 
new/hcloud-2.11.1/tests/unit/locations/test_domain.py
--- old/hcloud-2.10.0/tests/unit/locations/test_domain.py       2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/locations/test_domain.py       2025-11-14 
14:02:21.000000000 +0100
@@ -12,4 +12,4 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/networks/test_domain.py 
new/hcloud-2.11.1/tests/unit/networks/test_domain.py
--- old/hcloud-2.10.0/tests/unit/networks/test_domain.py        2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/networks/test_domain.py        2025-11-14 
14:02:21.000000000 +0100
@@ -17,7 +17,7 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
 
 
 class TestNetwork:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hcloud-2.10.0/tests/unit/placement_groups/test_client.py 
new/hcloud-2.11.1/tests/unit/placement_groups/test_client.py
--- old/hcloud-2.10.0/tests/unit/placement_groups/test_client.py        
2025-11-07 14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/placement_groups/test_client.py        
2025-11-14 14:02:21.000000000 +0100
@@ -68,9 +68,7 @@
 
         request_mock.assert_called_with(
             method="GET",
-            url="/placement_groups/{placement_group_id}".format(
-                
placement_group_id=placement_group_response["placement_group"]["id"]
-            ),
+            url="/placement_groups/897",
         )
 
         assert placement_group._client is resource_client
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hcloud-2.10.0/tests/unit/placement_groups/test_domain.py 
new/hcloud-2.11.1/tests/unit/placement_groups/test_domain.py
--- old/hcloud-2.10.0/tests/unit/placement_groups/test_domain.py        
2025-11-07 14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/placement_groups/test_domain.py        
2025-11-14 14:02:21.000000000 +0100
@@ -15,7 +15,7 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
 
 
 class TestPlacementGroup:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/primary_ips/test_domain.py 
new/hcloud-2.11.1/tests/unit/primary_ips/test_domain.py
--- old/hcloud-2.10.0/tests/unit/primary_ips/test_domain.py     2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/primary_ips/test_domain.py     2025-11-14 
14:02:21.000000000 +0100
@@ -15,12 +15,12 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
 
 
 class TestPrimaryIP:
     def test_created_is_datetime(self):
-        primaryIP = PrimaryIP(id=1, created="2016-01-30T23:50+00:00")
-        assert primaryIP.created == datetime.datetime(
+        primary_ip = PrimaryIP(id=1, created="2016-01-30T23:50+00:00")
+        assert primary_ip.created == datetime.datetime(
             2016, 1, 30, 23, 50, tzinfo=timezone.utc
         )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/server_types/test_domain.py 
new/hcloud-2.11.1/tests/unit/server_types/test_domain.py
--- old/hcloud-2.10.0/tests/unit/server_types/test_domain.py    2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/server_types/test_domain.py    2025-11-14 
14:02:21.000000000 +0100
@@ -12,4 +12,4 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/servers/test_client.py 
new/hcloud-2.11.1/tests/unit/servers/test_client.py
--- old/hcloud-2.10.0/tests/unit/servers/test_client.py 2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/servers/test_client.py 2025-11-14 
14:02:21.000000000 +0100
@@ -68,6 +68,7 @@
     def bound_model(self, resource_client: ServersClient):
         return BoundServer(resource_client, data=dict(id=14))
 
+    # pylint: disable=too-many-statements
     def test_init(self, response_full_server):
         bound_server = BoundServer(
             client=mock.MagicMock(), data=response_full_server["server"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/servers/test_domain.py 
new/hcloud-2.11.1/tests/unit/servers/test_domain.py
--- old/hcloud-2.10.0/tests/unit/servers/test_domain.py 2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/servers/test_domain.py 2025-11-14 
14:02:21.000000000 +0100
@@ -40,7 +40,7 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
 
 
 class TestServer:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/ssh_keys/test_domain.py 
new/hcloud-2.11.1/tests/unit/ssh_keys/test_domain.py
--- old/hcloud-2.10.0/tests/unit/ssh_keys/test_domain.py        2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/ssh_keys/test_domain.py        2025-11-14 
14:02:21.000000000 +0100
@@ -15,12 +15,12 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
 
 
 class TestSSHKey:
     def test_created_is_datetime(self):
-        sshKey = SSHKey(id=1, created="2016-01-30T23:50+00:00")
-        assert sshKey.created == datetime.datetime(
+        ssh_key = SSHKey(id=1, created="2016-01-30T23:50+00:00")
+        assert ssh_key.created == datetime.datetime(
             2016, 1, 30, 23, 50, tzinfo=timezone.utc
         )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/volumes/test_domain.py 
new/hcloud-2.11.1/tests/unit/volumes/test_domain.py
--- old/hcloud-2.10.0/tests/unit/volumes/test_domain.py 2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/volumes/test_domain.py 2025-11-14 
14:02:21.000000000 +0100
@@ -15,7 +15,7 @@
     ],
 )
 def test_eq(value):
-    assert value == value
+    assert value.__eq__(value)
 
 
 class TestVolume:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hcloud-2.10.0/tests/unit/zones/test_client.py 
new/hcloud-2.11.1/tests/unit/zones/test_client.py
--- old/hcloud-2.10.0/tests/unit/zones/test_client.py   2025-11-07 
14:42:42.000000000 +0100
+++ new/hcloud-2.11.1/tests/unit/zones/test_client.py   2025-11-14 
14:02:21.000000000 +0100
@@ -958,3 +958,25 @@
 
         assert isinstance(o.zone, BoundZone)
         assert o.zone.id == 42
+
+    def test_reload(
+        self,
+        request_mock: mock.MagicMock,
+        resource_client: ZonesClient,
+        zone_rrset1,
+    ):
+        o = BoundZoneRRSet(
+            resource_client,
+            data={"id": "www/A", "zone": 42},
+            complete=False,
+        )
+        request_mock.return_value = {"rrset": zone_rrset1}
+
+        o.reload()
+
+        request_mock.assert_called_with(
+            method="GET",
+            url="/zones/42/rrsets/www/A",
+        )
+
+        assert o.labels is not None

Reply via email to