#1492704: Make shutil.copyfile() raise a distinct SameFileError
Patch by Atsuo Ishimoto.
diff --git a/Lib/shutil.py b/Lib/shutil.py
index a8b9f3f..7db9599 100644
--- a/Lib/shutil.py
+++ b/Lib/shutil.py
@@ -42,6 +42,9 @@
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 @@
"""
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 @@
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))