summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_pathlib/support/lexical_path.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_pathlib/support/lexical_path.py')
-rw-r--r--Lib/test/test_pathlib/support/lexical_path.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/Lib/test/test_pathlib/support/lexical_path.py b/Lib/test/test_pathlib/support/lexical_path.py
new file mode 100644
index 0000000..687d76f
--- /dev/null
+++ b/Lib/test/test_pathlib/support/lexical_path.py
@@ -0,0 +1,33 @@
+"""
+Simple implementation of JoinablePath, for use in pathlib tests.
+"""
+
+import os.path
+import pathlib.types
+
+
+class LexicalPath(pathlib.types._JoinablePath):
+ __slots__ = ('_segments',)
+ parser = os.path
+
+ def __init__(self, *pathsegments):
+ self._segments = pathsegments
+
+ def __hash__(self):
+ return hash(str(self))
+
+ def __eq__(self, other):
+ if not isinstance(other, LexicalPath):
+ return NotImplemented
+ return str(self) == str(other)
+
+ def __str__(self):
+ if not self._segments:
+ return ''
+ return self.parser.join(*self._segments)
+
+ def __repr__(self):
+ return f'{type(self).__name__}({str(self)!r})'
+
+ def with_segments(self, *pathsegments):
+ return type(self)(*pathsegments)