diff options
Diffstat (limited to 'Lib/test/test_pathlib/support/lexical_path.py')
-rw-r--r-- | Lib/test/test_pathlib/support/lexical_path.py | 33 |
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) |