summaryrefslogtreecommitdiff
path: root/Lib/shutil.py
diff options
context:
space:
mode:
authorHynek Schlawack <hs@ox.cx>2012-10-07 12:49:58 +0200
committerHynek Schlawack <hs@ox.cx>2012-10-07 12:49:58 +0200
commit7b1d47f65d1cbe1ec9aebb2ab7c4e74114fd3f58 (patch)
tree067f3e6cf18efe60fc79e0f1309e6012f0677410 /Lib/shutil.py
parentc6e05a6b0f6da02ee5e1a9f563787377c5fcab2d (diff)
downloadcpython-7b1d47f65d1cbe1ec9aebb2ab7c4e74114fd3f58.tar.gz
Closes #1492704: Make shutil.copyfile() raise a distinct SameFileError
Patch by Atsuo Ishimoto.
Diffstat (limited to 'Lib/shutil.py')
-rw-r--r--Lib/shutil.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/Lib/shutil.py b/Lib/shutil.py
index 5dc311e70d..27239f67b7 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))