diff options
author | Hynek Schlawack <hs@ox.cx> | 2012-07-19 20:23:49 +0200 |
---|---|---|
committer | Hynek Schlawack <hs@ox.cx> | 2012-07-19 20:23:49 +0200 |
commit | 77d32833700f6ffc05b04e3838bb52e0bb39e2a9 (patch) | |
tree | 39bed30710637cf1a38048a88090e4571f0446b0 /Lib/shutil.py | |
parent | 7506dab2e8602ac5535aeadd885c18bcc572c236 (diff) | |
download | cpython-git-77d32833700f6ffc05b04e3838bb52e0bb39e2a9.tar.gz |
#1492704: Make shutil.copyfile() raise a distinct SameFileError
Patch by Atsuo Ishimoto.
Diffstat (limited to 'Lib/shutil.py')
-rw-r--r-- | Lib/shutil.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/Lib/shutil.py b/Lib/shutil.py index a8b9f3f4cb..7db9599313 100644 --- a/Lib/shutil.py +++ b/Lib/shutil.py @@ -42,6 +42,9 @@ __all__ = ["copyfileobj", "copyfile", "copymode", "copystat", "copy", "copy2", class Error(EnvironmentError): pass +class SameFileError(Error): + """Raised when source and destination are the same file.""" + class SpecialFileError(EnvironmentError): """Raised when trying to do a kind of operation (e.g. copying) which is not supported on a special file (e.g. a named pipe)""" @@ -90,7 +93,7 @@ def copyfile(src, dst, *, follow_symlinks=True): """ if _samefile(src, dst): - raise Error("`%s` and `%s` are the same file" % (src, dst)) + raise SameFileError("{!r} and {!r} are the same file".format(src, dst)) for fn in [src, dst]: try: @@ -215,6 +218,9 @@ def copy(src, dst, *, follow_symlinks=True): If follow_symlinks is false, symlinks won't be followed. This resembles GNU's "cp -P src dst". + If source and destination are the same file, a SameFileError will be + raised. + """ if os.path.isdir(dst): dst = os.path.join(dst, os.path.basename(src)) |