summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--QMTest/TestCmd.py18
-rw-r--r--src/engine/SCons/ActionTests.py1
-rw-r--r--src/engine/SCons/Script/Main.py2
-rw-r--r--src/engine/SCons/compat/__init__.py32
-rw-r--r--src/engine/SCons/compat/_scons_sets.py3
-rw-r--r--src/engine/SCons/compat/_scons_sets15.py174
-rw-r--r--src/engine/SCons/compat/_scons_subprocess.py14
-rw-r--r--src/engine/SCons/compat/builtins.py4
-rw-r--r--src/engine/SCons/dblite.py3
-rw-r--r--src/script/scons-time.py7
-rw-r--r--src/script/sconsign.py2
-rw-r--r--test/Batch/action-changed.py2
-rw-r--r--test/KeyboardInterrupt.py2
-rw-r--r--test/SWIG/build-dir.py2
-rw-r--r--test/option/md5-chunksize.py4
-rw-r--r--test/scons-time/func/chdir.py2
-rw-r--r--test/scons-time/func/glob.py2
-rw-r--r--test/scons-time/func/prefix.py4
-rw-r--r--test/scons-time/func/tail.py2
-rw-r--r--test/scons-time/mem/chdir.py2
-rw-r--r--test/scons-time/mem/glob.py2
-rw-r--r--test/scons-time/mem/prefix.py2
-rw-r--r--test/scons-time/mem/tail.py2
-rw-r--r--test/scons-time/obj/chdir.py2
-rw-r--r--test/scons-time/obj/glob.py2
-rw-r--r--test/scons-time/obj/prefix.py2
-rw-r--r--test/scons-time/obj/tail.py2
-rw-r--r--test/scons-time/time/chdir.py2
-rw-r--r--test/scons-time/time/empty.py2
-rw-r--r--test/scons-time/time/glob.py2
-rw-r--r--test/scons-time/time/no-result.py2
-rw-r--r--test/scons-time/time/prefix.py2
-rw-r--r--test/scons-time/time/tail.py2
-rw-r--r--timings/CPPPATH/SConstruct2
-rw-r--r--timings/CPPPATH/TimeSCons-run.py2
-rw-r--r--timings/hundred/SConstruct4
-rw-r--r--timings/hundred/TimeSCons-run.py2
37 files changed, 79 insertions, 239 deletions
diff --git a/QMTest/TestCmd.py b/QMTest/TestCmd.py
index a7f97d7..0139b29 100644
--- a/QMTest/TestCmd.py
+++ b/QMTest/TestCmd.py
@@ -231,6 +231,21 @@ import time
import traceback
import UserList
+try:
+ # pre-2.7 doesn't have the memoryview() built-in
+ memoryview
+except NameError:
+ class memoryview:
+ from types import SliceType
+ def __init__(self, obj):
+ # wrapping buffer in () keeps the fixer from changing it
+ self.obj = (buffer)(obj)
+ def __getitem__(self, indx):
+ if isinstance(indx, self.SliceType):
+ return self.obj[indx.start:indx.stop]
+ else:
+ return self.obj[indx]
+
__all__ = [
'diff_re',
'fail_test',
@@ -809,13 +824,12 @@ def recv_some(p, t=.1, e=1, tr=5, stderr=0):
time.sleep(max((x-time.time())/tr, 0))
return ''.join(y)
-# TODO(3.0: rewrite to use memoryview()
def send_all(p, data):
while len(data):
sent = p.send(data)
if sent is None:
raise Exception(disconnect_message)
- data = buffer(data, sent)
+ data = memoryview(data)[sent:]
diff --git a/src/engine/SCons/ActionTests.py b/src/engine/SCons/ActionTests.py
index 052582b..3f78812 100644
--- a/src/engine/SCons/ActionTests.py
+++ b/src/engine/SCons/ActionTests.py
@@ -191,7 +191,6 @@ _null = SCons.Action._null
def test_varlist(pos_call, str_call, cmd, cmdstrfunc, **kw):
def call_action(a, pos_call=pos_call, str_call=str_call, kw=kw):
- #FUTURE a = SCons.Action.Action(*a, **kw)
a = SCons.Action.Action(*a, **kw)
# returned object must provide these entry points
assert hasattr(a, '__call__')
diff --git a/src/engine/SCons/Script/Main.py b/src/engine/SCons/Script/Main.py
index 55ac598..9b8c94b 100644
--- a/src/engine/SCons/Script/Main.py
+++ b/src/engine/SCons/Script/Main.py
@@ -1148,7 +1148,7 @@ def _build_targets(fs, options, targets, target_top):
# This is cribbed from the implementation of
# random.shuffle() in Python 2.X.
d = dependencies
- for i in xrange(len(d)-1, 0, -1):
+ for i in range(len(d)-1, 0, -1):
j = int(random.random() * (i+1))
d[i], d[j] = d[j], d[i]
return d
diff --git a/src/engine/SCons/compat/__init__.py b/src/engine/SCons/compat/__init__.py
index 49c317c..792b77a 100644
--- a/src/engine/SCons/compat/__init__.py
+++ b/src/engine/SCons/compat/__init__.py
@@ -92,19 +92,8 @@ try:
set
except NameError:
# Pre-2.4 Python has no native set type
- try:
- # Python 2.2 and 2.3 can use the copy of the 2.[45] sets module
- # that we grabbed.
- import_as('_scons_sets', 'sets')
- except (ImportError, SyntaxError):
- # Python 1.5 (ImportError, no __future_ module) and 2.1
- # (SyntaxError, no generators in __future__) will blow up
- # trying to import the 2.[45] sets module, so back off to a
- # custom sets module that can be discarded easily when we
- # stop supporting those versions.
- import_as('_scons_sets15', 'sets')
- import __builtin__
- import sets
+ import_as('_scons_sets', 'sets')
+ import __builtin__, sets
__builtin__.set = sets.Set
import fnmatch
@@ -312,7 +301,22 @@ except AttributeError:
tempfile.mkstemp = mkstemp
del mkstemp
-
+try:
+ # pre-2.7 doesn't have the memoryview() built-in
+ memoryview
+except NameError:
+ class memoryview:
+ from types import SliceType
+ def __init__(self, obj):
+ # wrapping buffer in () keeps the fixer from changing it
+ self.obj = (buffer)(obj)
+ def __getitem__(self, indx):
+ if isinstance(indx, self.SliceType):
+ return self.obj[indx.start:indx.stop]
+ else:
+ return self.obj[indx]
+ import __builtin__
+ __builtin__.memoryview = memoryview
# Local Variables:
diff --git a/src/engine/SCons/compat/_scons_sets.py b/src/engine/SCons/compat/_scons_sets.py
index 713d6e9..765867b 100644
--- a/src/engine/SCons/compat/_scons_sets.py
+++ b/src/engine/SCons/compat/_scons_sets.py
@@ -121,7 +121,8 @@ class BaseSet(object):
This is the keys iterator for the underlying dict.
"""
- return self._data.iterkeys()
+ # Wrapping name in () prevents fixer from "fixing" this
+ return (self._data.iterkeys)()
# Three-way comparison is not supported. However, because __eq__ is
# tried before __cmp__, if Set x == Set y, x.__eq__(y) returns True and
diff --git a/src/engine/SCons/compat/_scons_sets15.py b/src/engine/SCons/compat/_scons_sets15.py
deleted file mode 100644
index b693f78..0000000
--- a/src/engine/SCons/compat/_scons_sets15.py
+++ /dev/null
@@ -1,174 +0,0 @@
-#
-# A Set class that works all the way back to Python 1.5. From:
-#
-# Python Cookbook: Yet another Set class for Python
-# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/106469
-# Goncalo Rodriques
-#
-# This is a pure Pythonic implementation of a set class. The syntax
-# and methods implemented are, for the most part, borrowed from
-# PEP 218 by Greg Wilson.
-#
-# Note that this class violates the formal definition of a set() by adding
-# a __getitem__() method so we can iterate over a set's elements under
-# Python 1.5 and 2.1, which don't support __iter__() and iterator types.
-#
-
-class Set:
- """The set class. It can contain mutable objects."""
-
- def __init__(self, seq = None):
- """The constructor. It can take any object giving an iterator as an optional
- argument to populate the new set."""
- self.elems = []
- if seq:
- for elem in seq:
- if elem not in self.elems:
- hash(elem)
- self.elems.append(elem)
-
- def __str__(self):
- return "set([%s])" % ", ".join(map(str, self.elems))
-
-
- def copy(self):
- """Shallow copy of a set object."""
- return Set(self.elems)
-
- def __contains__(self, elem):
- return elem in self.elems
-
- def __len__(self):
- return len(self.elems)
-
- def __getitem__(self, index):
- # Added so that Python 1.5 can iterate over the elements.
- # The cookbook recipe's author didn't like this because there
- # really isn't any order in a set object, but this is necessary
- # to make the class work well enough for our purposes.
- return self.elems[index]
-
- def items(self):
- """Returns a list of the elements in the set."""
- return self.elems
-
- def add(self, elem):
- """Add one element to the set."""
- if elem not in self.elems:
- hash(elem)
- self.elems.append(elem)
-
- def remove(self, elem):
- """Remove an element from the set. Return an error if elem is not in the set."""
- try:
- self.elems.remove(elem)
- except ValueError:
- raise LookupError, "Object %s is not a member of the set." % str(elem)
-
- def discard(self, elem):
- """Remove an element from the set. Do nothing if elem is not in the set."""
- try:
- self.elems.remove(elem)
- except ValueError:
- pass
-
- def sort(self, func=cmp):
- self.elems.sort(func)
-
- #Define an iterator for a set.
- def __iter__(self):
- return iter(self.elems)
-
- #The basic binary operations with sets.
- def __or__(self, other):
- """Union of two sets."""
- ret = self.copy()
- for elem in other.elems:
- if elem not in ret:
- ret.elems.append(elem)
- return ret
-
- def __sub__(self, other):
- """Difference of two sets."""
- ret = self.copy()
- for elem in other.elems:
- ret.discard(elem)
- return ret
-
- def __and__(self, other):
- """Intersection of two sets."""
- ret = Set()
- for elem in self.elems:
- if elem in other.elems:
- ret.elems.append(elem)
- return ret
-
- def __add__(self, other):
- """Symmetric difference of two sets."""
- ret = Set()
- temp = other.copy()
- for elem in self.elems:
- if elem in temp.elems:
- temp.elems.remove(elem)
- else:
- ret.elems.append(elem)
- #Add remaining elements.
- for elem in temp.elems:
- ret.elems.append(elem)
- return ret
-
- def __mul__(self, other):
- """Cartesian product of two sets."""
- ret = Set()
- for elemself in self.elems:
- x = list(map(lambda other, s=elemself: (s, other), other.elems))
- ret.elems.extend(x)
- return ret
-
- #Some of the binary comparisons.
- def __lt__(self, other):
- """Returns 1 if the lhs set is contained but not equal to the rhs set."""
- if len(self.elems) < len(other.elems):
- temp = other.copy()
- for elem in self.elems:
- if elem in temp.elems:
- temp.remove(elem)
- else:
- return 0
- return len(temp.elems) == 0
- else:
- return 0
-
- def __le__(self, other):
- """Returns 1 if the lhs set is contained in the rhs set."""
- if len(self.elems) <= len(other.elems):
- ret = 1
- for elem in self.elems:
- if elem not in other.elems:
- ret = 0
- break
- return ret
- else:
- return 0
-
- def __eq__(self, other):
- """Returns 1 if the sets are equal."""
- if len(self.elems) != len(other.elems):
- return 0
- else:
- return len(self - other) == 0
-
- def __cmp__(self, other):
- """Returns 1 if the sets are equal."""
- if self.__lt__(other):
- return -1
- elif other.__lt__(self):
- return 1
- else:
- return 0
-
-# Local Variables:
-# tab-width:4
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=4 shiftwidth=4:
diff --git a/src/engine/SCons/compat/_scons_subprocess.py b/src/engine/SCons/compat/_scons_subprocess.py
index 67eafca..bdcae63 100644
--- a/src/engine/SCons/compat/_scons_subprocess.py
+++ b/src/engine/SCons/compat/_scons_subprocess.py
@@ -458,13 +458,10 @@ try:
except AttributeError:
try:
types.StringTypes = (str, unicode)
- except AttributeError:
+ except NameError:
types.StringTypes = (str,)
- def is_string(obj):
- return type(obj) in types.StringTypes
-else:
- def is_string(obj):
- return isinstance(obj, types.StringTypes)
+def is_string(obj):
+ return isinstance(obj, types.StringTypes)
_active = []
@@ -1002,7 +999,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:
@@ -1186,7 +1183,8 @@ class Popen(object):
# When select has indicated that the file is writable,
# we can write up to PIPE_BUF bytes without risk
# blocking. POSIX defines PIPE_BUF >= 512
- bytes_written = os.write(self.stdin.fileno(), buffer(input, input_offset, 512))
+ m = memoryview(input)[input_offset:input_offset+512]
+ bytes_written = os.write(self.stdin.fileno(), m)
input_offset = input_offset + bytes_written
if input_offset >= len(input):
self.stdin.close()
diff --git a/src/engine/SCons/compat/builtins.py b/src/engine/SCons/compat/builtins.py
index 678ef2e..4f7e710 100644
--- a/src/engine/SCons/compat/builtins.py
+++ b/src/engine/SCons/compat/builtins.py
@@ -184,13 +184,11 @@ except NameError:
argument sequence.
"""
result = []
- for i in xrange(min(list(map(len, lists)))):
+ for i in range(min(list(map(len, lists)))):
result.append(tuple([l[i] for l in lists]))
return result
__builtin__.zip = zip
-
-
#if sys.version_info[:3] in ((2, 2, 0), (2, 2, 1)):
# def lstrip(s, c=string.whitespace):
# while s and s[0] in c:
diff --git a/src/engine/SCons/dblite.py b/src/engine/SCons/dblite.py
index 2383f1d..0789396 100644
--- a/src/engine/SCons/dblite.py
+++ b/src/engine/SCons/dblite.py
@@ -157,7 +157,8 @@ class dblite:
return key in self._dict
def iterkeys(self):
- return self._dict.iterkeys()
+ # Wrapping name in () prevents fixer from "fixing" this
+ return (self._dict.iterkeys)()
__iter__ = iterkeys
diff --git a/src/script/scons-time.py b/src/script/scons-time.py
index 04fa573..6c43e29 100644
--- a/src/script/scons-time.py
+++ b/src/script/scons-time.py
@@ -261,10 +261,9 @@ class Gnuplotter(Plotter):
min_y = self.get_min_y()
max_y = self.max_graph_value(self.get_max_y())
- range = max_y - min_y
- incr = range / 10.0
+ incr = (max_y - min_y) / 10.0
start = min_y + (max_y / 2.0) + (2.0 * incr)
- position = [ start - (i * incr) for i in xrange(5) ]
+ position = [ start - (i * incr) for i in range(5) ]
inx = 1
for line in self.lines:
@@ -1268,7 +1267,7 @@ class SConsTimer:
except ValueError:
result.append(int(n))
else:
- result.extend(range(int(x), int(y)+1))
+ result.extend(list(range(int(x), int(y)+1)))
return result
def scons_path(self, dir):
diff --git a/src/script/sconsign.py b/src/script/sconsign.py
index ac619a5..e119a51 100644
--- a/src/script/sconsign.py
+++ b/src/script/sconsign.py
@@ -249,7 +249,7 @@ def map_bkids(entry, name):
except AttributeError:
return None
result = []
- for i in xrange(len(bkids)):
+ for i in range(len(bkids)):
result.append(nodeinfo_string(bkids[i], bkidsigs[i], " "))
if result == []:
return None
diff --git a/test/Batch/action-changed.py b/test/Batch/action-changed.py
index 886a692..dc2805a 100644
--- a/test/Batch/action-changed.py
+++ b/test/Batch/action-changed.py
@@ -43,7 +43,7 @@ import sys
sep = sys.argv.index('--')
targets = sys.argv[1:sep]
sources = sys.argv[sep+1:]
-for i in xrange(len(targets)):
+for i in range(len(targets)):
t = targets[i]
s = sources[i]
fp = open(t, 'wb')
diff --git a/test/KeyboardInterrupt.py b/test/KeyboardInterrupt.py
index d0f1207..bcb576c 100644
--- a/test/KeyboardInterrupt.py
+++ b/test/KeyboardInterrupt.py
@@ -76,7 +76,7 @@ else:
all = []
-for i in xrange(40):
+for i in range(40):
all.extend(Object('toto%5d' % i, 'toto.c'))
all.extend(Command( 'broken', 'toto.c', explode))
diff --git a/test/SWIG/build-dir.py b/test/SWIG/build-dir.py
index d5b5236..a9d7cb2 100644
--- a/test/SWIG/build-dir.py
+++ b/test/SWIG/build-dir.py
@@ -136,7 +136,7 @@ public:
%pythoncode %{
def __iter__(self):
- for i in xrange(len(self)):
+ for i in range(len(self)):
yield self[i]
%}
}
diff --git a/test/option/md5-chunksize.py b/test/option/md5-chunksize.py
index acd3492..375208d 100644
--- a/test/option/md5-chunksize.py
+++ b/test/option/md5-chunksize.py
@@ -47,8 +47,8 @@ f2 = env.B(target = 'f2.out', source = 'f2.in')
Requires(f2, f1)
""" % locals())
-test.write('f1.in', str(range(10)))
-test.write('f2.in', str(range(100000)))
+test.write('f1.in', str(list(range(10))))
+test.write('f2.in', str(list(range(100000))))
expected_stdout = test.wrap_stdout("""\
%(_python_)s build.py f1.out f1.in
diff --git a/test/scons-time/func/chdir.py b/test/scons-time/func/chdir.py
index 0ce4340..1aea7ad 100644
--- a/test/scons-time/func/chdir.py
+++ b/test/scons-time/func/chdir.py
@@ -48,7 +48,7 @@ def _main():
"""
expect = []
-for i in xrange(9):
+for i in range(9):
i = str(i)
test.subdir(i)
test.profile_data('profs/foo-%s.prof' % i, '%s/prof.py' % i, '_main', input)
diff --git a/test/scons-time/func/glob.py b/test/scons-time/func/glob.py
index d3fd960..6240404 100644
--- a/test/scons-time/func/glob.py
+++ b/test/scons-time/func/glob.py
@@ -43,7 +43,7 @@ def _main():
"""
expect = []
-for i in xrange(9):
+for i in range(9):
test.subdir(str(i))
test.profile_data('foo-%s.prof' % i, '%s/prof.py' % i, '_main', input)
expect.append((r'\d.\d\d\d %s/prof\.py:1\(_main\)' + '\n') % i)
diff --git a/test/scons-time/func/prefix.py b/test/scons-time/func/prefix.py
index fe3618f..67a0c6b 100644
--- a/test/scons-time/func/prefix.py
+++ b/test/scons-time/func/prefix.py
@@ -47,11 +47,11 @@ def _main():
foo_lines = []
bar_lines = []
-for i in xrange(2):
+for i in range(2):
test.profile_data('foo-%s.prof' % i, 'prof.py', '_main', input)
foo_lines.append(r'\d.\d\d\d prof\.py:1\(_main\)' + '\n')
-for i in xrange(4):
+for i in range(4):
test.profile_data('bar-%s.prof' % i, 'prof.py', '_main', input)
bar_lines.append(r'\d.\d\d\d prof\.py:1\(_main\)' + '\n')
diff --git a/test/scons-time/func/tail.py b/test/scons-time/func/tail.py
index 91fa6c8..afd3f83 100644
--- a/test/scons-time/func/tail.py
+++ b/test/scons-time/func/tail.py
@@ -44,7 +44,7 @@ def _main():
"""
expect = []
-for i in xrange(9):
+for i in range(9):
test.subdir(str(i))
test.profile_data('foo-%s.prof' % i, '%s/prof.py' % i, '_main', input)
expect.append((r'\d.\d\d\d %s/prof\.py:1\(_main\)' + '\n') % i)
diff --git a/test/scons-time/mem/chdir.py b/test/scons-time/mem/chdir.py
index 52dbd2c..5bf618c 100644
--- a/test/scons-time/mem/chdir.py
+++ b/test/scons-time/mem/chdir.py
@@ -43,7 +43,7 @@ lines = [
line_fmt = ' 1000 2000 3000 4000 %s\n'
-for i in xrange(9):
+for i in range(9):
logfile_name = os.path.join('logs', 'foo-%s.log' % i)
test.fake_logfile(logfile_name)
lines.append(line_fmt % logfile_name)
diff --git a/test/scons-time/mem/glob.py b/test/scons-time/mem/glob.py
index 04d8b09..820021e 100644
--- a/test/scons-time/mem/glob.py
+++ b/test/scons-time/mem/glob.py
@@ -38,7 +38,7 @@ lines = [
line_fmt = ' 1000 2000 3000 4000 %s\n'
-for i in xrange(9):
+for i in range(9):
logfile_name = 'foo-%s.log' % i
test.fake_logfile(logfile_name)
lines.append(line_fmt % logfile_name)
diff --git a/test/scons-time/mem/prefix.py b/test/scons-time/mem/prefix.py
index 5e64dad..faca54d 100644
--- a/test/scons-time/mem/prefix.py
+++ b/test/scons-time/mem/prefix.py
@@ -43,7 +43,7 @@ line_fmt = ' 1000 2000 3000 4000 %s\n'
foo_lines = [ header ]
bar_lines = [ header ]
-for i in xrange(3):
+for i in range(3):
logfile_name = os.path.join('foo-%s.log' % i)
test.fake_logfile(logfile_name)
foo_lines.append(line_fmt % logfile_name)
diff --git a/test/scons-time/mem/tail.py b/test/scons-time/mem/tail.py
index 19f4036..cd00274 100644
--- a/test/scons-time/mem/tail.py
+++ b/test/scons-time/mem/tail.py
@@ -40,7 +40,7 @@ lines = []
line_fmt = ' 1000 2000 3000 4000 %s\n'
-for i in xrange(9):
+for i in range(9):
logfile_name = 'foo-%s.log' % i
test.fake_logfile(logfile_name)
lines.append(line_fmt % logfile_name)
diff --git a/test/scons-time/obj/chdir.py b/test/scons-time/obj/chdir.py
index 5b7fe22..4b77f8a 100644
--- a/test/scons-time/obj/chdir.py
+++ b/test/scons-time/obj/chdir.py
@@ -43,7 +43,7 @@ lines = [
line_fmt = ' 1101%(i)s 1102%(i)s 1103%(i)s 1104%(i)s %(logfile_name)s\n'
-for i in xrange(9):
+for i in range(9):
logfile_name = os.path.join('logs', 'foo-%s.log' % i)
test.fake_logfile(logfile_name, i)
lines.append(line_fmt % locals())
diff --git a/test/scons-time/obj/glob.py b/test/scons-time/obj/glob.py
index 07ccccc..2105355 100644
--- a/test/scons-time/obj/glob.py
+++ b/test/scons-time/obj/glob.py
@@ -38,7 +38,7 @@ lines = [
line_fmt = ' 601%(i)s 602%(i)s 603%(i)s 604%(i)s %(logfile_name)s\n'
-for i in xrange(9):
+for i in range(9):
logfile_name = 'foo-%s.log' % i
test.fake_logfile(logfile_name, i)
lines.append(line_fmt % locals())
diff --git a/test/scons-time/obj/prefix.py b/test/scons-time/obj/prefix.py
index e669cf2..0bee5f7 100644
--- a/test/scons-time/obj/prefix.py
+++ b/test/scons-time/obj/prefix.py
@@ -43,7 +43,7 @@ line_fmt = ' 11010 11020 11030 11040 %s\n'
foo_lines = [ header ]
bar_lines = [ header ]
-for i in xrange(3):
+for i in range(3):
logfile_name = os.path.join('foo-%s.log' % i)
test.fake_logfile(logfile_name)
foo_lines.append(line_fmt % logfile_name)
diff --git a/test/scons-time/obj/tail.py b/test/scons-time/obj/tail.py
index 9049c89..341a905 100644
--- a/test/scons-time/obj/tail.py
+++ b/test/scons-time/obj/tail.py
@@ -40,7 +40,7 @@ lines = []
line_fmt = ' 1501%(i)s 1502%(i)s 1503%(i)s 1504%(i)s %(logfile_name)s\n'
-for i in xrange(9):
+for i in range(9):
logfile_name = 'foo-%s.log' % i
test.fake_logfile(logfile_name, i)
lines.append(line_fmt % locals())
diff --git a/test/scons-time/time/chdir.py b/test/scons-time/time/chdir.py
index ef340a1..762de75 100644
--- a/test/scons-time/time/chdir.py
+++ b/test/scons-time/time/chdir.py
@@ -43,7 +43,7 @@ lines = [
line_fmt = ' 11.123456 22.234567 33.345678 44.456789 %s\n'
-for i in xrange(9):
+for i in range(9):
logfile_name = os.path.join('logs', 'foo-%s.log' % i)
test.fake_logfile(logfile_name)
lines.append(line_fmt % logfile_name)
diff --git a/test/scons-time/time/empty.py b/test/scons-time/time/empty.py
index d73db79..a59a014 100644
--- a/test/scons-time/time/empty.py
+++ b/test/scons-time/time/empty.py
@@ -41,7 +41,7 @@ lines = []
line_fmt = ' 11.123456 22.234567 33.345678 44.456789 %s\n'
empty_fmt = ' %s\n'
-for i in xrange(9):
+for i in range(9):
logfile_name = 'foo-%s-0.log' % i
if i == 5:
test.write(test.workpath(logfile_name), "")
diff --git a/test/scons-time/time/glob.py b/test/scons-time/time/glob.py
index d202e61..1a76d9f 100644
--- a/test/scons-time/time/glob.py
+++ b/test/scons-time/time/glob.py
@@ -38,7 +38,7 @@ lines = [
line_fmt = ' 11.123456 22.234567 33.345678 44.456789 %s\n'
-for i in xrange(9):
+for i in range(9):
logfile_name = 'foo-%s.log' % i
test.fake_logfile(logfile_name)
lines.append(line_fmt % logfile_name)
diff --git a/test/scons-time/time/no-result.py b/test/scons-time/time/no-result.py
index baf06d7..fbd2de9 100644
--- a/test/scons-time/time/no-result.py
+++ b/test/scons-time/time/no-result.py
@@ -49,7 +49,7 @@ line_fmt = "%s 11.123456\n"
lines = []
-for i in xrange(9):
+for i in range(9):
logfile_name = 'foo-%s-0.log' % i
if i == 5:
test.write(test.workpath(logfile_name), "NO RESULTS HERE!\n")
diff --git a/test/scons-time/time/prefix.py b/test/scons-time/time/prefix.py
index d12287d..00a1f52 100644
--- a/test/scons-time/time/prefix.py
+++ b/test/scons-time/time/prefix.py
@@ -43,7 +43,7 @@ line_fmt = ' 11.123456 22.234567 33.345678 44.456789 %s\n'
foo_lines = [ header ]
bar_lines = [ header ]
-for i in xrange(3):
+for i in range(3):
logfile_name = os.path.join('foo-%s.log' % i)
test.fake_logfile(logfile_name)
foo_lines.append(line_fmt % logfile_name)
diff --git a/test/scons-time/time/tail.py b/test/scons-time/time/tail.py
index 372f785..c89f904 100644
--- a/test/scons-time/time/tail.py
+++ b/test/scons-time/time/tail.py
@@ -40,7 +40,7 @@ lines = []
line_fmt = ' 11.123456 22.234567 33.345678 44.456789 %s\n'
-for i in xrange(9):
+for i in range(9):
logfile_name = 'foo-%s.log' % i
test.fake_logfile(logfile_name)
lines.append(line_fmt % logfile_name)
diff --git a/timings/CPPPATH/SConstruct b/timings/CPPPATH/SConstruct
index d49e3d6..14cc769 100644
--- a/timings/CPPPATH/SConstruct
+++ b/timings/CPPPATH/SConstruct
@@ -23,7 +23,7 @@
dir_count = int(ARGUMENTS['DIR_COUNT'])
-inc_list = [ Dir('inc_%04d' % t) for t in xrange(dir_count) ]
+inc_list = [ Dir('inc_%04d' % t) for t in range(dir_count) ]
inc_list.append(Dir('include'))
env = Environment(CPPPATH = inc_list)
diff --git a/timings/CPPPATH/TimeSCons-run.py b/timings/CPPPATH/TimeSCons-run.py
index 97d9e05..b26fafc 100644
--- a/timings/CPPPATH/TimeSCons-run.py
+++ b/timings/CPPPATH/TimeSCons-run.py
@@ -47,7 +47,7 @@ import TestSCons
test = TestSCons.TimeSCons(variables={'DIR_COUNT':813})
-for d in xrange(test.variables['DIR_COUNT']):
+for d in range(test.variables['DIR_COUNT']):
test.subdir('inc_%04d' % d)
test.main()
diff --git a/timings/hundred/SConstruct b/timings/hundred/SConstruct
index c824b88..b321d10 100644
--- a/timings/hundred/SConstruct
+++ b/timings/hundred/SConstruct
@@ -27,8 +27,8 @@ def copy_files( env, target, source ):
for t, s in zip(target, source):
open(str(t), 'wb').write(open(str(s), 'rb').read())
-source_list = ['source_%04d' % t for t in xrange(target_count)]
-target_list = ['target_%04d' % t for t in xrange(target_count)]
+source_list = ['source_%04d' % t for t in range(target_count)]
+target_list = ['target_%04d' % t for t in range(target_count)]
env = Environment()
diff --git a/timings/hundred/TimeSCons-run.py b/timings/hundred/TimeSCons-run.py
index c90c26b..3d5b02f 100644
--- a/timings/hundred/TimeSCons-run.py
+++ b/timings/hundred/TimeSCons-run.py
@@ -46,7 +46,7 @@ import TestSCons
test = TestSCons.TimeSCons(variables={'TARGET_COUNT':139})
-for t in xrange(test.variables['TARGET_COUNT']):
+for t in range(test.variables['TARGET_COUNT']):
open('source_%04d' % t, 'wb' ).write('contents\n')
test.main()