From: Barney Gale Date: Sat, 1 Mar 2025 21:25:38 +0000 (+0000) Subject: GH-127381: pathlib ABCs: remove `WritablePath.mkdir()` arguments (#130611) X-Git-Tag: v3.14.0a6~205 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c9932a9ec8a3077933a85101aae9c3ac155e6d04;p=thirdparty%2FPython%2Fcpython.git GH-127381: pathlib ABCs: remove `WritablePath.mkdir()` arguments (#130611) Remove the *mode*, *parents* and *exist_ok* arguments from `WritablePath.mkdir()`. These arguments imply support for POSIX permissions and checking for preexistence of the path or its parents, but subclasses of `WritablePath` may not have these capabilities. The public `Path.mkdir()` method retains these arguments. --- diff --git a/Lib/pathlib/_abc.py b/Lib/pathlib/_abc.py index cb5af3230bfd..d9fb018d75f5 100644 --- a/Lib/pathlib/_abc.py +++ b/Lib/pathlib/_abc.py @@ -352,7 +352,7 @@ class WritablePath(JoinablePath): raise NotImplementedError @abstractmethod - def mkdir(self, mode=0o777, parents=False, exist_ok=False): + def mkdir(self): """ Create a new directory at this given path. """ diff --git a/Lib/test/test_pathlib/test_pathlib_abc.py b/Lib/test/test_pathlib/test_pathlib_abc.py index efc6c17962e2..1c1797ff04f6 100644 --- a/Lib/test/test_pathlib/test_pathlib_abc.py +++ b/Lib/test/test_pathlib/test_pathlib_abc.py @@ -914,23 +914,17 @@ class DummyWritablePath(WritablePath, DummyJoinablePath): self._directories[parent].add(name) return DummyWritablePathIO(self._files, path) - def mkdir(self, mode=0o777, parents=False, exist_ok=False): + def mkdir(self): path = str(self) parent = str(self.parent) if path in self._directories: - if exist_ok: - return - else: - raise FileExistsError(errno.EEXIST, "File exists", path) + raise FileExistsError(errno.EEXIST, "File exists", path) try: if self.name: self._directories[parent].add(self.name) self._directories[path] = set() except KeyError: - if not parents: - raise FileNotFoundError(errno.ENOENT, "File not found", parent) from None - self.parent.mkdir(parents=True, exist_ok=True) - self.mkdir(mode, parents=False, exist_ok=exist_ok) + raise FileNotFoundError(errno.ENOENT, "File not found", parent) from None def symlink_to(self, target, target_is_directory=False): raise NotImplementedError