]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
GH-73991: Add `pathlib.Path.copytree()` (#120718)
authorBarney Gale <barney.gale@gmail.com>
Sun, 23 Jun 2024 21:01:12 +0000 (22:01 +0100)
committerGitHub <noreply@github.com>
Sun, 23 Jun 2024 21:01:12 +0000 (22:01 +0100)
commit35e998f5608b04cdd331e67dd80d4829df71a5fd
tree44099e8e9ae00cad3684e3adb024fadcc7770050
parentbc37ac7b440b5e816f0b3915b830404290522603
GH-73991: Add `pathlib.Path.copytree()` (#120718)

Add `pathlib.Path.copytree()` method, which recursively copies one
directory to another.

This differs from `shutil.copytree()` in the following respects:

1. Our method has a *follow_symlinks* argument, whereas shutil's has a
   *symlinks* argument with an inverted meaning.
2. Our method lacks something like a *copy_function* argument. It always
   uses `Path.copy()` to copy files.
3. Our method lacks something like a *ignore_dangling_symlinks* argument.
   Instead, users can filter out danging symlinks with *ignore*, or
   ignore exceptions with *on_error*
4. Our *ignore* argument is a callable that accepts a single path object,
   whereas shutil's accepts a path and a list of child filenames.
5. We add an *on_error* argument, which is a callable that accepts
   an `OSError` instance. (`Path.walk()` also accepts such a callable).

Co-authored-by: Nice Zombies <nineteendo19d0@gmail.com>
Doc/library/pathlib.rst
Doc/whatsnew/3.14.rst
Lib/pathlib/_abc.py
Lib/test/test_pathlib/test_pathlib.py
Lib/test/test_pathlib/test_pathlib_abc.py
Misc/NEWS.d/next/Library/2024-06-19-03-09-11.gh-issue-73991.lU_jK9.rst [new file with mode: 0644]