diff options
author | Hugo van Kemenade <hugovk@users.noreply.github.com> | 2021-09-08 10:07:40 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-08 10:07:40 (GMT) |
commit | d003a5bd2505a7fa04f50504b68ba8fca67349cd (patch) | |
tree | 530dacbc66f083a0ecfcad123bab220cb6796bb5 /Lib | |
parent | cb15afcccffc6c42cbfb7456ce8db89cd2f77512 (diff) | |
download | cpython-d003a5bd2505a7fa04f50504b68ba8fca67349cd.zip cpython-d003a5bd2505a7fa04f50504b68ba8fca67349cd.tar.gz cpython-d003a5bd2505a7fa04f50504b68ba8fca67349cd.tar.bz2 |
bpo-45132 Remove deprecated __getitem__ methods (GH-28225)
Remove deprecated __getitem__ methods of xml.dom.pulldom.DOMEventStream,
wsgiref.util.FileWrapper and fileinput.FileInput, deprecated since Python 3.9.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/fileinput.py | 15 | ||||
-rw-r--r-- | Lib/test/test_fileinput.py | 39 | ||||
-rw-r--r-- | Lib/test/test_pulldom.py | 7 | ||||
-rw-r--r-- | Lib/test/test_wsgiref.py | 48 | ||||
-rw-r--r-- | Lib/wsgiref/util.py | 13 | ||||
-rw-r--r-- | Lib/xml/dom/pulldom.py | 13 |
6 files changed, 12 insertions, 123 deletions
diff --git a/Lib/fileinput.py b/Lib/fileinput.py index d0b3caa..9f41c18 100644 --- a/Lib/fileinput.py +++ b/Lib/fileinput.py @@ -257,21 +257,6 @@ class FileInput: self.nextfile() # 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: - return self.__next__() - except StopIteration: - raise IndexError("end of input reached") - def nextfile(self): savestdout = self._savestdout self._savestdout = None diff --git a/Lib/test/test_fileinput.py b/Lib/test/test_fileinput.py index 31684ae..8192000 100644 --- a/Lib/test/test_fileinput.py +++ b/Lib/test/test_fileinput.py @@ -29,7 +29,6 @@ from test.support import verbose from test.support.os_helper import TESTFN from test.support.os_helper import unlink as safe_unlink from test.support import os_helper -from test.support import warnings_helper from test import support from unittest import mock @@ -357,44 +356,6 @@ class FileInputTests(BaseTests, unittest.TestCase): with FileInput(files=[], encoding="utf-8") as fi: self.assertEqual(fi._files, ('-',)) - @warnings_helper.ignore_warnings(category=DeprecationWarning) - def test__getitem__(self): - """Tests invoking FileInput.__getitem__() with the current - line number""" - t = self.writeTmp("line1\nline2\n") - with FileInput(files=[t], encoding="utf-8") as fi: - retval1 = fi[0] - self.assertEqual(retval1, "line1\n") - 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") - - @warnings_helper.ignore_warnings(category=DeprecationWarning) - def test__getitem__invalid_key(self): - """Tests invoking FileInput.__getitem__() with an index unequal to - the line number""" - t = self.writeTmp("line1\nline2\n") - with FileInput(files=[t], encoding="utf-8") as fi: - with self.assertRaises(RuntimeError) as cm: - fi[1] - self.assertEqual(cm.exception.args, ("accessing lines out of order",)) - - @warnings_helper.ignore_warnings(category=DeprecationWarning) - def test__getitem__eof(self): - """Tests invoking FileInput.__getitem__() with the line number but at - end-of-input""" - t = self.writeTmp('') - with FileInput(files=[t], encoding="utf-8") as fi: - with self.assertRaises(IndexError) as cm: - fi[0] - self.assertEqual(cm.exception.args, ("end of input reached",)) - def test_nextfile_oserror_deleting_backup(self): """Tests invoking FileInput.nextfile() when the attempt to delete the backup file would raise OSError. This error is expected to be diff --git a/Lib/test/test_pulldom.py b/Lib/test/test_pulldom.py index 4a1bad3..6dc51e4 100644 --- a/Lib/test/test_pulldom.py +++ b/Lib/test/test_pulldom.py @@ -160,13 +160,6 @@ 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) - def test_external_ges_default(self): parser = pulldom.parseString(SMALL_SAMPLE) saxparser = parser.parser diff --git a/Lib/test/test_wsgiref.py b/Lib/test/test_wsgiref.py index 93ca6b9..cf40e5a 100644 --- a/Lib/test/test_wsgiref.py +++ b/Lib/test/test_wsgiref.py @@ -1,7 +1,6 @@ from unittest import mock from test import support from test.support import socket_helper -from test.support import warnings_helper from test.test_httpservers import NoLogRequestHandler from unittest import TestCase from wsgiref.util import setup_testing_defaults @@ -81,41 +80,26 @@ def run_amock(app=hello_app, data=b"GET / HTTP/1.0\n\n"): return out.getvalue(), err.getvalue() -def compare_generic_iter(make_it,match): - """Utility to compare a generic 2.1/2.2+ iterator with an iterable - If running under Python 2.2+, this tests the iterator using iter()/next(), - as well as __getitem__. 'make_it' must be a function returning a fresh +def compare_generic_iter(make_it, match): + """Utility to compare a generic iterator with an iterable + + This tests the iterator using iter()/next(). + 'make_it' must be a function returning a fresh iterator to be tested (since this may test the iterator twice).""" it = make_it() - n = 0 + if not iter(it) is it: + raise AssertionError for item in match: - if not it[n]==item: raise AssertionError - n+=1 + if not next(it) == item: + raise AssertionError try: - it[n] - except IndexError: + next(it) + except StopIteration: pass else: - raise AssertionError("Too many items from __getitem__",it) - - try: - iter, StopIteration - except NameError: - pass - else: - # Only test iter mode under 2.2+ - it = make_it() - if not iter(it) is it: raise AssertionError - for item in match: - if not next(it) == item: raise AssertionError - try: - next(it) - except StopIteration: - pass - else: - raise AssertionError("Too many items from .__next__()", it) + raise AssertionError("Too many items from .__next__()", it) class IntegrationTests(TestCase): @@ -340,7 +324,6 @@ class UtilityTests(TestCase): util.setup_testing_defaults(kw) self.assertEqual(util.request_uri(kw,query),uri) - @warnings_helper.ignore_warnings(category=DeprecationWarning) def checkFW(self,text,size,match): def make_it(text=text,size=size): @@ -359,13 +342,6 @@ 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 cac52eb..cbbe094 100644 --- a/Lib/wsgiref/util.py +++ b/Lib/wsgiref/util.py @@ -17,19 +17,6 @@ class FileWrapper: if hasattr(filelike,'close'): 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 - raise IndexError - def __iter__(self): return self diff --git a/Lib/xml/dom/pulldom.py b/Lib/xml/dom/pulldom.py index 96a8d59..913141c 100644 --- a/Lib/xml/dom/pulldom.py +++ b/Lib/xml/dom/pulldom.py @@ -216,19 +216,6 @@ class DOMEventStream: self.parser.setFeature(xml.sax.handler.feature_namespaces, 1) 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 - raise IndexError - def __next__(self): rc = self.getEvent() if rc: |