From c9932a9ec8a3077933a85101aae9c3ac155e6d04 Mon Sep 17 00:00:00 2001 From: Barney Gale Date: Sat, 1 Mar 2025 21:25:38 +0000 Subject: 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. --- Lib/pathlib/_abc.py | 2 +- Lib/test/test_pathlib/test_pathlib_abc.py | 12 +++--------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/Lib/pathlib/_abc.py b/Lib/pathlib/_abc.py index cb5af32..d9fb018 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 efc6c17..1c1797f 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 -- cgit v0.12