From 805365ee39298f93e433e19ae0dd87c6f782145b Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 7 May 2007 22:24:25 +0000 Subject: Merged revisions 55007-55179 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/p3yk ........ r55077 | guido.van.rossum | 2007-05-02 11:54:37 -0700 (Wed, 02 May 2007) | 2 lines Use the new print syntax, at least. ........ r55142 | fred.drake | 2007-05-04 21:27:30 -0700 (Fri, 04 May 2007) | 1 line remove old cruftiness ........ r55143 | fred.drake | 2007-05-04 21:52:16 -0700 (Fri, 04 May 2007) | 1 line make this work with the new Python ........ r55162 | neal.norwitz | 2007-05-06 22:29:18 -0700 (Sun, 06 May 2007) | 1 line Get asdl code gen working with Python 2.3. Should continue to work with 3.0 ........ r55164 | neal.norwitz | 2007-05-07 00:00:38 -0700 (Mon, 07 May 2007) | 1 line Verify checkins to p3yk (sic) branch go to 3000 list. ........ r55166 | neal.norwitz | 2007-05-07 00:12:35 -0700 (Mon, 07 May 2007) | 1 line Fix this test so it runs again by importing warnings_test properly. ........ r55167 | neal.norwitz | 2007-05-07 01:03:22 -0700 (Mon, 07 May 2007) | 8 lines So long xrange. range() now supports values that are outside -sys.maxint to sys.maxint. floats raise a TypeError. This has been sitting for a long time. It probably has some problems and needs cleanup. Objects/rangeobject.c now uses 4-space indents since it is almost completely new. ........ r55171 | guido.van.rossum | 2007-05-07 10:21:26 -0700 (Mon, 07 May 2007) | 4 lines Fix two tests that were previously depending on significant spaces at the end of a line (and before that on Python 2.x print behavior that has no exact equivalent in 3.0). ........ --- Demo/tix/grid.py | 4 +- Doc/lib/libdbhash.tex | 2 +- Doc/lib/libfuncs.tex | 34 +- Doc/lib/libitertools.tex | 8 +- Doc/lib/librandom.tex | 4 +- Doc/lib/libstdtypes.tex | 18 +- Doc/lib/libtimeit.tex | 2 +- Doc/lib/libtypes.tex | 4 +- Doc/tut/tut.tex | 8 +- Doc/whatsnew/Makefile | 3 - Lib/Cookie.py | 2 +- Lib/bsddb/test/test_thread.py | 6 +- Lib/calendar.py | 32 +- Lib/copy.py | 4 +- Lib/ctypes/test/test_arrays.py | 4 +- Lib/ctypes/test/test_slicing.py | 19 +- Lib/difflib.py | 8 +- Lib/distutils/command/install.py | 2 +- Lib/doctest.py | 4 +- Lib/genericpath.py | 2 +- Lib/gettext.py | 2 +- Lib/heapq.py | 2 +- Lib/hmac.py | 4 +- Lib/idlelib/CodeContext.py | 2 +- Lib/mhlib.py | 2 +- Lib/pickle.py | 4 +- Lib/plat-mac/EasyDialogs.py | 4 +- Lib/plat-mac/applesingle.py | 2 +- Lib/plat-riscos/riscospath.py | 2 +- Lib/popen2.py | 2 +- Lib/pydoc.py | 2 +- Lib/random.py | 10 +- Lib/sqlite3/test/regression.py | 4 +- Lib/sre_compile.py | 8 +- Lib/string.py | 2 +- Lib/stringprep.py | 8 +- Lib/subprocess.py | 2 +- Lib/tarfile.py | 14 +- Lib/tempfile.py | 8 +- Lib/test/fork_wait.py | 2 +- Lib/test/list_tests.py | 6 +- Lib/test/output/test_cProfile | 6 +- Lib/test/output/test_profile | 8 +- Lib/test/pickletester.py | 8 +- Lib/test/seq_tests.py | 10 +- Lib/test/sortperf.py | 4 +- Lib/test/string_tests.py | 14 +- Lib/test/test_array.py | 4 +- Lib/test/test_binascii.py | 4 +- Lib/test/test_bisect.py | 12 +- Lib/test/test_bsddb.py | 4 +- Lib/test/test_bufio.py | 4 +- Lib/test/test_builtin.py | 54 +-- Lib/test/test_bz2.py | 2 +- Lib/test/test_calendar.py | 2 +- Lib/test/test_codeccallbacks.py | 10 +- Lib/test/test_codecs.py | 14 +- Lib/test/test_compile.py | 4 +- Lib/test/test_complex.py | 10 +- Lib/test/test_contains.py | 4 +- Lib/test/test_copy.py | 4 +- Lib/test/test_csv.py | 8 +- Lib/test/test_datetime.py | 2 +- Lib/test/test_decimal.py | 2 +- Lib/test/test_deque.py | 121 +++--- Lib/test/test_descr.py | 26 +- Lib/test/test_dis.py | 4 +- Lib/test/test_doctest.py | 64 +-- Lib/test/test_dummy_thread.py | 2 +- Lib/test/test_enumerate.py | 10 +- Lib/test/test_functools.py | 2 +- Lib/test/test_gc.py | 2 +- Lib/test/test_generators.py | 2 +- Lib/test/test_genexps.py | 24 +- Lib/test/test_grp.py | 2 +- Lib/test/test_heapq.py | 8 +- Lib/test/test_index.py | 11 +- Lib/test/test_io.py | 2 +- Lib/test/test_isinstance.py | 2 +- Lib/test/test_iter.py | 65 ++- Lib/test/test_iterlen.py | 38 +- Lib/test/test_itertools.py | 112 ++--- Lib/test/test_list.py | 2 +- Lib/test/test_listcomps.py | 30 +- Lib/test/test_logging.py | 2 +- Lib/test/test_long.py | 19 +- Lib/test/test_mailbox.py | 20 +- Lib/test/test_mhlib.py | 20 +- Lib/test/test_mimetools.py | 2 +- Lib/test/test_mmap.py | 4 +- Lib/test/test_multibytecodec.py | 2 +- Lib/test/test_multibytecodec_support.py | 8 +- Lib/test/test_mutants.py | 4 +- Lib/test/test_operator.py | 14 +- Lib/test/test_peepholer.py | 2 +- Lib/test/test_pep352.py | 3 +- Lib/test/test_pow.py | 4 +- Lib/test/test_pprint.py | 4 +- Lib/test/test_pwd.py | 2 +- Lib/test/test_queue.py | 2 +- Lib/test/test_random.py | 64 +-- Lib/test/test_repr.py | 8 +- Lib/test/test_richcmp.py | 8 +- Lib/test/test_set.py | 30 +- Lib/test/test_setcomps.py | 36 +- Lib/test/test_slice.py | 2 +- Lib/test/test_sort.py | 28 +- Lib/test/test_struct.py | 8 +- Lib/test/test_structseq.py | 12 +- Lib/test/test_tempfile.py | 8 +- Lib/test/test_trace.py | 2 +- Lib/test/test_tuple.py | 4 +- Lib/test/test_ucn.py | 4 +- Lib/test/test_unicode.py | 15 +- Lib/test/test_unicodedata.py | 4 +- Lib/test/test_userdict.py | 2 +- Lib/test/test_userlist.py | 2 +- Lib/test/test_warnings.py | 2 +- Lib/test/test_winsound.py | 2 +- Lib/test/test_xdrlib.py | 2 +- Lib/test/test_xrange.py | 50 ++- Lib/test/test_zipfile.py | 6 +- Lib/test/test_zipfile64.py | 4 +- Lib/test/time_hashlib.py | 6 +- Lib/types.py | 1 - Lib/urllib.py | 2 +- Misc/NEWS | 9 +- Objects/rangeobject.c | 709 +++++++++++++++++++++++++------- Parser/asdl.py | 37 +- Parser/asdl_c.py | 25 +- Parser/spark.py | 50 ++- Python/bltinmodule.c | 299 +------------- Tools/pybench/Arithmetic.py | 20 +- Tools/pybench/Calls.py | 16 +- Tools/pybench/Constructs.py | 12 +- Tools/pybench/Dict.py | 20 +- Tools/pybench/Exceptions.py | 8 +- Tools/pybench/Imports.py | 12 +- Tools/pybench/Instances.py | 4 +- Tools/pybench/Lists.py | 12 +- Tools/pybench/Lookups.py | 20 +- Tools/pybench/NewInstances.py | 4 +- Tools/pybench/Numbers.py | 16 +- Tools/pybench/Strings.py | 28 +- Tools/pybench/Tuples.py | 8 +- Tools/pybench/Unicode.py | 28 +- Tools/pybench/systimes.py | 2 +- Tools/scripts/reindent.py | 4 +- Tools/unicode/makeunicodedata.py | 2 +- Tools/unicode/mkstringprep.py | 2 +- 150 files changed, 1424 insertions(+), 1332 deletions(-) delete mode 100644 Doc/whatsnew/Makefile diff --git a/Demo/tix/grid.py b/Demo/tix/grid.py index 07ca87f..79b8886 100644 --- a/Demo/tix/grid.py +++ b/Demo/tix/grid.py @@ -18,8 +18,8 @@ class MyGrid(tk.Grid): g = MyGrid(r, name="a_grid", selectunit="cell") g.pack(fill=tk.BOTH) -for x in xrange(5): - for y in xrange(5): +for x in range(5): + for y in range(5): g.set(x,y,text=str((x,y))) c = tk.Button(r, text="Close", command=r.destroy) diff --git a/Doc/lib/libdbhash.tex b/Doc/lib/libdbhash.tex index cf44707..5852b73 100644 --- a/Doc/lib/libdbhash.tex +++ b/Doc/lib/libdbhash.tex @@ -72,7 +72,7 @@ methods are available in addition to the standard methods. \begin{verbatim} print db.first() -for i in xrange(1, len(db)): +for i in range(1, len(db)): print db.next() \end{verbatim} \end{methoddesc} diff --git a/Doc/lib/libfuncs.tex b/Doc/lib/libfuncs.tex index 0900317..c02f6f1 100644 --- a/Doc/lib/libfuncs.tex +++ b/Doc/lib/libfuncs.tex @@ -868,7 +868,7 @@ class Parrot(object): \end{funcdesc} \begin{funcdesc}{range}{\optional{start,} stop\optional{, step}} - This is a versatile function to create lists containing arithmetic + This is a versatile function to create sequences containing arithmetic progressions. It is most often used in \keyword{for} loops. The arguments must be plain integers. If the \var{step} argument is omitted, it defaults to \code{1}. If the \var{start} argument is @@ -882,19 +882,19 @@ class Parrot(object): \exception{ValueError} is raised). Example: \begin{verbatim} ->>> range(10) +>>> list(range(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ->>> range(1, 11) +>>> list(range(1, 11)) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ->>> range(0, 30, 5) +>>> list(range(0, 30, 5)) [0, 5, 10, 15, 20, 25] ->>> range(0, 10, 3) +>>> list(range(0, 10, 3)) [0, 3, 6, 9] ->>> range(0, -10, -1) +>>> list(range(0, -10, -1)) [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] ->>> range(0) +>>> list(range(0)) [] ->>> range(1, 0) +>>> list(range(1, 0)) [] \end{verbatim} \end{funcdesc} @@ -1230,24 +1230,6 @@ class C(B): other scopes (such as modules) can be. This may change.} \end{funcdesc} -\begin{funcdesc}{xrange}{\optional{start,} stop\optional{, step}} - This function is very similar to \function{range()}, but returns an - ``xrange object'' instead of a list. This is an opaque sequence - type which yields the same values as the corresponding list, without - actually storing them all simultaneously. The advantage of - \function{xrange()} over \function{range()} is minimal (since - \function{xrange()} still has to create the values when asked for - them) except when a very large range is used on a memory-starved - machine or when all of the range's elements are never used (such as - when the loop is usually terminated with \keyword{break}). - - \note{\function{xrange()} is intended to be simple and fast. - Implementations may impose restrictions to achieve this. - The C implementation of Python restricts all arguments to - native C longs ("short" Python integers), and also requires - that the number of elements fit in a native C long.} -\end{funcdesc} - \begin{funcdesc}{zip}{\optional{iterable, \moreargs}} This function returns a list of tuples, where the \var{i}-th tuple contains the \var{i}-th element from each of the argument sequences or iterables. diff --git a/Doc/lib/libitertools.tex b/Doc/lib/libitertools.tex index a2f37d7..681738d 100644 --- a/Doc/lib/libitertools.tex +++ b/Doc/lib/libitertools.tex @@ -161,7 +161,7 @@ by functions or loops that truncate the stream. key = lambda x: x self.keyfunc = key self.it = iter(iterable) - self.tgtkey = self.currkey = self.currvalue = xrange(0) + self.tgtkey = self.currkey = self.currvalue = [] def __iter__(self): return self def __next__(self): @@ -252,7 +252,7 @@ by functions or loops that truncate the stream. \begin{verbatim} def islice(iterable, *args): s = slice(*args) - it = iter(xrange(s.start or 0, s.stop or sys.maxint, s.step or 1)) + it = iter(range(s.start or 0, s.stop or sys.maxint, s.step or 1)) nexti = next(it) for i, element in enumerate(iterable): if i == nexti: @@ -342,7 +342,7 @@ by functions or loops that truncate the stream. while True: yield object else: - for i in xrange(times): + for i in range(times): yield object \end{verbatim} \end{funcdesc} @@ -425,7 +425,7 @@ Check 1201 is for $764.05 Check 1202 is for $823.14 >>> import operator ->>> for cube in imap(operator.pow, xrange(1,5), repeat(3)): +>>> for cube in imap(operator.pow, range(1,5), repeat(3)): ... print cube ... 1 diff --git a/Doc/lib/librandom.tex b/Doc/lib/librandom.tex index 78c536b..a9bd5ac 100644 --- a/Doc/lib/librandom.tex +++ b/Doc/lib/librandom.tex @@ -163,9 +163,9 @@ Functions for sequences: population contains repeats, then each occurrence is a possible selection in the sample. - To choose a sample from a range of integers, use an \function{xrange()} + To choose a sample from a range of integers, use an \function{range()} object as an argument. This is especially fast and space efficient for - sampling from a large population: \code{sample(xrange(10000000), 60)}. + sampling from a large population: \code{sample(range(10000000), 60)}. \end{funcdesc} diff --git a/Doc/lib/libstdtypes.tex b/Doc/lib/libstdtypes.tex index 0c45f18..ef84157 100644 --- a/Doc/lib/libstdtypes.tex +++ b/Doc/lib/libstdtypes.tex @@ -403,11 +403,11 @@ methods. \section{Sequence Types --- \class{str}, \class{unicode}, \class{list}, - \class{tuple}, \class{buffer}, \class{xrange} + \class{tuple}, \class{buffer}, \class{range} \label{typesseq}} There are six sequence types: strings, Unicode strings, lists, -tuples, buffers, and xrange objects. +tuples, buffers, and range objects. String literals are written in single or double quotes: \code{'xyzzy'}, \code{"frobozz"}. See chapter 2 of the @@ -433,11 +433,11 @@ concatenation or repetition. \obindex{buffer} Xrange objects are similar to buffers in that there is no specific -syntax to create them, but they are created using the \function{xrange()} -function.\bifuncindex{xrange} They don't support slicing, +syntax to create them, but they are created using the \function{range()} +function.\bifuncindex{range} They don't support slicing, concatenation or repetition, and using \code{in}, \code{not in}, \function{min()} or \function{max()} on them is inefficient. -\obindex{xrange} +\obindex{range} Most sequence types support the following operations. The \samp{in} and \samp{not in} operations have the same priorities as the comparison @@ -1069,11 +1069,11 @@ Additional string operations are defined in standard modules \refmodule{re}.\refstmodindex{re} -\subsection{XRange Type \label{typesseq-xrange}} +\subsection{XRange Type \label{typesseq-range}} -The \class{xrange}\obindex{xrange} type is an immutable sequence which -is commonly used for looping. The advantage of the \class{xrange} -type is that an \class{xrange} object will always take the same amount +The \class{range}\obindex{range} type is an immutable sequence which +is commonly used for looping. The advantage of the \class{range} +type is that an \class{range} object will always take the same amount of memory, no matter the size of the range it represents. There are no consistent performance advantages. diff --git a/Doc/lib/libtimeit.tex b/Doc/lib/libtimeit.tex index 7f38a7e..968728f 100644 --- a/Doc/lib/libtimeit.tex +++ b/Doc/lib/libtimeit.tex @@ -98,7 +98,7 @@ may be an important component of the performance of the function being measured. If so, GC can be re-enabled as the first statement in the \var{setup} string. For example: \begin{verbatim} - timeit.Timer('for i in xrange(10): oct(i)', 'gc.enable()').timeit() + timeit.Timer('for i in range(10): oct(i)', 'gc.enable()').timeit() \end{verbatim} \end{notice} \end{methoddesc} diff --git a/Doc/lib/libtypes.tex b/Doc/lib/libtypes.tex index c80a87a..4554305 100644 --- a/Doc/lib/libtypes.tex +++ b/Doc/lib/libtypes.tex @@ -147,9 +147,9 @@ The type of modules. The type of open file objects such as \code{sys.stdout}. \end{datadesc} -\begin{datadesc}{XRangeType} +\begin{datadesc}{RangeType} The type of range objects returned by -\function{xrange()}\bifuncindex{xrange}. +\function{range()}\bifuncindex{range}. \end{datadesc} \begin{datadesc}{SliceType} diff --git a/Doc/tut/tut.tex b/Doc/tut/tut.tex index a5e535d..6558be2 100644 --- a/Doc/tut/tut.tex +++ b/Doc/tut/tut.tex @@ -2260,7 +2260,7 @@ in a forward direction and then call the \function{reversed()} function. \begin{verbatim} ->>> for i in reversed(xrange(1,10,2)): +>>> for i in reversed(range(1,10,2)): ... print i ... 9 @@ -2700,12 +2700,12 @@ standard module \module{__builtin__}\refbimodindex{__builtin__}: 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'execfile', 'exit', 'file', 'filter', 'float', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', - 'id', 'int', 'isinstance', 'issubclass', 'iter', + 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'long', 'map', 'max', 'min', 'object', 'oct', 'open', 'ord', 'pow', 'property', 'quit', 'range', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', - 'tuple', 'type', 'unichr', 'unicode', 'vars', 'xrange', 'zip'] + 'tuple', 'type', 'unichr', 'unicode', 'vars', 'zip'] \end{verbatim} @@ -4762,7 +4762,7 @@ module provides tools for making random selections: >>> import random >>> random.choice(['apple', 'pear', 'banana']) 'apple' ->>> random.sample(xrange(100), 10) # sampling without replacement +>>> random.sample(range(100), 10) # sampling without replacement [30, 83, 16, 4, 8, 81, 41, 50, 18, 33] >>> random.random() # random float 0.17970987693706186 diff --git a/Doc/whatsnew/Makefile b/Doc/whatsnew/Makefile deleted file mode 100644 index d11f97b..0000000 --- a/Doc/whatsnew/Makefile +++ /dev/null @@ -1,3 +0,0 @@ - -check: - ../../python.exe ../../Tools/scripts/texcheck.py whatsnew25.tex diff --git a/Lib/Cookie.py b/Lib/Cookie.py index 4a34ff4..153adc5 100644 --- a/Lib/Cookie.py +++ b/Lib/Cookie.py @@ -305,7 +305,7 @@ _Translator = { '\375' : '\\375', '\376' : '\\376', '\377' : '\\377' } -_idmap = ''.join(chr(x) for x in xrange(256)) +_idmap = ''.join(chr(x) for x in range(256)) def _quote(str, LegalChars=_LegalChars, idmap=_idmap): # diff --git a/Lib/bsddb/test/test_thread.py b/Lib/bsddb/test/test_thread.py index eabf96a..fca4466 100644 --- a/Lib/bsddb/test/test_thread.py +++ b/Lib/bsddb/test/test_thread.py @@ -229,7 +229,7 @@ class SimpleThreadedBase(BaseThreadedTestCase): print("%s: creating records %d - %d" % (name, start, stop)) # create a bunch of records - for x in xrange(start, stop): + for x in range(start, stop): key = '%04d' % x dbutils.DeadlockWrap(d.put, key, self.makeData(key), max_retries=12) @@ -239,7 +239,7 @@ class SimpleThreadedBase(BaseThreadedTestCase): # do a bit or reading too if random() <= 0.05: - for y in xrange(start, x): + for y in range(start, x): key = '%04d' % x data = dbutils.DeadlockWrap(d.get, key, max_retries=12) self.assertEqual(data, self.makeData(key)) @@ -252,7 +252,7 @@ class SimpleThreadedBase(BaseThreadedTestCase): print("could not complete sync()...") # read them back, deleting a few - for x in xrange(start, stop): + for x in range(start, stop): key = '%04d' % x data = dbutils.DeadlockWrap(d.get, key, max_retries=12) if verbose and x % 100 == 0: diff --git a/Lib/calendar.py b/Lib/calendar.py index 149c7ad..e243255 100644 --- a/Lib/calendar.py +++ b/Lib/calendar.py @@ -45,7 +45,7 @@ mdays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] class _localized_month: - _months = [datetime.date(2001, i+1, 1).strftime for i in xrange(12)] + _months = [datetime.date(2001, i+1, 1).strftime for i in range(12)] _months.insert(0, lambda x: "") def __init__(self, format): @@ -65,7 +65,7 @@ class _localized_month: class _localized_day: # January 1, 2001, was a Monday. - _days = [datetime.date(2001, 1, i+1).strftime for i in xrange(7)] + _days = [datetime.date(2001, 1, i+1).strftime for i in range(7)] def __init__(self, format): self.format = format @@ -144,7 +144,7 @@ class Calendar(object): Return a iterator for one week of weekday numbers starting with the configured first one. """ - for i in xrange(self.firstweekday, self.firstweekday + 7): + for i in range(self.firstweekday, self.firstweekday + 7): yield i%7 def itermonthdates(self, year, month): @@ -192,7 +192,7 @@ class Calendar(object): Each row represents a week; week entries are datetime.date values. """ dates = list(self.itermonthdates(year, month)) - return [ dates[i:i+7] for i in xrange(0, len(dates), 7) ] + return [ dates[i:i+7] for i in range(0, len(dates), 7) ] def monthdays2calendar(self, year, month): """ @@ -202,7 +202,7 @@ class Calendar(object): are zero. """ days = list(self.itermonthdays2(year, month)) - return [ days[i:i+7] for i in xrange(0, len(days), 7) ] + return [ days[i:i+7] for i in range(0, len(days), 7) ] def monthdayscalendar(self, year, month): """ @@ -210,7 +210,7 @@ class Calendar(object): Each row represents a week; days outside this month are zero. """ days = list(self.itermonthdays(year, month)) - return [ days[i:i+7] for i in xrange(0, len(days), 7) ] + return [ days[i:i+7] for i in range(0, len(days), 7) ] def yeardatescalendar(self, year, width=3): """ @@ -221,9 +221,9 @@ class Calendar(object): """ months = [ self.monthdatescalendar(year, i) - for i in xrange(January, January+12) + for i in range(January, January+12) ] - return [months[i:i+width] for i in xrange(0, len(months), width) ] + return [months[i:i+width] for i in range(0, len(months), width) ] def yeardays2calendar(self, year, width=3): """ @@ -234,9 +234,9 @@ class Calendar(object): """ months = [ self.monthdays2calendar(year, i) - for i in xrange(January, January+12) + for i in range(January, January+12) ] - return [months[i:i+width] for i in xrange(0, len(months), width) ] + return [months[i:i+width] for i in range(0, len(months), width) ] def yeardayscalendar(self, year, width=3): """ @@ -246,9 +246,9 @@ class Calendar(object): """ months = [ self.monthdayscalendar(year, i) - for i in xrange(January, January+12) + for i in range(January, January+12) ] - return [months[i:i+width] for i in xrange(0, len(months), width) ] + return [months[i:i+width] for i in range(0, len(months), width) ] class TextCalendar(Calendar): @@ -341,7 +341,7 @@ class TextCalendar(Calendar): header = self.formatweekheader(w) for (i, row) in enumerate(self.yeardays2calendar(theyear, m)): # months in this row - months = xrange(m*i+1, min(m*(i+1)+1, 13)) + months = range(m*i+1, min(m*(i+1)+1, 13)) a('\n'*l) names = (self.formatmonthname(theyear, k, colwidth, False) for k in months) @@ -352,7 +352,7 @@ class TextCalendar(Calendar): a('\n'*l) # max number of weeks for this row height = max(len(cal) for cal in row) - for j in xrange(height): + for j in range(height): weeks = [] for cal in row: if j >= len(cal): @@ -444,9 +444,9 @@ class HTMLCalendar(Calendar): a('') a('\n') a('' % (width, theyear)) - for i in xrange(January, January+12, width): + for i in range(January, January+12, width): # months in this row - months = xrange(i, min(i+width, 13)) + months = range(i, min(i+width, 13)) a('') for m in months: a('
%s
') diff --git a/Lib/copy.py b/Lib/copy.py index fae57c2..cba83c1 100644 --- a/Lib/copy.py +++ b/Lib/copy.py @@ -100,7 +100,7 @@ _copy_dispatch = d = {} def _copy_immutable(x): return x for t in (type(None), int, float, bool, str, tuple, - frozenset, type, xrange, types.ClassType, + frozenset, type, range, types.ClassType, types.BuiltinFunctionType, types.FunctionType): d[t] = _copy_immutable @@ -194,7 +194,7 @@ try: except AttributeError: pass d[type] = _deepcopy_atomic -d[xrange] = _deepcopy_atomic +d[range] = _deepcopy_atomic d[types.ClassType] = _deepcopy_atomic d[types.BuiltinFunctionType] = _deepcopy_atomic d[types.FunctionType] = _deepcopy_atomic diff --git a/Lib/ctypes/test/test_arrays.py b/Lib/ctypes/test/test_arrays.py index c812ff6..e94e9bd 100644 --- a/Lib/ctypes/test/test_arrays.py +++ b/Lib/ctypes/test/test_arrays.py @@ -11,7 +11,7 @@ class ArrayTestCase(unittest.TestCase): # create classes holding simple numeric types, and check # various properties. - init = range(15, 25) + init = list(range(15, 25)) for fmt in formats: alen = len(init) @@ -27,7 +27,7 @@ class ArrayTestCase(unittest.TestCase): # change the items from operator import setitem - new_values = range(42, 42+alen) + new_values = list(range(42, 42+alen)) [setitem(ia, n, new_values[n]) for n in range(alen)] values = [ia[i] for i in range(len(init))] self.failUnlessEqual(values, new_values) diff --git a/Lib/ctypes/test/test_slicing.py b/Lib/ctypes/test/test_slicing.py index 54fbfaa..8e43a39 100644 --- a/Lib/ctypes/test/test_slicing.py +++ b/Lib/ctypes/test/test_slicing.py @@ -5,8 +5,8 @@ import _ctypes_test class SlicesTestCase(unittest.TestCase): def test_getslice_cint(self): - a = (c_int * 100)(*xrange(1100, 1200)) - b = range(1100, 1200) + a = (c_int * 100)(*range(1100, 1200)) + b = list(range(1100, 1200)) self.failUnlessEqual(a[0:2], b[0:2]) self.failUnlessEqual(len(a), len(b)) self.failUnlessEqual(a[5:7], b[5:7]) @@ -14,14 +14,14 @@ class SlicesTestCase(unittest.TestCase): self.failUnlessEqual(a[:], b[:]) a[0:5] = range(5, 10) - self.failUnlessEqual(a[0:5], range(5, 10)) + self.failUnlessEqual(a[0:5], list(range(5, 10))) def test_setslice_cint(self): - a = (c_int * 100)(*xrange(1100, 1200)) - b = range(1100, 1200) + a = (c_int * 100)(*range(1100, 1200)) + b = list(range(1100, 1200)) - a[32:47] = range(32, 47) - self.failUnlessEqual(a[32:47], range(32, 47)) + a[32:47] = list(range(32, 47)) + self.failUnlessEqual(a[32:47], list(range(32, 47))) from operator import setslice @@ -50,7 +50,7 @@ class SlicesTestCase(unittest.TestCase): dll.my_strdup.restype = POINTER(c_byte) res = dll.my_strdup(s) - self.failUnlessEqual(res[:len(s)], range(ord("a"), ord("z")+1)) + self.failUnlessEqual(res[:len(s)], list(range(ord("a"), ord("z")+1))) dll.my_free(res) def test_char_ptr_with_free(self): @@ -111,7 +111,8 @@ class SlicesTestCase(unittest.TestCase): else: return res = dll.my_wcsdup(s) - self.failUnlessEqual(res[:len(s)-1], range(ord("a"), ord("z")+1)) + self.failUnlessEqual(res[:len(s)-1], + list(range(ord("a"), ord("z")+1))) dll.my_free(res) ################################################################ diff --git a/Lib/difflib.py b/Lib/difflib.py index 5b42d07..601479c 100644 --- a/Lib/difflib.py +++ b/Lib/difflib.py @@ -407,7 +407,7 @@ class SequenceMatcher: # junk-free match ending with a[i-1] and b[j] j2len = {} nothing = [] - for i in xrange(alo, ahi): + for i in range(alo, ahi): # look at all instances of a[i] in b; note that because # b2j has no junk keys, the loop is skipped if a[i] is junk j2lenget = j2len.get @@ -921,7 +921,7 @@ class Differ: def _dump(self, tag, x, lo, hi): """Generate comparison results for a same-tagged range.""" - for i in xrange(lo, hi): + for i in range(lo, hi): yield '%s %s' % (tag, x[i]) def _plain_replace(self, a, alo, ahi, b, blo, bhi): @@ -967,10 +967,10 @@ class Differ: # search for the pair that matches best without being identical # (identical lines must be junk lines, & we don't want to synch up # on junk -- unless we have to) - for j in xrange(blo, bhi): + for j in range(blo, bhi): bj = b[j] cruncher.set_seq2(bj) - for i in xrange(alo, ahi): + for i in range(alo, ahi): ai = a[i] if ai == bj: if eqi is None: diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py index cc92e96..a6543ba 100644 --- a/Lib/distutils/command/install.py +++ b/Lib/distutils/command/install.py @@ -517,7 +517,7 @@ class install (Command): outputs = self.get_outputs() if self.root: # strip any package prefix root_len = len(self.root) - for counter in xrange(len(outputs)): + for counter in range(len(outputs)): outputs[counter] = outputs[counter][root_len:] self.execute(write_file, (self.record, outputs), diff --git a/Lib/doctest.py b/Lib/doctest.py index cb29fcb..bd7a918 100644 --- a/Lib/doctest.py +++ b/Lib/doctest.py @@ -2610,14 +2610,14 @@ __test__ = {"_TestClass": _TestClass, "ellipsis": r""" If the ellipsis flag is used, then '...' can be used to elide substrings in the desired output: - >>> print(range(1000)) #doctest: +ELLIPSIS + >>> print(list(range(1000))) #doctest: +ELLIPSIS [0, 1, 2, ..., 999] """, "whitespace normalization": r""" If the whitespace normalization flag is used, then differences in whitespace are ignored. - >>> print(range(30)) #doctest: +NORMALIZE_WHITESPACE + >>> print(list(range(30))) #doctest: +NORMALIZE_WHITESPACE [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29] diff --git a/Lib/genericpath.py b/Lib/genericpath.py index e2bc7da..ef8ea7f 100644 --- a/Lib/genericpath.py +++ b/Lib/genericpath.py @@ -71,7 +71,7 @@ def commonprefix(m): s1 = min(m) s2 = max(m) n = min(len(s1), len(s2)) - for i in xrange(n): + for i in range(n): if s1[i] != s2[i]: return s1[:i] return s1[:n] diff --git a/Lib/gettext.py b/Lib/gettext.py index ffe4824..311e923 100644 --- a/Lib/gettext.py +++ b/Lib/gettext.py @@ -281,7 +281,7 @@ class GNUTranslations(NullTranslations): raise IOError(0, 'Bad magic number', filename) # Now put all messages from the .mo file buffer into the catalog # dictionary. - for i in xrange(0, msgcount): + for i in range(0, msgcount): mlen, moff = unpack(ii, buf[masteridx:masteridx+8]) mend = moff + mlen tlen, toff = unpack(ii, buf[transidx:transidx+8]) diff --git a/Lib/heapq.py b/Lib/heapq.py index d34ea3b..f64d8ba 100644 --- a/Lib/heapq.py +++ b/Lib/heapq.py @@ -173,7 +173,7 @@ def heapify(x): # or i < (n-1)/2. If n is even = 2*j, this is (2*j-1)/2 = j-1/2 so # j-1 is the largest, which is n//2 - 1. If n is odd = 2*j+1, this is # (2*j+1-1)/2 = j so j-1 is the largest, and that's again n//2-1. - for i in reversed(xrange(n//2)): + for i in reversed(range(n//2)): _siftup(x, i) def nlargest(n, iterable): diff --git a/Lib/hmac.py b/Lib/hmac.py index 88c3fd5..52af590 100644 --- a/Lib/hmac.py +++ b/Lib/hmac.py @@ -3,8 +3,8 @@ Implements the HMAC algorithm as described by RFC 2104. """ -trans_5C = "".join ([chr (x ^ 0x5C) for x in xrange(256)]) -trans_36 = "".join ([chr (x ^ 0x36) for x in xrange(256)]) +trans_5C = "".join ([chr (x ^ 0x5C) for x in range(256)]) +trans_36 = "".join ([chr (x ^ 0x36) for x in range(256)]) # The size of the digests returned by HMAC depends on the underlying # hashing module used. Use digest_size from the instance of HMAC instead. diff --git a/Lib/idlelib/CodeContext.py b/Lib/idlelib/CodeContext.py index 420ec33..2037d6f 100644 --- a/Lib/idlelib/CodeContext.py +++ b/Lib/idlelib/CodeContext.py @@ -117,7 +117,7 @@ class CodeContext: lastindent = INFINITY # For a line to be interesting, it must begin with a block opening # keyword, and have less indentation than lastindent. - for linenum in xrange(new_topvisible, stopline-1, -1): + for linenum in range(new_topvisible, stopline-1, -1): indent, text, opener = self.get_line_info(linenum) if indent < lastindent: lastindent = indent diff --git a/Lib/mhlib.py b/Lib/mhlib.py index 64aa6f7..cbe8cb1 100644 --- a/Lib/mhlib.py +++ b/Lib/mhlib.py @@ -828,7 +828,7 @@ class IntSet: def tolist(self): l = [] for lo, hi in self.pairs: - m = range(lo, hi+1) + m = list(range(lo, hi+1)) l = l + m return l diff --git a/Lib/pickle.py b/Lib/pickle.py index 6b33514..675fa1f 100644 --- a/Lib/pickle.py +++ b/Lib/pickle.py @@ -604,7 +604,7 @@ class Pickler: write(APPEND) return - r = xrange(self._BATCHSIZE) + r = range(self._BATCHSIZE) while items is not None: tmp = [] for i in r: @@ -652,7 +652,7 @@ class Pickler: write(SETITEM) return - r = xrange(self._BATCHSIZE) + r = range(self._BATCHSIZE) while items is not None: tmp = [] for i in r: diff --git a/Lib/plat-mac/EasyDialogs.py b/Lib/plat-mac/EasyDialogs.py index dfed24f..e33b24e 100644 --- a/Lib/plat-mac/EasyDialogs.py +++ b/Lib/plat-mac/EasyDialogs.py @@ -814,11 +814,11 @@ def test(): try: if hasattr(MacOS, 'SchedParams'): appsw = MacOS.SchedParams(1, 0) - for i in xrange(20): + for i in range(20): bar.inc() time.sleep(0.05) bar.set(0,100) - for i in xrange(100): + for i in range(100): bar.set(i) time.sleep(0.05) if i % 10 == 0: diff --git a/Lib/plat-mac/applesingle.py b/Lib/plat-mac/applesingle.py index 2e0e967..d29ad23 100644 --- a/Lib/plat-mac/applesingle.py +++ b/Lib/plat-mac/applesingle.py @@ -60,7 +60,7 @@ class AppleSingle(object): raise Error, "Unknown AppleSingle version number 0x%8.8x" % (version,) if nentry <= 0: raise Error, "AppleSingle file contains no forks" - headers = [fileobj.read(AS_ENTRY_LENGTH) for i in xrange(nentry)] + headers = [fileobj.read(AS_ENTRY_LENGTH) for i in range(nentry)] self.forks = [] for hdr in headers: try: diff --git a/Lib/plat-riscos/riscospath.py b/Lib/plat-riscos/riscospath.py index af89eb3..b9d1062 100644 --- a/Lib/plat-riscos/riscospath.py +++ b/Lib/plat-riscos/riscospath.py @@ -174,7 +174,7 @@ def commonprefix(m): s1 = min(m) s2 = max(m) n = min(len(s1), len(s2)) - for i in xrange(n): + for i in range(n): if s1[i] != s2[i]: return s1[:i] return s1[:n] diff --git a/Lib/popen2.py b/Lib/popen2.py index ab30463..6c5cd61 100644 --- a/Lib/popen2.py +++ b/Lib/popen2.py @@ -79,7 +79,7 @@ class Popen3: def _run_child(self, cmd): if isinstance(cmd, basestring): cmd = ['/bin/sh', '-c', cmd] - for i in xrange(3, MAXFD): + for i in range(3, MAXFD): try: os.close(i) except OSError: diff --git a/Lib/pydoc.py b/Lib/pydoc.py index 6a272ce..5e91ad2 100755 --- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -1582,7 +1582,7 @@ class Helper: 'INTEGER': ('ref/integers', 'int range'), 'FLOAT': ('ref/floating', 'float math'), 'COMPLEX': ('ref/imaginary', 'complex cmath'), - 'SEQUENCES': ('lib/typesseq', 'STRINGMETHODS FORMATTING xrange LISTS'), + 'SEQUENCES': ('lib/typesseq', 'STRINGMETHODS FORMATTING range LISTS'), 'MAPPINGS': 'DICTIONARIES', 'FUNCTIONS': ('lib/typesfunctions', 'def TYPES'), 'METHODS': ('lib/typesmethods', 'class def CLASSES TYPES'), diff --git a/Lib/random.py b/Lib/random.py index 99ae750..075c3b7 100644 --- a/Lib/random.py +++ b/Lib/random.py @@ -256,7 +256,7 @@ class Random(_random.Random): if random is None: random = self.random - for i in reversed(xrange(1, len(x))): + for i in reversed(range(1, len(x))): # pick an element in x[:i+1] with which to exchange x[i] j = int(random() * (i+1)) x[i], x[j] = x[j], x[i] @@ -274,9 +274,9 @@ class Random(_random.Random): population contains repeats, then each occurrence is a possible selection in the sample. - To choose a sample in a range of integers, use xrange as an argument. + To choose a sample in a range of integers, use range as an argument. This is especially fast and space efficient for sampling from a - large population: sample(xrange(10000000), 60) + large population: sample(range(10000000), 60) """ # XXX Although the documentation says `population` is "a sequence", @@ -311,7 +311,7 @@ class Random(_random.Random): # An n-length list is smaller than a k-length set, or this is a # mapping type so the other algorithm wouldn't work. pool = list(population) - for i in xrange(k): # invariant: non-selected at [0,n-i) + for i in range(k): # invariant: non-selected at [0,n-i) j = _int(random() * (n-i)) result[i] = pool[j] pool[j] = pool[n-i-1] # move non-selected item into vacancy @@ -319,7 +319,7 @@ class Random(_random.Random): try: selected = set() selected_add = selected.add - for i in xrange(k): + for i in range(k): j = _int(random() * n) while j in selected: j = _int(random() * n) diff --git a/Lib/sqlite3/test/regression.py b/Lib/sqlite3/test/regression.py index addedb1..df2a6fb 100644 --- a/Lib/sqlite3/test/regression.py +++ b/Lib/sqlite3/test/regression.py @@ -51,10 +51,10 @@ class RegressionTests(unittest.TestCase): # reset before a rollback, but only those that are still in the # statement cache. The others are not accessible from the connection object. con = sqlite.connect(":memory:", cached_statements=5) - cursors = [con.cursor() for x in xrange(5)] + cursors = [con.cursor() for x in range(5)] cursors[0].execute("create table test(x)") for i in range(10): - cursors[0].executemany("insert into test(x) values (?)", [(x,) for x in xrange(10)]) + cursors[0].executemany("insert into test(x) values (?)", [(x,) for x in range(10)]) for i in range(5): cursors[i].execute(" " * i + "select x from test") diff --git a/Lib/sre_compile.py b/Lib/sre_compile.py index 4f2fb04..6b28052 100644 --- a/Lib/sre_compile.py +++ b/Lib/sre_compile.py @@ -318,7 +318,7 @@ def _optimize_unicode(charset, fixup): elif op is LITERAL: charmap[fixup(av)] = 1 elif op is RANGE: - for i in xrange(fixup(av[0]), fixup(av[1])+1): + for i in range(fixup(av[0]), fixup(av[1])+1): charmap[i] = 1 elif op is CATEGORY: # XXX: could expand category @@ -330,13 +330,13 @@ def _optimize_unicode(charset, fixup): if sys.maxunicode != 65535: # XXX: negation does not work with big charsets return charset - for i in xrange(65536): + for i in range(65536): charmap[i] = not charmap[i] comps = {} mapping = [0]*256 block = 0 data = [] - for i in xrange(256): + for i in range(256): chunk = tuple(charmap[i*256:(i+1)*256]) new = comps.setdefault(chunk, block) mapping[i] = new @@ -461,7 +461,7 @@ def _compile_info(code, pattern, flags): code.extend(prefix) # generate overlap table table = [-1] + ([0]*len(prefix)) - for i in xrange(len(prefix)): + for i in range(len(prefix)): table[i+1] = table[i]+1 while table[i+1] > 0 and prefix[i] != prefix[table[i+1]-1]: table[i+1] = table[table[i+1]-1]+1 diff --git a/Lib/string.py b/Lib/string.py index e5b5284..2bf4995 100644 --- a/Lib/string.py +++ b/Lib/string.py @@ -30,7 +30,7 @@ printable = digits + letters + punctuation + whitespace # Case conversion helpers # Use str to convert Unicode literal in case of -U -l = map(chr, xrange(256)) +l = map(chr, range(256)) _idmap = str('').join(l) del l diff --git a/Lib/stringprep.py b/Lib/stringprep.py index 5dbf91a..44ecdb2 100644 --- a/Lib/stringprep.py +++ b/Lib/stringprep.py @@ -16,7 +16,7 @@ def in_table_a1(code): return (c & 0xFFFF) not in (0xFFFE, 0xFFFF) -b1_set = set([173, 847, 6150, 6155, 6156, 6157, 8203, 8204, 8205, 8288, 65279] + range(65024,65040)) +b1_set = set([173, 847, 6150, 6155, 6156, 6157, 8203, 8204, 8205, 8288, 65279] + list(range(65024,65040))) def in_table_b1(code): return ord(code) in b1_set @@ -217,7 +217,7 @@ def in_table_c11_c12(code): def in_table_c21(code): return ord(code) < 128 and unicodedata.category(code) == "Cc" -c22_specials = set([1757, 1807, 6158, 8204, 8205, 8232, 8233, 65279] + range(8288,8292) + range(8298,8304) + range(65529,65533) + range(119155,119163)) +c22_specials = set([1757, 1807, 6158, 8204, 8205, 8232, 8233, 65279] + list(range(8288,8292)) + list(range(8298,8304)) + list(range(65529,65533)) + list(range(119155,119163))) def in_table_c22(code): c = ord(code) if c < 128: return False @@ -254,12 +254,12 @@ def in_table_c7(code): return ord(code) in c7_set -c8_set = set([832, 833, 8206, 8207] + range(8234,8239) + range(8298,8304)) +c8_set = set([832, 833, 8206, 8207] + list(range(8234,8239)) + list(range(8298,8304))) def in_table_c8(code): return ord(code) in c8_set -c9_set = set([917505] + range(917536,917632)) +c9_set = set([917505] + list(range(917536,917632))) def in_table_c9(code): return ord(code) in c9_set diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 363c827..53d5db0 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -969,7 +969,7 @@ class Popen(object): def _close_fds(self, but): - for i in xrange(3, MAXFD): + for i in range(3, MAXFD): if i == but: continue try: diff --git a/Lib/tarfile.py b/Lib/tarfile.py index 3eb7704..36bdfa6 100644 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -188,7 +188,7 @@ def nti(s): raise HeaderError("invalid header") else: n = 0 - for i in xrange(len(s) - 1): + for i in range(len(s) - 1): n <<= 8 n += ord(s[i + 1]) return n @@ -214,7 +214,7 @@ def itn(n, digits=8, format=DEFAULT_FORMAT): n = struct.unpack("L", struct.pack("l", n))[0] s = "" - for i in xrange(digits - 1): + for i in range(digits - 1): s = chr(n & 0377) + s n >>= 8 s = chr(0200) + s @@ -245,7 +245,7 @@ def copyfileobj(src, dst, length=None): BUFSIZE = 16 * 1024 blocks, remainder = divmod(length, BUFSIZE) - for b in xrange(blocks): + for b in range(blocks): buf = src.read(BUFSIZE) if len(buf) < BUFSIZE: raise IOError("end of file reached") @@ -514,7 +514,7 @@ class _Stream: """ if pos - self.pos >= 0: blocks, remainder = divmod(pos - self.pos, self.bufsize) - for i in xrange(blocks): + for i in range(blocks): self.read(self.bufsize) self.read(remainder) else: @@ -1297,7 +1297,7 @@ class TarInfo(object): realpos = 0 # There are 4 possible sparse structs in the # first header. - for i in xrange(4): + for i in range(4): try: offset = nti(buf[pos:pos + 12]) numbytes = nti(buf[pos + 12:pos + 24]) @@ -1318,7 +1318,7 @@ class TarInfo(object): while isextended == 1: buf = tarfile.fileobj.read(BLOCKSIZE) pos = 0 - for i in xrange(21): + for i in range(21): try: offset = nti(buf[pos:pos + 12]) numbytes = nti(buf[pos + 12:pos + 24]) @@ -2304,7 +2304,7 @@ class TarFile(object): else: end = members.index(tarinfo) - for i in xrange(end - 1, -1, -1): + for i in range(end - 1, -1, -1): if name == members[i].name: return members[i] diff --git a/Lib/tempfile.py b/Lib/tempfile.py index b63a46a..bcd9189 100644 --- a/Lib/tempfile.py +++ b/Lib/tempfile.py @@ -196,7 +196,7 @@ def _get_default_tempdir(): if dir != _os.curdir: dir = _os.path.normcase(_os.path.abspath(dir)) # Try only a few names per directory. - for seq in xrange(100): + for seq in range(100): name = next(namer) filename = _os.path.join(dir, name) try: @@ -235,7 +235,7 @@ def _mkstemp_inner(dir, pre, suf, flags): names = _get_candidate_names() - for seq in xrange(TMP_MAX): + for seq in range(TMP_MAX): name = next(names) file = _os.path.join(dir, pre + name + suf) try: @@ -327,7 +327,7 @@ def mkdtemp(suffix="", prefix=template, dir=None): names = _get_candidate_names() - for seq in xrange(TMP_MAX): + for seq in range(TMP_MAX): name = next(names) file = _os.path.join(dir, prefix + name + suffix) try: @@ -362,7 +362,7 @@ def mktemp(suffix="", prefix=template, dir=None): dir = gettempdir() names = _get_candidate_names() - for seq in xrange(TMP_MAX): + for seq in range(TMP_MAX): name = next(names) file = _os.path.join(dir, prefix + name + suffix) if not _exists(file): diff --git a/Lib/test/fork_wait.py b/Lib/test/fork_wait.py index 9c4df4b..3b222a8 100644 --- a/Lib/test/fork_wait.py +++ b/Lib/test/fork_wait.py @@ -52,7 +52,7 @@ class ForkWait(unittest.TestCase): time.sleep(LONGSLEEP) a = sorted(self.alive.keys()) - self.assertEquals(a, range(NUM_THREADS)) + self.assertEquals(a, list(range(NUM_THREADS))) prefork_lives = self.alive.copy() diff --git a/Lib/test/list_tests.py b/Lib/test/list_tests.py index ad10523..a5790c3 100644 --- a/Lib/test/list_tests.py +++ b/Lib/test/list_tests.py @@ -47,9 +47,9 @@ class CommonTest(seq_tests.CommonTest): self.assertEqual(repr(a2), "[0, 1, 2, [...], 3]") def test_print(self): - d = self.type2test(xrange(200)) + d = self.type2test(range(200)) d.append(d) - d.extend(xrange(200,400)) + d.extend(range(200,400)) d.append(d) d.append(400) try: @@ -398,7 +398,7 @@ class CommonTest(seq_tests.CommonTest): del self.victim[:] return False a = self.type2test() - a[:] = [EvilCmp(a) for _ in xrange(100)] + a[:] = [EvilCmp(a) for _ in range(100)] # This used to seg fault before patch #1005778 self.assertRaises(ValueError, a.index, None) diff --git a/Lib/test/output/test_cProfile b/Lib/test/output/test_cProfile index 973f47a..30d53b4 100644 --- a/Lib/test/output/test_cProfile +++ b/Lib/test/output/test_cProfile @@ -1,5 +1,5 @@ test_cProfile - 127 function calls (107 primitive calls) in 1.000 CPU seconds + 119 function calls (99 primitive calls) in 1.000 CPU seconds Ordered by: standard name @@ -18,7 +18,6 @@ test_cProfile 12 0.000 0.000 0.012 0.001 {hasattr} 4 0.000 0.000 0.000 0.000 {method 'append' of 'list' objects} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} - 8 0.000 0.000 0.000 0.000 {range} 4 0.000 0.000 0.000 0.000 {sys.exc_info} @@ -28,7 +27,6 @@ Function called... ncalls tottime cumtime :1() -> 1 0.270 1.000 test_cProfile.py:30(testfunc) test_cProfile.py:103(subhelper) -> 16 0.016 0.016 test_cProfile.py:115(__getattr__) - 8 0.000 0.000 {range} test_cProfile.py:115(__getattr__) -> test_cProfile.py:30(testfunc) -> 1 0.014 0.130 test_cProfile.py:40(factorial) 2 0.040 0.600 test_cProfile.py:60(helper) @@ -49,7 +47,6 @@ test_cProfile.py:93(helper2) -> 8 0.064 0.080 {hasattr} -> 12 0.012 0.012 test_cProfile.py:115(__getattr__) {method 'append' of 'list' objects} -> {method 'disable' of '_lsprof.Profiler' objects} -> -{range} -> {sys.exc_info} -> @@ -76,7 +73,6 @@ test_cProfile.py:93(helper2) <- 6 0.234 0.300 8 0.000 0.008 test_cProfile.py:93(helper2) {method 'append' of 'list' objects} <- 4 0.000 0.000 test_cProfile.py:78(helper1) {method 'disable' of '_lsprof.Profiler' objects} <- -{range} <- 8 0.000 0.000 test_cProfile.py:103(subhelper) {sys.exc_info} <- 4 0.000 0.000 test_cProfile.py:78(helper1) diff --git a/Lib/test/output/test_profile b/Lib/test/output/test_profile index 6f82ee4..cecc8c0 100644 --- a/Lib/test/output/test_profile +++ b/Lib/test/output/test_profile @@ -1,5 +1,5 @@ test_profile - 128 function calls (108 primitive calls) in 1.000 CPU seconds + 120 function calls (100 primitive calls) in 1.000 CPU seconds Ordered by: standard name @@ -8,7 +8,6 @@ test_profile 4 0.000 0.000 0.000 0.000 :0(exc_info) 1 0.000 0.000 1.000 1.000 :0(exec) 12 0.000 0.000 0.012 0.001 :0(hasattr) - 8 0.000 0.000 0.000 0.000 :0(range) 1 0.000 0.000 0.000 0.000 :0(setprofile) 1 0.000 0.000 1.000 1.000 :1() 0 0.000 0.000 profile:0(profiler) @@ -31,14 +30,12 @@ Function called... :0(exc_info) -> :0(exec) -> :1()(1) 1.000 :0(hasattr) -> test_profile.py:115(__getattr__)(12) 0.028 -:0(range) -> :0(setprofile) -> :1() -> test_profile.py:30(testfunc)(1) 1.000 profile:0(profiler) -> profile:0(testfunc())(1) 1.000 profile:0(testfunc()) -> :0(exec)(1) 1.000 :0(setprofile)(1) 0.000 -test_profile.py:103(subhelper) -> :0(range)(8) 0.000 - test_profile.py:115(__getattr__)(16) 0.028 +test_profile.py:103(subhelper) -> test_profile.py:115(__getattr__)(16) 0.028 test_profile.py:115(__getattr__) -> test_profile.py:30(testfunc) -> test_profile.py:40(factorial)(1) 0.170 test_profile.py:60(helper)(2) 0.600 @@ -65,7 +62,6 @@ Function was called by... :0(exec) <- profile:0(testfunc())(1) 1.000 :0(hasattr) <- test_profile.py:78(helper1)(4) 0.120 test_profile.py:93(helper2)(8) 0.400 -:0(range) <- test_profile.py:103(subhelper)(8) 0.080 :0(setprofile) <- profile:0(testfunc())(1) 1.000 :1() <- :0(exec)(1) 1.000 profile:0(profiler) <- diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py index 4cd9073..5d84eff 100644 --- a/Lib/test/pickletester.py +++ b/Lib/test/pickletester.py @@ -745,7 +745,7 @@ class AbstractPickleTests(unittest.TestCase): def test_list_chunking(self): n = 10 # too small to chunk - x = range(n) + x = list(range(n)) for proto in protocols: s = self.dumps(x, proto) y = self.loads(s) @@ -754,7 +754,7 @@ class AbstractPickleTests(unittest.TestCase): self.assertEqual(num_appends, proto > 0) n = 2500 # expect at least two chunks when proto > 0 - x = range(n) + x = list(range(n)) for proto in protocols: s = self.dumps(x, proto) y = self.loads(s) @@ -991,7 +991,7 @@ class AbstractPersistentPicklerTests(unittest.TestCase): def test_persistence(self): self.id_count = 0 self.load_count = 0 - L = range(10) + L = list(range(10)) self.assertEqual(self.loads(self.dumps(L)), L) self.assertEqual(self.id_count, 5) self.assertEqual(self.load_count, 5) @@ -999,7 +999,7 @@ class AbstractPersistentPicklerTests(unittest.TestCase): def test_bin_persistence(self): self.id_count = 0 self.load_count = 0 - L = range(10) + L = list(range(10)) self.assertEqual(self.loads(self.dumps(L, 1)), L) self.assertEqual(self.id_count, 5) self.assertEqual(self.load_count, 5) diff --git a/Lib/test/seq_tests.py b/Lib/test/seq_tests.py index d4e72e1..6ec03e8 100644 --- a/Lib/test/seq_tests.py +++ b/Lib/test/seq_tests.py @@ -120,7 +120,7 @@ class CommonTest(unittest.TestCase): self.assertEqual(len(vv), len(s)) # Create from various iteratables - for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): + for s in ("123", "", range(1000), ('do', 1.2), range(2000,2200,5)): for g in (Sequence, IterFunc, IterGen, itermulti, iterfunc): self.assertEqual(self.type2test(g(s)), self.type2test(s)) @@ -136,10 +136,10 @@ class CommonTest(unittest.TestCase): def test_getitem(self): u = self.type2test([0, 1, 2, 3, 4]) - for i in xrange(len(u)): + for i in range(len(u)): self.assertEqual(u[i], i) self.assertEqual(u[int(i)], i) - for i in xrange(-len(u), -1): + for i in range(-len(u), -1): self.assertEqual(u[i], len(u)+i) self.assertEqual(u[int(i)], len(u)+i) self.assertRaises(IndexError, u.__getitem__, -len(u)-1) @@ -299,9 +299,9 @@ class CommonTest(unittest.TestCase): self.assertEqual(next(iter(T((1,2)))), 1) def test_repeat(self): - for m in xrange(4): + for m in range(4): s = tuple(range(m)) - for n in xrange(-3, 5): + for n in range(-3, 5): self.assertEqual(self.type2test(s*n), self.type2test(s)*n) self.assertEqual(self.type2test(s)*(-4), self.type2test([])) self.assertEqual(id(s), id(s*1)) diff --git a/Lib/test/sortperf.py b/Lib/test/sortperf.py index 205ff87..44fc1b0 100644 --- a/Lib/test/sortperf.py +++ b/Lib/test/sortperf.py @@ -24,7 +24,7 @@ def randfloats(n): fp = open(fn, "rb") except IOError: r = random.random - result = [r() for i in xrange(n)] + result = [r() for i in range(n)] try: try: fp = open(fn, "wb") @@ -108,7 +108,7 @@ def tabulate(r): doit(L) # +sort # Replace 1% of the elements at random. - for dummy in xrange(n // 100): + for dummy in range(n // 100): L[random.randrange(n)] = random.random() doit(L) # %sort diff --git a/Lib/test/string_tests.py b/Lib/test/string_tests.py index f169fde..b1b64a8 100644 --- a/Lib/test/string_tests.py +++ b/Lib/test/string_tests.py @@ -112,9 +112,9 @@ class BaseTest(unittest.TestCase): digits = 7 base = len(charset) teststrings = set() - for i in xrange(base ** digits): + for i in range(base ** digits): entry = [] - for j in xrange(digits): + for j in range(digits): i, m = divmod(i, base) entry.append(charset[m]) teststrings.add(''.join(entry)) @@ -151,9 +151,9 @@ class BaseTest(unittest.TestCase): digits = 5 base = len(charset) teststrings = set() - for i in xrange(base ** digits): + for i in range(base ** digits): entry = [] - for j in xrange(digits): + for j in range(digits): i, m = divmod(i, base) entry.append(charset[m]) teststrings.add(''.join(entry)) @@ -1006,10 +1006,10 @@ class MixinStrUnicodeUserStringTest: def test_floatformatting(self): # float formatting - for prec in xrange(100): + for prec in range(100): format = '%%.%if' % prec value = 0.01 - for x in xrange(60): + for x in range(60): value = value * 3.141592655 / 3.0 * 10.0 # The formatfloat() code in stringobject.c and # unicodeobject.c uses a 120 byte buffer and switches from @@ -1076,7 +1076,7 @@ class MixinStrStringUserStringTest: def test_maketrans(self): self.assertEqual( - ''.join(map(chr, xrange(256))).replace('abc', 'xyz'), + ''.join(map(chr, range(256))).replace('abc', 'xyz'), string.maketrans('abc', 'xyz') ) self.assertRaises(ValueError, string.maketrans, 'abc', 'xyzw') diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py index 5278f23..3f8df52 100755 --- a/Lib/test/test_array.py +++ b/Lib/test/test_array.py @@ -836,7 +836,7 @@ class NumberTest(BaseTest): def test_iterationcontains(self): a = array.array(self.typecode, range(10)) - self.assertEqual(list(a), range(10)) + self.assertEqual(list(a), list(range(10))) b = array.array(self.typecode, [20]) self.assertEqual(a[-1] in a, True) self.assertEqual(b[0] not in a, True) @@ -985,7 +985,7 @@ def test_main(verbose=None): if verbose and hasattr(sys, "gettotalrefcount"): import gc counts = [None] * 5 - for i in xrange(len(counts)): + for i in range(len(counts)): test_support.run_unittest(*tests) gc.collect() counts[i] = sys.gettotalrefcount() diff --git a/Lib/test/test_binascii.py b/Lib/test/test_binascii.py index f16258e..6a295e9 100755 --- a/Lib/test/test_binascii.py +++ b/Lib/test/test_binascii.py @@ -9,7 +9,7 @@ class BinASCIITest(unittest.TestCase): # Create binary test data data = "The quick brown fox jumps over the lazy dog.\r\n" # Be slow so we don't depend on other modules - data += "".join(map(chr, xrange(256))) + data += "".join(map(chr, range(256))) data += "\r\nHello world.\n" def test_exceptions(self): @@ -58,7 +58,7 @@ class BinASCIITest(unittest.TestCase): fillers = "" valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/" - for i in xrange(256): + for i in range(256): c = chr(i) if c not in valid: fillers += c diff --git a/Lib/test/test_bisect.py b/Lib/test/test_bisect.py index 1d62352..0baeb14 100644 --- a/Lib/test/test_bisect.py +++ b/Lib/test/test_bisect.py @@ -94,8 +94,8 @@ class TestBisect(unittest.TestCase): def test_random(self, n=25): from random import randrange - for i in xrange(n): - data = [randrange(0, n, 2) for j in xrange(i)] + for i in range(n): + data = [randrange(0, n, 2) for j in range(i)] data.sort() elem = randrange(-1, n+1) ip = bisect_left(data, elem) @@ -111,9 +111,9 @@ class TestBisect(unittest.TestCase): def test_optionalSlicing(self): for func, data, elem, expected in self.precomputedCases: - for lo in xrange(4): + for lo in range(4): lo = min(len(data), lo) - for hi in xrange(3,8): + for hi in range(3,8): hi = min(len(data), hi) ip = func(data, elem, lo, hi) self.failUnless(lo <= ip <= hi) @@ -147,7 +147,7 @@ class TestInsort(unittest.TestCase): def test_vsBuiltinSort(self, n=500): from random import choice for insorted in (list(), UserList()): - for i in xrange(n): + for i in range(n): digit = choice("0123456789") if digit in "02468": f = insort_left @@ -248,7 +248,7 @@ def test_main(verbose=None): if verbose and hasattr(sys, "gettotalrefcount"): import gc counts = [None] * 5 - for i in xrange(len(counts)): + for i in range(len(counts)): test_support.run_unittest(*test_classes) gc.collect() counts[i] = sys.gettotalrefcount() diff --git a/Lib/test/test_bsddb.py b/Lib/test/test_bsddb.py index 876a100..7413307 100755 --- a/Lib/test/test_bsddb.py +++ b/Lib/test/test_bsddb.py @@ -117,13 +117,13 @@ class TestBSDDB(unittest.TestCase): def test_first_next_looping(self): items = [self.f.first()] - for i in xrange(1, len(self.f)): + for i in range(1, len(self.f)): items.append(self.f.next()) self.assertSetEquals(items, self.d.items()) def test_previous_last_looping(self): items = [self.f.last()] - for i in xrange(1, len(self.f)): + for i in range(1, len(self.f)): items.append(self.f.previous()) self.assertSetEquals(items, self.d.items()) diff --git a/Lib/test/test_bufio.py b/Lib/test/test_bufio.py index 14a926a..c3a02d1 100644 --- a/Lib/test/test_bufio.py +++ b/Lib/test/test_bufio.py @@ -5,8 +5,8 @@ from test import test_support # the expected results. For best testing, run this under a debug-build # Python too (to exercise asserts in the C code). -lengths = range(1, 257) + [512, 1000, 1024, 2048, 4096, 8192, 10000, - 16384, 32768, 65536, 1000000] +lengths = list(range(1, 257)) + [512, 1000, 1024, 2048, 4096, 8192, 10000, + 16384, 32768, 65536, 1000000] class BufferSizeTest(unittest.TestCase): def try_one(self, s): diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index eae28b0..3ea8ffb 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -990,7 +990,7 @@ class BuiltinTest(unittest.TestCase): # thread for the details: # http://sources.redhat.com/ml/newlib/2002/msg00369.html - self.assertRaises(MemoryError, list, xrange(sys.maxint // 2)) + self.assertRaises(MemoryError, list, range(sys.maxint // 2)) # This code used to segfault in Py2.4a3 x = [] @@ -1454,38 +1454,39 @@ class BuiltinTest(unittest.TestCase): self.assertRaises(TypeError, pow) def test_range(self): - self.assertEqual(range(3), [0, 1, 2]) - self.assertEqual(range(1, 5), [1, 2, 3, 4]) - self.assertEqual(range(0), []) - self.assertEqual(range(-3), []) - self.assertEqual(range(1, 10, 3), [1, 4, 7]) - self.assertEqual(range(5, -5, -3), [5, 2, -1, -4]) - + self.assertEqual(list(range(3)), [0, 1, 2]) + self.assertEqual(list(range(1, 5)), [1, 2, 3, 4]) + self.assertEqual(list(range(0)), []) + self.assertEqual(list(range(-3)), []) + self.assertEqual(list(range(1, 10, 3)), [1, 4, 7]) + #self.assertEqual(list(range(5, -5, -3)), [5, 2, -1, -4]) + + """ XXX(nnorwitz): # Now test range() with longs - self.assertEqual(range(-2**100), []) - self.assertEqual(range(0, -2**100), []) - self.assertEqual(range(0, 2**100, -1), []) - self.assertEqual(range(0, 2**100, -1), []) + self.assertEqual(list(range(-2**100)), []) + self.assertEqual(list(range(0, -2**100)), []) + self.assertEqual(list(range(0, 2**100, -1)), []) + self.assertEqual(list(range(0, 2**100, -1)), []) a = int(10 * sys.maxint) b = int(100 * sys.maxint) c = int(50 * sys.maxint) - self.assertEqual(range(a, a+2), [a, a+1]) - self.assertEqual(range(a+2, a, -1), [a+2, a+1]) - self.assertEqual(range(a+4, a, -2), [a+4, a+2]) + self.assertEqual(list(range(a, a+2)), [a, a+1]) + self.assertEqual(list(range(a+2, a, -1)), [a+2, a+1]) + self.assertEqual(list(range(a+4, a, -2)), [a+4, a+2]) - seq = range(a, b, c) + seq = list(range(a, b, c)) self.assert_(a in seq) self.assert_(b not in seq) self.assertEqual(len(seq), 2) - seq = range(b, a, -c) + seq = list(range(b, a, -c)) self.assert_(b in seq) self.assert_(a not in seq) self.assertEqual(len(seq), 2) - seq = range(-a, -b, -c) + seq = list(range(-a, -b, -c)) self.assert_(-a in seq) self.assert_(-b not in seq) self.assertEqual(len(seq), 2) @@ -1502,6 +1503,7 @@ class BuiltinTest(unittest.TestCase): # XXX This won't (but should!) raise RuntimeError if a is an int... self.assertRaises(RuntimeError, range, a, a + 1, badzero(1)) + """ # Reject floats when it would require PyLongs to represent. # (smaller floats still accepted, but deprecated) @@ -1510,8 +1512,10 @@ class BuiltinTest(unittest.TestCase): self.assertRaises(TypeError, range, 0, "spam") self.assertRaises(TypeError, range, 0, 42, "spam") - self.assertRaises(OverflowError, range, -sys.maxint, sys.maxint) - self.assertRaises(OverflowError, range, 0, 2*sys.maxint) + #NEAL self.assertRaises(OverflowError, range, -sys.maxint, sys.maxint) + #NEAL self.assertRaises(OverflowError, range, 0, 2*sys.maxint) + + self.assertRaises(OverflowError, len, range(0, sys.maxint**10)) def test_input(self): self.write_testfile() @@ -1630,8 +1634,8 @@ class BuiltinTest(unittest.TestCase): def test_sum(self): self.assertEqual(sum([]), 0) - self.assertEqual(sum(range(2,8)), 27) - self.assertEqual(sum(iter(range(2,8))), 27) + self.assertEqual(sum(list(range(2,8))), 27) + self.assertEqual(sum(iter(list(range(2,8)))), 27) self.assertEqual(sum(Squares(10)), 285) self.assertEqual(sum(iter(Squares(10))), 285) self.assertEqual(sum([[1], [2], [3]], []), [1, 2, 3]) @@ -1728,7 +1732,7 @@ class BuiltinTest(unittest.TestCase): else: return i self.assertEqual( - list(zip(SequenceWithoutALength(), xrange(2**30))), + list(zip(SequenceWithoutALength(), range(2**30))), list(enumerate(range(5))) ) @@ -1743,7 +1747,7 @@ class BuiltinTest(unittest.TestCase): class TestSorted(unittest.TestCase): def test_basic(self): - data = range(100) + data = list(range(100)) copy = data[:] random.shuffle(copy) self.assertEqual(data, sorted(copy)) @@ -1788,7 +1792,7 @@ def test_main(verbose=None): if verbose and hasattr(sys, "gettotalrefcount"): import gc counts = [None] * 5 - for i in xrange(len(counts)): + for i in range(len(counts)): run_unittest(*test_classes) gc.collect() counts[i] = sys.gettotalrefcount() diff --git a/Lib/test/test_bz2.py b/Lib/test/test_bz2.py index 635c828..44684c3 100644 --- a/Lib/test/test_bz2.py +++ b/Lib/test/test_bz2.py @@ -230,7 +230,7 @@ class BZ2FileTest(BaseTest): def testOpenDel(self): # "Test opening and deleting a file many times" self.createTempFile() - for i in xrange(10000): + for i in range(10000): o = BZ2File(self.filename) del o diff --git a/Lib/test/test_calendar.py b/Lib/test/test_calendar.py index 893890d..8cbf5e0 100644 --- a/Lib/test/test_calendar.py +++ b/Lib/test/test_calendar.py @@ -260,7 +260,7 @@ class MonthCalendarTestCase(unittest.TestCase): def check_weeks(self, year, month, weeks): cal = calendar.monthcalendar(year, month) self.assertEqual(len(cal), len(weeks)) - for i in xrange(len(weeks)): + for i in range(len(weeks)): self.assertEqual(weeks[i], sum(day != 0 for day in cal[i])) diff --git a/Lib/test/test_codeccallbacks.py b/Lib/test/test_codeccallbacks.py index 5215b87..d980a4f 100644 --- a/Lib/test/test_codeccallbacks.py +++ b/Lib/test/test_codeccallbacks.py @@ -234,7 +234,7 @@ class CodecCallbackTest(unittest.TestCase): if not isinstance(exc, UnicodeEncodeError) \ and not isinstance(exc, UnicodeDecodeError): raise TypeError("don't know how to handle %r" % exc) - l = ["<%d>" % ord(exc.object[pos]) for pos in xrange(exc.start, exc.end)] + l = ["<%d>" % ord(exc.object[pos]) for pos in range(exc.start, exc.end)] return ("[%s]" % "".join(l), exc.end) codecs.register_error("test.handler1", handler1) @@ -242,7 +242,7 @@ class CodecCallbackTest(unittest.TestCase): def handler2(exc): if not isinstance(exc, UnicodeDecodeError): raise TypeError("don't know how to handle %r" % exc) - l = ["<%d>" % ord(exc.object[pos]) for pos in xrange(exc.start, exc.end)] + l = ["<%d>" % ord(exc.object[pos]) for pos in range(exc.start, exc.end)] return ("[%s]" % "".join(l), exc.end+1) # skip one character codecs.register_error("test.handler2", handler2) @@ -308,13 +308,13 @@ class CodecCallbackTest(unittest.TestCase): self.assertRaises(TypeError, exctype, *(args + ["too much"])) # check with one argument of the wrong type wrongargs = [ "spam", "eggs", 42, 1.0, None ] - for i in xrange(len(args)): + for i in range(len(args)): for wrongarg in wrongargs: if type(wrongarg) is type(args[i]): continue # build argument array callargs = [] - for j in xrange(len(args)): + for j in range(len(args)): if i==j: callargs.append(wrongarg) else: @@ -469,7 +469,7 @@ class CodecCallbackTest(unittest.TestCase): codecs.replace_errors, BadObjectUnicodeDecodeError() ) - # With the correct exception, "replace" returns an "?" or u"\ufffd" replacement + # With the correct exception, "replace" returns an "?" or "\ufffd" replacement self.assertEquals( codecs.replace_errors(UnicodeEncodeError("ascii", "\u3042", 0, 1, "ouch")), ("?", 1) diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py index 10e4c36..69f941d 100644 --- a/Lib/test/test_codecs.py +++ b/Lib/test/test_codecs.py @@ -25,7 +25,7 @@ class Queue(object): class MixInCheckStateHandling: def check_state_handling_decode(self, encoding, u, s): - for i in xrange(len(s)+1): + for i in range(len(s)+1): d = codecs.getincrementaldecoder(encoding)() part1 = d.decode(s[:i]) state = d.getstate() @@ -47,7 +47,7 @@ class MixInCheckStateHandling: self.assertEqual(u, part1+part2) def check_state_handling_encode(self, encoding, u, s): - for i in xrange(len(u)+1): + for i in range(len(u)+1): d = codecs.getincrementalencoder(encoding)() part1 = d.encode(u[:i]) state = d.getstate() @@ -135,17 +135,17 @@ class ReadTest(unittest.TestCase, MixInCheckStateHandling): # Test lines where the first read might end with \r, so the # reader has to look ahead whether this is a lone \r or a \r\n - for size in xrange(80): + for size in range(80): for lineend in "\n \r\n \r \u2028".split(): s = 10*(size*"a" + lineend + "xxx\n") reader = getreader(s) - for i in xrange(10): + for i in range(10): self.assertEqual( reader.readline(keepends=True), size*"a" + lineend, ) reader = getreader(s) - for i in xrange(10): + for i in range(10): self.assertEqual( reader.readline(keepends=False), size*"a", @@ -1251,7 +1251,7 @@ class BasicUnicodeTest(unittest.TestCase, MixInCheckStateHandling): if encoding in broken_unicode_with_streams: continue reader = codecs.getreader(encoding)(cStringIO.StringIO(s.encode(encoding))) - for t in xrange(5): + for t in range(5): # Test that calling seek resets the internal codec state and buffers reader.seek(0, 0) line = reader.readline() @@ -1319,7 +1319,7 @@ class CharmapTest(unittest.TestCase): ("ab", 3) ) - allbytes = bytes(xrange(256)) + allbytes = bytes(range(256)) self.assertEquals( codecs.charmap_decode(allbytes, "ignore", ""), ("", len(allbytes)) diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index 5cfe27c..213cca8 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -399,11 +399,11 @@ if 1: # is the max. Ensure the result of too many annotations is a # SyntaxError. s = "def f((%s)): pass" - s %= ', '.join('a%d:%d' % (i,i) for i in xrange(65535)) + s %= ', '.join('a%d:%d' % (i,i) for i in range(65535)) self.assertRaises(SyntaxError, compile, s, '?', 'exec') # Test that the max # of annotations compiles. s = "def f((%s)): pass" - s %= ', '.join('a%d:%d' % (i,i) for i in xrange(65534)) + s %= ', '.join('a%d:%d' % (i,i) for i in range(65534)) compile(s, '?', 'exec') def test_mangling(self): diff --git a/Lib/test/test_complex.py b/Lib/test/test_complex.py index 39520f1..43a57c8 100644 --- a/Lib/test/test_complex.py +++ b/Lib/test/test_complex.py @@ -64,7 +64,7 @@ class ComplexTest(unittest.TestCase): self.assertClose(q, x) def test_truediv(self): - simple_real = [float(i) for i in xrange(-5, 6)] + simple_real = [float(i) for i in range(-5, 6)] simple_complex = [complex(x, y) for x in simple_real for y in simple_real] for x in simple_complex: for y in simple_complex: @@ -76,7 +76,7 @@ class ComplexTest(unittest.TestCase): self.check_div(complex(1e-200, 1e-200), 1+0j) # Just for fun. - for i in xrange(100): + for i in range(100): self.check_div(complex(random(), random()), complex(random(), random())) @@ -158,7 +158,7 @@ class ComplexTest(unittest.TestCase): self.assertRaises(ValueError, pow, a, b, 0) def test_boolcontext(self): - for i in xrange(100): + for i in range(100): self.assert_(complex(random() + 1e-6, random() + 1e-6)) self.assert_(not complex(0.0, 0.0)) @@ -296,13 +296,13 @@ class ComplexTest(unittest.TestCase): self.assertRaises(TypeError, complex, complex2(1j)) def test_hash(self): - for x in xrange(-30, 30): + for x in range(-30, 30): self.assertEqual(hash(x), hash(complex(x, 0))) x /= 3.0 # now check against floating point self.assertEqual(hash(x), hash(complex(x, 0.))) def test_abs(self): - nums = [complex(x/3., y/7.) for x in xrange(-9,9) for y in xrange(-9,9)] + nums = [complex(x/3., y/7.) for x in range(-9,9) for y in range(-9,9)] for num in nums: self.assertAlmostEqual((num.real**2 + num.imag**2) ** 0.5, abs(num)) diff --git a/Lib/test/test_contains.py b/Lib/test/test_contains.py index c902421..f3287bf 100644 --- a/Lib/test/test_contains.py +++ b/Lib/test/test_contains.py @@ -86,7 +86,7 @@ if have_unicode: check(str('d') not in 'abc', "u'd' in 'abc'") # A collection of tests on builtin sequence types -a = range(10) +a = list(range(10)) for i in a: check(i in a, "%r not in %r" % (i, a)) check(16 not in a, "16 not in %r" % (a,)) @@ -105,7 +105,7 @@ class Deviant1: works when the list is modified during the check. """ - aList = range(15) + aList = list(range(15)) def __cmp__(self, other): if other == 12: diff --git a/Lib/test/test_copy.py b/Lib/test/test_copy.py index 4871007..dfdea84 100644 --- a/Lib/test/test_copy.py +++ b/Lib/test/test_copy.py @@ -84,7 +84,7 @@ class TestCopy(unittest.TestCase): pass tests = [None, 42, 2**100, 3.14, True, False, 1j, "hello", "hello\u1234", f.__code__, - NewStyle, xrange(10), Classic, max] + NewStyle, range(10), Classic, max] for x in tests: self.assert_(copy.copy(x) is x, repr(x)) @@ -257,7 +257,7 @@ class TestCopy(unittest.TestCase): pass tests = [None, 42, 2**100, 3.14, True, False, 1j, "hello", "hello\u1234", f.__code__, - NewStyle, xrange(10), Classic, max] + NewStyle, range(10), Classic, max] for x in tests: self.assert_(copy.deepcopy(x) is x, repr(x)) diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index 0ca6b78..d655bf0 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -909,7 +909,7 @@ else: def test_create_read(self): delta = 0 lastrc = sys.gettotalrefcount() - for i in xrange(20): + for i in range(20): gc.collect() self.assertEqual(gc.garbage, []) rc = sys.gettotalrefcount() @@ -925,7 +925,7 @@ else: delta = 0 lastrc = sys.gettotalrefcount() s = NUL() - for i in xrange(20): + for i in range(20): gc.collect() self.assertEqual(gc.garbage, []) rc = sys.gettotalrefcount() @@ -941,7 +941,7 @@ else: delta = 0 rows = ["a,b,c\r\n"]*5 lastrc = sys.gettotalrefcount() - for i in xrange(20): + for i in range(20): gc.collect() self.assertEqual(gc.garbage, []) rc = sys.gettotalrefcount() @@ -958,7 +958,7 @@ else: rows = [[1,2,3]]*5 s = NUL() lastrc = sys.gettotalrefcount() - for i in xrange(20): + for i in range(20): gc.collect() self.assertEqual(gc.garbage, []) rc = sys.gettotalrefcount() diff --git a/Lib/test/test_datetime.py b/Lib/test/test_datetime.py index 287585e..4ab2f7b 100644 --- a/Lib/test/test_datetime.py +++ b/Lib/test/test_datetime.py @@ -569,7 +569,7 @@ class TestDate(HarmlessMixedComparison, unittest.TestCase): # Check first and last days of year spottily across the whole # range of years supported. - for year in xrange(MINYEAR, MAXYEAR+1, 7): + for year in range(MINYEAR, MAXYEAR+1, 7): # Verify (year, 1, 1) -> ordinal -> y, m, d is identity. d = self.theclass(year, 1, 1) n = d.toordinal() diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py index c39a8e3..641f51c 100644 --- a/Lib/test/test_decimal.py +++ b/Lib/test/test_decimal.py @@ -842,7 +842,7 @@ class DecimalUsabilityTest(unittest.TestCase): self.assertNotEqual(da, object) # sortable - a = map(Decimal, xrange(100)) + a = map(Decimal, range(100)) b = a[:] random.shuffle(a) a.sort() diff --git a/Lib/test/test_deque.py b/Lib/test/test_deque.py index 4f7e60c..e2254d6 100644 --- a/Lib/test/test_deque.py +++ b/Lib/test/test_deque.py @@ -29,23 +29,23 @@ class MutateCmp: class TestBasic(unittest.TestCase): def test_basics(self): - d = deque(xrange(100)) - d.__init__(xrange(100, 200)) - for i in xrange(200, 400): + d = deque(range(100)) + d.__init__(range(100, 200)) + for i in range(200, 400): d.append(i) - for i in reversed(xrange(-200, 0)): + for i in reversed(range(-200, 0)): d.appendleft(i) - self.assertEqual(list(d), range(-200, 400)) + self.assertEqual(list(d), list(range(-200, 400))) self.assertEqual(len(d), 600) - left = [d.popleft() for i in xrange(250)] - self.assertEqual(left, range(-200, 50)) - self.assertEqual(list(d), range(50, 400)) + left = [d.popleft() for i in range(250)] + self.assertEqual(left, list(range(-200, 50))) + self.assertEqual(list(d), list(range(50, 400))) - right = [d.pop() for i in xrange(250)] + right = [d.pop() for i in range(250)] right.reverse() - self.assertEqual(right, range(150, 400)) - self.assertEqual(list(d), range(50, 150)) + self.assertEqual(right, list(range(150, 400))) + self.assertEqual(list(d), list(range(50, 150))) def test_comparisons(self): d = deque('xabc'); d.popleft() @@ -82,15 +82,15 @@ class TestBasic(unittest.TestCase): def test_getitem(self): n = 200 - d = deque(xrange(n)) - l = range(n) - for i in xrange(n): + d = deque(range(n)) + l = list(range(n)) + for i in range(n): d.popleft() l.pop(0) if random.random() < 0.5: d.append(i) l.append(i) - for j in xrange(1-len(l), len(l)): + for j in range(1-len(l), len(l)): assert d[j] == l[j] d = deque('superman') @@ -102,22 +102,22 @@ class TestBasic(unittest.TestCase): def test_setitem(self): n = 200 - d = deque(xrange(n)) - for i in xrange(n): + d = deque(range(n)) + for i in range(n): d[i] = 10 * i - self.assertEqual(list(d), [10*i for i in xrange(n)]) + self.assertEqual(list(d), [10*i for i in range(n)]) l = list(d) - for i in xrange(1-n, 0, -1): + for i in range(1-n, 0, -1): d[i] = 7*i l[i] = 7*i self.assertEqual(list(d), l) def test_delitem(self): n = 500 # O(n**2) test, don't make this too big - d = deque(xrange(n)) + d = deque(range(n)) self.assertRaises(IndexError, d.__delitem__, -n-1) self.assertRaises(IndexError, d.__delitem__, n) - for i in xrange(n): + for i in range(n): self.assertEqual(len(d), n-i) j = random.randrange(-len(d), len(d)) val = d[j] @@ -140,11 +140,11 @@ class TestBasic(unittest.TestCase): d.rotate() # check default to 1 self.assertEqual(tuple(d), s) - for i in xrange(n*3): + for i in range(n*3): d = deque(s) e = deque(d) d.rotate(i) # check vs. rot(1) n times - for j in xrange(i): + for j in range(i): e.rotate(1) self.assertEqual(tuple(d), tuple(e)) d.rotate(-i) # check that it works in reverse @@ -152,11 +152,11 @@ class TestBasic(unittest.TestCase): e.rotate(n-i) # check that it wraps forward self.assertEqual(tuple(e), s) - for i in xrange(n*3): + for i in range(n*3): d = deque(s) e = deque(d) d.rotate(-i) - for j in xrange(i): + for j in range(i): e.rotate(-1) # check vs. rot(-1) n times self.assertEqual(tuple(d), tuple(e)) d.rotate(i) # check that it works in reverse @@ -168,7 +168,7 @@ class TestBasic(unittest.TestCase): e = deque(s) e.rotate(BIG+17) # verify on long series of rotates dr = d.rotate - for i in xrange(BIG+17): + for i in range(BIG+17): dr() self.assertEqual(tuple(d), tuple(e)) @@ -201,7 +201,7 @@ class TestBasic(unittest.TestCase): self.assertRaises(IndexError, d.popleft) def test_clear(self): - d = deque(xrange(100)) + d = deque(range(100)) self.assertEqual(len(d), 100) d.clear() self.assertEqual(len(d), 0) @@ -234,14 +234,14 @@ class TestBasic(unittest.TestCase): self.assertEqual(d, deque()) def test_repr(self): - d = deque(xrange(200)) + d = deque(range(200)) e = eval(repr(d)) self.assertEqual(list(d), list(e)) d.append(d) self.assert_('...' in repr(d)) def test_print(self): - d = deque(xrange(200)) + d = deque(range(200)) d.append(d) try: fo = open(test_support.TESTFN, "wb") @@ -262,33 +262,34 @@ class TestBasic(unittest.TestCase): def test_long_steadystate_queue_popleft(self): for size in (0, 1, 2, 100, 1000): - d = deque(xrange(size)) + d = deque(range(size)) append, pop = d.append, d.popleft - for i in xrange(size, BIG): + for i in range(size, BIG): append(i) x = pop() if x != i - size: self.assertEqual(x, i-size) - self.assertEqual(list(d), range(BIG-size, BIG)) + self.assertEqual(list(d), list(range(BIG-size, BIG))) def test_long_steadystate_queue_popright(self): for size in (0, 1, 2, 100, 1000): - d = deque(reversed(xrange(size))) + d = deque(reversed(range(size))) append, pop = d.appendleft, d.pop - for i in xrange(size, BIG): + for i in range(size, BIG): append(i) x = pop() if x != i - size: self.assertEqual(x, i-size) - self.assertEqual(list(reversed(list(d))), range(BIG-size, BIG)) + self.assertEqual(list(reversed(list(d))), + list(range(BIG-size, BIG))) def test_big_queue_popleft(self): pass d = deque() append, pop = d.append, d.popleft - for i in xrange(BIG): + for i in range(BIG): append(i) - for i in xrange(BIG): + for i in range(BIG): x = pop() if x != i: self.assertEqual(x, i) @@ -296,9 +297,9 @@ class TestBasic(unittest.TestCase): def test_big_queue_popright(self): d = deque() append, pop = d.appendleft, d.pop - for i in xrange(BIG): + for i in range(BIG): append(i) - for i in xrange(BIG): + for i in range(BIG): x = pop() if x != i: self.assertEqual(x, i) @@ -306,9 +307,9 @@ class TestBasic(unittest.TestCase): def test_big_stack_right(self): d = deque() append, pop = d.append, d.pop - for i in xrange(BIG): + for i in range(BIG): append(i) - for i in reversed(xrange(BIG)): + for i in reversed(range(BIG)): x = pop() if x != i: self.assertEqual(x, i) @@ -317,22 +318,22 @@ class TestBasic(unittest.TestCase): def test_big_stack_left(self): d = deque() append, pop = d.appendleft, d.popleft - for i in xrange(BIG): + for i in range(BIG): append(i) - for i in reversed(xrange(BIG)): + for i in reversed(range(BIG)): x = pop() if x != i: self.assertEqual(x, i) self.assertEqual(len(d), 0) def test_roundtrip_iter_init(self): - d = deque(xrange(200)) + d = deque(range(200)) e = deque(d) self.assertNotEqual(id(d), id(e)) self.assertEqual(list(d), list(e)) def test_pickle(self): - d = deque(xrange(200)) + d = deque(range(200)) for i in (0, 1, 2): s = pickle.dumps(d, i) e = pickle.loads(s) @@ -366,7 +367,7 @@ class TestBasic(unittest.TestCase): self.assertEqual(list(d), list(e)) def test_reversed(self): - for s in ('abcd', xrange(2000)): + for s in ('abcd', range(2000)): self.assertEqual(list(reversed(deque(s))), list(reversed(s))) def test_gc_doesnt_blowup(self): @@ -374,14 +375,14 @@ class TestBasic(unittest.TestCase): # This used to assert-fail in deque_traverse() under a debug # build, or run wild with a NULL pointer in a release build. d = deque() - for i in xrange(100): + for i in range(100): d.append(1) gc.collect() class TestVariousIteratorArgs(unittest.TestCase): def test_constructor(self): - for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): + for s in ("123", "", range(1000), ('do', 1.2), range(2000,2200,5)): for g in (seq_tests.Sequence, seq_tests.IterFunc, seq_tests.IterGen, seq_tests.IterFuncStop, seq_tests.itermulti, seq_tests.iterfunc): @@ -412,23 +413,23 @@ class DequeWithBadIter(deque): class TestSubclass(unittest.TestCase): def test_basics(self): - d = Deque(xrange(100)) - d.__init__(xrange(100, 200)) - for i in xrange(200, 400): + d = Deque(range(100)) + d.__init__(range(100, 200)) + for i in range(200, 400): d.append(i) - for i in reversed(xrange(-200, 0)): + for i in reversed(range(-200, 0)): d.appendleft(i) - self.assertEqual(list(d), range(-200, 400)) + self.assertEqual(list(d), list(range(-200, 400))) self.assertEqual(len(d), 600) - left = [d.popleft() for i in xrange(250)] - self.assertEqual(left, range(-200, 50)) - self.assertEqual(list(d), range(50, 400)) + left = [d.popleft() for i in range(250)] + self.assertEqual(left, list(range(-200, 50))) + self.assertEqual(list(d), list(range(50, 400))) - right = [d.pop() for i in xrange(250)] + right = [d.pop() for i in range(250)] right.reverse() - self.assertEqual(right, range(150, 400)) - self.assertEqual(list(d), range(50, 150)) + self.assertEqual(right, list(range(150, 400))) + self.assertEqual(list(d), list(range(50, 150))) d.clear() self.assertEqual(len(d), 0) @@ -618,7 +619,7 @@ def test_main(verbose=None): if verbose and hasattr(sys, "gettotalrefcount"): import gc counts = [None] * 5 - for i in xrange(len(counts)): + for i in range(len(counts)): test_support.run_unittest(*test_classes) gc.collect() counts[i] = sys.gettotalrefcount() diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index 4ae8f60..efdf9b0 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -1181,7 +1181,7 @@ def slots(): return 0 g = G() orig_objects = len(gc.get_objects()) - for i in xrange(10): + for i in range(10): g==g new_objects = len(gc.get_objects()) vereq(orig_objects, new_objects) @@ -2363,24 +2363,24 @@ def inherits(): class sublist(list): pass a = sublist(range(5)) - vereq(a, range(5)) + vereq(a, list(range(5))) a.append("hello") - vereq(a, range(5) + ["hello"]) + vereq(a, list(range(5)) + ["hello"]) a[5] = 5 - vereq(a, range(6)) + vereq(a, list(range(6))) a.extend(range(6, 20)) - vereq(a, range(20)) + vereq(a, list(range(20))) a[-5:] = [] - vereq(a, range(15)) + vereq(a, list(range(15))) del a[10:15] vereq(len(a), 10) - vereq(a, range(10)) - vereq(list(a), range(10)) + vereq(a, list(range(10))) + vereq(list(a), list(range(10))) vereq(a[0], 0) vereq(a[9], 9) vereq(a[-10], 0) vereq(a[-1], 9) - vereq(a[:5], range(5)) + vereq(a[:5], list(range(5))) class CountedInput(file): """Counts lines read by self.readline(). @@ -2412,7 +2412,7 @@ def inherits(): f.writelines(lines) f.close() f = CountedInput(TESTFN) - for (i, expected) in zip(range(1, 5) + [4], lines + 2 * [""]): + for (i, expected) in zip(list(range(1, 5)) + [4], lines + 2 * [""]): got = f.readline() vereq(expected, got) vereq(f.lineno, i) @@ -2439,7 +2439,7 @@ def keywords(): vereq(str(object=500), '500') vereq(str(string='abc', errors='strict'), 'abc') vereq(tuple(sequence=range(3)), (0, 1, 2)) - vereq(list(sequence=(0, 1, 2)), range(3)) + vereq(list(sequence=(0, 1, 2)), list(range(3))) # note: as of Python 2.3, dict() no longer has an "items" keyword arg for constructor in (int, float, int, complex, str, str, @@ -3502,7 +3502,7 @@ def slottrash(): def __init__(self, x): self.x = x o = None - for i in xrange(50000): + for i in range(50000): o = trash(o) del o @@ -3959,7 +3959,7 @@ def weakref_segfault(): def wrapper_segfault(): # SF 927248: deeply nested wrappers could cause stack overflow f = lambda:None - for i in xrange(1000000): + for i in range(1000000): f = f.__call__ f = None diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index 5d82cd7..dfb307d 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -144,12 +144,12 @@ class DisTests(unittest.TestCase): return namespace['foo'] # Test all small ranges - for i in xrange(1, 300): + for i in range(1, 300): expected = _BIG_LINENO_FORMAT % (i + 2) self.do_disassembly_test(func(i), expected) # Test some larger ranges too - for i in xrange(300, 5000, 10): + for i in range(300, 5000, 10): expected = _BIG_LINENO_FORMAT % (i + 2) self.do_disassembly_test(func(i), expected) diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py index 60079a6..3adb98c 100644 --- a/Lib/test/test_doctest.py +++ b/Lib/test/test_doctest.py @@ -34,8 +34,8 @@ class SampleClass: >>> sc = SampleClass(3) >>> for i in range(10): ... sc = sc.double() - ... print(sc.get(), end=' ') - 6 12 24 48 96 192 384 768 1536 3072 + ... print(' ', sc.get(), sep='', end='') + 6 12 24 48 96 192 384 768 1536 3072 """ def __init__(self, val): """ @@ -996,7 +996,7 @@ treated as equal: (0, 1) An example from the docs: - >>> print(range(20)) #doctest: +NORMALIZE_WHITESPACE + >>> print(list(range(20))) #doctest: +NORMALIZE_WHITESPACE [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] @@ -1004,7 +1004,7 @@ The ELLIPSIS flag causes ellipsis marker ("...") in the expected output to match any substring in the actual output: >>> def f(x): - ... '>>> print(range(15))\n[0, 1, 2, ..., 14]\n' + ... '>>> print(list(range(15)))\n[0, 1, 2, ..., 14]\n' >>> # Without the flag: >>> test = doctest.DocTestFinder().find(f)[0] @@ -1013,7 +1013,7 @@ output to match any substring in the actual output: ********************************************************************** File ..., line 2, in f Failed example: - print(range(15)) + print(list(range(15))) Expected: [0, 1, 2, ..., 14] Got: @@ -1044,10 +1044,10 @@ output to match any substring in the actual output: Examples from the docs: - >>> print(range(20)) # doctest:+ELLIPSIS + >>> print(list(range(20))) # doctest:+ELLIPSIS [0, 1, ..., 18, 19] - >>> print(range(20)) # doctest: +ELLIPSIS + >>> print(list(range(20))) # doctest: +ELLIPSIS ... # doctest: +NORMALIZE_WHITESPACE [0, 1, ..., 18, 19] @@ -1302,10 +1302,10 @@ single example. To turn an option on for an example, follow that example with a comment of the form ``# doctest: +OPTION``: >>> def f(x): r''' - ... >>> print(range(10)) # should fail: no ellipsis + ... >>> print(list(range(10))) # should fail: no ellipsis ... [0, 1, ..., 9] ... - ... >>> print(range(10)) # doctest: +ELLIPSIS + ... >>> print(list(range(10))) # doctest: +ELLIPSIS ... [0, 1, ..., 9] ... ''' >>> test = doctest.DocTestFinder().find(f)[0] @@ -1314,7 +1314,7 @@ example with a comment of the form ``# doctest: +OPTION``: ********************************************************************** File ..., line 2, in f Failed example: - print(range(10)) # should fail: no ellipsis + print(list(range(10))) # should fail: no ellipsis Expected: [0, 1, ..., 9] Got: @@ -1325,11 +1325,11 @@ To turn an option off for an example, follow that example with a comment of the form ``# doctest: -OPTION``: >>> def f(x): r''' - ... >>> print(range(10)) + ... >>> print(list(range(10))) ... [0, 1, ..., 9] ... ... >>> # should fail: no ellipsis - ... >>> print(range(10)) # doctest: -ELLIPSIS + ... >>> print(list(range(10))) # doctest: -ELLIPSIS ... [0, 1, ..., 9] ... ''' >>> test = doctest.DocTestFinder().find(f)[0] @@ -1339,7 +1339,7 @@ comment of the form ``# doctest: -OPTION``: ********************************************************************** File ..., line 6, in f Failed example: - print(range(10)) # doctest: -ELLIPSIS + print(list(range(10))) # doctest: -ELLIPSIS Expected: [0, 1, ..., 9] Got: @@ -1350,13 +1350,13 @@ Option directives affect only the example that they appear with; they do not change the options for surrounding examples: >>> def f(x): r''' - ... >>> print(range(10)) # Should fail: no ellipsis + ... >>> print(list(range(10))) # Should fail: no ellipsis ... [0, 1, ..., 9] ... - ... >>> print(range(10)) # doctest: +ELLIPSIS + ... >>> print(list(range(10))) # doctest: +ELLIPSIS ... [0, 1, ..., 9] ... - ... >>> print(range(10)) # Should fail: no ellipsis + ... >>> print(list(range(10))) # Should fail: no ellipsis ... [0, 1, ..., 9] ... ''' >>> test = doctest.DocTestFinder().find(f)[0] @@ -1365,7 +1365,7 @@ do not change the options for surrounding examples: ********************************************************************** File ..., line 2, in f Failed example: - print(range(10)) # Should fail: no ellipsis + print(list(range(10))) # Should fail: no ellipsis Expected: [0, 1, ..., 9] Got: @@ -1373,7 +1373,7 @@ do not change the options for surrounding examples: ********************************************************************** File ..., line 8, in f Failed example: - print(range(10)) # Should fail: no ellipsis + print(list(range(10))) # Should fail: no ellipsis Expected: [0, 1, ..., 9] Got: @@ -1384,9 +1384,9 @@ Multiple options may be modified by a single option directive. They may be separated by whitespace, commas, or both: >>> def f(x): r''' - ... >>> print(range(10)) # Should fail + ... >>> print(list(range(10))) # Should fail ... [0, 1, ..., 9] - ... >>> print(range(10)) # Should succeed + ... >>> print(list(range(10))) # Should succeed ... ... # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE ... [0, 1, ..., 9] ... ''' @@ -1396,7 +1396,7 @@ may be separated by whitespace, commas, or both: ********************************************************************** File ..., line 2, in f Failed example: - print(range(10)) # Should fail + print(list(range(10))) # Should fail Expected: [0, 1, ..., 9] Got: @@ -1404,9 +1404,9 @@ may be separated by whitespace, commas, or both: (1, 2) >>> def f(x): r''' - ... >>> print(range(10)) # Should fail + ... >>> print(list(range(10))) # Should fail ... [0, 1, ..., 9] - ... >>> print(range(10)) # Should succeed + ... >>> print(list(range(10))) # Should succeed ... ... # doctest: +ELLIPSIS,+NORMALIZE_WHITESPACE ... [0, 1, ..., 9] ... ''' @@ -1416,7 +1416,7 @@ may be separated by whitespace, commas, or both: ********************************************************************** File ..., line 2, in f Failed example: - print(range(10)) # Should fail + print(list(range(10))) # Should fail Expected: [0, 1, ..., 9] Got: @@ -1424,9 +1424,9 @@ may be separated by whitespace, commas, or both: (1, 2) >>> def f(x): r''' - ... >>> print(range(10)) # Should fail + ... >>> print(list(range(10))) # Should fail ... [0, 1, ..., 9] - ... >>> print(range(10)) # Should succeed + ... >>> print(list(range(10))) # Should succeed ... ... # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE ... [0, 1, ..., 9] ... ''' @@ -1436,7 +1436,7 @@ may be separated by whitespace, commas, or both: ********************************************************************** File ..., line 2, in f Failed example: - print(range(10)) # Should fail + print(list(range(10))) # Should fail Expected: [0, 1, ..., 9] Got: @@ -1447,7 +1447,7 @@ The option directive may be put on the line following the source, as long as a continuation prompt is used: >>> def f(x): r''' - ... >>> print(range(10)) + ... >>> print(list(range(10))) ... ... # doctest: +ELLIPSIS ... [0, 1, ..., 9] ... ''' @@ -1460,12 +1460,12 @@ at the end of any line: >>> def f(x): r''' ... >>> for x in range(10): # doctest: +ELLIPSIS - ... ... print(x, end=' ') - ... 0 1 2 ... 9 + ... ... print(' ', x, end='', sep='') + ... 0 1 2 ... 9 ... ... >>> for x in range(10): - ... ... print(x, end=' ') # doctest: +ELLIPSIS - ... 0 1 2 ... 9 + ... ... print(' ', x, end='', sep='') # doctest: +ELLIPSIS + ... 0 1 2 ... 9 ... ''' >>> test = doctest.DocTestFinder().find(f)[0] >>> doctest.DocTestRunner(verbose=False).run(test) diff --git a/Lib/test/test_dummy_thread.py b/Lib/test/test_dummy_thread.py index 288b621..07466ce 100644 --- a/Lib/test/test_dummy_thread.py +++ b/Lib/test/test_dummy_thread.py @@ -153,7 +153,7 @@ class ThreadTests(unittest.TestCase): print() print("*** Testing multiple thread creation "\ "(will take approx. %s to %s sec.) ***" % (DELAY, thread_count)) - for count in xrange(thread_count): + for count in range(thread_count): if DELAY: local_delay = round(random.random(), 1) else: diff --git a/Lib/test/test_enumerate.py b/Lib/test/test_enumerate.py index af7512d..08229bf 100644 --- a/Lib/test/test_enumerate.py +++ b/Lib/test/test_enumerate.py @@ -134,18 +134,18 @@ class TestReversed(unittest.TestCase): raise StopIteration def __len__(self): return 5 - for data in 'abc', range(5), tuple(enumerate('abc')), A(), xrange(1,17,5): + for data in 'abc', range(5), tuple(enumerate('abc')), A(), range(1,17,5): self.assertEqual(list(data)[::-1], list(reversed(data))) self.assertRaises(TypeError, reversed, {}) - def test_xrange_optimization(self): - x = xrange(1) + def test_range_optimization(self): + x = range(1) self.assertEqual(type(reversed(x)), type(iter(x))) def test_len(self): # This is an implementation detail, not an interface requirement from test.test_iterlen import len - for s in ('hello', tuple('hello'), list('hello'), xrange(5)): + for s in ('hello', tuple('hello'), list('hello'), range(5)): self.assertEqual(len(reversed(s)), len(s)) r = reversed(s) list(r) @@ -205,7 +205,7 @@ def test_main(verbose=None): import sys if verbose and hasattr(sys, "gettotalrefcount"): counts = [None] * 5 - for i in xrange(len(counts)): + for i in range(len(counts)): test_support.run_unittest(*testclasses) counts[i] = sys.gettotalrefcount() print(counts) diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py index a2df21c..55c549f 100644 --- a/Lib/test/test_functools.py +++ b/Lib/test/test_functools.py @@ -352,7 +352,7 @@ def test_main(verbose=None): if verbose and hasattr(sys, "gettotalrefcount"): import gc counts = [None] * 5 - for i in xrange(len(counts)): + for i in range(len(counts)): test_support.run_unittest(*test_classes) gc.collect() counts[i] = sys.gettotalrefcount() diff --git a/Lib/test/test_gc.py b/Lib/test/test_gc.py index 10b02da..bae0038 100644 --- a/Lib/test/test_gc.py +++ b/Lib/test/test_gc.py @@ -399,7 +399,7 @@ class GCTests(unittest.TestCase): got = gc.get_referents([1, 2], {3: 4}, (0, 0, 0)) got.sort() - self.assertEqual(got, [0, 0] + range(5)) + self.assertEqual(got, [0, 0] + list(range(5))) self.assertEqual(gc.get_referents(1, 'a', 4j), []) diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py index 08d354a..a3b7870 100644 --- a/Lib/test/test_generators.py +++ b/Lib/test/test_generators.py @@ -343,7 +343,7 @@ Next one was posted to c.l.py. ... for c in gcomb(rest, k): ... yield c ->>> seq = range(1, 5) +>>> seq = list(range(1, 5)) >>> for k in range(len(seq) + 2): ... print("%d-combs of %s:" % (k, seq)) ... for c in gcomb(seq, k): diff --git a/Lib/test/test_genexps.py b/Lib/test/test_genexps.py index cafca57..7b5fdc4 100644 --- a/Lib/test/test_genexps.py +++ b/Lib/test/test_genexps.py @@ -59,16 +59,16 @@ Does it stay stopped? Test running gen when defining function is out of scope >>> def f(n): - ... return (i*i for i in xrange(n)) + ... return (i*i for i in range(n)) >>> list(f(10)) [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> def f(n): - ... return ((i,j) for i in xrange(3) for j in xrange(n)) + ... return ((i,j) for i in range(3) for j in range(n)) >>> list(f(4)) [(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3)] >>> def f(n): - ... return ((i,j) for i in xrange(3) for j in xrange(4) if j in xrange(n)) + ... return ((i,j) for i in range(3) for j in range(4) if j in range(n)) >>> list(f(4)) [(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3)] >>> list(f(2)) @@ -77,21 +77,21 @@ Test running gen when defining function is out of scope Verify that parenthesis are required in a statement >>> def f(n): - ... return i*i for i in xrange(n) + ... return i*i for i in range(n) Traceback (most recent call last): ... SyntaxError: invalid syntax Verify that parenthesis are required when used as a keyword argument value - >>> dict(a = i for i in xrange(10)) + >>> dict(a = i for i in range(10)) Traceback (most recent call last): ... SyntaxError: invalid syntax Verify that parenthesis are required when used as a keyword argument value - >>> dict(a = (i for i in xrange(10))) #doctest: +ELLIPSIS + >>> dict(a = (i for i in range(10))) #doctest: +ELLIPSIS {'a': } Verify early binding for the outermost for-expression @@ -128,7 +128,7 @@ Verify late binding for the innermost for-expression Verify re-use of tuples (a side benefit of using genexps over listcomps) - >>> tupleids = map(id, ((i,i) for i in xrange(10))) + >>> tupleids = map(id, ((i,i) for i in range(10))) >>> int(max(tupleids) - min(tupleids)) 0 @@ -149,7 +149,7 @@ Verify that syntax error's are raised for genexps used as lvalues Make a generator that acts like range() - >>> yrange = lambda n: (i for i in xrange(n)) + >>> yrange = lambda n: (i for i in range(n)) >>> list(yrange(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] @@ -181,14 +181,14 @@ Generators can call other generators: Verify that a gen exp cannot be resumed while it is actively running: - >>> g = (next(me) for i in xrange(10)) + >>> g = (next(me) for i in range(10)) >>> me = g >>> next(me) Traceback (most recent call last): File "", line 1, in -toplevel- next(me) File "", line 1, in - g = (next(me) for i in xrange(10)) + g = (next(me) for i in range(10)) ValueError: generator already executing Verify exception propagation @@ -211,7 +211,7 @@ Verify exception propagation Make sure that None is a valid return value - >>> list(None for i in xrange(10)) + >>> list(None for i in range(10)) [None, None, None, None, None, None, None, None, None, None] Check that generator attributes are present @@ -270,7 +270,7 @@ def test_main(verbose=None): if verbose and hasattr(sys, "gettotalrefcount"): import gc counts = [None] * 5 - for i in xrange(len(counts)): + for i in range(len(counts)): test_support.run_doctest(test_genexps, verbose) gc.collect() counts[i] = sys.gettotalrefcount() diff --git a/Lib/test/test_grp.py b/Lib/test/test_grp.py index 337f057..ede9c72 100755 --- a/Lib/test/test_grp.py +++ b/Lib/test/test_grp.py @@ -55,7 +55,7 @@ class GroupDatabaseTestCase(unittest.TestCase): fakename = allnames[namei] while fakename in bynames: chars = map(None, fakename) - for i in xrange(len(chars)): + for i in range(len(chars)): if chars[i] == 'z': chars[i] = 'A' break diff --git a/Lib/test/test_heapq.py b/Lib/test/test_heapq.py index dbbfcb0..ceaf3cc 100644 --- a/Lib/test/test_heapq.py +++ b/Lib/test/test_heapq.py @@ -90,7 +90,7 @@ class TestHeap(unittest.TestCase): def test_heapsort(self): # Exercise everything with repeated heapsort checks - for trial in xrange(100): + for trial in range(100): size = random.randrange(50) data = [random.randrange(25) for i in range(size)] if trial & 1: # Half of the time, use heapify @@ -105,7 +105,7 @@ class TestHeap(unittest.TestCase): def test_merge(self): inputs = [] - for i in xrange(random.randrange(5)): + for i in range(random.randrange(5)): row = sorted(random.randrange(1000) for j in range(random.randrange(10))) inputs.append(row) self.assertEqual(sorted(chain(*inputs)), list(merge(*inputs))) @@ -277,7 +277,7 @@ class TestErrorHandling(unittest.TestCase): def test_iterable_args(self): for f in (nlargest, nsmallest): - for s in ("123", "", range(1000), (1, 1.2), xrange(2000,2200,5)): + for s in ("123", "", range(1000), (1, 1.2), range(2000,2200,5)): for g in (G, I, Ig, L, R): self.assertEqual(f(2, g(s)), f(2,s)) self.assertEqual(f(2, S(s)), []) @@ -300,7 +300,7 @@ def test_main(verbose=None): if verbose and hasattr(sys, "gettotalrefcount"): import gc counts = [None] * 5 - for i in xrange(len(counts)): + for i in range(len(counts)): test_support.run_unittest(*test_classes) gc.collect() counts[i] = sys.gettotalrefcount() diff --git a/Lib/test/test_index.py b/Lib/test/test_index.py index b930c29..8055c33 100644 --- a/Lib/test/test_index.py +++ b/Lib/test/test_index.py @@ -49,7 +49,7 @@ class BaseTestCase(unittest.TestCase): self.assertEqual(self.n.__index__(), 5) def test_subclasses(self): - r = range(10) + r = list(range(10)) self.assertEqual(r[TrapInt(5):TrapInt(10)], r[5:10]) self.assertEqual(r[TrapLong(5):TrapLong(10)], r[5:10]) self.assertEqual(slice(TrapInt()).indices(0), (0,0,1)) @@ -164,14 +164,6 @@ class UnicodeTestCase(SeqTestCase): seq = "this is a test" -class XRangeTestCase(unittest.TestCase): - - def test_xrange(self): - n = newstyle() - n.ind = 5 - self.assertEqual(xrange(1, 20)[n], 6) - self.assertEqual(xrange(1, 20).__getitem__(n), 6) - class OverflowTestCase(unittest.TestCase): def setUp(self): @@ -215,7 +207,6 @@ def test_main(): TupleTestCase, StringTestCase, UnicodeTestCase, - XRangeTestCase, OverflowTestCase, ) diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index 9b05aa9..957ce29 100644 --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -546,7 +546,7 @@ class TextIOWrapperTest(unittest.TestCase): wlines = [] for size in (0, 1, 2, 3, 4, 5, 30, 31, 32, 33, 62, 63, 64, 65, 1000): chars = [] - for i in xrange(size): + for i in range(size): chars.append(sample[i % len(sample)]) line = "".join(chars) + "\n" wlines.append((f.tell(), line)) diff --git a/Lib/test/test_isinstance.py b/Lib/test/test_isinstance.py index 0744090..691482e 100644 --- a/Lib/test/test_isinstance.py +++ b/Lib/test/test_isinstance.py @@ -259,7 +259,7 @@ def blowstack(fxn, arg, compare_to): # Make sure that calling isinstance with a deeply nested tuple for its # argument will raise RuntimeError eventually. tuple_arg = (compare_to,) - for cnt in xrange(sys.getrecursionlimit()+5): + for cnt in range(sys.getrecursionlimit()+5): tuple_arg = (tuple_arg,) fxn(arg, tuple_arg) diff --git a/Lib/test/test_iter.py b/Lib/test/test_iter.py index 5a75c50..22595fc 100644 --- a/Lib/test/test_iter.py +++ b/Lib/test/test_iter.py @@ -68,18 +68,18 @@ class TestCase(unittest.TestCase): # Test basic use of iter() function def test_iter_basic(self): - self.check_iterator(iter(range(10)), range(10)) + self.check_iterator(iter(range(10)), list(range(10))) # Test that iter(iter(x)) is the same as iter(x) def test_iter_idempotency(self): - seq = range(10) + seq = list(range(10)) it = iter(seq) it2 = iter(it) self.assert_(it is it2) # Test that for loops over iterators work def test_iter_for_loop(self): - self.check_for_loop(iter(range(10)), range(10)) + self.check_for_loop(iter(range(10)), list(range(10))) # Test several independent iterators over the same list def test_iter_independence(self): @@ -106,19 +106,19 @@ class TestCase(unittest.TestCase): # Test a class with __iter__ in a for loop def test_iter_class_for(self): - self.check_for_loop(IteratingSequenceClass(10), range(10)) + self.check_for_loop(IteratingSequenceClass(10), list(range(10))) # Test a class with __iter__ with explicit iter() def test_iter_class_iter(self): - self.check_iterator(iter(IteratingSequenceClass(10)), range(10)) + self.check_iterator(iter(IteratingSequenceClass(10)), list(range(10))) # Test for loop on a sequence class without __iter__ def test_seq_class_for(self): - self.check_for_loop(SequenceClass(10), range(10)) + self.check_for_loop(SequenceClass(10), list(range(10))) # Test iter() on a sequence class without __iter__ def test_seq_class_iter(self): - self.check_iterator(iter(SequenceClass(10)), range(10)) + self.check_iterator(iter(SequenceClass(10)), list(range(10))) # Test two-argument iter() with callable instance def test_iter_callable(self): @@ -131,7 +131,7 @@ class TestCase(unittest.TestCase): if i > 100: raise IndexError # Emergency stop return i - self.check_iterator(iter(C(), 10), range(10)) + self.check_iterator(iter(C(), 10), list(range(10))) # Test two-argument iter() with function def test_iter_function(self): @@ -139,7 +139,7 @@ class TestCase(unittest.TestCase): i = state[0] state[0] = i+1 return i - self.check_iterator(iter(spam, 10), range(10)) + self.check_iterator(iter(spam, 10), list(range(10))) # Test two-argument iter() with function that raises StopIteration def test_iter_function_stop(self): @@ -149,7 +149,7 @@ class TestCase(unittest.TestCase): raise StopIteration state[0] = i+1 return i - self.check_iterator(iter(spam, 20), range(10)) + self.check_iterator(iter(spam, 20), list(range(10))) # Test exception propagation through function iterator def test_exception_function(self): @@ -164,7 +164,7 @@ class TestCase(unittest.TestCase): for x in iter(spam, 20): res.append(x) except RuntimeError: - self.assertEqual(res, range(10)) + self.assertEqual(res, list(range(10))) else: self.fail("should have raised RuntimeError") @@ -180,7 +180,7 @@ class TestCase(unittest.TestCase): for x in MySequenceClass(20): res.append(x) except RuntimeError: - self.assertEqual(res, range(10)) + self.assertEqual(res, list(range(10))) else: self.fail("should have raised RuntimeError") @@ -191,11 +191,11 @@ class TestCase(unittest.TestCase): if i == 10: raise StopIteration return SequenceClass.__getitem__(self, i) - self.check_for_loop(MySequenceClass(20), range(10)) + self.check_for_loop(MySequenceClass(20), list(range(10))) # Test a big range def test_iter_big_range(self): - self.check_for_loop(iter(range(10000)), range(10000)) + self.check_for_loop(iter(range(10000)), list(range(10000))) # Test an empty list def test_iter_empty(self): @@ -203,11 +203,11 @@ class TestCase(unittest.TestCase): # Test a tuple def test_iter_tuple(self): - self.check_for_loop(iter((0,1,2,3,4,5,6,7,8,9)), range(10)) + self.check_for_loop(iter((0,1,2,3,4,5,6,7,8,9)), list(range(10))) - # Test an xrange - def test_iter_xrange(self): - self.check_for_loop(iter(xrange(10)), range(10)) + # Test a range + def test_iter_range(self): + self.check_for_loop(iter(range(10)), list(range(10))) # Test a string def test_iter_string(self): @@ -248,10 +248,9 @@ class TestCase(unittest.TestCase): # Test list()'s use of iterators. def test_builtin_list(self): - self.assertEqual(list(SequenceClass(5)), range(5)) + self.assertEqual(list(SequenceClass(5)), list(range(5))) self.assertEqual(list(SequenceClass(0)), []) self.assertEqual(list(()), []) - self.assertEqual(list(range(10, -1, -1)), range(10, -1, -1)) d = {"one": 1, "two": 2, "three": 3} self.assertEqual(list(d), list(d.keys())) @@ -313,7 +312,7 @@ class TestCase(unittest.TestCase): # Test filter()'s use of iterators. def test_builtin_filter(self): - self.assertEqual(filter(None, SequenceClass(5)), range(1, 5)) + self.assertEqual(filter(None, SequenceClass(5)), list(range(1, 5))) self.assertEqual(filter(None, SequenceClass(0)), []) self.assertEqual(filter(None, ()), ()) self.assertEqual(filter(None, "abc"), "abc") @@ -389,8 +388,8 @@ class TestCase(unittest.TestCase): # Test map()'s use of iterators. def test_builtin_map(self): - self.assertEqual(map(None, SequenceClass(5)), range(5)) - self.assertEqual(map(lambda x: x+1, SequenceClass(5)), range(1, 6)) + self.assertEqual(map(None, SequenceClass(5)), list(range(5))) + self.assertEqual(map(lambda x: x+1, SequenceClass(5)), list(range(1, 6))) d = {"one": 1, "two": 2, "three": 3} self.assertEqual(map(None, d), list(d.keys())) @@ -413,7 +412,7 @@ class TestCase(unittest.TestCase): f.close() f = open(TESTFN, "r") try: - self.assertEqual(map(len, f), range(1, 21, 2)) + self.assertEqual(map(len, f), list(range(1, 21, 2))) finally: f.close() try: @@ -470,7 +469,7 @@ class TestCase(unittest.TestCase): except OSError: pass - self.assertEqual(list(zip(xrange(5))), [(i,) for i in range(5)]) + self.assertEqual(list(zip(range(5))), [(i,) for i in range(5)]) # Classes that lie about their lengths. class NoGuessLen5: @@ -799,16 +798,16 @@ class TestCase(unittest.TestCase): def test_sinkstate_list(self): # This used to fail - a = range(5) + a = list(range(5)) b = iter(a) - self.assertEqual(list(b), range(5)) + self.assertEqual(list(b), list(range(5))) a.extend(range(5, 10)) self.assertEqual(list(b), []) def test_sinkstate_tuple(self): a = (0, 1, 2, 3, 4) b = iter(a) - self.assertEqual(list(b), range(5)) + self.assertEqual(list(b), list(range(5))) self.assertEqual(list(b), []) def test_sinkstate_string(self): @@ -821,7 +820,7 @@ class TestCase(unittest.TestCase): # This used to fail a = SequenceClass(5) b = iter(a) - self.assertEqual(list(b), range(5)) + self.assertEqual(list(b), list(range(5))) a.n = 10 self.assertEqual(list(b), []) @@ -834,7 +833,7 @@ class TestCase(unittest.TestCase): raise AssertionError, "shouldn't have gotten this far" return i b = iter(spam, 5) - self.assertEqual(list(b), range(5)) + self.assertEqual(list(b), list(range(5))) self.assertEqual(list(b), []) def test_sinkstate_dict(self): @@ -851,13 +850,13 @@ class TestCase(unittest.TestCase): for i in range(5): yield i b = gen() - self.assertEqual(list(b), range(5)) + self.assertEqual(list(b), list(range(5))) self.assertEqual(list(b), []) def test_sinkstate_range(self): - a = xrange(5) + a = range(5) b = iter(a) - self.assertEqual(list(b), range(5)) + self.assertEqual(list(b), list(range(5))) self.assertEqual(list(b), []) def test_sinkstate_enumerate(self): diff --git a/Lib/test/test_iterlen.py b/Lib/test/test_iterlen.py index 28f2567..afd7287 100644 --- a/Lib/test/test_iterlen.py +++ b/Lib/test/test_iterlen.py @@ -9,14 +9,14 @@ The desired invariant is: len(it)==len(list(it)). A complication is that an iterable and iterator can be the same object. To maintain the invariant, an iterator needs to dynamically update its length. -For instance, an iterable such as xrange(10) always reports its length as ten, -but it=iter(xrange(10)) starts at ten, and then goes to nine after next(it). +For instance, an iterable such as range(10) always reports its length as ten, +but it=iter(range(10)) starts at ten, and then goes to nine after next(it). Having this capability means that map() can ignore the distinction between map(func, iterable) and map(func, iter(iterable)). When the iterable is immutable, the implementation can straight-forwardly report the original length minus the cumulative number of calls to next(). -This is the case for tuples, xrange objects, and itertools.repeat(). +This is the case for tuples, range objects, and itertools.repeat(). Some containers become temporarily immutable during iteration. This includes dicts, sets, and collections.deque. Their implementation is equally simple @@ -65,7 +65,7 @@ class TestInvariantWithoutMutations(unittest.TestCase): def test_invariant(self): it = self.it - for i in reversed(xrange(1, n+1)): + for i in reversed(range(1, n+1)): self.assertEqual(len(it), i) next(it) self.assertEqual(len(it), 0) @@ -100,59 +100,59 @@ class TestRepeat(TestInvariantWithoutMutations): class TestXrange(TestInvariantWithoutMutations): def setUp(self): - self.it = iter(xrange(n)) + self.it = iter(range(n)) class TestXrangeCustomReversed(TestInvariantWithoutMutations): def setUp(self): - self.it = reversed(xrange(n)) + self.it = reversed(range(n)) class TestTuple(TestInvariantWithoutMutations): def setUp(self): - self.it = iter(tuple(xrange(n))) + self.it = iter(tuple(range(n))) ## ------- Types that should not be mutated during iteration ------- class TestDeque(TestTemporarilyImmutable): def setUp(self): - d = deque(xrange(n)) + d = deque(range(n)) self.it = iter(d) self.mutate = d.pop class TestDequeReversed(TestTemporarilyImmutable): def setUp(self): - d = deque(xrange(n)) + d = deque(range(n)) self.it = reversed(d) self.mutate = d.pop class TestDictKeys(TestTemporarilyImmutable): def setUp(self): - d = dict.fromkeys(xrange(n)) + d = dict.fromkeys(range(n)) self.it = iter(d) self.mutate = d.popitem class TestDictItems(TestTemporarilyImmutable): def setUp(self): - d = dict.fromkeys(xrange(n)) + d = dict.fromkeys(range(n)) self.it = iter(d.items()) self.mutate = d.popitem class TestDictValues(TestTemporarilyImmutable): def setUp(self): - d = dict.fromkeys(xrange(n)) + d = dict.fromkeys(range(n)) self.it = iter(d.values()) self.mutate = d.popitem class TestSet(TestTemporarilyImmutable): def setUp(self): - d = set(xrange(n)) + d = set(range(n)) self.it = iter(d) self.mutate = d.pop @@ -164,7 +164,7 @@ class TestList(TestInvariantWithoutMutations): self.it = iter(range(n)) def test_mutation(self): - d = range(n) + d = list(range(n)) it = iter(d) next(it) next(it) @@ -174,7 +174,7 @@ class TestList(TestInvariantWithoutMutations): d[1:] = [] self.assertEqual(len(it), 0) self.assertEqual(list(it), []) - d.extend(xrange(20)) + d.extend(range(20)) self.assertEqual(len(it), 0) class TestListReversed(TestInvariantWithoutMutations): @@ -183,7 +183,7 @@ class TestListReversed(TestInvariantWithoutMutations): self.it = reversed(range(n)) def test_mutation(self): - d = range(n) + d = list(range(n)) it = reversed(d) next(it) next(it) @@ -193,7 +193,7 @@ class TestListReversed(TestInvariantWithoutMutations): d[1:] = [] self.assertEqual(len(it), 0) self.assertEqual(list(it), []) # confirm invariant - d.extend(xrange(20)) + d.extend(range(20)) self.assertEqual(len(it), 0) class TestSeqIter(TestInvariantWithoutMutations): @@ -212,7 +212,7 @@ class TestSeqIter(TestInvariantWithoutMutations): d[1:] = [] self.assertEqual(len(it), 0) self.assertEqual(list(it), []) - d.extend(xrange(20)) + d.extend(range(20)) self.assertEqual(len(it), 0) class TestSeqIterReversed(TestInvariantWithoutMutations): @@ -231,7 +231,7 @@ class TestSeqIterReversed(TestInvariantWithoutMutations): d[1:] = [] self.assertEqual(len(it), 0) self.assertEqual(list(it), []) # confirm invariant - d.extend(xrange(20)) + d.extend(range(20)) self.assertEqual(len(it), 0) diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py index 98c79c7..c2a539c 100644 --- a/Lib/test/test_itertools.py +++ b/Lib/test/test_itertools.py @@ -248,7 +248,7 @@ class TestBasicOps(unittest.TestCase): self.assertEqual(len(dict.fromkeys(ids)), len(ids)) def test_repeat(self): - self.assertEqual(lzip(xrange(3),repeat('a')), + self.assertEqual(lzip(range(3),repeat('a')), [(0, 'a'), (1, 'a'), (2, 'a')]) self.assertEqual(list(repeat('a', 3)), ['a', 'a', 'a']) self.assertEqual(take(3, repeat('a')), ['a', 'a', 'a']) @@ -301,39 +301,41 @@ class TestBasicOps(unittest.TestCase): (10, 3), (20,) ]: - self.assertEqual(list(islice(xrange(100), *args)), range(*args)) + self.assertEqual(list(islice(range(100), *args)), + list(range(*args))) for args, tgtargs in [ # Stop when seqn is exhausted ((10, 110, 3), ((10, 100, 3))), ((10, 110), ((10, 100))), ((110,), (100,)) ]: - self.assertEqual(list(islice(xrange(100), *args)), range(*tgtargs)) + self.assertEqual(list(islice(range(100), *args)), + list(range(*tgtargs))) # Test stop=None - self.assertEqual(list(islice(xrange(10), None)), range(10)) - self.assertEqual(list(islice(xrange(10), None, None)), range(10)) - self.assertEqual(list(islice(xrange(10), None, None, None)), range(10)) - self.assertEqual(list(islice(xrange(10), 2, None)), range(2, 10)) - self.assertEqual(list(islice(xrange(10), 1, None, 2)), range(1, 10, 2)) + self.assertEqual(list(islice(range(10), None)), list(range(10))) + self.assertEqual(list(islice(range(10), None, None)), list(range(10))) + self.assertEqual(list(islice(range(10), None, None, None)), list(range(10))) + self.assertEqual(list(islice(range(10), 2, None)), list(range(2, 10))) + self.assertEqual(list(islice(range(10), 1, None, 2)), list(range(1, 10, 2))) # Test number of items consumed SF #1171417 it = iter(range(10)) - self.assertEqual(list(islice(it, 3)), range(3)) - self.assertEqual(list(it), range(3, 10)) + self.assertEqual(list(islice(it, 3)), list(range(3))) + self.assertEqual(list(it), list(range(3, 10))) # Test invalid arguments - self.assertRaises(TypeError, islice, xrange(10)) - self.assertRaises(TypeError, islice, xrange(10), 1, 2, 3, 4) - self.assertRaises(ValueError, islice, xrange(10), -5, 10, 1) - self.assertRaises(ValueError, islice, xrange(10), 1, -5, -1) - self.assertRaises(ValueError, islice, xrange(10), 1, 10, -1) - self.assertRaises(ValueError, islice, xrange(10), 1, 10, 0) - self.assertRaises(ValueError, islice, xrange(10), 'a') - self.assertRaises(ValueError, islice, xrange(10), 'a', 1) - self.assertRaises(ValueError, islice, xrange(10), 1, 'a') - self.assertRaises(ValueError, islice, xrange(10), 'a', 1, 1) - self.assertRaises(ValueError, islice, xrange(10), 1, 'a', 1) + self.assertRaises(TypeError, islice, range(10)) + self.assertRaises(TypeError, islice, range(10), 1, 2, 3, 4) + self.assertRaises(ValueError, islice, range(10), -5, 10, 1) + self.assertRaises(ValueError, islice, range(10), 1, -5, -1) + self.assertRaises(ValueError, islice, range(10), 1, 10, -1) + self.assertRaises(ValueError, islice, range(10), 1, 10, 0) + self.assertRaises(ValueError, islice, range(10), 'a') + self.assertRaises(ValueError, islice, range(10), 'a', 1) + self.assertRaises(ValueError, islice, range(10), 1, 'a') + self.assertRaises(ValueError, islice, range(10), 'a', 1, 1) + self.assertRaises(ValueError, islice, range(10), 1, 'a', 1) self.assertEqual(len(list(islice(count(), 1, 10, sys.maxint))), 1) def test_takewhile(self): @@ -364,7 +366,7 @@ class TestBasicOps(unittest.TestCase): def test_tee(self): n = 200 def irange(n): - for i in xrange(n): + for i in range(n): yield i a, b = tee([]) # test empty iterator @@ -375,22 +377,22 @@ class TestBasicOps(unittest.TestCase): self.assertEqual(lzip(a,b), lzip(range(n), range(n))) a, b = tee(irange(n)) # test 0% interleaved - self.assertEqual(list(a), range(n)) - self.assertEqual(list(b), range(n)) + self.assertEqual(list(a), list(range(n))) + self.assertEqual(list(b), list(range(n))) a, b = tee(irange(n)) # test dealloc of leading iterator - for i in xrange(100): + for i in range(100): self.assertEqual(next(a), i) del a - self.assertEqual(list(b), range(n)) + self.assertEqual(list(b), list(range(n))) a, b = tee(irange(n)) # test dealloc of trailing iterator - for i in xrange(100): + for i in range(100): self.assertEqual(next(a), i) del b - self.assertEqual(list(a), range(100, n)) + self.assertEqual(list(a), list(range(100, n))) - for j in xrange(5): # test randomly interleaved + for j in range(5): # test randomly interleaved order = [0]*n + [1]*n random.shuffle(order) lists = ([], []) @@ -398,8 +400,8 @@ class TestBasicOps(unittest.TestCase): for i in order: value = next(its[i]) lists[i].append(value) - self.assertEqual(lists[0], range(n)) - self.assertEqual(lists[1], range(n)) + self.assertEqual(lists[0], list(range(n))) + self.assertEqual(lists[1], list(range(n))) # test argument format checking self.assertRaises(TypeError, tee) @@ -413,18 +415,18 @@ class TestBasicOps(unittest.TestCase): self.assertEqual(list(c), list('def')) # test long-lagged and multi-way split - a, b, c = tee(xrange(2000), 3) - for i in xrange(100): + a, b, c = tee(range(2000), 3) + for i in range(100): self.assertEqual(next(a), i) - self.assertEqual(list(b), range(2000)) - self.assertEqual([next(c), next(c)], range(2)) - self.assertEqual(list(a), range(100,2000)) - self.assertEqual(list(c), range(2,2000)) + self.assertEqual(list(b), list(range(2000))) + self.assertEqual([next(c), next(c)], list(range(2))) + self.assertEqual(list(a), list(range(100,2000))) + self.assertEqual(list(c), list(range(2,2000))) # test values of n self.assertRaises(TypeError, tee, 'abc', 'invalid') self.assertRaises(ValueError, tee, [], -1) - for n in xrange(5): + for n in range(5): result = tee('abc', n) self.assertEqual(type(result), tuple) self.assertEqual(len(result), n) @@ -444,7 +446,7 @@ class TestBasicOps(unittest.TestCase): self.assert_(list(t1) == list(t2) == list(t3) == list('abc')) # test that tee objects are weak referencable - a, b = tee(xrange(10)) + a, b = tee(range(10)) p = proxy(a) self.assertEqual(getattr(p, '__class__'), type(b)) del a @@ -608,7 +610,7 @@ def L(seqn): class TestVariousIteratorArgs(unittest.TestCase): def test_chain(self): - for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): + for s in ("123", "", range(1000), ('do', 1.2), range(2000,2200,5)): for g in (G, I, Ig, S, L, R): self.assertEqual(list(chain(g(s))), list(g(s))) self.assertEqual(list(chain(g(s), g(s))), list(g(s))+list(g(s))) @@ -617,7 +619,7 @@ class TestVariousIteratorArgs(unittest.TestCase): self.assertRaises(ZeroDivisionError, list, chain(E(s))) def test_cycle(self): - for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): + for s in ("123", "", range(1000), ('do', 1.2), range(2000,2200,5)): for g in (G, I, Ig, S, L, R): tgtlen = len(s) * 3 expected = list(g(s))*3 @@ -628,7 +630,7 @@ class TestVariousIteratorArgs(unittest.TestCase): self.assertRaises(ZeroDivisionError, list, cycle(E(s))) def test_groupby(self): - for s in (range(10), range(0), range(1000), (7,11), xrange(2000,2200,5)): + for s in (range(10), range(0), range(1000), (7,11), range(2000,2200,5)): for g in (G, I, Ig, S, L, R): self.assertEqual([k for k, sb in groupby(g(s))], list(g(s))) self.assertRaises(TypeError, groupby, X(s)) @@ -636,7 +638,7 @@ class TestVariousIteratorArgs(unittest.TestCase): self.assertRaises(ZeroDivisionError, list, groupby(E(s))) def test_ifilter(self): - for s in (range(10), range(0), range(1000), (7,11), xrange(2000,2200,5)): + for s in (range(10), range(0), range(1000), (7,11), range(2000,2200,5)): for g in (G, I, Ig, S, L, R): self.assertEqual(list(ifilter(isEven, g(s))), filter(isEven, g(s))) self.assertRaises(TypeError, ifilter, isEven, X(s)) @@ -644,7 +646,7 @@ class TestVariousIteratorArgs(unittest.TestCase): self.assertRaises(ZeroDivisionError, list, ifilter(isEven, E(s))) def test_ifilterfalse(self): - for s in (range(10), range(0), range(1000), (7,11), xrange(2000,2200,5)): + for s in (range(10), range(0), range(1000), (7,11), range(2000,2200,5)): for g in (G, I, Ig, S, L, R): self.assertEqual(list(ifilterfalse(isEven, g(s))), filter(isOdd, g(s))) self.assertRaises(TypeError, ifilterfalse, isEven, X(s)) @@ -652,7 +654,7 @@ class TestVariousIteratorArgs(unittest.TestCase): self.assertRaises(ZeroDivisionError, list, ifilterfalse(isEven, E(s))) def test_izip(self): - for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): + for s in ("123", "", range(1000), ('do', 1.2), range(2000,2200,5)): for g in (G, I, Ig, S, L, R): self.assertEqual(list(izip(g(s))), lzip(g(s))) self.assertEqual(list(izip(g(s), g(s))), lzip(g(s), g(s))) @@ -661,7 +663,7 @@ class TestVariousIteratorArgs(unittest.TestCase): self.assertRaises(ZeroDivisionError, list, izip(E(s))) def test_iziplongest(self): - for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): + for s in ("123", "", range(1000), ('do', 1.2), range(2000,2200,5)): for g in (G, I, Ig, S, L, R): self.assertEqual(list(izip_longest(g(s))), list(zip(g(s)))) self.assertEqual(list(izip_longest(g(s), g(s))), list(zip(g(s), g(s)))) @@ -670,7 +672,7 @@ class TestVariousIteratorArgs(unittest.TestCase): self.assertRaises(ZeroDivisionError, list, izip_longest(E(s))) def test_imap(self): - for s in (range(10), range(0), range(100), (7,11), xrange(20,50,5)): + for s in (range(10), range(0), range(100), (7,11), range(20,50,5)): for g in (G, I, Ig, S, L, R): self.assertEqual(list(imap(onearg, g(s))), map(onearg, g(s))) self.assertEqual(list(imap(operator.pow, g(s), g(s))), map(operator.pow, g(s), g(s))) @@ -679,7 +681,7 @@ class TestVariousIteratorArgs(unittest.TestCase): self.assertRaises(ZeroDivisionError, list, imap(onearg, E(s))) def test_islice(self): - for s in ("12345", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): + for s in ("12345", "", range(1000), ('do', 1.2), range(2000,2200,5)): for g in (G, I, Ig, S, L, R): self.assertEqual(list(islice(g(s),1,None,2)), list(g(s))[1::2]) self.assertRaises(TypeError, islice, X(s), 10) @@ -687,7 +689,7 @@ class TestVariousIteratorArgs(unittest.TestCase): self.assertRaises(ZeroDivisionError, list, islice(E(s), 10)) def test_starmap(self): - for s in (range(10), range(0), range(100), (7,11), xrange(20,50,5)): + for s in (range(10), range(0), range(100), (7,11), range(20,50,5)): for g in (G, I, Ig, S, L, R): ss = lzip(s, s) self.assertEqual(list(starmap(operator.pow, g(ss))), map(operator.pow, g(s), g(s))) @@ -696,7 +698,7 @@ class TestVariousIteratorArgs(unittest.TestCase): self.assertRaises(ZeroDivisionError, list, starmap(operator.pow, E(ss))) def test_takewhile(self): - for s in (range(10), range(0), range(1000), (7,11), xrange(2000,2200,5)): + for s in (range(10), range(0), range(1000), (7,11), range(2000,2200,5)): for g in (G, I, Ig, S, L, R): tgt = [] for elem in g(s): @@ -708,7 +710,7 @@ class TestVariousIteratorArgs(unittest.TestCase): self.assertRaises(ZeroDivisionError, list, takewhile(isEven, E(s))) def test_dropwhile(self): - for s in (range(10), range(0), range(1000), (7,11), xrange(2000,2200,5)): + for s in (range(10), range(0), range(1000), (7,11), range(2000,2200,5)): for g in (G, I, Ig, S, L, R): tgt = [] for elem in g(s): @@ -720,7 +722,7 @@ class TestVariousIteratorArgs(unittest.TestCase): self.assertRaises(ZeroDivisionError, list, dropwhile(isOdd, E(s))) def test_tee(self): - for s in ("123", "", range(1000), ('do', 1.2), xrange(2000,2200,5)): + for s in ("123", "", range(1000), ('do', 1.2), range(2000,2200,5)): for g in (G, I, Ig, S, L, R): it1, it2 = tee(g(s)) self.assertEqual(list(it1), list(g(s))) @@ -824,7 +826,7 @@ Check 1201 is for $764.05 Check 1202 is for $823.14 >>> import operator ->>> for cube in imap(operator.pow, xrange(1,4), repeat(3)): +>>> for cube in imap(operator.pow, range(1,4), repeat(3)): ... print(cube) ... 1 @@ -968,7 +970,7 @@ True >>> no([1, 2, 5, 9], lambda x: x%2==0) False ->>> quantify(xrange(99), lambda x: x%2==0) +>>> quantify(range(99), lambda x: x%2==0) 50 >>> a = [[1, 2, 3], [4, 5, 6]] @@ -1014,7 +1016,7 @@ def test_main(verbose=None): if verbose and hasattr(sys, "gettotalrefcount"): import gc counts = [None] * 5 - for i in xrange(len(counts)): + for i in range(len(counts)): test_support.run_unittest(*test_classes) gc.collect() counts[i] = sys.gettotalrefcount() diff --git a/Lib/test/test_list.py b/Lib/test/test_list.py index 5d9983f..ea78773 100644 --- a/Lib/test/test_list.py +++ b/Lib/test/test_list.py @@ -26,7 +26,7 @@ def test_main(verbose=None): if verbose and hasattr(sys, "gettotalrefcount"): import gc counts = [None] * 5 - for i in xrange(len(counts)): + for i in range(len(counts)): test_support.run_unittest(ListTest) gc.collect() counts[i] = sys.gettotalrefcount() diff --git a/Lib/test/test_listcomps.py b/Lib/test/test_listcomps.py index bef4fff..6590777 100644 --- a/Lib/test/test_listcomps.py +++ b/Lib/test/test_listcomps.py @@ -43,20 +43,20 @@ Verify that syntax error's are raised for listcomps used as lvalues Make a nested list comprehension that acts like range() >>> def frange(n): - ... return [i for i in xrange(n)] + ... return [i for i in range(n)] >>> frange(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Same again, only as a lambda expression instead of a function definition - >>> lrange = lambda n: [i for i in xrange(n)] + >>> lrange = lambda n: [i for i in range(n)] >>> lrange(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Generators can call other generators: >>> def grange(n): - ... for x in [i for i in xrange(n)]: + ... for x in [i for i in range(n)]: ... yield x >>> list(grange(5)) [0, 1, 2, 3, 4] @@ -64,7 +64,7 @@ Generators can call other generators: Make sure that None is a valid return value - >>> [None for i in xrange(10)] + >>> [None for i in range(10)] [None, None, None, None, None, None, None, None, None, None] ########### Tests for various scoping corner cases ############ @@ -138,7 +138,7 @@ def test_main(verbose=None): if verbose and hasattr(sys, "gettotalrefcount"): import gc counts = [None] * 5 - for i in xrange(len(counts)): + for i in range(len(counts)): test_support.run_doctest(test_genexps, verbose) gc.collect() counts[i] = sys.gettotalrefcount() @@ -191,20 +191,20 @@ Verify that syntax error's are raised for listcomps used as lvalues Make a nested list comprehension that acts like range() >>> def frange(n): - ... return [i for i in xrange(n)] + ... return [i for i in range(n)] >>> frange(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Same again, only as a lambda expression instead of a function definition - >>> lrange = lambda n: [i for i in xrange(n)] + >>> lrange = lambda n: [i for i in range(n)] >>> lrange(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Generators can call other generators: >>> def grange(n): - ... for x in [i for i in xrange(n)]: + ... for x in [i for i in range(n)]: ... yield x >>> list(grange(5)) [0, 1, 2, 3, 4] @@ -212,7 +212,7 @@ Generators can call other generators: Make sure that None is a valid return value - >>> [None for i in xrange(10)] + >>> [None for i in range(10)] [None, None, None, None, None, None, None, None, None, None] ########### Tests for various scoping corner cases ############ @@ -286,7 +286,7 @@ def test_main(verbose=None): if verbose and hasattr(sys, "gettotalrefcount"): import gc counts = [None] * 5 - for i in xrange(len(counts)): + for i in range(len(counts)): test_support.run_doctest(test_genexps, verbose) gc.collect() counts[i] = sys.gettotalrefcount() @@ -339,20 +339,20 @@ Verify that syntax error's are raised for listcomps used as lvalues Make a nested list comprehension that acts like range() >>> def frange(n): - ... return [i for i in xrange(n)] + ... return [i for i in range(n)] >>> frange(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Same again, only as a lambda expression instead of a function definition - >>> lrange = lambda n: [i for i in xrange(n)] + >>> lrange = lambda n: [i for i in range(n)] >>> lrange(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Generators can call other generators: >>> def grange(n): - ... for x in [i for i in xrange(n)]: + ... for x in [i for i in range(n)]: ... yield x >>> list(grange(5)) [0, 1, 2, 3, 4] @@ -360,7 +360,7 @@ Generators can call other generators: Make sure that None is a valid return value - >>> [None for i in xrange(10)] + >>> [None for i in range(10)] [None, None, None, None, None, None, None, None, None, None] ########### Tests for various scoping corner cases ############ @@ -434,7 +434,7 @@ def test_main(verbose=None): if verbose and hasattr(sys, "gettotalrefcount"): import gc counts = [None] * 5 - for i in xrange(len(counts)): + for i in range(len(counts)): test_support.run_doctest(test_genexps, verbose) gc.collect() counts[i] = sys.gettotalrefcount() diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index e8e4a8d..c8e77e8 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -355,7 +355,7 @@ def test2(): logger.info("Info message") message("-- logging at WARNING, 3 messages should be seen --") logger.warn("Warn message") - for i in xrange(102): + for i in range(102): message(MSG % i) logger.info("Info index = %d", i) mh.close() diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py index 1f65202..c38056d 100644 --- a/Lib/test/test_long.py +++ b/Lib/test/test_long.py @@ -71,7 +71,7 @@ class LongTest(unittest.TestCase): def getran2(ndigits): answer = 0 - for i in xrange(ndigits): + for i in range(ndigits): answer = (answer << SHIFT) | random.randint(0, MASK) if random.random() < 0.5: answer = -answer @@ -92,8 +92,8 @@ class LongTest(unittest.TestCase): self.assert_(y < r <= 0, Frm("bad mod from divmod on %r and %r", x, y)) def test_division(self): - digits = range(1, MAXDIGITS+1) + range(KARATSUBA_CUTOFF, - KARATSUBA_CUTOFF + 14) + digits = list(range(1, MAXDIGITS+1)) + list(range(KARATSUBA_CUTOFF, + KARATSUBA_CUTOFF + 14)) digits.append(KARATSUBA_CUTOFF * 3) for lenx in digits: x = self.getran(lenx) @@ -102,7 +102,8 @@ class LongTest(unittest.TestCase): self.check_division(x, y) def test_karatsuba(self): - digits = range(1, 5) + range(KARATSUBA_CUTOFF, KARATSUBA_CUTOFF + 10) + digits = list(range(1, 5)) + list(range(KARATSUBA_CUTOFF, + KARATSUBA_CUTOFF + 10)) digits.extend([KARATSUBA_CUTOFF * 10, KARATSUBA_CUTOFF * 100]) bits = [digit * SHIFT for digit in digits] @@ -140,7 +141,7 @@ class LongTest(unittest.TestCase): eq(x ^ ~x, -1, Frm("x ^ ~x != -1 for x=%r", x)) eq(-x, 1 + ~x, Frm("not -x == 1 + ~x for x=%r", x)) eq(-x, ~(x-1), Frm("not -x == ~(x-1) forx =%r", x)) - for n in xrange(2*SHIFT): + for n in range(2*SHIFT): p2 = 2 ** n eq(x << n >> n, x, Frm("x << n >> n != x for x=%r, n=%r", (x, n))) @@ -184,7 +185,7 @@ class LongTest(unittest.TestCase): def test_bitop_identities(self): for x in special: self.check_bitop_identities_1(x) - digits = xrange(1, MAXDIGITS+1) + digits = range(1, MAXDIGITS+1) for lenx in digits: x = self.getran(lenx) self.check_bitop_identities_1(x) @@ -229,8 +230,8 @@ class LongTest(unittest.TestCase): def test_format(self): for x in special: self.check_format_1(x) - for i in xrange(10): - for lenx in xrange(1, MAXDIGITS+1): + for i in range(10): + for lenx in range(1, MAXDIGITS+1): x = self.getran(lenx) self.check_format_1(x) @@ -399,7 +400,7 @@ class LongTest(unittest.TestCase): LOG10E = math.log10(math.e) - for exp in range(10) + [100, 1000, 10000]: + for exp in list(range(10)) + [100, 1000, 10000]: value = 10 ** exp log10 = math.log10(value) self.assertAlmostEqual(log10, exp) diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py index 1972ca3..84a9e5c 100644 --- a/Lib/test/test_mailbox.py +++ b/Lib/test/test_mailbox.py @@ -208,7 +208,7 @@ class TestMailbox(TestBase): for value in method(): self.fail("Not empty") keys, values = [], [] - for i in xrange(repetitions): + for i in range(repetitions): keys.append(self._box.add(self._template % i)) values.append(self._template % i) if do_keys and not do_values: @@ -254,11 +254,11 @@ class TestMailbox(TestBase): def test_len(self, repetitions=10): # Get message count keys = [] - for i in xrange(repetitions): + for i in range(repetitions): self.assert_(len(self._box) == i) keys.append(self._box.add(self._template % i)) self.assert_(len(self._box) == i + 1) - for i in xrange(repetitions): + for i in range(repetitions): self.assert_(len(self._box) == repetitions - i) self._box.remove(keys[i]) self.assert_(len(self._box) == repetitions - i - 1) @@ -293,7 +293,7 @@ class TestMailbox(TestBase): def test_clear(self, iterations=10): # Remove all messages using clear() keys = [] - for i in xrange(iterations): + for i in range(iterations): self._box.add(self._template % i) for i, key in enumerate(keys): self.assert_(self._box.get_string(key) == self._template % i) @@ -323,10 +323,10 @@ class TestMailbox(TestBase): def test_popitem(self, iterations=10): # Get and remove an arbitrary (key, message) using popitem() keys = [] - for i in xrange(10): + for i in range(10): keys.append(self._box.add(self._template % i)) seen = [] - for i in xrange(10): + for i in range(10): key, msg = self._box.popitem() self.assert_(key in keys) self.assert_(key not in seen) @@ -387,7 +387,7 @@ class TestMailbox(TestBase): self._test_flush_or_close(self._box.close) def _test_flush_or_close(self, method): - contents = [self._template % i for i in xrange(3)] + contents = [self._template % i for i in range(3)] self._box.add(contents[0]) self._box.add(contents[1]) self._box.add(contents[2]) @@ -599,7 +599,7 @@ class TestMaildir(TestMailbox): pattern = re.compile(r"(?P