summaryrefslogtreecommitdiffstats
path: root/Lib/pathlib.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/pathlib.py')
-rw-r--r--Lib/pathlib.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/Lib/pathlib.py b/Lib/pathlib.py
index 61e7f3e..c69089f 100644
--- a/Lib/pathlib.py
+++ b/Lib/pathlib.py
@@ -74,6 +74,8 @@ def _make_selector(pattern_parts, flavour):
return _TerminatingSelector()
if pat == '**':
cls = _RecursiveWildcardSelector
+ elif pat == '..':
+ cls = _ParentSelector
elif '**' in pat:
raise ValueError("Invalid pattern: '**' can only be an entire path component")
elif _is_wildcard_pattern(pat):
@@ -114,6 +116,16 @@ class _TerminatingSelector:
yield parent_path
+class _ParentSelector(_Selector):
+ def __init__(self, name, child_parts, flavour):
+ _Selector.__init__(self, child_parts, flavour)
+
+ def _select_from(self, parent_path, is_dir, exists, scandir):
+ path = parent_path._make_child_relpath('..')
+ for p in self.successor._select_from(path, is_dir, exists, scandir):
+ yield p
+
+
class _PreciseSelector(_Selector):
def __init__(self, name, child_parts, flavour):