Skip to content

Commit 66f5453

Browse files
committed
Remove flavour.compile_pattern()
1 parent 6ea7eae commit 66f5453

File tree

1 file changed

+17
-19
lines changed

1 file changed

+17
-19
lines changed

Lib/pathlib.py

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,6 @@ def casefold(self, s):
6565
def casefold_parts(self, parts):
6666
return [p.lower() for p in parts]
6767

68-
def compile_pattern(self, pattern):
69-
return re.compile(fnmatch.translate(pattern), re.IGNORECASE).fullmatch
70-
7168

7269
class _PosixFlavour(_Flavour):
7370
has_drv = False
@@ -80,9 +77,6 @@ def casefold(self, s):
8077
def casefold_parts(self, parts):
8178
return parts
8279

83-
def compile_pattern(self, pattern):
84-
return re.compile(fnmatch.translate(pattern)).fullmatch
85-
8680

8781
_windows_flavour = _WindowsFlavour()
8882
_posix_flavour = _PosixFlavour()
@@ -179,7 +173,7 @@ def group(self, path):
179173
# Globbing helpers
180174
#
181175

182-
def _make_selector(pattern_parts, flavour):
176+
def _make_selector(pattern_parts, case_insensitive):
183177
pat = pattern_parts[0]
184178
child_parts = pattern_parts[1:]
185179
if pat == '**':
@@ -190,7 +184,7 @@ def _make_selector(pattern_parts, flavour):
190184
cls = _WildcardSelector
191185
else:
192186
cls = _PreciseSelector
193-
return cls(pat, child_parts, flavour)
187+
return cls(pat, child_parts, case_insensitive)
194188

195189
if hasattr(functools, "lru_cache"):
196190
_make_selector = functools.lru_cache()(_make_selector)
@@ -200,10 +194,10 @@ class _Selector:
200194
"""A selector matches a specific glob pattern part against the children
201195
of a given path."""
202196

203-
def __init__(self, child_parts, flavour):
197+
def __init__(self, child_parts, case_insensitive):
204198
self.child_parts = child_parts
205199
if child_parts:
206-
self.successor = _make_selector(child_parts, flavour)
200+
self.successor = _make_selector(child_parts, case_insensitive)
207201
self.dironly = True
208202
else:
209203
self.successor = _TerminatingSelector()
@@ -229,9 +223,9 @@ def _select_from(self, parent_path, is_dir, exists, scandir):
229223

230224
class _PreciseSelector(_Selector):
231225

232-
def __init__(self, name, child_parts, flavour):
226+
def __init__(self, name, child_parts, case_insensitive):
233227
self.name = name
234-
_Selector.__init__(self, child_parts, flavour)
228+
_Selector.__init__(self, child_parts, case_insensitive)
235229

236230
def _select_from(self, parent_path, is_dir, exists, scandir):
237231
try:
@@ -245,9 +239,10 @@ def _select_from(self, parent_path, is_dir, exists, scandir):
245239

246240
class _WildcardSelector(_Selector):
247241

248-
def __init__(self, pat, child_parts, flavour):
249-
self.match = flavour.compile_pattern(pat)
250-
_Selector.__init__(self, child_parts, flavour)
242+
def __init__(self, pat, child_parts, case_insensitive):
243+
flags = re.IGNORECASE if case_insensitive else 0
244+
self.match = re.compile(fnmatch.translate(pat), flags=flags).fullmatch
245+
_Selector.__init__(self, child_parts, case_insensitive)
251246

252247
def _select_from(self, parent_path, is_dir, exists, scandir):
253248
try:
@@ -276,8 +271,8 @@ def _select_from(self, parent_path, is_dir, exists, scandir):
276271

277272
class _RecursiveWildcardSelector(_Selector):
278273

279-
def __init__(self, pat, child_parts, flavour):
280-
_Selector.__init__(self, child_parts, flavour)
274+
def __init__(self, pat, child_parts, case_insensitive):
275+
_Selector.__init__(self, child_parts, case_insensitive)
281276

282277
def _iterate_directories(self, parent_path, is_dir, scandir):
283278
yield parent_path
@@ -793,6 +788,7 @@ class PurePosixPath(PurePath):
793788
"""
794789
_flavour = _posix_flavour
795790
_pathmod = posixpath
791+
_case_insensitive = False
796792
__slots__ = ()
797793

798794
@classmethod
@@ -832,6 +828,7 @@ class PureWindowsPath(PurePath):
832828
"""
833829
_flavour = _windows_flavour
834830
_pathmod = ntpath
831+
_case_insensitive = True
835832
_drive_letters = set('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
836833
_ext_namespace_prefix = '\\\\?\\'
837834
_reserved_names = (
@@ -1016,7 +1013,7 @@ def glob(self, pattern):
10161013
drv, root, pattern_parts = self._parse_parts((pattern,))
10171014
if drv or root:
10181015
raise NotImplementedError("Non-relative patterns are unsupported")
1019-
selector = _make_selector(tuple(pattern_parts), self._flavour)
1016+
selector = _make_selector(tuple(pattern_parts), self._case_insensitive)
10201017
for p in selector.select_from(self):
10211018
yield p
10221019

@@ -1029,7 +1026,8 @@ def rglob(self, pattern):
10291026
drv, root, pattern_parts = self._parse_parts((pattern,))
10301027
if drv or root:
10311028
raise NotImplementedError("Non-relative patterns are unsupported")
1032-
selector = _make_selector(("**",) + tuple(pattern_parts), self._flavour)
1029+
selector = _make_selector(("**",) + tuple(pattern_parts),
1030+
self._case_insensitive)
10331031
for p in selector.select_from(self):
10341032
yield p
10351033

0 commit comments

Comments
 (0)