Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-certbot-apache for openSUSE:Factory checked in at 2021-04-15 16:57:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-certbot-apache (Old) and /work/SRC/openSUSE:Factory/.python-certbot-apache.new.12324 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-certbot-apache" Thu Apr 15 16:57:42 2021 rev:26 rq:885407 version:1.14.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-certbot-apache/python-certbot-apache.changes 2021-03-10 08:58:14.954950540 +0100 +++ /work/SRC/openSUSE:Factory/.python-certbot-apache.new.12324/python-certbot-apache.changes 2021-04-15 16:58:24.394768218 +0200 @@ -1,0 +2,6 @@ +Wed Apr 14 15:16:05 UTC 2021 - Mark??ta Machov?? <mmach...@suse.com> + +- update to version 1.14.0 + * sync with the main certbot package + +------------------------------------------------------------------- Old: ---- certbot-apache-1.13.0.tar.gz New: ---- certbot-apache-1.14.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-certbot-apache.spec ++++++ --- /var/tmp/diff_new_pack.vdcRUK/_old 2021-04-15 16:58:24.834768914 +0200 +++ /var/tmp/diff_new_pack.vdcRUK/_new 2021-04-15 16:58:24.838768921 +0200 @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define skip_python2 1 Name: python-certbot-apache -Version: 1.13.0 +Version: 1.14.0 Release: 0 Summary: Apache plugin for Certbot License: Apache-2.0 ++++++ certbot-apache-1.13.0.tar.gz -> certbot-apache-1.14.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/PKG-INFO new/certbot-apache-1.14.0/PKG-INFO --- old/certbot-apache-1.13.0/PKG-INFO 2021-03-02 22:37:20.276273500 +0100 +++ new/certbot-apache-1.14.0/PKG-INFO 2021-04-06 19:17:11.454677300 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: certbot-apache -Version: 1.13.0 +Version: 1.14.0 Summary: Apache plugin for Certbot Home-page: https://github.com/letsencrypt/letsencrypt Author: Certbot Project diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/certbot_apache/_internal/apache_util.py new/certbot-apache-1.14.0/certbot_apache/_internal/apache_util.py --- old/certbot-apache-1.13.0/certbot_apache/_internal/apache_util.py 2021-03-02 22:37:04.000000000 +0100 +++ new/certbot-apache-1.14.0/certbot_apache/_internal/apache_util.py 2021-04-06 19:17:00.000000000 +0200 @@ -9,7 +9,6 @@ from certbot import errors from certbot import util - from certbot.compat import os logger = logging.getLogger(__name__) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/certbot_apache/_internal/apacheparser.py new/certbot-apache-1.14.0/certbot_apache/_internal/apacheparser.py --- old/certbot-apache-1.13.0/certbot_apache/_internal/apacheparser.py 2021-03-02 22:37:04.000000000 +0100 +++ new/certbot-apache-1.14.0/certbot_apache/_internal/apacheparser.py 2021-04-06 19:17:00.000000000 +0200 @@ -1,4 +1,5 @@ """ apacheconfig implementation of the ParserNode interfaces """ +from typing import Tuple from certbot_apache._internal import assertions from certbot_apache._internal import interfaces @@ -21,7 +22,7 @@ self.metadata = metadata self._raw = self.metadata["ac_ast"] - def save(self, msg): # pragma: no cover + def save(self, msg): # pragma: no cover pass def find_ancestors(self, name): # pylint: disable=unused-variable @@ -83,7 +84,7 @@ def __init__(self, **kwargs): super(ApacheBlockNode, self).__init__(**kwargs) - self.children = () + self.children: Tuple[ApacheParserNode, ...] = () def __eq__(self, other): # pragma: no cover if isinstance(other, self.__class__): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/certbot_apache/_internal/assertions.py new/certbot-apache-1.14.0/certbot_apache/_internal/assertions.py --- old/certbot-apache-1.13.0/certbot_apache/_internal/assertions.py 2021-03-02 22:37:04.000000000 +0100 +++ new/certbot-apache-1.14.0/certbot_apache/_internal/assertions.py 2021-04-06 19:17:00.000000000 +0200 @@ -3,7 +3,6 @@ from certbot_apache._internal import interfaces - PASS = "CERTBOT_PASS_ASSERT" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/certbot_apache/_internal/augeasparser.py new/certbot-apache-1.14.0/certbot_apache/_internal/augeasparser.py --- old/certbot-apache-1.13.0/certbot_apache/_internal/augeasparser.py 2021-03-02 22:37:04.000000000 +0100 +++ new/certbot-apache-1.14.0/certbot_apache/_internal/augeasparser.py 2021-04-06 19:17:00.000000000 +0200 @@ -64,10 +64,10 @@ "/files/etc/apache2/apache2.conf/bLoCk[1]", ] """ -from acme.magic_typing import Set +from typing import Set + from certbot import errors from certbot.compat import os - from certbot_apache._internal import apache_util from certbot_apache._internal import assertions from certbot_apache._internal import interfaces @@ -355,7 +355,7 @@ ownpath = self.metadata.get("augeaspath") directives = self.parser.find_dir(name, start=ownpath, exclude=exclude) - already_parsed = set() # type: Set[str] + already_parsed: Set[str] = set() for directive in directives: # Remove the /arg part from the Augeas path directive = directive.partition("/arg")[0] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/certbot_apache/_internal/configurator.py new/certbot-apache-1.14.0/certbot_apache/_internal/configurator.py --- old/certbot-apache-1.13.0/certbot_apache/_internal/configurator.py 2021-03-02 22:37:04.000000000 +0100 +++ new/certbot-apache-1.14.0/certbot_apache/_internal/configurator.py 2021-04-06 19:17:00.000000000 +0200 @@ -1,28 +1,25 @@ """Apache Configurator.""" # pylint: disable=too-many-lines from collections import defaultdict -from distutils.version import LooseVersion import copy +from distutils.version import LooseVersion import fnmatch import logging import re import socket import time +from typing import cast +from typing import DefaultDict +from typing import Dict +from typing import List +from typing import Optional +from typing import Set +from typing import Union import zope.component import zope.interface -try: - import apacheconfig - HAS_APACHECONFIG = True -except ImportError: # pragma: no cover - HAS_APACHECONFIG = False from acme import challenges -from acme.magic_typing import DefaultDict -from acme.magic_typing import Dict -from acme.magic_typing import List -from acme.magic_typing import Set -from acme.magic_typing import Union from certbot import errors from certbot import interfaces from certbot import util @@ -40,6 +37,16 @@ from certbot_apache._internal import http_01 from certbot_apache._internal import obj from certbot_apache._internal import parser +from certbot_apache._internal.dualparser import DualBlockNode +from certbot_apache._internal.obj import VirtualHost +from certbot_apache._internal.parser import ApacheParser + +try: + import apacheconfig + HAS_APACHECONFIG = True +except ImportError: # pragma: no cover + HAS_APACHECONFIG = False + logger = logging.getLogger(__name__) @@ -154,9 +161,9 @@ self.options[o] = self.OS_DEFAULTS[o] # Special cases - self.options["version_cmd"][0] = self.option("ctl") - self.options["restart_cmd"][0] = self.option("ctl") - self.options["conftest_cmd"][0] = self.option("ctl") + cast(List[str], self.options["version_cmd"])[0] = self.option("ctl") + cast(List[str], self.options["restart_cmd"])[0] = self.option("ctl") + cast(List[str], self.options["conftest_cmd"])[0] = self.option("ctl") @classmethod def add_parser_arguments(cls, add): @@ -210,30 +217,30 @@ super(ApacheConfigurator, self).__init__(*args, **kwargs) # Add name_server association dict - self.assoc = {} # type: Dict[str, obj.VirtualHost] + self.assoc: Dict[str, obj.VirtualHost] = {} # Outstanding challenges - self._chall_out = set() # type: Set[KeyAuthorizationAnnotatedChallenge] + self._chall_out: Set[KeyAuthorizationAnnotatedChallenge] = set() # List of vhosts configured per wildcard domain on this run. # used by deploy_cert() and enhance() - self._wildcard_vhosts = {} # type: Dict[str, List[obj.VirtualHost]] + self._wildcard_vhosts: Dict[str, List[obj.VirtualHost]] = {} # Maps enhancements to vhosts we've enabled the enhancement for - self._enhanced_vhosts = defaultdict(set) # type: DefaultDict[str, Set[obj.VirtualHost]] + self._enhanced_vhosts: DefaultDict[str, Set[obj.VirtualHost]] = defaultdict(set) # Temporary state for AutoHSTS enhancement - self._autohsts = {} # type: Dict[str, Dict[str, Union[int, float]]] + self._autohsts: Dict[str, Dict[str, Union[int, float]]] = {} # Reverter save notes self.save_notes = "" # Should we use ParserNode implementation instead of the old behavior self.USE_PARSERNODE = use_parsernode # Saves the list of file paths that were parsed initially, and # not added to parser tree by self.conf("vhost-root") for example. - self.parsed_paths = [] # type: List[str] + self.parsed_paths: List[str] = [] # These will be set in the prepare function self._prepared = False - self.parser = None - self.parser_root = None + self.parser: ApacheParser + self.parser_root: Optional[DualBlockNode] = None self.version = version self._openssl_version = openssl_version - self.vhosts = None + self.vhosts: List[VirtualHost] self.options = copy.deepcopy(self.OS_DEFAULTS) self._enhance_func = {"redirect": self._enable_redirect, "ensure-http-header": self._set_http_header, @@ -342,8 +349,9 @@ "augeaspath": self.parser.get_root_augpath(), "ac_ast": None} if self.USE_PARSERNODE: - self.parser_root = self.get_parsernode_root(pn_meta) - self.parsed_paths = self.parser_root.parsed_paths() + parser_root = self.get_parsernode_root(pn_meta) + self.parser_root = parser_root + self.parsed_paths = parser_root.parsed_paths() # Check for errors in parsing files with Augeas self.parser.check_parsing_errors("httpd.aug") @@ -405,7 +413,7 @@ super(ApacheConfigurator, self).recovery_routine() # Reload configuration after these changes take effect if needed # ie. ApacheParser has been initialized. - if self.parser: + if hasattr(self, "parser"): # TODO: wrap into non-implementation specific parser interface self.parser.aug.load() @@ -832,7 +840,7 @@ :rtype: set """ - all_names = set() # type: Set[str] + all_names: Set[str] = set() vhost_macro = [] @@ -996,8 +1004,8 @@ """ # Search base config, and all included paths for VirtualHosts - file_paths = {} # type: Dict[str, str] - internal_paths = defaultdict(set) # type: DefaultDict[str, Set[str]] + file_paths: Dict[str, str] = {} + internal_paths: DefaultDict[str, Set[str]] = defaultdict(set) vhs = [] # Make a list of parser paths because the parser_paths # dictionary may be modified during the loop. @@ -1048,6 +1056,9 @@ :rtype: list """ + if not self.parser_root: + raise errors.Error("This ApacheConfigurator instance is not" # pragma: no cover + " configured to use a node parser.") vhs = [] vhosts = self.parser_root.find_blocks("VirtualHost", exclude=False) for vhblock in vhosts: @@ -2156,7 +2167,7 @@ # There can be other RewriteRule directive lines in vhost config. # rewrite_args_dict keys are directive ids and the corresponding value # for each is a list of arguments to that directive. - rewrite_args_dict = defaultdict(list) # type: DefaultDict[str, List[str]] + rewrite_args_dict: DefaultDict[str, List[str]] = defaultdict(list) pat = r'(.*directive\[\d+\]).*' for match in rewrite_path: m = re.match(pat, match) @@ -2250,7 +2261,7 @@ if ssl_vhost.aliases: serveralias = "ServerAlias " + " ".join(ssl_vhost.aliases) - rewrite_rule_args = [] # type: List[str] + rewrite_rule_args: List[str] = [] if self.get_version() >= (2, 3, 9): rewrite_rule_args = constants.REWRITE_HTTPS_ARGS_WITH_END else: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/certbot_apache/_internal/dualparser.py new/certbot-apache-1.14.0/certbot_apache/_internal/dualparser.py --- old/certbot-apache-1.13.0/certbot_apache/_internal/dualparser.py 2021-03-02 22:37:04.000000000 +0100 +++ new/certbot-apache-1.14.0/certbot_apache/_internal/dualparser.py 2021-04-06 19:17:00.000000000 +0200 @@ -1,7 +1,7 @@ """ Dual ParserNode implementation """ +from certbot_apache._internal import apacheparser from certbot_apache._internal import assertions from certbot_apache._internal import augeasparser -from certbot_apache._internal import apacheparser class DualNodeBase: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/certbot_apache/_internal/http_01.py new/certbot-apache-1.14.0/certbot_apache/_internal/http_01.py --- old/certbot-apache-1.13.0/certbot_apache/_internal/http_01.py 2021-03-02 22:37:04.000000000 +0100 +++ new/certbot-apache-1.14.0/certbot_apache/_internal/http_01.py 2021-04-06 19:17:00.000000000 +0200 @@ -1,9 +1,9 @@ """A class that performs HTTP-01 challenges for Apache""" -import logging import errno +import logging +from typing import List +from typing import Set -from acme.magic_typing import List -from acme.magic_typing import Set from certbot import errors from certbot.compat import filesystem from certbot.compat import os @@ -57,7 +57,7 @@ self.challenge_dir = os.path.join( self.configurator.config.work_dir, "http_challenges") - self.moded_vhosts = set() # type: Set[VirtualHost] + self.moded_vhosts: Set[VirtualHost] = set() def perform(self): """Perform all HTTP-01 challenges.""" @@ -93,7 +93,7 @@ self.configurator.enable_mod(mod, temp=True) def _mod_config(self): - selected_vhosts = [] # type: List[VirtualHost] + selected_vhosts: List[VirtualHost] = [] http_port = str(self.configurator.config.http01_port) for chall in self.achalls: # Search for matching VirtualHosts diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/certbot_apache/_internal/interfaces.py new/certbot-apache-1.14.0/certbot_apache/_internal/interfaces.py --- old/certbot-apache-1.13.0/certbot_apache/_internal/interfaces.py 2021-03-02 22:37:04.000000000 +0100 +++ new/certbot-apache-1.14.0/certbot_apache/_internal/interfaces.py 2021-04-06 19:17:00.000000000 +0200 @@ -102,7 +102,6 @@ import abc - class ParserNode(object, metaclass=abc.ABCMeta): """ ParserNode is the basic building block of the tree of such nodes, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/certbot_apache/_internal/obj.py new/certbot-apache-1.14.0/certbot_apache/_internal/obj.py --- old/certbot-apache-1.13.0/certbot_apache/_internal/obj.py 2021-03-02 22:37:04.000000000 +0100 +++ new/certbot-apache-1.14.0/certbot_apache/_internal/obj.py 2021-04-06 19:17:00.000000000 +0200 @@ -1,7 +1,7 @@ """Module contains classes used by the Apache Configurator.""" import re +from typing import Set -from acme.magic_typing import Set from certbot.plugins import common @@ -137,7 +137,7 @@ def get_names(self): """Return a set of all names.""" - all_names = set() # type: Set[str] + all_names: Set[str] = set() all_names.update(self.aliases) # Strip out any scheme:// and <port> field from servername if self.name is not None: @@ -245,7 +245,7 @@ # already_found acts to keep everything very conservative. # Don't allow multiple ip:ports in same set. - already_found = set() # type: Set[str] + already_found: Set[str] = set() for addr in vhost.addrs: for local_addr in self.addrs: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/certbot_apache/_internal/override_centos.py new/certbot-apache-1.14.0/certbot_apache/_internal/override_centos.py --- old/certbot-apache-1.13.0/certbot_apache/_internal/override_centos.py 2021-03-02 22:37:04.000000000 +0100 +++ new/certbot-apache-1.14.0/certbot_apache/_internal/override_centos.py 2021-04-06 19:17:00.000000000 +0200 @@ -1,9 +1,10 @@ """ Distribution specific override class for CentOS family (RHEL, Fedora) """ import logging +from typing import cast +from typing import List import zope.interface -from acme.magic_typing import List from certbot import errors from certbot import interfaces from certbot import util @@ -76,7 +77,7 @@ alternative restart cmd used in CentOS. """ super(CentOSConfigurator, self)._prepare_options() - self.options["restart_cmd_alt"][0] = self.option("ctl") + cast(List[str], self.options["restart_cmd_alt"])[0] = self.option("ctl") def get_parser(self): """Initializes the ApacheParser""" @@ -102,9 +103,9 @@ loadmods = self.parser.find_dir("LoadModule", "ssl_module", exclude=False) - correct_ifmods = [] # type: List[str] - loadmod_args = [] # type: List[str] - loadmod_paths = [] # type: List[str] + correct_ifmods: List[str] = [] + loadmod_args: List[str] = [] + loadmod_paths: List[str] = [] for m in loadmods: noarg_path = m.rpartition("/")[0] path_args = self.parser.get_all_args(noarg_path) @@ -118,8 +119,9 @@ else: loadmod_args = path_args - if self.parser.not_modssl_ifmodule(noarg_path): # pylint: disable=no-member - if self.parser.loc["default"] in noarg_path: + centos_parser: CentOSParser = cast(CentOSParser, self.parser) + if centos_parser.not_modssl_ifmodule(noarg_path): + if centos_parser.loc["default"] in noarg_path: # LoadModule already in the main configuration file if ("ifmodule/" in noarg_path.lower() or "ifmodule[1]" in noarg_path.lower()): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/certbot_apache/_internal/override_fedora.py new/certbot-apache-1.14.0/certbot_apache/_internal/override_fedora.py --- old/certbot-apache-1.13.0/certbot_apache/_internal/override_fedora.py 2021-03-02 22:37:04.000000000 +0100 +++ new/certbot-apache-1.14.0/certbot_apache/_internal/override_fedora.py 2021-04-06 19:17:00.000000000 +0200 @@ -1,4 +1,7 @@ """ Distribution specific override class for Fedora 29+ """ +from typing import cast +from typing import List + import zope.interface from certbot import errors @@ -69,9 +72,9 @@ of Fedora to restart httpd. """ super(FedoraConfigurator, self)._prepare_options() - self.options["restart_cmd"][0] = 'apachectl' - self.options["restart_cmd_alt"][0] = 'apachectl' - self.options["conftest_cmd"][0] = 'apachectl' + cast(List[str], self.options["restart_cmd"])[0] = 'apachectl' + cast(List[str], self.options["restart_cmd_alt"])[0] = 'apachectl' + cast(List[str], self.options["conftest_cmd"])[0] = 'apachectl' class FedoraParser(parser.ApacheParser): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/certbot_apache/_internal/override_gentoo.py new/certbot-apache-1.14.0/certbot_apache/_internal/override_gentoo.py --- old/certbot-apache-1.13.0/certbot_apache/_internal/override_gentoo.py 2021-03-02 22:37:04.000000000 +0100 +++ new/certbot-apache-1.14.0/certbot_apache/_internal/override_gentoo.py 2021-04-06 19:17:00.000000000 +0200 @@ -1,4 +1,7 @@ """ Distribution specific override class for Gentoo Linux """ +from typing import cast +from typing import List + import zope.interface from certbot import interfaces @@ -36,7 +39,7 @@ alternative restart cmd used in Gentoo. """ super(GentooConfigurator, self)._prepare_options() - self.options["restart_cmd_alt"][0] = self.option("ctl") + cast(List[str], self.options["restart_cmd_alt"])[0] = self.option("ctl") def get_parser(self): """Initializes the ApacheParser""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/certbot_apache/_internal/parser.py new/certbot-apache-1.14.0/certbot_apache/_internal/parser.py --- old/certbot-apache-1.13.0/certbot_apache/_internal/parser.py 2021-03-02 22:37:04.000000000 +0100 +++ new/certbot-apache-1.14.0/certbot_apache/_internal/parser.py 2021-04-06 19:17:00.000000000 +0200 @@ -3,16 +3,20 @@ import fnmatch import logging import re -import sys +from typing import Dict +from typing import List +from typing import Optional - -from acme.magic_typing import Dict -from acme.magic_typing import List from certbot import errors from certbot.compat import os from certbot_apache._internal import apache_util from certbot_apache._internal import constants +try: + from augeas import Augeas +except ImportError: # pragma: no cover + Augeas = None # type: ignore + logger = logging.getLogger(__name__) @@ -41,8 +45,7 @@ self.configurator = configurator # Initialize augeas - self.aug = None - self.init_augeas() + self.aug = init_augeas() if not self.check_aug_version(): raise errors.NotSupportedError( @@ -50,9 +53,9 @@ "version 1.2.0 or higher, please make sure you have you have " "those installed.") - self.modules = {} # type: Dict[str, str] - self.parser_paths = {} # type: Dict[str, List[str]] - self.variables = {} # type: Dict[str, str] + self.modules: Dict[str, Optional[str]] = {} + self.parser_paths: Dict[str, List[str]] = {} + self.variables: Dict[str, str] = {} # Find configuration root and make sure augeas can parse it. self.root = os.path.abspath(root) @@ -85,23 +88,6 @@ if self.find_dir("Define", exclude=False): raise errors.PluginError("Error parsing runtime variables") - def init_augeas(self): - """ Initialize the actual Augeas instance """ - - try: - import augeas - except ImportError: # pragma: no cover - raise errors.NoInstallationError("Problem in Augeas installation") - - self.aug = augeas.Augeas( - # specify a directory to load our preferred lens from - loadpath=constants.AUGEAS_LENS_DIR, - # Do not save backup (we do it ourselves), do not load - # anything by default - flags=(augeas.Augeas.NONE | - augeas.Augeas.NO_MODL_AUTOLOAD | - augeas.Augeas.ENABLE_SPAN)) - def check_parsing_errors(self, lens): """Verify Augeas can parse all of the lens files. @@ -265,7 +251,7 @@ the iteration issue. Else... parse and enable mods at same time. """ - mods = {} # type: Dict[str, str] + mods: Dict[str, str] = {} matches = self.find_dir("LoadModule") iterator = iter(matches) # Make sure prev_size != cur_size for do: while: iteration @@ -552,7 +538,7 @@ else: arg_suffix = "/*[self::arg=~regexp('%s')]" % case_i(arg) - ordered_matches = [] # type: List[str] + ordered_matches: List[str] = [] # TODO: Wildcards should be included in alphabetical order # https://httpd.apache.org/docs/2.4/mod/core.html#include @@ -737,9 +723,6 @@ :rtype: str """ - if sys.version_info < (3, 6): - # This strips off final /Z(?ms) - return fnmatch.translate(clean_fn_match)[:-7] # pragma: no cover # Since Python 3.6, it returns a different pattern like (?s:.*\.load)\Z return fnmatch.translate(clean_fn_match)[4:-3] # pragma: no cover @@ -954,3 +937,19 @@ """ return "/files%s" % file_path + + +def init_augeas() -> Augeas: + """ Initialize the actual Augeas instance """ + + if not Augeas: # pragma: no cover + raise errors.NoInstallationError("Problem in Augeas installation") + + return Augeas( + # specify a directory to load our preferred lens from + loadpath=constants.AUGEAS_LENS_DIR, + # Do not save backup (we do it ourselves), do not load + # anything by default + flags=(Augeas.NONE | + Augeas.NO_MODL_AUTOLOAD | + Augeas.ENABLE_SPAN)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/certbot_apache.egg-info/PKG-INFO new/certbot-apache-1.14.0/certbot_apache.egg-info/PKG-INFO --- old/certbot-apache-1.13.0/certbot_apache.egg-info/PKG-INFO 2021-03-02 22:37:20.000000000 +0100 +++ new/certbot-apache-1.14.0/certbot_apache.egg-info/PKG-INFO 2021-04-06 19:17:11.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: certbot-apache -Version: 1.13.0 +Version: 1.14.0 Summary: Apache plugin for Certbot Home-page: https://github.com/letsencrypt/letsencrypt Author: Certbot Project diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/setup.py new/certbot-apache-1.14.0/setup.py --- old/certbot-apache-1.13.0/setup.py 2021-03-02 22:37:05.000000000 +0100 +++ new/certbot-apache-1.14.0/setup.py 2021-04-06 19:17:02.000000000 +0200 @@ -1,7 +1,7 @@ from setuptools import find_packages from setuptools import setup -version = '1.13.0' +version = '1.14.0' # Remember to update local-oldest-requirements.txt when changing the minimum # acme/certbot version. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/tests/augeasnode_test.py new/certbot-apache-1.14.0/tests/augeasnode_test.py --- old/certbot-apache-1.13.0/tests/augeasnode_test.py 2021-03-02 22:37:04.000000000 +0100 +++ new/certbot-apache-1.14.0/tests/augeasnode_test.py 2021-04-06 19:17:00.000000000 +0200 @@ -1,4 +1,6 @@ """Tests for AugeasParserNode classes""" +from typing import List + try: import mock except ImportError: # pragma: no cover @@ -107,7 +109,7 @@ def test_set_parameters(self): servernames = self.config.parser_root.find_directives("servername") - names = [] # type: List[str] + names: List[str] = [] for servername in servernames: names += servername.parameters self.assertFalse("going_to_set_this" in names) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/tests/http_01_test.py new/certbot-apache-1.14.0/tests/http_01_test.py --- old/certbot-apache-1.13.0/tests/http_01_test.py 2021-03-02 22:37:04.000000000 +0100 +++ new/certbot-apache-1.14.0/tests/http_01_test.py 2021-04-06 19:17:00.000000000 +0200 @@ -1,6 +1,7 @@ """Test for certbot_apache._internal.http_01.""" import unittest import errno +from typing import List try: import mock @@ -26,7 +27,7 @@ super(ApacheHttp01Test, self).setUp(*args, **kwargs) self.account_key = self.rsa512jwk - self.achalls = [] # type: List[achallenges.KeyAuthorizationAnnotatedChallenge] + self.achalls: List[achallenges.KeyAuthorizationAnnotatedChallenge] = [] vh_truth = util.get_vh_truth( self.temp_dir, "debian_apache_2_4/multiple_vhosts") # Takes the vhosts for encryption-example.demo, certbot.demo diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-1.13.0/tests/parser_test.py new/certbot-apache-1.14.0/tests/parser_test.py --- old/certbot-apache-1.13.0/tests/parser_test.py 2021-03-02 22:37:04.000000000 +0100 +++ new/certbot-apache-1.14.0/tests/parser_test.py 2021-04-06 19:17:00.000000000 +0200 @@ -339,7 +339,7 @@ shutil.rmtree(self.config_dir) shutil.rmtree(self.work_dir) - @mock.patch("certbot_apache._internal.parser.ApacheParser.init_augeas") + @mock.patch("certbot_apache._internal.parser.init_augeas") def test_prepare_no_augeas(self, mock_init_augeas): from certbot_apache._internal.parser import ApacheParser mock_init_augeas.side_effect = errors.NoInstallationError