Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-certbot-dns-luadns for openSUSE:Factory checked in at 2023-12-14 22:02:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-certbot-dns-luadns (Old) and /work/SRC/openSUSE:Factory/.python-certbot-dns-luadns.new.25432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-certbot-dns-luadns" Thu Dec 14 22:02:59 2023 rev:40 rq:1133008 version:2.8.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-certbot-dns-luadns/python-certbot-dns-luadns.changes 2023-06-07 23:08:53.723856689 +0200 +++ /work/SRC/openSUSE:Factory/.python-certbot-dns-luadns.new.25432/python-certbot-dns-luadns.changes 2023-12-14 22:03:04.907940167 +0100 @@ -1,0 +2,28 @@ +Thu Dec 7 10:46:36 UTC 2023 - Markéta Machová <mmach...@suse.com> + +- update to version 2.8.0 + * sync with the main certbot package + +------------------------------------------------------------------- +Thu Nov 16 13:01:23 UTC 2023 - Markéta Machová <mmach...@suse.com> + +- update to version 2.7.4 + * Fixed a bug introduced in version 2.7.0 of our Lexicon based DNS plugins that + caused them to fail to find the DNS zone that needs to be modified in some + cases. + +------------------------------------------------------------------- +Tue Oct 31 08:13:45 UTC 2023 - Markéta Machová <mmach...@suse.com> + +- update to version 2.7.3 + * Add a new base class certbot.plugins.dns_common_lexicon.LexiconDNSAuthenticator to implement a DNS + authenticator plugin backed by Lexicon to communicate with the provider DNS API. This approach relies + heavily on conventions to reduce the implementation complexity of a new plugin. + * Add a new test base class certbot.plugins.dns_test_common_lexicon.BaseLexiconDNSAuthenticatorTest to + help testing DNS plugins implemented on top of LexiconDNSAuthenticator. + * Deprecates LexiconClient base class and build_lexicon_config function in + certbot.plugins.dns_common_lexicon module in favor of LexiconDNSAuthenticator. + * Deprecates BaseLexiconAuthenticatorTest and BaseLexiconClientTest test base classes of + certbot.plugins.dns_test_common_lexicon module in favor of BaseLexiconDNSAuthenticatorTest. + +------------------------------------------------------------------- Old: ---- certbot-dns-luadns-2.6.0.tar.gz New: ---- certbot-dns-luadns-2.8.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-certbot-dns-luadns.spec ++++++ --- /var/tmp/diff_new_pack.zs8jrT/_old 2023-12-14 22:03:05.507961809 +0100 +++ /var/tmp/diff_new_pack.zs8jrT/_new 2023-12-14 22:03:05.511961953 +0100 @@ -19,21 +19,21 @@ %{?!python_module:%define python_module() python3-%{**}} %define skip_python2 1 Name: python-certbot-dns-luadns -Version: 2.6.0 +Version: 2.8.0 Release: 0 Summary: LuaDNS Authenticator plugin for Certbot License: Apache-2.0 URL: https://github.com/certbot/certbot Source: https://files.pythonhosted.org/packages/source/c/certbot-dns-luadns/certbot-dns-luadns-%{version}.tar.gz BuildRequires: %{python_module certbot >= %{version}} -BuildRequires: %{python_module dns-lexicon >= 3.2.1} +BuildRequires: %{python_module dns-lexicon >= 3.14.1} BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros Requires: python-acme >= %{version} Requires: python-certbot >= %{version} -Requires: python-dns-lexicon >= 3.2.1 +Requires: python-dns-lexicon >= 3.14.1 BuildArch: noarch %python_subpackages ++++++ certbot-dns-luadns-2.6.0.tar.gz -> certbot-dns-luadns-2.8.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-2.6.0/PKG-INFO new/certbot-dns-luadns-2.8.0/PKG-INFO --- old/certbot-dns-luadns-2.6.0/PKG-INFO 2023-05-09 21:44:55.711858500 +0200 +++ new/certbot-dns-luadns-2.8.0/PKG-INFO 2023-12-05 20:14:09.823026700 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: certbot-dns-luadns -Version: 2.6.0 +Version: 2.8.0 Summary: LuaDNS Authenticator plugin for Certbot Home-page: https://github.com/certbot/certbot Author: Certbot Project @@ -13,7 +13,6 @@ Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 @@ -24,7 +23,14 @@ Classifier: Topic :: System :: Networking Classifier: Topic :: System :: Systems Administration Classifier: Topic :: Utilities -Requires-Python: >=3.7 +Requires-Python: >=3.8 +License-File: LICENSE.txt +Requires-Dist: dns-lexicon>=3.14.1 +Requires-Dist: setuptools>=41.6.0 +Requires-Dist: acme>=2.8.0 +Requires-Dist: certbot>=2.8.0 Provides-Extra: docs +Requires-Dist: Sphinx>=1.0; extra == "docs" +Requires-Dist: sphinx_rtd_theme; extra == "docs" Provides-Extra: test -License-File: LICENSE.txt +Requires-Dist: pytest; extra == "test" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-2.6.0/certbot_dns_luadns/_internal/dns_luadns.py new/certbot-dns-luadns-2.8.0/certbot_dns_luadns/_internal/dns_luadns.py --- old/certbot-dns-luadns-2.6.0/certbot_dns_luadns/_internal/dns_luadns.py 2023-05-09 21:44:36.000000000 +0200 +++ new/certbot-dns-luadns-2.8.0/certbot_dns_luadns/_internal/dns_luadns.py 2023-12-05 20:13:52.000000000 +0100 @@ -2,34 +2,33 @@ import logging from typing import Any from typing import Callable -from typing import cast -from typing import Optional -from lexicon.providers import luadns from requests import HTTPError from certbot import errors -from certbot.plugins import dns_common from certbot.plugins import dns_common_lexicon -from certbot.plugins.dns_common import CredentialsConfiguration logger = logging.getLogger(__name__) ACCOUNT_URL = 'https://api.luadns.com/settings' -class Authenticator(dns_common.DNSAuthenticator): +class Authenticator(dns_common_lexicon.LexiconDNSAuthenticator): """DNS Authenticator for LuaDNS This Authenticator uses the LuaDNS API to fulfill a dns-01 challenge. """ description = 'Obtain certificates using a DNS TXT record (if you are using LuaDNS for DNS).' - ttl = 60 def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) - self.credentials: Optional[CredentialsConfiguration] = None + self._add_provider_option('email', + 'email address associated with LuaDNS account', + 'auth_username') + self._add_provider_option('token', + f'API token for LuaDNS account, obtained from {ACCOUNT_URL}', + 'auth_token') @classmethod def add_parser_arguments(cls, add: Callable[..., None], @@ -41,46 +40,9 @@ return 'This plugin configures a DNS TXT record to respond to a dns-01 challenge using ' + \ 'the LuaDNS API.' - def _setup_credentials(self) -> None: - self.credentials = self._configure_credentials( - 'credentials', - 'LuaDNS credentials INI file', - { - 'email': 'email address associated with LuaDNS account', - 'token': 'API token for LuaDNS account, obtained from {0}'.format(ACCOUNT_URL) - } - ) - - def _perform(self, domain: str, validation_name: str, validation: str) -> None: - self._get_luadns_client().add_txt_record(domain, validation_name, validation) - - def _cleanup(self, domain: str, validation_name: str, validation: str) -> None: - self._get_luadns_client().del_txt_record(domain, validation_name, validation) - - def _get_luadns_client(self) -> "_LuaDNSLexiconClient": - if not self.credentials: # pragma: no cover - raise errors.Error("Plugin has not been prepared.") - return _LuaDNSLexiconClient(cast(str, self.credentials.conf('email')), - cast(str, self.credentials.conf('token')), - self.ttl) - - -class _LuaDNSLexiconClient(dns_common_lexicon.LexiconClient): - """ - Encapsulates all communication with the LuaDNS via Lexicon. - """ - - def __init__(self, email: str, token: str, ttl: int) -> None: - super().__init__() - - config = dns_common_lexicon.build_lexicon_config('luadns', { - 'ttl': ttl, - }, { - 'auth_username': email, - 'auth_token': token, - }) - - self.provider = luadns.Provider(config) + @property + def _provider_name(self) -> str: + return 'luadns' def _handle_http_error(self, e: HTTPError, domain_name: str) -> errors.PluginError: hint = None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-2.6.0/certbot_dns_luadns/_internal/tests/dns_luadns_test.py new/certbot-dns-luadns-2.8.0/certbot_dns_luadns/_internal/tests/dns_luadns_test.py --- old/certbot-dns-luadns-2.6.0/certbot_dns_luadns/_internal/tests/dns_luadns_test.py 2023-05-09 21:44:36.000000000 +0200 +++ new/certbot-dns-luadns-2.8.0/certbot_dns_luadns/_internal/tests/dns_luadns_test.py 2023-12-05 20:13:52.000000000 +0100 @@ -1,10 +1,9 @@ """Tests for certbot_dns_luadns._internal.dns_luadns.""" - import sys -import unittest from unittest import mock import pytest +from requests import Response from requests.exceptions import HTTPError from certbot.compat import os @@ -17,7 +16,9 @@ class AuthenticatorTest(test_util.TempDirTestCase, - dns_test_common_lexicon.BaseLexiconAuthenticatorTest): + dns_test_common_lexicon.BaseLexiconDNSAuthenticatorTest): + + LOGIN_ERROR = HTTPError("401 Client Error: Unauthorized for url: ...", response=Response()) def setUp(self): super().setUp() @@ -32,23 +33,6 @@ self.auth = Authenticator(self.config, "luadns") - self.mock_client = mock.MagicMock() - # _get_luadns_client | pylint: disable=protected-access - self.auth._get_luadns_client = mock.MagicMock(return_value=self.mock_client) - - -class LuaDNSLexiconClientTest(unittest.TestCase, dns_test_common_lexicon.BaseLexiconClientTest): - - LOGIN_ERROR = HTTPError("401 Client Error: Unauthorized for url: ...") - - def setUp(self): - from certbot_dns_luadns._internal.dns_luadns import _LuaDNSLexiconClient - - self.client = _LuaDNSLexiconClient(EMAIL, TOKEN, 0) - - self.provider_mock = mock.MagicMock() - self.client.provider = self.provider_mock - if __name__ == "__main__": sys.exit(pytest.main(sys.argv[1:] + [__file__])) # pragma: no cover diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-2.6.0/certbot_dns_luadns.egg-info/PKG-INFO new/certbot-dns-luadns-2.8.0/certbot_dns_luadns.egg-info/PKG-INFO --- old/certbot-dns-luadns-2.6.0/certbot_dns_luadns.egg-info/PKG-INFO 2023-05-09 21:44:55.000000000 +0200 +++ new/certbot-dns-luadns-2.8.0/certbot_dns_luadns.egg-info/PKG-INFO 2023-12-05 20:14:09.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: certbot-dns-luadns -Version: 2.6.0 +Version: 2.8.0 Summary: LuaDNS Authenticator plugin for Certbot Home-page: https://github.com/certbot/certbot Author: Certbot Project @@ -13,7 +13,6 @@ Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 @@ -24,7 +23,14 @@ Classifier: Topic :: System :: Networking Classifier: Topic :: System :: Systems Administration Classifier: Topic :: Utilities -Requires-Python: >=3.7 +Requires-Python: >=3.8 +License-File: LICENSE.txt +Requires-Dist: dns-lexicon>=3.14.1 +Requires-Dist: setuptools>=41.6.0 +Requires-Dist: acme>=2.8.0 +Requires-Dist: certbot>=2.8.0 Provides-Extra: docs +Requires-Dist: Sphinx>=1.0; extra == "docs" +Requires-Dist: sphinx_rtd_theme; extra == "docs" Provides-Extra: test -License-File: LICENSE.txt +Requires-Dist: pytest; extra == "test" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-2.6.0/certbot_dns_luadns.egg-info/requires.txt new/certbot-dns-luadns-2.8.0/certbot_dns_luadns.egg-info/requires.txt --- old/certbot-dns-luadns-2.6.0/certbot_dns_luadns.egg-info/requires.txt 2023-05-09 21:44:55.000000000 +0200 +++ new/certbot-dns-luadns-2.8.0/certbot_dns_luadns.egg-info/requires.txt 2023-12-05 20:14:09.000000000 +0100 @@ -1,7 +1,7 @@ -dns-lexicon>=3.2.1 +dns-lexicon>=3.14.1 setuptools>=41.6.0 -acme>=2.6.0 -certbot>=2.6.0 +acme>=2.8.0 +certbot>=2.8.0 [docs] Sphinx>=1.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-2.6.0/docs/conf.py new/certbot-dns-luadns-2.8.0/docs/conf.py --- old/certbot-dns-luadns-2.6.0/docs/conf.py 2023-05-09 21:44:36.000000000 +0200 +++ new/certbot-dns-luadns-2.8.0/docs/conf.py 2023-12-05 20:13:52.000000000 +0100 @@ -16,7 +16,7 @@ # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # -import os +# import os # import sys # sys.path.insert(0, os.path.abspath('.')) @@ -35,7 +35,8 @@ 'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.coverage', - 'sphinx.ext.viewcode'] + 'sphinx.ext.viewcode', + 'sphinx_rtd_theme'] autodoc_member_order = 'bysource' autodoc_default_flags = ['show-inheritance'] @@ -93,14 +94,7 @@ # a list of builtin themes. # -# https://docs.readthedocs.io/en/stable/faq.html#i-want-to-use-the-read-the-docs-theme-locally -# on_rtd is whether we are on readthedocs.org -on_rtd = os.environ.get('READTHEDOCS', None) == 'True' -if not on_rtd: # only import and set the theme if we're building docs locally - import sphinx_rtd_theme - html_theme = 'sphinx_rtd_theme' - html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] -# otherwise, readthedocs.org uses their theme by default, so no need to specify it +html_theme = 'sphinx_rtd_theme' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-dns-luadns-2.6.0/setup.py new/certbot-dns-luadns-2.8.0/setup.py --- old/certbot-dns-luadns-2.6.0/setup.py 2023-05-09 21:44:37.000000000 +0200 +++ new/certbot-dns-luadns-2.8.0/setup.py 2023-12-05 20:13:53.000000000 +0100 @@ -4,14 +4,16 @@ from setuptools import find_packages from setuptools import setup -version = '2.6.0' +version = '2.8.0' install_requires = [ - 'dns-lexicon>=3.2.1', + 'dns-lexicon>=3.14.1', 'setuptools>=41.6.0', ] -if not os.environ.get('SNAP_BUILD'): +if os.environ.get('SNAP_BUILD'): + install_requires.append('packaging') +else: install_requires.extend([ # We specify the minimum acme and certbot version as the current plugin # version for simplicity. See @@ -19,11 +21,6 @@ f'acme>={version}', f'certbot>={version}', ]) -elif 'bdist_wheel' in sys.argv[1:]: - raise RuntimeError('Unset SNAP_BUILD when building wheels ' - 'to include certbot dependencies.') -if os.environ.get('SNAP_BUILD'): - install_requires.append('packaging') docs_extras = [ 'Sphinx>=1.0', # autodoc_member_order = 'bysource', autodoc_default_flags @@ -42,7 +39,7 @@ author="Certbot Project", author_email='certbot-...@eff.org', license='Apache License 2.0', - python_requires='>=3.7', + python_requires='>=3.8', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: Plugins', @@ -51,7 +48,6 @@ 'Operating System :: POSIX :: Linux', 'Programming Language :: Python', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10',