mirror of
https://github.com/python/cpython
synced 2024-10-14 23:49:42 +00:00
[3.12] gh-117691: Add an appropriate stacklevel for PEP-706 tarfile deprecation warnings (GH-117872) (GH-117930)
gh-117691: Add an appropriate stacklevel for PEP-706 tarfile deprecation warnings (GH-117872)
(cherry picked from commit cff0a2db00
)
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
This commit is contained in:
parent
2a58923687
commit
aa26dc3c4a
|
@ -2222,7 +2222,7 @@ def _get_filter_function(self, filter):
|
|||
'Python 3.14 will, by default, filter extracted tar '
|
||||
+ 'archives and reject files or modify their metadata. '
|
||||
+ 'Use the filter argument to control this behavior.',
|
||||
DeprecationWarning)
|
||||
DeprecationWarning, stacklevel=3)
|
||||
return fully_trusted_filter
|
||||
if isinstance(filter, str):
|
||||
raise TypeError(
|
||||
|
|
|
@ -718,6 +718,31 @@ def test_extract_directory(self):
|
|||
finally:
|
||||
os_helper.rmtree(DIR)
|
||||
|
||||
def test_deprecation_if_no_filter_passed_to_extractall(self):
|
||||
DIR = pathlib.Path(TEMPDIR) / "extractall"
|
||||
with (
|
||||
os_helper.temp_dir(DIR),
|
||||
tarfile.open(tarname, encoding="iso8859-1") as tar
|
||||
):
|
||||
directories = [t for t in tar if t.isdir()]
|
||||
with self.assertWarnsRegex(DeprecationWarning, "Use the filter argument") as cm:
|
||||
tar.extractall(DIR, directories)
|
||||
# check that the stacklevel of the deprecation warning is correct:
|
||||
self.assertEqual(cm.filename, __file__)
|
||||
|
||||
def test_deprecation_if_no_filter_passed_to_extract(self):
|
||||
dirtype = "ustar/dirtype"
|
||||
DIR = pathlib.Path(TEMPDIR) / "extractall"
|
||||
with (
|
||||
os_helper.temp_dir(DIR),
|
||||
tarfile.open(tarname, encoding="iso8859-1") as tar
|
||||
):
|
||||
tarinfo = tar.getmember(dirtype)
|
||||
with self.assertWarnsRegex(DeprecationWarning, "Use the filter argument") as cm:
|
||||
tar.extract(tarinfo, path=DIR)
|
||||
# check that the stacklevel of the deprecation warning is correct:
|
||||
self.assertEqual(cm.filename, __file__)
|
||||
|
||||
def test_extractall_pathlike_name(self):
|
||||
DIR = pathlib.Path(TEMPDIR) / "extractall"
|
||||
with os_helper.temp_dir(DIR), \
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
Improve the error messages emitted by :mod:`tarfile` deprecation warnings
|
||||
relating to PEP 706. If a ``filter`` argument is not provided to
|
||||
``extract()`` or ``extractall``, the deprecation warning now points to the
|
||||
line in the user's code where the relevant function was called. Patch by
|
||||
Alex Waygood.
|
Loading…
Reference in a new issue