GH-73991: Prune pathlib.Path.delete() arguments#123158
GH-73991: Prune pathlib.Path.delete() arguments#123158barneygale wants to merge 5 commits intopython:mainfrom
pathlib.Path.delete() arguments#123158Conversation
Remove the *ignore_errors* and *on_error* arguments from `Path.delete()`. This functionality was carried over from `shutil`, but its design needs to be re-considered in its new context. For example, we may wish to support a *missing_ok* argument (like `Path.unlink()`), or automatically `chmod()` and retry operations when we hit a permission error (like `tempfile.TemporaryDirectory`), or retry operations with a backoff (like `test.support.os_helper.rmtree()`), or utilise exception groups, etc. It's best to leave our options open for now.
pathlib.Path.delete()pathlib.Path.delete() arguments
|
I can understand the logic that we omit the arguments until we're sure we have the right design, but in my experience, a directory tree delete very often needs these arguments (specifically To put this another way, the key benefit of I'd rather defer making Footnotes
|
|
Thanks very much, that's most helpful. I'll close this PR for now, and open a new topic on the forum (in a few weeks time) about what to do with these arguments. I'll try to make the case that the number of practical |
Per feedback from Paul Moore on pythonGH-123158, it's better to defer making `Path.delete()` public than ship it with under-designed error handling capabilities. We leave a remnant `_delete()` method, which is used by `move()`. Any functionality not needed by `move()` is deleted.
Per feedback from Paul Moore on GH-123158, it's better to defer making `Path.delete()` public than ship it with under-designed error handling capabilities. We leave a remnant `_delete()` method, which is used by `move()`. Any functionality not needed by `move()` is deleted.
|
A tiny point, somewhat after the event. In the current |
Remove the ignore_errors and on_error arguments from
Path.delete(). This functionality was carried over fromshutil.rmtree(), but its design needs to be re-evaluated in its new context. Some possible alternate designs:Path.unlink())chmod()and retry operations when we hit a permission error (liketempfile.TemporaryDirectory)test.support.os_helper.rmtree()),It's best to leave our options open for now. I don't want to risk these arguments landing in 3.14 final because I got hit by a bus or something.
No news because
Path.delete()remains unreleased.📚 Documentation preview 📚: https://cpython-previews--123158.org.readthedocs.build/