diff --git a/distutils/compilers/C/base.py b/distutils/compilers/C/base.py index 93385e13..6412dc34 100644 --- a/distutils/compilers/C/base.py +++ b/distutils/compilers/C/base.py @@ -70,7 +70,7 @@ class Compiler: # dictionary (see below -- used by the 'new_compiler()' factory # function) -- authors of new compiler interface classes are # responsible for updating 'compiler_class'! - compiler_type: ClassVar[str] = None # type: ignore[assignment] + compiler_type: ClassVar[str] = None # XXX things not handled by this compiler abstraction model: # * client can't provide additional options for a compiler, diff --git a/distutils/tests/test_filelist.py b/distutils/tests/test_filelist.py index 130e6fb5..654075b6 100644 --- a/distutils/tests/test_filelist.py +++ b/distutils/tests/test_filelist.py @@ -3,6 +3,7 @@ import logging import os import re +import sys from distutils import debug, filelist from distutils.errors import DistutilsTemplateError from distutils.filelist import FileList, glob_to_re, translate_pattern @@ -45,22 +46,22 @@ def assertWarnings(self, caplog): caplog.clear() def test_glob_to_re(self): - sep = os.sep - if os.sep == '\\': - sep = re.escape(os.sep) + sep = re.escape(os.sep) if os.sep == '\\' else os.sep + # https://docs.python.org/3/whatsnew/3.14.html#re + end_of_str_metachar = r"\z" if sys.version_info >= (3, 14) else r"\Z" for glob, regex in ( # simple cases - ('foo*', r'(?s:foo[^%(sep)s]*)\Z'), - ('foo?', r'(?s:foo[^%(sep)s])\Z'), - ('foo??', r'(?s:foo[^%(sep)s][^%(sep)s])\Z'), + ('foo*', r'(?s:foo[^%(sep)s]*)%(eos)s'), + ('foo?', r'(?s:foo[^%(sep)s])%(eos)s'), + ('foo??', r'(?s:foo[^%(sep)s][^%(sep)s])%(eos)s'), # special cases - (r'foo\\*', r'(?s:foo\\\\[^%(sep)s]*)\Z'), - (r'foo\\\*', r'(?s:foo\\\\\\[^%(sep)s]*)\Z'), - ('foo????', r'(?s:foo[^%(sep)s][^%(sep)s][^%(sep)s][^%(sep)s])\Z'), - (r'foo\\??', r'(?s:foo\\\\[^%(sep)s][^%(sep)s])\Z'), + (r'foo\\*', r'(?s:foo\\\\[^%(sep)s]*)%(eos)s'), + (r'foo\\\*', r'(?s:foo\\\\\\[^%(sep)s]*)%(eos)s'), + ('foo????', r'(?s:foo[^%(sep)s][^%(sep)s][^%(sep)s][^%(sep)s])%(eos)s'), + (r'foo\\??', r'(?s:foo\\\\[^%(sep)s][^%(sep)s])%(eos)s'), ): - regex = regex % {'sep': sep} + regex = regex % {'sep': sep, 'eos': end_of_str_metachar} assert glob_to_re(glob) == regex def test_process_template_line(self):