diff -Nru python-certbot-dns-google-2.10.0/certbot_dns_google/_internal/dns_google.py python-certbot-dns-google-4.0.0/certbot_dns_google/_internal/dns_google.py --- python-certbot-dns-google-2.10.0/certbot_dns_google/_internal/dns_google.py 2024-04-02 17:19:59.000000000 -0400 +++ python-certbot-dns-google-4.0.0/certbot_dns_google/_internal/dns_google.py 2025-04-07 18:03:33.000000000 -0400 @@ -4,6 +4,7 @@ from typing import Callable from typing import Dict from typing import Optional +from typing import cast import google.auth @@ -97,13 +98,13 @@ if account_json is not None: try: - credentials, project_id = google.auth.load_credentials_from_file( + credentials, project_id = google.auth.load_credentials_from_file( # type: ignore [no-untyped-call, unused-ignore] # pylint: disable=line-too-long account_json, scopes=scopes) except googleauth_exceptions.GoogleAuthError as e: raise errors.PluginError( "Error loading credentials file '{}': {}".format(account_json, e)) else: - credentials, project_id = google.auth.default(scopes=scopes) + credentials, project_id = google.auth.default(scopes=scopes) # type: ignore [no-untyped-call, unused-ignore] # pylint: disable=line-too-long if dns_project_id is not None: project_id = dns_project_id @@ -279,7 +280,7 @@ logger.debug("Error was:", exc_info=True) else: if response and response["rrsets"]: - return response["rrsets"][0] + return cast(dict[str, Any], response["rrsets"][0]) return None def _find_managed_zone_id(self, domain: str) -> str: @@ -305,7 +306,7 @@ .format(e)) for zone in zones: - zone_id = zone['id'] + zone_id: str = zone['id'] if zone['visibility'] == "public": logger.debug('Found id of %s for %s using name %s', zone_id, domain, zone_name) return zone_id diff -Nru python-certbot-dns-google-2.10.0/certbot_dns_google/_internal/tests/dns_google_test.py python-certbot-dns-google-4.0.0/certbot_dns_google/_internal/tests/dns_google_test.py --- python-certbot-dns-google-2.10.0/certbot_dns_google/_internal/tests/dns_google_test.py 2024-04-02 17:19:59.000000000 -0400 +++ python-certbot-dns-google-4.0.0/certbot_dns_google/_internal/tests/dns_google_test.py 2025-04-07 18:03:33.000000000 -0400 @@ -1,6 +1,8 @@ """Tests for certbot_dns_google._internal.dns_google.""" - +from __future__ import annotations import sys +from typing import Optional +from typing import Tuple import unittest from unittest import mock @@ -44,7 +46,9 @@ @test_util.patch_display_util() def test_perform(self, unused_mock_get_utility): # _get_google_client | pylint: disable=protected-access - self.auth._get_google_client = mock.MagicMock(return_value=self.mock_client) + # workaround for wont-fix https://github.com/python/mypy/issues/2427 that works with + # both strict and non-strict mypy + setattr(self.auth, '_get_google_client', mock.MagicMock(return_value=self.mock_client)) self.auth.perform([self.achall]) expected = [mock.call.add_txt_record(DOMAIN, '_acme-challenge.'+DOMAIN, mock.ANY, mock.ANY)] @@ -52,7 +56,9 @@ def test_cleanup(self): # _get_google_client | pylint: disable=protected-access - self.auth._get_google_client = mock.MagicMock(return_value=self.mock_client) + # workaround for wont-fix https://github.com/python/mypy/issues/2427 that works with + # both strict and non-strict mypy + setattr(self.auth, '_get_google_client', mock.MagicMock(return_value=self.mock_client)) # _attempt_cleanup | pylint: disable=protected-access self.auth._attempt_cleanup = True self.auth.cleanup([self.achall]) @@ -62,7 +68,9 @@ @test_util.patch_display_util() def test_without_auth(self, unused_mock_get_utility): - self.auth._get_google_client = mock.MagicMock(side_effect=googleauth_exceptions.DefaultCredentialsError) + # workaround for wont-fix https://github.com/python/mypy/issues/2427 that works with + # both strict and non-strict mypy + setattr(self.auth, '_get_google_client', mock.MagicMock(side_effect=googleauth_exceptions.DefaultCredentialsError)) self.config.google_credentials = None with pytest.raises(PluginError): self.auth.perform([self.achall]) @@ -90,7 +98,12 @@ change = "an-id" visibility = "public" - def _setUp_client_with_mock(self, zone_request_side_effect, rrs_list_side_effect=None): + import certbot_dns_google # should get overwritten later; need for typing + + def _setUp_client_with_mock(self, + zone_request_side_effect: list[dict[str, list[dict[str, str]]]], + rrs_list_side_effect: Optional[Error] = None + ) -> Tuple['certbot_dns_google._internal.dns_google._GoogleClient', mock.MagicMock]: from certbot_dns_google._internal.dns_google import _GoogleClient pwd = os.path.dirname(__file__) @@ -107,7 +120,7 @@ mock_rrs = mock.MagicMock() def rrs_list(project=None, managedZone=None, name=None, type=None): - response = {"rrsets": []} + response: dict[str, list[dict[str, str | int | list[str]]]]= {"rrsets": []} if name == "_acme-challenge.example.org.": response = {"rrsets": [{"name": "_acme-challenge.example.org.", "type": "TXT", "rrdatas": ["\"example-txt-contents\""], "ttl": 60}]} @@ -153,7 +166,8 @@ @mock.patch('google.auth.load_credentials_from_file') def test_client_bad_credentials_file(self, credential_mock): - credential_mock.side_effect = googleauth_exceptions.DefaultCredentialsError('Some exception buried in google.auth') + google_dce: type[googleauth_exceptions.DefaultCredentialsError] = googleauth_exceptions.DefaultCredentialsError + credential_mock.side_effect = google_dce('Some exception buried in google.auth') with pytest.raises(errors.PluginError) as exc_info: self._setUp_client_with_mock([]) assert str(exc_info.value) == \ @@ -444,6 +458,7 @@ [{'managedZones': [{'id': self.zone, 'visibility': self.visibility}]}]) # Record name mocked in setUp found = client.get_existing_txt_rrset(self.zone, "_acme-challenge.example.org") + assert found assert found["rrdatas"] == ["\"example-txt-contents\""] assert found["ttl"] == 60 diff -Nru python-certbot-dns-google-2.10.0/certbot_dns_google.egg-info/PKG-INFO python-certbot-dns-google-4.0.0/certbot_dns_google.egg-info/PKG-INFO --- python-certbot-dns-google-2.10.0/certbot_dns_google.egg-info/PKG-INFO 2024-04-02 17:20:04.000000000 -0400 +++ python-certbot-dns-google-4.0.0/certbot_dns_google.egg-info/PKG-INFO 2025-04-07 18:03:38.000000000 -0400 @@ -1,6 +1,6 @@ -Metadata-Version: 2.1 +Metadata-Version: 2.4 Name: certbot-dns-google -Version: 2.10.0 +Version: 4.0.0 Summary: Google Cloud DNS Authenticator plugin for Certbot Home-page: https://github.com/certbot/certbot Author: Certbot Project @@ -13,26 +13,35 @@ Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 Classifier: Topic :: Internet :: WWW/HTTP Classifier: Topic :: Security Classifier: Topic :: System :: Installation/Setup Classifier: Topic :: System :: Networking Classifier: Topic :: System :: Systems Administration Classifier: Topic :: Utilities -Requires-Python: >=3.8 +Requires-Python: >=3.9 License-File: LICENSE.txt Requires-Dist: google-api-python-client>=1.6.5 Requires-Dist: google-auth>=2.16.0 -Requires-Dist: setuptools>=41.6.0 -Requires-Dist: acme>=2.10.0 -Requires-Dist: certbot>=2.10.0 +Requires-Dist: acme>=4.0.0 +Requires-Dist: certbot>=4.0.0 Provides-Extra: docs Requires-Dist: Sphinx>=1.0; extra == "docs" Requires-Dist: sphinx_rtd_theme; extra == "docs" Provides-Extra: test Requires-Dist: pytest; extra == "test" +Dynamic: author +Dynamic: author-email +Dynamic: classifier +Dynamic: home-page +Dynamic: license +Dynamic: license-file +Dynamic: provides-extra +Dynamic: requires-dist +Dynamic: requires-python +Dynamic: summary diff -Nru python-certbot-dns-google-2.10.0/certbot_dns_google.egg-info/requires.txt python-certbot-dns-google-4.0.0/certbot_dns_google.egg-info/requires.txt --- python-certbot-dns-google-2.10.0/certbot_dns_google.egg-info/requires.txt 2024-04-02 17:20:04.000000000 -0400 +++ python-certbot-dns-google-4.0.0/certbot_dns_google.egg-info/requires.txt 2025-04-07 18:03:38.000000000 -0400 @@ -1,8 +1,7 @@ google-api-python-client>=1.6.5 google-auth>=2.16.0 -setuptools>=41.6.0 -acme>=2.10.0 -certbot>=2.10.0 +acme>=4.0.0 +certbot>=4.0.0 [docs] Sphinx>=1.0 diff -Nru python-certbot-dns-google-2.10.0/debian/changelog python-certbot-dns-google-4.0.0/debian/changelog --- python-certbot-dns-google-2.10.0/debian/changelog 2025-02-16 18:17:38.000000000 -0500 +++ python-certbot-dns-google-4.0.0/debian/changelog 2025-05-24 20:42:50.000000000 -0400 @@ -1,20 +1,10 @@ -python-certbot-dns-google (2.10.0-0.2) unstable; urgency=medium +python-certbot-dns-google (4.0.0-1) unstable; urgency=medium - * Non-maintainer upload. - * Fix d/watch for new PyPi archive naming policy + * d/watch: newer packages use an underscore + * New upstream version 4.0.0 + * Bump dependency requirements (Closes: #1106473) - -- Alexandre Detiste Mon, 17 Feb 2025 00:17:38 +0100 - -python-certbot-dns-google (2.10.0-0.1) unstable; urgency=medium - - * Non-maintainer upload - * New upstream version 2.10.0 (Closes: #1082044, #1084856) - * Update build-dependencies: - - python3-httplib2 - - python3-oauth2client - + python3-google-auth - - -- Alexandre Detiste Thu, 09 Jan 2025 23:30:24 +0100 + -- Harlan Lieberman-Berg Sat, 24 May 2025 20:42:50 -0400 python-certbot-dns-google (2.0.0-2) unstable; urgency=medium diff -Nru python-certbot-dns-google-2.10.0/debian/control python-certbot-dns-google-4.0.0/debian/control --- python-certbot-dns-google-2.10.0/debian/control 2025-01-09 17:30:18.000000000 -0500 +++ python-certbot-dns-google-4.0.0/debian/control 2025-05-24 20:41:58.000000000 -0400 @@ -7,15 +7,17 @@ Build-Depends: debhelper-compat (= 13), dh-python, python3, - python3-acme-abi-2 (>= 2.0), - python3-certbot-abi-2 (>= 2.0), - python3-googleapi (>= 1.5.5~), - python3-google-auth, + python3-acme-abi-4 (>= 4.0), + python3-certbot-abi-4 (>= 4.0), + python3-google-auth (>= 2.16.0~), + python3-googleapi (>= 1.6.5~), + python3-httplib2, + python3-oauth2client (>= 4.0), python3-setuptools, python3-sphinx (>= 1.3.1-1~), python3-sphinx-rtd-theme, python3-zope.interface -Standards-Version: 4.6.0 +Standards-Version: 4.6.2 Homepage: https://certbot.eff.org/ Vcs-Git: https://salsa.debian.org/letsencrypt-team/certbot/certbot-dns-google.git Vcs-Browser: https://salsa.debian.org/letsencrypt-team/certbot/certbot-dns-google @@ -25,7 +27,7 @@ Package: python3-certbot-dns-google Architecture: all Depends: certbot, - python3-certbot-abi-2 (>= ${Abi-major-minor-version}), + python3-certbot-abi-4 (>= ${Abi-major-minor-version}), ${misc:Depends}, ${python3:Depends} Enhances: certbot diff -Nru python-certbot-dns-google-2.10.0/debian/watch python-certbot-dns-google-4.0.0/debian/watch --- python-certbot-dns-google-2.10.0/debian/watch 2025-02-16 18:16:52.000000000 -0500 +++ python-certbot-dns-google-4.0.0/debian/watch 2025-05-24 20:38:04.000000000 -0400 @@ -1,4 +1,4 @@ version=4 -opts=uversionmangle=s/(rc|a|b|c)/~$1/ \ +opts=uversionmangle=s/(rc|a|b|c)/~$1/,pgpsigurlmangle=s/$/.asc/ \ https://pypi.debian.net/certbot-dns-google/certbot_dns_google-(.+)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz))) diff -Nru python-certbot-dns-google-2.10.0/docs/conf.py python-certbot-dns-google-4.0.0/docs/conf.py --- python-certbot-dns-google-2.10.0/docs/conf.py 2024-04-02 17:19:59.000000000 -0400 +++ python-certbot-dns-google-4.0.0/docs/conf.py 2025-04-07 18:03:33.000000000 -0400 @@ -170,6 +170,6 @@ # Example configuration for intersphinx: refer to the Python standard library. intersphinx_mapping = { 'python': ('https://docs.python.org/', None), - 'acme': ('https://acme-python.readthedocs.org/en/latest/', None), + 'acme': ('https://acme-python.readthedocs.io/en/latest/', None), 'certbot': ('https://eff-certbot.readthedocs.io/en/stable/', None), } diff -Nru python-certbot-dns-google-2.10.0/PKG-INFO python-certbot-dns-google-4.0.0/PKG-INFO --- python-certbot-dns-google-2.10.0/PKG-INFO 2024-04-02 17:20:04.087612900 -0400 +++ python-certbot-dns-google-4.0.0/PKG-INFO 2025-04-07 18:03:38.627503200 -0400 @@ -1,6 +1,6 @@ -Metadata-Version: 2.1 +Metadata-Version: 2.4 Name: certbot-dns-google -Version: 2.10.0 +Version: 4.0.0 Summary: Google Cloud DNS Authenticator plugin for Certbot Home-page: https://github.com/certbot/certbot Author: Certbot Project @@ -13,26 +13,35 @@ Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 Classifier: Topic :: Internet :: WWW/HTTP Classifier: Topic :: Security Classifier: Topic :: System :: Installation/Setup Classifier: Topic :: System :: Networking Classifier: Topic :: System :: Systems Administration Classifier: Topic :: Utilities -Requires-Python: >=3.8 +Requires-Python: >=3.9 License-File: LICENSE.txt Requires-Dist: google-api-python-client>=1.6.5 Requires-Dist: google-auth>=2.16.0 -Requires-Dist: setuptools>=41.6.0 -Requires-Dist: acme>=2.10.0 -Requires-Dist: certbot>=2.10.0 +Requires-Dist: acme>=4.0.0 +Requires-Dist: certbot>=4.0.0 Provides-Extra: docs Requires-Dist: Sphinx>=1.0; extra == "docs" Requires-Dist: sphinx_rtd_theme; extra == "docs" Provides-Extra: test Requires-Dist: pytest; extra == "test" +Dynamic: author +Dynamic: author-email +Dynamic: classifier +Dynamic: home-page +Dynamic: license +Dynamic: license-file +Dynamic: provides-extra +Dynamic: requires-dist +Dynamic: requires-python +Dynamic: summary diff -Nru python-certbot-dns-google-2.10.0/setup.py python-certbot-dns-google-4.0.0/setup.py --- python-certbot-dns-google-2.10.0/setup.py 2024-04-02 17:20:00.000000000 -0400 +++ python-certbot-dns-google-4.0.0/setup.py 2025-04-07 18:03:33.000000000 -0400 @@ -4,12 +4,11 @@ from setuptools import find_packages from setuptools import setup -version = '2.10.0' +version = '4.0.0' install_requires = [ 'google-api-python-client>=1.6.5', 'google-auth>=2.16.0', - 'setuptools>=41.6.0', ] if os.environ.get('SNAP_BUILD'): @@ -40,7 +39,7 @@ author="Certbot Project", author_email='certbot-dev@eff.org', license='Apache License 2.0', - python_requires='>=3.8', + python_requires='>=3.9', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', @@ -49,11 +48,11 @@ 'Operating System :: POSIX :: Linux', 'Programming Language :: Python', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', + 'Programming Language :: Python :: 3.13', 'Topic :: Internet :: WWW/HTTP', 'Topic :: Security', 'Topic :: System :: Installation/Setup',