mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
[3.11] gh-99203: shutil.make_archive(): restore select CPython <= 3.10.5 behavior (GH-99802) (GH-107999)
Restore following CPython <= 3.10.5 behavior of shutil.make_archive()
that went away as part of gh-93160:
Do not create an empty archive if root_dir is not a directory, and, in
that case, raise FileNotFoundError or NotADirectoryError regardless
of format choice. Beyond the brought-back behavior, the function may
now also raise these exceptions in dry_run mode.
(cherry picked from commit a86df298df)
Co-authored-by: 6t8k <58048945+6t8k@users.noreply.github.com>
This commit is contained in:
parent
3f7dfb6d39
commit
4cfbcffd3d
3 changed files with 54 additions and 2 deletions
|
|
@ -1114,10 +1114,14 @@ def make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,
|
|||
if base_dir is None:
|
||||
base_dir = os.curdir
|
||||
|
||||
support_root_dir = format_info[3]
|
||||
supports_root_dir = format_info[3]
|
||||
save_cwd = None
|
||||
if root_dir is not None:
|
||||
if support_root_dir:
|
||||
stmd = os.stat(root_dir).st_mode
|
||||
if not stat.S_ISDIR(stmd):
|
||||
raise NotADirectoryError(errno.ENOTDIR, 'Not a directory', root_dir)
|
||||
|
||||
if supports_root_dir:
|
||||
# Support path-like base_name here for backwards-compatibility.
|
||||
base_name = os.fspath(base_name)
|
||||
kwargs['root_dir'] = root_dir
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue