diff --git a/Lib/test/test_importlib/test_metadata_api.py b/Lib/test/test_importlib/test_metadata_api.py index 2bfc44b18ee..dc9c234d15b 100644 --- a/Lib/test/test_importlib/test_metadata_api.py +++ b/Lib/test/test_importlib/test_metadata_api.py @@ -3,6 +3,7 @@ import textwrap import unittest import warnings import importlib +import contextlib from . import fixtures from importlib.metadata import ( @@ -17,6 +18,13 @@ from importlib.metadata import ( ) +@contextlib.contextmanager +def suppress_known_deprecation(): + with warnings.catch_warnings(record=True) as ctx: + warnings.simplefilter('default') + yield ctx + + class APITests( fixtures.EggInfoPkg, fixtures.DistInfoPkg, @@ -118,8 +126,7 @@ class APITests( # Prior versions of entry_points() returned simple lists and # allowed casting those lists into maps by name using ``dict()``. # Capture this now deprecated use-case. - with warnings.catch_warnings(record=True) as caught: - warnings.filterwarnings("default", category=DeprecationWarning) + with suppress_known_deprecation() as caught: eps = dict(entry_points(group='entries')) assert 'main' in eps @@ -138,8 +145,7 @@ class APITests( See python/importlib_metadata#300 and bpo-44246. """ eps = distribution('distinfo-pkg').entry_points - with warnings.catch_warnings(record=True) as caught: - warnings.filterwarnings("default", category=DeprecationWarning) + with suppress_known_deprecation() as caught: eps[0] # check warning @@ -151,7 +157,7 @@ class APITests( # Prior versions of entry_points() returned a dict. Ensure # that callers using '.__getitem__()' are supported but warned to # migrate. - with warnings.catch_warnings(record=True): + with suppress_known_deprecation(): entry_points()['entries'] == entry_points(group='entries') with self.assertRaises(KeyError): @@ -161,7 +167,7 @@ class APITests( # Prior versions of entry_points() returned a dict. Ensure # that callers using '.get()' are supported but warned to # migrate. - with warnings.catch_warnings(record=True): + with suppress_known_deprecation(): entry_points().get('missing', 'default') == 'default' entry_points().get('entries', 'default') == entry_points()['entries'] entry_points().get('missing', ()) == () diff --git a/Misc/NEWS.d/next/Library/2021-07-31-08-45-31.bpo-44784.fIMIDS.rst b/Misc/NEWS.d/next/Library/2021-07-31-08-45-31.bpo-44784.fIMIDS.rst new file mode 100644 index 00000000000..6ad10ef3f59 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-07-31-08-45-31.bpo-44784.fIMIDS.rst @@ -0,0 +1,2 @@ +In importlib.metadata tests, override warnings behavior under expected +DeprecationWarnings (importlib_metadata 4.6.3).