From 26fe37dd3f5b994722eb093f95e917282368d7da Mon Sep 17 00:00:00 2001 From: Hynek Schlawack Date: Thu, 19 Jul 2012 21:41:02 +0200 Subject: [PATCH] #1492704: Backout and wait for 3.4 --- Doc/library/shutil.rst | 12 +----------- Lib/shutil.py | 8 +------- Lib/test/test_shutil.py | 15 +++------------ Misc/NEWS | 3 --- 4 files changed, 5 insertions(+), 33 deletions(-) diff --git a/Doc/library/shutil.rst b/Doc/library/shutil.rst index d019137197..8ed7e9edb1 100644 --- a/Doc/library/shutil.rst +++ b/Doc/library/shutil.rst @@ -52,7 +52,7 @@ Directory and files operations Copy the contents (no metadata) of the file named *src* to a file named *dst* and return *dst*. *dst* must be the complete target file name; look at :func:`shutil.copy` for a copy that accepts a target directory path. If - *src* and *dst* are the same files, :exc:`SameFileError` is raised. + *src* and *dst* are the same files, :exc:`Error` is raised. The destination location must be writable; otherwise, an :exc:`OSError` exception will be raised. If *dst* already exists, it will be replaced. Special files @@ -67,16 +67,6 @@ Directory and files operations :exc:`IOError` used to be raised instead of :exc:`OSError`. Added *follow_symlinks* argument. Now returns *dst*. - Raise :exc:`SameFileError` instead of :exc:`Error`. - - -.. exception:: SameFileError - - This exception is raised if source and destination in :func:`copyfile` - are the same file. - - .. versionadded:: 3.3 - .. function:: copymode(src, dst, *, follow_symlinks=True) diff --git a/Lib/shutil.py b/Lib/shutil.py index 7db9599313..a8b9f3f4cb 100644 --- a/Lib/shutil.py +++ b/Lib/shutil.py @@ -42,9 +42,6 @@ __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)""" @@ -93,7 +90,7 @@ def copyfile(src, dst, *, follow_symlinks=True): """ if _samefile(src, dst): - raise SameFileError("{!r} and {!r} are the same file".format(src, dst)) + raise Error("`%s` and `%s` are the same file" % (src, dst)) for fn in [src, dst]: try: @@ -218,9 +215,6 @@ 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)) diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py index cbca767a4c..eb0e9a4ee7 100644 --- a/Lib/test/test_shutil.py +++ b/Lib/test/test_shutil.py @@ -18,8 +18,7 @@ from shutil import (_make_tarball, _make_zipfile, make_archive, register_archive_format, unregister_archive_format, get_archive_formats, Error, unpack_archive, register_unpack_format, RegistryError, - unregister_unpack_format, get_unpack_formats, - SameFileError) + unregister_unpack_format, get_unpack_formats) import tarfile import warnings @@ -689,7 +688,7 @@ class TestShutil(unittest.TestCase): with open(src, 'w') as f: f.write('cheddar') os.link(src, dst) - self.assertRaises(shutil.SameFileError, shutil.copyfile, src, dst) + self.assertRaises(shutil.Error, shutil.copyfile, src, dst) with open(src, 'r') as f: self.assertEqual(f.read(), 'cheddar') os.remove(dst) @@ -709,7 +708,7 @@ class TestShutil(unittest.TestCase): # to TESTFN/TESTFN/cheese, while it should point at # TESTFN/cheese. os.symlink('cheese', dst) - self.assertRaises(shutil.SameFileError, shutil.copyfile, src, dst) + self.assertRaises(shutil.Error, shutil.copyfile, src, dst) with open(src, 'r') as f: self.assertEqual(f.read(), 'cheddar') os.remove(dst) @@ -1216,14 +1215,6 @@ class TestShutil(unittest.TestCase): self.assertTrue(os.path.exists(rv)) self.assertEqual(read_file(src_file), read_file(dst_file)) - def test_copyfile_same_file(self): - # copyfile() should raise SameFileError if the source and destination - # are the same. - src_dir = self.mkdtemp() - src_file = os.path.join(src_dir, 'foo') - write_file(src_file, 'foo') - self.assertRaises(SameFileError, shutil.copyfile, src_file, src_file) - def test_copytree_return_value(self): # copytree returns its destination path. src_dir = self.mkdtemp() diff --git a/Misc/NEWS b/Misc/NEWS index 7baa57fa99..4758df7dda 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -47,9 +47,6 @@ Core and Builtins Library ------- -- Issue #1492704: shutil.copyfile() raises a distinct SameFileError now if - source and destination are the same file. Patch by Atsuo Ishimoto. - - Issue #15397: inspect.getmodulename() is now based directly on importlib via a new importlib.machinery.all_suffixes() API. -- 2.40.0