summaryrefslogtreecommitdiff
path: root/Lib/shutil.py
diff options
context:
space:
mode:
authorHynek Schlawack <hs@ox.cx>2012-07-19 20:23:49 +0200
committerHynek Schlawack <hs@ox.cx>2012-07-19 20:23:49 +0200
commit77d32833700f6ffc05b04e3838bb52e0bb39e2a9 (patch)
tree39bed30710637cf1a38048a88090e4571f0446b0 /Lib/shutil.py
parent7506dab2e8602ac5535aeadd885c18bcc572c236 (diff)
downloadcpython-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.py8
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))