diff options
author | Barney Gale <barney.gale@gmail.com> | 2021-04-07 00:26:37 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-07 00:26:37 (GMT) |
commit | 2219187cab6bca009c42b63b2f4c30b5b10c916d (patch) | |
tree | 4b574b76ea8c82767b3b79577e13ecaaa0ed4785 /Lib/pathlib.py | |
parent | 986da8effcd2e9e9334ae016928ef795fb93c373 (diff) | |
download | cpython-2219187cab6bca009c42b63b2f4c30b5b10c916d.zip cpython-2219187cab6bca009c42b63b2f4c30b5b10c916d.tar.gz cpython-2219187cab6bca009c42b63b2f4c30b5b10c916d.tar.bz2 |
bpo-40038: pathlib: remove partial support for preserving accessor when modifying a path (GH-19342)
Diffstat (limited to 'Lib/pathlib.py')
-rw-r--r-- | Lib/pathlib.py | 41 |
1 files changed, 8 insertions, 33 deletions
diff --git a/Lib/pathlib.py b/Lib/pathlib.py index cd5884d..9db8ae2 100644 --- a/Lib/pathlib.py +++ b/Lib/pathlib.py @@ -697,7 +697,7 @@ class PurePath(object): return cls._flavour.parse_parts(parts) @classmethod - def _from_parts(cls, args, init=True): + def _from_parts(cls, args): # We need to call _parse_args on the instance, so as to get the # right flavour. self = object.__new__(cls) @@ -705,18 +705,14 @@ class PurePath(object): self._drv = drv self._root = root self._parts = parts - if init: - self._init() return self @classmethod - def _from_parsed_parts(cls, drv, root, parts, init=True): + def _from_parsed_parts(cls, drv, root, parts): self = object.__new__(cls) self._drv = drv self._root = root self._parts = parts - if init: - self._init() return self @classmethod @@ -726,10 +722,6 @@ class PurePath(object): else: return cls._flavour.join(parts) - def _init(self): - # Overridden in concrete Path - pass - def _make_child(self, args): drv, root, parts = self._parse_args(args) drv, root, parts = self._flavour.join_parsed_parts( @@ -1069,29 +1061,18 @@ class Path(PurePath): object. You can also instantiate a PosixPath or WindowsPath directly, but cannot instantiate a WindowsPath on a POSIX system or vice versa. """ - __slots__ = ( - '_accessor', - ) + _accessor = _normal_accessor + __slots__ = () def __new__(cls, *args, **kwargs): if cls is Path: cls = WindowsPath if os.name == 'nt' else PosixPath - self = cls._from_parts(args, init=False) + self = cls._from_parts(args) if not self._flavour.is_supported: raise NotImplementedError("cannot instantiate %r on your system" % (cls.__name__,)) - self._init() return self - def _init(self, - # Private non-constructor arguments - template=None, - ): - if template is not None: - self._accessor = template._accessor - else: - self._accessor = _normal_accessor - def _make_child_relpath(self, part): # This is an optimization used for dir walking. `part` must be # a single part relative to this path. @@ -1192,9 +1173,7 @@ class Path(PurePath): return self # FIXME this must defer to the specific flavour (and, under Windows, # use nt._getfullpathname()) - obj = self._from_parts([os.getcwd()] + self._parts, init=False) - obj._init(template=self) - return obj + return self._from_parts([os.getcwd()] + self._parts) def resolve(self, strict=False): """ @@ -1210,9 +1189,7 @@ class Path(PurePath): s = str(self.absolute()) # Now we have no symlinks in the path, it's safe to normalize it. normed = self._flavour.pathmod.normpath(s) - obj = self._from_parts((normed,), init=False) - obj._init(template=self) - return obj + return self._from_parts((normed,)) def stat(self): """ @@ -1284,9 +1261,7 @@ class Path(PurePath): Return the path to which the symbolic link points. """ path = self._accessor.readlink(self) - obj = self._from_parts((path,), init=False) - obj._init(template=self) - return obj + return self._from_parts((path,)) def touch(self, mode=0o666, exist_ok=True): """ |