diff options
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/fileinput.py | 7 | ||||
-rw-r--r-- | Lib/test/support/__init__.py | 17 | ||||
-rw-r--r-- | Lib/test/test_fileinput.py | 10 | ||||
-rw-r--r-- | Lib/test/test_pulldom.py | 7 | ||||
-rw-r--r-- | Lib/test/test_wsgiref.py | 8 | ||||
-rw-r--r-- | Lib/wsgiref/util.py | 7 | ||||
-rw-r--r-- | Lib/xml/dom/pulldom.py | 7 |
7 files changed, 63 insertions, 0 deletions
diff --git a/Lib/fileinput.py b/Lib/fileinput.py index c6fc9a1..a7f8df3 100644 --- a/Lib/fileinput.py +++ b/Lib/fileinput.py @@ -259,6 +259,13 @@ class FileInput: # repeat with next file def __getitem__(self, i): + import warnings + warnings.warn( + "Support for indexing FileInput objects is deprecated. " + "Use iterator protocol instead.", + DeprecationWarning, + stacklevel=2 + ) if i != self.lineno(): raise RuntimeError("accessing lines out of order") try: diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index d8dabd4..13b60f7 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -89,6 +89,7 @@ __all__ = [ "requires_IEEE_754", "skip_unless_xattr", "requires_zlib", "anticipate_failure", "load_package_tests", "detect_api_mismatch", "check__all__", "skip_unless_bind_unix_socket", + "ignore_warnings", # sys "is_jython", "is_android", "check_impl_detail", "unix_shell", "setswitchinterval", @@ -138,6 +139,22 @@ def _ignore_deprecated_imports(ignore=True): yield +def ignore_warnings(*, category): + """Decorator to suppress deprecation warnings. + + Use of context managers to hide warnings make diffs + more noisy and tools like 'git blame' less useful. + """ + def decorator(test): + @functools.wraps(test) + def wrapper(self, *args, **kwargs): + with warnings.catch_warnings(): + warnings.simplefilter('ignore', category=category) + return test(self, *args, **kwargs) + return wrapper + return decorator + + def import_module(name, deprecated=False, *, required_on=()): """Import and return the module to be tested, raising SkipTest if it is not available. diff --git a/Lib/test/test_fileinput.py b/Lib/test/test_fileinput.py index c97bb4c..c5d722e 100644 --- a/Lib/test/test_fileinput.py +++ b/Lib/test/test_fileinput.py @@ -351,6 +351,7 @@ class FileInputTests(BaseTests, unittest.TestCase): with FileInput(files=[]) as fi: self.assertEqual(fi._files, ('-',)) + @support.ignore_warnings(category=DeprecationWarning) def test__getitem__(self): """Tests invoking FileInput.__getitem__() with the current line number""" @@ -361,6 +362,14 @@ class FileInputTests(BaseTests, unittest.TestCase): retval2 = fi[1] self.assertEqual(retval2, "line2\n") + def test__getitem___deprecation(self): + t = self.writeTmp("line1\nline2\n") + with self.assertWarnsRegex(DeprecationWarning, + r'Use iterator protocol instead'): + with FileInput(files=[t]) as fi: + self.assertEqual(fi[0], "line1\n") + + @support.ignore_warnings(category=DeprecationWarning) def test__getitem__invalid_key(self): """Tests invoking FileInput.__getitem__() with an index unequal to the line number""" @@ -370,6 +379,7 @@ class FileInputTests(BaseTests, unittest.TestCase): fi[1] self.assertEqual(cm.exception.args, ("accessing lines out of order",)) + @support.ignore_warnings(category=DeprecationWarning) def test__getitem__eof(self): """Tests invoking FileInput.__getitem__() with the line number but at end-of-input""" diff --git a/Lib/test/test_pulldom.py b/Lib/test/test_pulldom.py index 3d89e3a..f454098 100644 --- a/Lib/test/test_pulldom.py +++ b/Lib/test/test_pulldom.py @@ -159,6 +159,13 @@ class PullDOMTestCase(unittest.TestCase): self.fail( "Ran out of events, but should have received END_DOCUMENT") + def test_getitem_deprecation(self): + parser = pulldom.parseString(SMALL_SAMPLE) + with self.assertWarnsRegex(DeprecationWarning, + r'Use iterator protocol instead'): + # This should have returned 'END_ELEMENT'. + self.assertEqual(parser[-1][0], pulldom.START_DOCUMENT) + class ThoroughTestCase(unittest.TestCase): """Test the hard-to-reach parts of pulldom.""" diff --git a/Lib/test/test_wsgiref.py b/Lib/test/test_wsgiref.py index 8422b30..737dfed 100644 --- a/Lib/test/test_wsgiref.py +++ b/Lib/test/test_wsgiref.py @@ -338,6 +338,7 @@ class UtilityTests(TestCase): util.setup_testing_defaults(kw) self.assertEqual(util.request_uri(kw,query),uri) + @support.ignore_warnings(category=DeprecationWarning) def checkFW(self,text,size,match): def make_it(text=text,size=size): @@ -356,6 +357,13 @@ class UtilityTests(TestCase): it.close() self.assertTrue(it.filelike.closed) + def test_filewrapper_getitem_deprecation(self): + wrapper = util.FileWrapper(StringIO('foobar'), 3) + with self.assertWarnsRegex(DeprecationWarning, + r'Use iterator protocol instead'): + # This should have returned 'bar'. + self.assertEqual(wrapper[1], 'foo') + def testSimpleShifts(self): self.checkShift('','/', '', '/', '') self.checkShift('','/x', 'x', '/x', '') diff --git a/Lib/wsgiref/util.py b/Lib/wsgiref/util.py index 516fe89..1cff7a3 100644 --- a/Lib/wsgiref/util.py +++ b/Lib/wsgiref/util.py @@ -18,6 +18,13 @@ class FileWrapper: self.close = filelike.close def __getitem__(self,key): + import warnings + warnings.warn( + "FileWrapper's __getitem__ method ignores 'key' parameter. " + "Use iterator protocol instead.", + DeprecationWarning, + stacklevel=2 + ) data = self.filelike.read(self.blksize) if data: return data diff --git a/Lib/xml/dom/pulldom.py b/Lib/xml/dom/pulldom.py index 43504f7..96a8d59 100644 --- a/Lib/xml/dom/pulldom.py +++ b/Lib/xml/dom/pulldom.py @@ -217,6 +217,13 @@ class DOMEventStream: self.parser.setContentHandler(self.pulldom) def __getitem__(self, pos): + import warnings + warnings.warn( + "DOMEventStream's __getitem__ method ignores 'pos' parameter. " + "Use iterator protocol instead.", + DeprecationWarning, + stacklevel=2 + ) rc = self.getEvent() if rc: return rc |