diff --git a/Lib/pathlib/_abc.py b/Lib/pathlib/_abc.py index 43e6624934b045..e9e46e511bddf1 100644 --- a/Lib/pathlib/_abc.py +++ b/Lib/pathlib/_abc.py @@ -124,14 +124,12 @@ class PurePathBase: parser = ParserBase() _globber = PathGlobber - def __init__(self, arg, *args): - paths = [arg] - paths.extend(args) - for path in paths: - if not isinstance(path, str): + def __init__(self, *args): + for arg in args: + if not isinstance(arg, str): raise TypeError( - f"path should be a str, not {type(path).__name__!r}") - self._raw_paths = paths + f"argument should be a str, not {type(arg).__name__!r}") + self._raw_paths = list(args) self._resolving = False def with_segments(self, *pathsegments): @@ -270,7 +268,7 @@ def relative_to(self, other, *, walk_up=False): raise ValueError(f"'..' segment in {str(other)!r} cannot be walked") else: parts0.append('..') - return self.with_segments('', *reversed(parts0)) + return self.with_segments(*reversed(parts0)) def is_relative_to(self, other): """Return True if the path is relative to another path or False. @@ -746,7 +744,7 @@ def cwd(cls): # enable users to replace the implementation of 'absolute()' in a # subclass and benefit from the new behaviour here. This works because # os.path.abspath('.') == os.getcwd(). - return cls('').absolute() + return cls().absolute() def expanduser(self): """ Return a new path with expanded ~ and ~user constructs diff --git a/Lib/test/test_pathlib/test_pathlib_abc.py b/Lib/test/test_pathlib/test_pathlib_abc.py index d155e7c5bb9935..bb2e4187ef9574 100644 --- a/Lib/test/test_pathlib/test_pathlib_abc.py +++ b/Lib/test/test_pathlib/test_pathlib_abc.py @@ -148,6 +148,7 @@ def test_constructor_common(self): P = self.cls p = P('a') self.assertIsInstance(p, P) + P() P('a', 'b', 'c') P('/a', 'b', 'c') P('a/b/c')