-
-
Notifications
You must be signed in to change notification settings - Fork 31.8k
GH-73991: Prune pathlib.Path.delete()
arguments
#123158
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
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/