mirror of
https://github.com/python/cpython.git
synced 2025-07-07 19:35:27 +00:00
GH-79634: Speed up pathlib globbing by removing joinpath()
call. (#114623)
Remove `self.joinpath('')` call that should have been removed in 6313cdde
.
This makes `PathBase.glob('')` yield itself *without* adding a trailing slash. It's hard to say whether this is more or less correct, but at least everything else is faster, and there's no behaviour change in the public classes where empty glob patterns are disallowed.
This commit is contained in:
parent
7a470541e2
commit
823a38a960
3 changed files with 6 additions and 5 deletions
|
@ -771,7 +771,7 @@ class PathBase(PurePathBase):
|
|||
filter_paths = False
|
||||
deduplicate_paths = False
|
||||
sep = self.pathmod.sep
|
||||
paths = iter([self.joinpath('')] if self.is_dir() else [])
|
||||
paths = iter([self] if self.is_dir() else [])
|
||||
while stack:
|
||||
part = stack.pop()
|
||||
if part in specials:
|
||||
|
|
|
@ -1232,6 +1232,8 @@ class PathTest(test_pathlib_abc.DummyPathTest, PurePathTest):
|
|||
list(p.glob(''))
|
||||
with self.assertRaisesRegex(ValueError, 'Unacceptable pattern'):
|
||||
list(p.glob('.'))
|
||||
with self.assertRaisesRegex(ValueError, 'Unacceptable pattern'):
|
||||
list(p.glob('./'))
|
||||
|
||||
def test_glob_many_open_files(self):
|
||||
depth = 30
|
||||
|
|
|
@ -1733,12 +1733,11 @@ class DummyPathTest(DummyPurePathTest):
|
|||
self.assertEqual(set(map(str, p.glob("F*a"))), {f"{p}\\fileA"})
|
||||
|
||||
def test_glob_empty_pattern(self):
|
||||
def _check(glob, expected):
|
||||
self.assertEqual(set(glob), { P(self.base, q) for q in expected })
|
||||
P = self.cls
|
||||
p = P(self.base)
|
||||
_check(p.glob(""), [""])
|
||||
_check(p.glob("."), ["."])
|
||||
self.assertEqual(list(p.glob("")), [p])
|
||||
self.assertEqual(list(p.glob(".")), [p / "."])
|
||||
self.assertEqual(list(p.glob("./")), [p / "./"])
|
||||
|
||||
def test_glob_case_sensitive(self):
|
||||
P = self.cls
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue