GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GH-73991: Prune `pathlib.Path.copy()` and `copy_into()` arguments by barneygale · Pull Request #123337 · python/cpython

Conversation

@barneygale

@barneygale barneygale commented Aug 26, 2024 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Remove ignore and on_error arguments from pathlib.Path.copy[_into](), because these arguments are under-designed. Specifically:

  • ignore is appropriated from shutil.copytree(), but it's not clear how it should apply when the user copies a non-directory. We've changed the callback signature from the shutil version, but I'm not confident the new signature is as good as it can be.
  • on_error is a generalisation of shutil.copytree()'s error handling, which is to accumulate exceptions and raise a single shutil.Error at the end. It's not obvious which solution is better.

Additionally, these arguments may be challenging to implement in future user subclasses of PathBase, which might utilise a native recursive copying method.

No news because copy() and copy_into() are unreleased.

  • Issue: Support moving across filesystems in pathlib.Path, as shutil.move() does #73991

📚 Documentation preview 📚: https://cpython-previews--123337.org.readthedocs.build/

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@barneygale
pythonGH-73991: Prune pathlib.Path.copy() and copy_into() arguments
8d25830
Remove *ignore* and *on_error* arguments from `pathlib.Path.copy[_into]()`,
because these arguments are under-designed. Specifically:

- *ignore* is appropriated from `shutil.copytree()`, but it's not clear
  how it should apply when the user copies a non-directory. We've changed
  the callback signature from the `shutil` version, but I'm not confident
  the new signature is as good as it can be.
- *on_error* is a generalisation of `shutil.copytree()`'s error handling,
  which is to accumulate exceptions and raise a single `shutil.Error` at
  the end. It's not obvious which solution is better.

Additionally, this arguments may be challenging to implement in future user
subclasses of `PathBase`, which might utilise a native recursive copying
method.
@barneygale barneygale added skip news topic-pathlib labels Aug 26, 2024
@bedevere-app bedevere-app Bot mentioned this pull request Aug 26, 2024
Support moving across filesystems in pathlib.Path, as shutil.move() does #73991
Closed
@barneygale
barneygale requested a review from pfmoore August 26, 2024 13:39
@barneygale
barneygale marked this pull request as ready for review August 26, 2024 13:42
@bedevere-app bedevere-app Bot added the awaiting core review label Aug 26, 2024
@pfmoore

pfmoore commented Aug 26, 2024

Copy link
Copy Markdown
Member

I do think we need some replacement for the removed arguments, but unlike delete, I think it's more about enabling additional use cases and less about making sure that basic usage is OK. Specifically, I think ignore is important for filtered copies (for example, copy a project directory but don't copy generated files like *.pyc or *.obj). I'm less sure about on_error - mostly it's the same arguments as for delete, but in this case I don't know of any commonly-encountered cases that would need to be supported in day to day use.

So +1 from me on doing this as a temporary limitation, to get a minimal working implementation released.

barneygale reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

pfmoore
pfmoore approved these changes Aug 26, 2024
View reviewed changes
@bedevere-app bedevere-app Bot added awaiting merge and removed awaiting core review labels Aug 26, 2024
@barneygale

barneygale commented Aug 26, 2024

Copy link
Copy Markdown
Contributor Author

Thanks very much for the review! I agree with everything you wrote heh. I'll look to add support for filtering and customizing error handling soon. We might get a user request for them before too long!

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@barneygale
barneygale merged commit 7bd6ebf into python:main Aug 26, 2024
@bedevere-app bedevere-app Bot removed the awaiting merge label Aug 26, 2024
@barneygale barneygale mentioned this pull request Feb 28, 2025
GH-130608: Remove dirs_exist_ok argument from pathlib.Path.copy() #130610
Merged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@pfmoore pfmoore pfmoore approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

skip news topic-pathlib

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@barneygale @pfmoore
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.