mirror of https://github.com/python/cpython
gh-123084: Turn `shutil.ExecError` into a deprecated alias of `RuntimeError` (#123125)
This commit is contained in:
parent
f88c14d412
commit
9dbd123755
|
@ -8,3 +8,8 @@ Pending Removal in Python 3.16
|
|||
* :mod:`symtable`:
|
||||
Deprecate :meth:`symtable.Class.get_methods` due to the lack of interest.
|
||||
(Contributed by Bénédikt Tran in :gh:`119698`.)
|
||||
|
||||
* :mod:`shutil`: Deprecate :class:`!shutil.ExecError`, which hasn't
|
||||
been raised by any :mod:`!shutil` function since Python 3.4. It's
|
||||
now an alias for :exc:`RuntimeError`.
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ _WIN_DEFAULT_PATHEXT = ".COM;.EXE;.BAT;.CMD;.VBS;.JS;.WS;.MSC"
|
|||
|
||||
__all__ = ["copyfileobj", "copyfile", "copymode", "copystat", "copy", "copy2",
|
||||
"copytree", "move", "rmtree", "Error", "SpecialFileError",
|
||||
"ExecError", "make_archive", "get_archive_formats",
|
||||
"make_archive", "get_archive_formats",
|
||||
"register_archive_format", "unregister_archive_format",
|
||||
"get_unpack_formats", "register_unpack_format",
|
||||
"unregister_unpack_format", "unpack_archive",
|
||||
|
@ -74,8 +74,6 @@ class SpecialFileError(OSError):
|
|||
"""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)"""
|
||||
|
||||
class ExecError(OSError):
|
||||
"""Raised when a command could not be executed"""
|
||||
|
||||
class ReadError(OSError):
|
||||
"""Raised when an archive cannot be read"""
|
||||
|
@ -1582,3 +1580,15 @@ def which(cmd, mode=os.F_OK | os.X_OK, path=None):
|
|||
if _access_check(name, mode):
|
||||
return name
|
||||
return None
|
||||
|
||||
def __getattr__(name):
|
||||
if name == "ExecError":
|
||||
import warnings
|
||||
warnings._deprecated(
|
||||
"shutil.ExecError",
|
||||
f"{warnings._DEPRECATED_MSG}; it "
|
||||
"isn't raised by any shutil function.",
|
||||
remove=(3, 16)
|
||||
)
|
||||
return RuntimeError
|
||||
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
||||
|
|
|
@ -3393,7 +3393,7 @@ class PublicAPITests(unittest.TestCase):
|
|||
self.assertTrue(hasattr(shutil, '__all__'))
|
||||
target_api = ['copyfileobj', 'copyfile', 'copymode', 'copystat',
|
||||
'copy', 'copy2', 'copytree', 'move', 'rmtree', 'Error',
|
||||
'SpecialFileError', 'ExecError', 'make_archive',
|
||||
'SpecialFileError', 'make_archive',
|
||||
'get_archive_formats', 'register_archive_format',
|
||||
'unregister_archive_format', 'get_unpack_formats',
|
||||
'register_unpack_format', 'unregister_unpack_format',
|
||||
|
@ -3402,6 +3402,8 @@ class PublicAPITests(unittest.TestCase):
|
|||
if hasattr(os, 'statvfs') or os.name == 'nt':
|
||||
target_api.append('disk_usage')
|
||||
self.assertEqual(set(shutil.__all__), set(target_api))
|
||||
with self.assertWarns(DeprecationWarning):
|
||||
from shutil import ExecError
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
Deprecate :class:`!shutil.ExecError`, which hasn't been
|
||||
raised by any :mod:`shutil` function since Python 3.4. It's
|
||||
now an alias for :exc:`RuntimeError`.
|
||||
|
Loading…
Reference in New Issue