diff --git a/doc/changelog.rst b/doc/changelog.rst
index 97019a23..63c2700f 100644
--- a/doc/changelog.rst
+++ b/doc/changelog.rst
@@ -4,6 +4,7 @@ Changelog
Version 1.0.1
-------------
+* Drop usage of the six module since Python 2 is no longer supported.
* Update dependencies:
* Django: 3.0 => 3.0.3
diff --git a/pyperformance/benchmarks/bm_chameleon.py b/pyperformance/benchmarks/bm_chameleon.py
index 38b88308..a0d5ca5c 100644
--- a/pyperformance/benchmarks/bm_chameleon.py
+++ b/pyperformance/benchmarks/bm_chameleon.py
@@ -1,6 +1,5 @@
import functools
-import six
import pyperf
from chameleon import PageTemplate
@@ -12,11 +11,11 @@
|
-""" % six.text_type.__name__
+"""
def main():
diff --git a/pyperformance/benchmarks/bm_chaos.py b/pyperformance/benchmarks/bm_chaos.py
index 17b0a958..cfdfbe25 100644
--- a/pyperformance/benchmarks/bm_chaos.py
+++ b/pyperformance/benchmarks/bm_chaos.py
@@ -9,8 +9,6 @@
import random
import pyperf
-import six
-from six.moves import xrange
DEFAULT_THICKNESS = 0.25
@@ -136,11 +134,7 @@ def write_ppm(im, filename):
w = len(im)
h = len(im[0])
- if six.PY3:
- fp = open(filename, "w", encoding="latin1", newline='')
- else:
- fp = open(filename, "wb")
- with fp:
+ with open(filename, "w", encoding="latin1", newline='') as fp:
fp.write(magic)
fp.write('%i %i\n%i\n' % (w, h, maxval))
for j in range(h):
@@ -227,7 +221,7 @@ def create_image_chaos(self, w, h, iterations, filename, rng_seed):
im = [[1] * h for i in range(w)]
point = GVector((self.maxx + self.minx) / 2,
(self.maxy + self.miny) / 2, 0)
- for _ in xrange(iterations):
+ for _ in range(iterations):
point = self.transform_point(point)
x = (point.x - self.minx) / self.width * w
y = (point.y - self.miny) / self.height * h
diff --git a/pyperformance/benchmarks/bm_crypto_pyaes.py b/pyperformance/benchmarks/bm_crypto_pyaes.py
index b3d1f35b..efc31154 100644
--- a/pyperformance/benchmarks/bm_crypto_pyaes.py
+++ b/pyperformance/benchmarks/bm_crypto_pyaes.py
@@ -6,7 +6,6 @@
"""
import pyperf
-from six.moves import xrange
import pyaes
@@ -18,7 +17,7 @@
def bench_pyaes(loops):
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for loops in range_it:
diff --git a/pyperformance/benchmarks/bm_django_template.py b/pyperformance/benchmarks/bm_django_template.py
index 43bfa84c..2e6bd005 100644
--- a/pyperformance/benchmarks/bm_django_template.py
+++ b/pyperformance/benchmarks/bm_django_template.py
@@ -3,7 +3,6 @@
This will have Django generate a 150x150-cell HTML table.
"""
-from six.moves import xrange
import pyperf
import django.conf
@@ -21,7 +20,7 @@ def bench_django_template(runner, size):
{% endfor %}
""")
- table = [xrange(size) for _ in xrange(size)]
+ table = [range(size) for _ in range(size)]
context = Context({"table": table})
runner.bench_func('django_template', template.render, context)
diff --git a/pyperformance/benchmarks/bm_fannkuch.py b/pyperformance/benchmarks/bm_fannkuch.py
index f859aa81..03e2568e 100644
--- a/pyperformance/benchmarks/bm_fannkuch.py
+++ b/pyperformance/benchmarks/bm_fannkuch.py
@@ -6,20 +6,19 @@
"""
import pyperf
-from six.moves import xrange
DEFAULT_ARG = 9
def fannkuch(n):
- count = list(xrange(1, n + 1))
+ count = list(range(1, n + 1))
max_flips = 0
m = n - 1
r = n
check = 0
- perm1 = list(xrange(n))
- perm = list(xrange(n))
+ perm1 = list(range(n))
+ perm = list(range(n))
perm1_ins = perm1.insert
perm1_pop = perm1.pop
diff --git a/pyperformance/benchmarks/bm_float.py b/pyperformance/benchmarks/bm_float.py
index ddec598c..2755916d 100644
--- a/pyperformance/benchmarks/bm_float.py
+++ b/pyperformance/benchmarks/bm_float.py
@@ -1,7 +1,6 @@
"""
Artificial, floating point-heavy benchmark originally used by Factor.
"""
-from six.moves import xrange
import pyperf
from math import sin, cos, sqrt
@@ -46,7 +45,7 @@ def maximize(points):
def benchmark(n):
points = [None] * n
- for i in xrange(n):
+ for i in range(n):
points[i] = Point(i)
for p in points:
p.normalize()
diff --git a/pyperformance/benchmarks/bm_genshi.py b/pyperformance/benchmarks/bm_genshi.py
index 5c7cd72b..5a678161 100644
--- a/pyperformance/benchmarks/bm_genshi.py
+++ b/pyperformance/benchmarks/bm_genshi.py
@@ -3,7 +3,6 @@
"""
import pyperf
-from six.moves import xrange
from genshi.template import MarkupTemplate, NewTextTemplate
@@ -29,7 +28,7 @@ def bench_genshi(loops, tmpl_cls, tmpl_str):
tmpl = tmpl_cls(tmpl_str)
table = [dict(a=1, b=2, c=3, d=4, e=5, f=6, g=7, h=8, i=9, j=10)
for _ in range(1000)]
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
diff --git a/pyperformance/benchmarks/bm_go.py b/pyperformance/benchmarks/bm_go.py
index c3338a9b..b1caf8f6 100644
--- a/pyperformance/benchmarks/bm_go.py
+++ b/pyperformance/benchmarks/bm_go.py
@@ -414,7 +414,7 @@ def best_visited(self):
# def user_move(board):
# while True:
-# text = six.moves.input('?').strip()
+# text = input('?').strip()
# if text == 'p':
# return PASS
# if text == 'q':
diff --git a/pyperformance/benchmarks/bm_hexiom.py b/pyperformance/benchmarks/bm_hexiom.py
index 4a3f2d2a..7379cad8 100644
--- a/pyperformance/benchmarks/bm_hexiom.py
+++ b/pyperformance/benchmarks/bm_hexiom.py
@@ -9,10 +9,9 @@
"""
from __future__ import division, print_function
+import io
import pyperf
-from six.moves import xrange, StringIO
-from six import u as u_lit, text_type
# 2016-07-07: CPython 3.6 takes ~25 ms to solve the board level 25
DEFAULT_LEVEL = 25
@@ -49,11 +48,11 @@ class Done(object):
def __init__(self, count, empty=False):
self.count = count
self.cells = None if empty else [
- [0, 1, 2, 3, 4, 5, 6, EMPTY] for i in xrange(count)]
+ [0, 1, 2, 3, 4, 5, 6, EMPTY] for i in range(count)]
def clone(self):
ret = Done(self.count, True)
- ret.cells = [self.cells[i][:] for i in xrange(self.count)]
+ ret.cells = [self.cells[i][:] for i in range(self.count)]
return ret
def __getitem__(self, i):
@@ -73,26 +72,26 @@ def remove(self, i, v):
return False
def remove_all(self, v):
- for i in xrange(self.count):
+ for i in range(self.count):
self.remove(i, v)
def remove_unfixed(self, v):
changed = False
- for i in xrange(self.count):
+ for i in range(self.count):
if not self.already_done(i):
if self.remove(i, v):
changed = True
return changed
def filter_tiles(self, tiles):
- for v in xrange(8):
+ for v in range(8):
if tiles[v] == 0:
self.remove_all(v)
def next_cell_min_choice(self):
minlen = 10
mini = -1
- for i in xrange(self.count):
+ for i in range(self.count):
if 1 < len(self.cells[i]) < minlen:
minlen = len(self.cells[i])
mini = i
@@ -101,7 +100,7 @@ def next_cell_min_choice(self):
def next_cell_max_choice(self):
maxlen = 1
maxi = -1
- for i in xrange(self.count):
+ for i in range(self.count):
if maxlen < len(self.cells[i]):
maxlen = len(self.cells[i])
maxi = i
@@ -110,7 +109,7 @@ def next_cell_max_choice(self):
def next_cell_highest_value(self):
maxval = -1
maxi = -1
- for i in xrange(self.count):
+ for i in range(self.count):
if (not self.already_done(i)):
maxvali = max(k for k in self.cells[i] if k != EMPTY)
if maxval < maxvali:
@@ -119,7 +118,7 @@ def next_cell_highest_value(self):
return maxi
def next_cell_first(self):
- for i in xrange(self.count):
+ for i in range(self.count):
if (not self.already_done(i)):
return i
return -1
@@ -127,7 +126,7 @@ def next_cell_first(self):
def next_cell_max_neighbors(self, pos):
maxn = -1
maxi = -1
- for i in xrange(self.count):
+ for i in range(self.count):
if not self.already_done(i):
cells_around = pos.hex.get_by_id(i).links
n = sum(1 if (self.already_done(nid) and (self[nid][0] != EMPTY)) else 0
@@ -140,7 +139,7 @@ def next_cell_max_neighbors(self, pos):
def next_cell_min_neighbors(self, pos):
minn = 7
mini = -1
- for i in xrange(self.count):
+ for i in range(self.count):
if not self.already_done(i):
cells_around = pos.hex.get_by_id(i).links
n = sum(1 if (self.already_done(nid) and (self[nid][0] != EMPTY)) else 0
@@ -187,15 +186,15 @@ def __init__(self, size):
self.nodes_by_id = self.count * [None]
self.nodes_by_pos = {}
id = 0
- for y in xrange(size):
- for x in xrange(size + y):
+ for y in range(size):
+ for x in range(size + y):
pos = (x, y)
node = Node(pos, id, [])
self.nodes_by_pos[pos] = node
self.nodes_by_id[node.id] = node
id += 1
- for y in xrange(1, size):
- for x in xrange(y, size * 2 - 1):
+ for y in range(1, size):
+ for x in range(y, size * 2 - 1):
ry = size + y - 1
pos = (x, ry)
node = Node(pos, id, [])
@@ -257,7 +256,7 @@ def constraint_pass(pos, last_move=None):
else:
vmax += 1
- for num in xrange(7):
+ for num in range(7):
if (num < vmin) or (num > vmax):
if done.remove(i, num):
changed = True
@@ -267,7 +266,7 @@ def constraint_pass(pos, last_move=None):
if len(cell) == 1:
left[cell[0]] -= 1
- for v in xrange(8):
+ for v in range(8):
# If there is none, remove the possibility from all tiles
if (pos.tiles[v] > 0) and (left[v] == 0):
if done.remove_unfixed(v):
@@ -277,7 +276,7 @@ def constraint_pass(pos, last_move=None):
# If the number of possible cells for a value is exactly the number of available tiles
# put a tile in each cell
if pos.tiles[v] == possible:
- for i in xrange(done.count):
+ for i in range(done.count):
cell = done.cells[i]
if (not done.already_done(i)) and (v in cell):
done.set_done(i, v)
@@ -347,31 +346,29 @@ def print_pos(pos, output):
hex = pos.hex
done = pos.done
size = hex.size
- for y in xrange(size):
- print(u_lit(" ") * (size - y - 1), end=u_lit(""), file=output)
- for x in xrange(size + y):
+ for y in range(size):
+ print(" " * (size - y - 1), end="", file=output)
+ for x in range(size + y):
pos2 = (x, y)
id = hex.get_by_pos(pos2).id
if done.already_done(id):
- c = text_type(done[id][0]) if done[id][
- 0] != EMPTY else u_lit(".")
+ c = str(done[id][0]) if done[id][0] != EMPTY else "."
else:
- c = u_lit("?")
- print(u_lit("%s ") % c, end=u_lit(""), file=output)
- print(end=u_lit("\n"), file=output)
- for y in xrange(1, size):
- print(u_lit(" ") * y, end=u_lit(""), file=output)
- for x in xrange(y, size * 2 - 1):
+ c = "?"
+ print("%s " % c, end="", file=output)
+ print(end="\n", file=output)
+ for y in range(1, size):
+ print(" " * y, end="", file=output)
+ for x in range(y, size * 2 - 1):
ry = size + y - 1
pos2 = (x, ry)
id = hex.get_by_pos(pos2).id
if done.already_done(id):
- c = text_type(done[id][0]) if done[id][
- 0] != EMPTY else u_lit(".")
+ c = str(done[id][0]) if done[id][0] != EMPTY else "."
else:
- c = u_lit("?")
- print(u_lit("%s ") % c, end=u_lit(""), file=output)
- print(end=u_lit("\n"), file=output)
+ c = "?"
+ print("%s " % c, end="", file=output)
+ print(end="\n", file=output)
OPEN = 0
@@ -385,7 +382,7 @@ def solved(pos, output, verbose=False):
done = pos.done
exact = True
all_done = True
- for i in xrange(hex.count):
+ for i in range(hex.count):
if len(done[i]) == 0:
return IMPOSSIBLE
elif done.already_done(i):
@@ -454,7 +451,7 @@ def check_valid(pos):
tiles = pos.tiles
# fill missing entries in tiles
tot = 0
- for i in xrange(8):
+ for i in range(8):
if tiles[i] > 0:
tot += tiles[i]
else:
@@ -479,10 +476,10 @@ def read_file(file):
linei = 1
tiles = 8 * [0]
done = Done(hex.count)
- for y in xrange(size):
+ for y in range(size):
line = lines[linei][size - y - 1:]
p = 0
- for x in xrange(size + y):
+ for x in range(size + y):
tile = line[p:p + 2]
p += 2
if tile[1] == ".":
@@ -497,11 +494,11 @@ def read_file(file):
done.set_done(hex.get_by_pos((x, y)).id, inctile)
linei += 1
- for y in xrange(1, size):
+ for y in range(1, size):
ry = size - 1 + y
line = lines[linei][y:]
p = 0
- for x in xrange(y, size * 2 - 1):
+ for x in range(y, size * 2 - 1):
tile = line[p:p + 2]
p += 2
if tile[1] == ".":
@@ -626,16 +623,16 @@ def main(loops, level):
board, solution = LEVELS[level]
order = DESCENDING
strategy = Done.FIRST_STRATEGY
- stream = StringIO()
+ stream = io.StringIO()
board = board.strip()
expected = solution.rstrip()
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
- stream = StringIO()
+ stream = io.StringIO()
solve_file(board, strategy, order, stream)
output = stream.getvalue()
stream = None
diff --git a/pyperformance/benchmarks/bm_html5lib.py b/pyperformance/benchmarks/bm_html5lib.py
index 93eed245..dcc4e086 100644
--- a/pyperformance/benchmarks/bm_html5lib.py
+++ b/pyperformance/benchmarks/bm_html5lib.py
@@ -10,7 +10,6 @@
import html5lib
import pyperf
-import six
__author__ = "collinwinter@google.com (Collin Winter)"
@@ -30,7 +29,7 @@ def bench_html5lib(html_file):
# Get all our IO over with early.
filename = os.path.join(os.path.dirname(__file__),
"data", "w3_tr_html5.html")
- with io.open(filename, "rb") as fp:
- html_file = six.BytesIO(fp.read())
+ with open(filename, "rb") as fp:
+ html_file = io.BytesIO(fp.read())
runner.bench_func('html5lib', bench_html5lib, html_file)
diff --git a/pyperformance/benchmarks/bm_json_dumps.py b/pyperformance/benchmarks/bm_json_dumps.py
index f47d69b7..ccdaaada 100644
--- a/pyperformance/benchmarks/bm_json_dumps.py
+++ b/pyperformance/benchmarks/bm_json_dumps.py
@@ -2,8 +2,6 @@
import sys
import pyperf
-import six
-from six.moves import xrange
EMPTY = ({}, 2000)
@@ -11,7 +9,7 @@
'key5': 'string'}
SIMPLE = (SIMPLE_DATA, 1000)
NESTED_DATA = {'key1': 0, 'key2': SIMPLE[0], 'key3': 'value', 'key4': SIMPLE[0],
- 'key5': SIMPLE[0], six.u('key'): six.u('\u0105\u0107\u017c')}
+ 'key5': SIMPLE[0], 'key': '\u0105\u0107\u017c'}
NESTED = (NESTED_DATA, 1000)
HUGE = ([NESTED[0]] * 1000, 1)
@@ -52,7 +50,7 @@ def main():
data = []
for case in cases:
obj, count = globals()[case]
- data.append((obj, xrange(count)))
+ data.append((obj, range(count)))
runner.bench_func('json_dumps', bench_json_dumps, data)
diff --git a/pyperformance/benchmarks/bm_json_loads.py b/pyperformance/benchmarks/bm_json_loads.py
index 5d1e80eb..213dbbd5 100644
--- a/pyperformance/benchmarks/bm_json_loads.py
+++ b/pyperformance/benchmarks/bm_json_loads.py
@@ -15,9 +15,6 @@
# Local imports
import pyperf
-import six
-if six.PY3:
- long = int
DICT = {
@@ -65,7 +62,7 @@ def mutate_dict(orig_dict, random_source):
new_dict = dict(orig_dict)
for key, value in new_dict.items():
rand_val = random_source.random() * sys.maxsize
- if isinstance(key, six.integer_types + (bytes, six.text_type)):
+ if isinstance(key, (int, bytes, str)):
new_dict[key] = type(key)(rand_val)
return new_dict
diff --git a/pyperformance/benchmarks/bm_logging.py b/pyperformance/benchmarks/bm_logging.py
index 6bfd3bd1..7e448273 100644
--- a/pyperformance/benchmarks/bm_logging.py
+++ b/pyperformance/benchmarks/bm_logging.py
@@ -18,8 +18,6 @@
import logging
# Third party imports
-import six
-from six.moves import xrange
import pyperf
# A simple format for parametered logging
@@ -37,7 +35,7 @@ def bench_silent(loops, logger, stream):
# micro-optimization: use fast local variables
m = MESSAGE
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
@@ -66,7 +64,7 @@ def bench_simple_output(loops, logger, stream):
# micro-optimization: use fast local variables
m = MESSAGE
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
@@ -97,7 +95,7 @@ def bench_formatted_output(loops, logger, stream):
# micro-optimization: use fast local variables
fmt = FORMAT
msg = MESSAGE
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
@@ -144,10 +142,7 @@ def add_cmdline_args(cmd, args):
options = runner.parse_args()
# NOTE: StringIO performance will impact the results...
- if six.PY3:
- stream = io.StringIO()
- else:
- stream = io.BytesIO()
+ stream = io.StringIO()
handler = logging.StreamHandler(stream=stream)
logger = logging.getLogger("benchlogger")
diff --git a/pyperformance/benchmarks/bm_mako.py b/pyperformance/benchmarks/bm_mako.py
index 7e4ad92d..a8074a14 100644
--- a/pyperformance/benchmarks/bm_mako.py
+++ b/pyperformance/benchmarks/bm_mako.py
@@ -11,7 +11,6 @@
import sys
import pyperf
-from six.moves import xrange
# Mako imports (w/o markupsafe)
sys.modules['markupsafe'] = None
@@ -67,7 +66,7 @@
% endfor
-% for nr in xrange(img_count):
+% for nr in range(img_count):
${parent.img('/foo/bar/baz.png', 'no image :o')}
% endfor
${next.body()}
@@ -121,14 +120,14 @@ def bench_mako(runner, table_size, nparagraph, img_count):
template = Template(CONTENT_TEMPLATE, lookup=lookup)
- table = [xrange(table_size) for i in xrange(table_size)]
- paragraphs = xrange(nparagraph)
+ table = [range(table_size) for i in range(table_size)]
+ paragraphs = range(nparagraph)
title = 'Hello world!'
func = functools.partial(template.render,
table=table, paragraphs=paragraphs,
lorem=LOREM_IPSUM, title=title,
- img_count=img_count, xrange=xrange)
+ img_count=img_count, range=range)
runner.bench_func('mako', func)
diff --git a/pyperformance/benchmarks/bm_mdp.py b/pyperformance/benchmarks/bm_mdp.py
index de5e6ccb..967dbae2 100644
--- a/pyperformance/benchmarks/bm_mdp.py
+++ b/pyperformance/benchmarks/bm_mdp.py
@@ -3,7 +3,6 @@
from fractions import Fraction
import pyperf
-from six.moves import xrange
def topoSort(roots, getParents):
@@ -248,7 +247,7 @@ def evaluate(self, tolerance=0.15):
def bench_mdp(loops):
expected = 0.89873589887
max_diff = 1e-6
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
diff --git a/pyperformance/benchmarks/bm_meteor_contest.py b/pyperformance/benchmarks/bm_meteor_contest.py
index 81f6c768..766027ff 100644
--- a/pyperformance/benchmarks/bm_meteor_contest.py
+++ b/pyperformance/benchmarks/bm_meteor_contest.py
@@ -12,7 +12,6 @@
from bisect import bisect
-from six.moves import xrange
import pyperf
@@ -98,7 +97,7 @@ def flip(ido, fd={E: E, NE: SE, NW: SW, W: W, SW: NW, SE: NE}):
def permute(ido, r_ido, rotate=rotate, flip=flip):
ps = [ido]
- for r in xrange(DIR_NO - 1):
+ for r in range(DIR_NO - 1):
ps.append(rotate(ps[-1]))
if ido == r_ido: # C2-symmetry
ps = ps[0:DIR_NO // 2]
@@ -116,7 +115,7 @@ def convert(ido):
def get_footprints(board, cti, pieces):
- fps = [[[] for p in xrange(len(pieces))] for ci in xrange(len(board))]
+ fps = [[[] for p in range(len(pieces))] for ci in range(len(board))]
for c in board:
for pi, p in enumerate(pieces):
for pp in p:
@@ -137,9 +136,9 @@ def get_senh(board, cti):
def get_puzzle(width, height):
board = [E * x + S * y + (y % 2)
- for y in xrange(height)
- for x in xrange(width)]
- cti = dict((board[i], i) for i in xrange(len(board)))
+ for y in range(height)
+ for x in range(width)]
+ cti = dict((board[i], i) for i in range(len(board)))
# Incremental direction offsets
idos = [[E, E, E, SE],
@@ -193,11 +192,11 @@ def solve(n, i_min, free, curr_board, pieces_left, solutions, fps, se_nh,
def bench_meteor_contest(loops, board, pieces, solve_arg, fps, se_nh):
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
- free = frozenset(xrange(len(board)))
+ free = frozenset(range(len(board)))
curr_board = [-1] * len(board)
pieces_left = list(range(len(pieces)))
solutions = []
diff --git a/pyperformance/benchmarks/bm_nbody.py b/pyperformance/benchmarks/bm_nbody.py
index 86530b6b..5e0f8391 100644
--- a/pyperformance/benchmarks/bm_nbody.py
+++ b/pyperformance/benchmarks/bm_nbody.py
@@ -15,7 +15,6 @@
"""
import pyperf
-from six.moves import xrange
__contact__ = "collinwinter@google.com (Collin Winter)"
DEFAULT_ITERATIONS = 20000
@@ -25,7 +24,7 @@
def combinations(l):
"""Pure-Python implementation of itertools.combinations(l, 2)."""
result = []
- for x in xrange(len(l) - 1):
+ for x in range(len(l) - 1):
ls = l[x + 1:]
for y in ls:
result.append((l[x], y))
@@ -77,7 +76,7 @@ def combinations(l):
def advance(dt, n, bodies=SYSTEM, pairs=PAIRS):
- for i in xrange(n):
+ for i in range(n):
for (([x1, y1, z1], v1, m1),
([x2, y2, z2], v2, m2)) in pairs:
dx = x1 - x2
@@ -125,7 +124,7 @@ def bench_nbody(loops, reference, iterations):
# Set up global state
offset_momentum(BODIES[reference])
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
diff --git a/pyperformance/benchmarks/bm_pathlib.py b/pyperformance/benchmarks/bm_pathlib.py
index a30d62e6..cda9b4be 100644
--- a/pyperformance/benchmarks/bm_pathlib.py
+++ b/pyperformance/benchmarks/bm_pathlib.py
@@ -7,19 +7,11 @@
# Python imports
import os
+import pathlib
import shutil
-import sys
import tempfile
import pyperf
-from six.moves import xrange
-
-if sys.version_info >= (3, 4):
- import pathlib
-else:
- # pathlib2 is the pathlib backport for Python < 3.4
- import pathlib2 as pathlib
- import pkg_resources
NUM_FILES = 2000
@@ -53,7 +45,7 @@ def bench_pathlib(loops, tmp_path):
p.stat()
assert len(path_objects) == NUM_FILES, len(path_objects)
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
@@ -77,9 +69,6 @@ def bench_pathlib(loops, tmp_path):
modname = pathlib.__name__
runner.metadata['pathlib_module'] = modname
- if modname == 'pathlib2':
- version = pkg_resources.get_distribution(modname).version
- runner.metadata['pathlib2_version'] = version
tmp_path = setup(NUM_FILES)
try:
diff --git a/pyperformance/benchmarks/bm_pickle.py b/pyperformance/benchmarks/bm_pickle.py
index f89bbd84..008a4a12 100644
--- a/pyperformance/benchmarks/bm_pickle.py
+++ b/pyperformance/benchmarks/bm_pickle.py
@@ -6,7 +6,7 @@
to real-world scenarios which operate on single objects at a time. Note that if
we did something like
- pickle.dumps([dict(some_dict) for _ in xrange(10000)])
+ pickle.dumps([dict(some_dict) for _ in range(10000)])
this isn't equivalent to dumping the dict 10000 times: pickle uses a
highly-efficient encoding for the n-1 following copies.
@@ -19,63 +19,58 @@
import sys
import pyperf
-import six
-from six.moves import xrange
-if six.PY3:
- long = int
-IS_PYPY = pyperf.python_implementation() == 'pypy'
+IS_PYPY = (pyperf.python_implementation() == 'pypy')
__author__ = "collinwinter@google.com (Collin Winter)"
DICT = {
- 'ads_flags': long(0),
+ 'ads_flags': 0,
'age': 18,
'birthday': datetime.date(1980, 5, 7),
- 'bulletin_count': long(0),
- 'comment_count': long(0),
+ 'bulletin_count': 0,
+ 'comment_count': 0,
'country': 'BR',
'encrypted_id': 'G9urXXAJwjE',
- 'favorite_count': long(9),
+ 'favorite_count': 9,
'first_name': '',
- 'flags': long(412317970704),
- 'friend_count': long(0),
+ 'flags': 412317970704,
+ 'friend_count': 0,
'gender': 'm',
'gender_for_display': 'Male',
- 'id': long(302935349),
- 'is_custom_profile_icon': long(0),
+ 'id': 302935349,
+ 'is_custom_profile_icon': 0,
'last_name': '',
'locale_preference': 'pt_BR',
- 'member': long(0),
+ 'member': 0,
'tags': ['a', 'b', 'c', 'd', 'e', 'f', 'g'],
- 'profile_foo_id': long(827119638),
+ 'profile_foo_id': 827119638,
'secure_encrypted_id': 'Z_xxx2dYx3t4YAdnmfgyKw',
- 'session_number': long(2),
+ 'session_number': 2,
'signup_id': '201-19225-223',
'status': 'A',
'theme': 1,
- 'time_created': long(1225237014),
- 'time_updated': long(1233134493),
- 'unread_message_count': long(0),
+ 'time_created': 1225237014,
+ 'time_updated': 1233134493,
+ 'unread_message_count': 0,
'user_group': '0',
'username': 'collinwinter',
- 'play_count': long(9),
- 'view_count': long(7),
+ 'play_count': 9,
+ 'view_count': 7,
'zip': ''}
TUPLE = (
- [long(x) for x in
- [265867233, 265868503, 265252341, 265243910, 265879514,
- 266219766, 266021701, 265843726, 265592821, 265246784,
- 265853180, 45526486, 265463699, 265848143, 265863062,
- 265392591, 265877490, 265823665, 265828884, 265753032]], 60)
+ [265867233, 265868503, 265252341, 265243910, 265879514,
+ 266219766, 266021701, 265843726, 265592821, 265246784,
+ 265853180, 45526486, 265463699, 265848143, 265863062,
+ 265392591, 265877490, 265823665, 265828884, 265753032], 60)
def mutate_dict(orig_dict, random_source):
new_dict = dict(orig_dict)
for key, value in new_dict.items():
rand_val = random_source.random() * sys.maxsize
- if isinstance(key, six.integer_types + (bytes, six.text_type)):
+ if isinstance(key, (int, bytes, str)):
new_dict[key] = type(key)(rand_val)
return new_dict
@@ -85,7 +80,7 @@ def mutate_dict(orig_dict, random_source):
def bench_pickle(loops, pickle, options):
- range_it = xrange(loops)
+ range_it = range(loops)
# micro-optimization: use fast local variables
dumps = pickle.dumps
@@ -124,7 +119,7 @@ def bench_unpickle(loops, pickle, options):
pickled_dict = pickle.dumps(DICT, options.protocol)
pickled_tuple = pickle.dumps(TUPLE, options.protocol)
pickled_dict_group = pickle.dumps(DICT_GROUP, options.protocol)
- range_it = xrange(loops)
+ range_it = range(loops)
# micro-optimization: use fast local variables
loads = pickle.loads
@@ -158,11 +153,11 @@ def bench_unpickle(loops, pickle, options):
return pyperf.perf_counter() - t0
-LIST = [[list(range(10)), list(range(10))] for _ in xrange(10)]
+LIST = [[list(range(10)), list(range(10))] for _ in range(10)]
def bench_pickle_list(loops, pickle, options):
- range_it = xrange(loops)
+ range_it = range(loops)
# micro-optimization: use fast local variables
dumps = pickle.dumps
obj = LIST
@@ -187,7 +182,7 @@ def bench_pickle_list(loops, pickle, options):
def bench_unpickle_list(loops, pickle, options):
pickled_list = pickle.dumps(LIST, options.protocol)
- range_it = xrange(loops)
+ range_it = range(loops)
# micro-optimization: use fast local variables
loads = pickle.loads
@@ -209,11 +204,11 @@ def bench_unpickle_list(loops, pickle, options):
return pyperf.perf_counter() - t0
-MICRO_DICT = dict((key, dict.fromkeys(range(10))) for key in xrange(100))
+MICRO_DICT = dict((key, dict.fromkeys(range(10))) for key in range(100))
def bench_pickle_dict(loops, pickle, options):
- range_it = xrange(loops)
+ range_it = range(loops)
# micro-optimization: use fast local variables
protocol = options.protocol
obj = MICRO_DICT
@@ -275,15 +270,11 @@ def add_cmdline_args(cmd, args):
if not (options.pure_python or IS_PYPY):
# C accelerators are enabled by default on 3.x
- if six.PY2:
- import cPickle as pickle
- else:
- import pickle
+ import pickle
if is_module_accelerated(pickle):
raise RuntimeError("Missing C accelerators for pickle")
else:
- if six.PY3:
- sys.modules['_pickle'] = None
+ sys.modules['_pickle'] = None
import pickle
if not is_module_accelerated(pickle):
raise RuntimeError("Unexpected C accelerators for pickle")
diff --git a/pyperformance/benchmarks/bm_pidigits.py b/pyperformance/benchmarks/bm_pidigits.py
index 4f9406e7..0d00c7b6 100644
--- a/pyperformance/benchmarks/bm_pidigits.py
+++ b/pyperformance/benchmarks/bm_pidigits.py
@@ -10,7 +10,6 @@
import itertools
-from six.moves import map as imap
import pyperf
@@ -20,7 +19,7 @@
def gen_x():
- return imap(lambda k: (k, 4 * k + 2, 0, 2 * k + 1), icount(1))
+ return map(lambda k: (k, 4 * k + 2, 0, 2 * k + 1), icount(1))
def compose(a, b):
diff --git a/pyperformance/benchmarks/bm_pyflate.py b/pyperformance/benchmarks/bm_pyflate.py
index 69b300e1..f4736b0a 100755
--- a/pyperformance/benchmarks/bm_pyflate.py
+++ b/pyperformance/benchmarks/bm_pyflate.py
@@ -18,10 +18,12 @@
import hashlib
import os
+import struct
import pyperf
-import six
-from six.moves import xrange
+
+
+int2byte = struct.Struct(">B").pack
class BitfieldBase(object):
@@ -289,16 +291,13 @@ def move_to_front(l, c):
def bwt_transform(L):
# Semi-inefficient way to get the character counts
- if six.PY3:
- F = bytes(sorted(L))
- else:
- F = b''.join(sorted(L))
+ F = bytes(sorted(L))
base = []
for i in range(256):
- base.append(F.find(six.int2byte(i)))
+ base.append(F.find(int2byte(i)))
pointers = [-1] * len(L)
- for i, symbol in enumerate(six.iterbytes(L)):
+ for i, symbol in enumerate(L):
pointers[base[symbol]] = i
base[symbol] += 1
return pointers
@@ -327,14 +326,11 @@ def bwt_reverse(L, end):
# out where the off-by-one-ism is yet---that actually produced
# the cyclic loop.
- for i in xrange(len(L)):
+ for i in range(len(L)):
end = T[end]
out.append(L[end])
- if six.PY3:
- return bytes(out)
- else:
- return b"".join(out)
+ return bytes(out)
def compute_used(b):
@@ -410,7 +406,7 @@ def decode_huffman_block(b, out):
symbols_in_use = sum(used) + 2 # remember RUN[AB] RLE symbols
tables = compute_tables(b, huffman_groups, symbols_in_use)
- favourites = [six.int2byte(i) for i, x in enumerate(used) if x]
+ favourites = [int2byte(i) for i, x in enumerate(used) if x]
selector_pointer = 0
decoded = 0
@@ -525,7 +521,7 @@ def gzip_main(field):
if length & b.readbits(16):
raise Exception("stored block lengths do not match each other")
for i in range(length):
- out.append(six.int2byte(b.readbits(8)))
+ out.append(int2byte(b.readbits(8)))
elif blocktype == 1 or blocktype == 2: # Huffman
main_literals, main_distances = None, None
@@ -593,7 +589,7 @@ def gzip_main(field):
r = main_literals.find_next_symbol(b)
if 0 <= r <= 255:
literal_count += 1
- out.append(six.int2byte(r))
+ out.append(int2byte(r))
elif r == 256:
if literal_count > 0:
literal_count = 0
@@ -635,7 +631,7 @@ def gzip_main(field):
def bench_pyflake(loops, filename):
input_fp = open(filename, 'rb')
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
diff --git a/pyperformance/benchmarks/bm_raytrace.py b/pyperformance/benchmarks/bm_raytrace.py
index 175c4c16..f50f5b4b 100644
--- a/pyperformance/benchmarks/bm_raytrace.py
+++ b/pyperformance/benchmarks/bm_raytrace.py
@@ -12,7 +12,6 @@
import math
import pyperf
-from six.moves import xrange
DEFAULT_WIDTH = 100
@@ -193,7 +192,7 @@ class Canvas(object):
def __init__(self, width, height):
self.bytes = array.array('B', [0] * (width * height * 3))
- for i in xrange(width * height):
+ for i in range(width * height):
self.bytes[i * 3 + 2] = 255
self.width = width
self.height = height
@@ -256,8 +255,8 @@ def render(self, canvas):
vpRight = eye.vector.cross(Vector.UP).normalized()
vpUp = vpRight.cross(eye.vector).normalized()
- for y in xrange(canvas.height):
- for x in xrange(canvas.width):
+ for y in range(canvas.height):
+ for x in range(canvas.width):
xcomp = vpRight.scale(x * pixelWidth - halfWidth)
ycomp = vpUp.scale(y * pixelHeight - halfHeight)
ray = Ray(eye.point, eye.vector + xcomp + ycomp)
@@ -356,7 +355,7 @@ def baseColourAt(self, p):
def bench_raytrace(loops, width, height, filename):
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for i in range_it:
@@ -367,7 +366,7 @@ def bench_raytrace(loops, width, height, filename):
s.lookAt(Point(0, 3, 0))
s.addObject(Sphere(Point(1, 3, -10), 2),
SimpleSurface(baseColour=(1, 1, 0)))
- for y in xrange(6):
+ for y in range(6):
s.addObject(Sphere(Point(-3 - y * 0.4, 2.3, -5), 0.4),
SimpleSurface(baseColour=(y / 6.0, 1 - y / 6.0, 0.5)))
s.addObject(Halfspace(Point(0, 0, 0), Vector.UP),
diff --git a/pyperformance/benchmarks/bm_regex_compile.py b/pyperformance/benchmarks/bm_regex_compile.py
index dc2aeaf0..fd9f4ffa 100644
--- a/pyperformance/benchmarks/bm_regex_compile.py
+++ b/pyperformance/benchmarks/bm_regex_compile.py
@@ -11,7 +11,6 @@
# Local imports
import pyperf
-from six.moves import xrange
def capture_regexes():
@@ -50,7 +49,7 @@ def capture_sub(regex, *args):
def bench_regex_compile(loops, regexes):
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
diff --git a/pyperformance/benchmarks/bm_regex_dna.py b/pyperformance/benchmarks/bm_regex_dna.py
index 4d8de24d..b3568291 100644
--- a/pyperformance/benchmarks/bm_regex_dna.py
+++ b/pyperformance/benchmarks/bm_regex_dna.py
@@ -19,7 +19,6 @@
import re
import pyperf
-from six.moves import xrange
DEFAULT_INIT_LEN = 100000
@@ -186,7 +185,7 @@ def run_benchmarks(seq):
def bench_regex_dna(loops, seq, expected_res):
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for i in range_it:
diff --git a/pyperformance/benchmarks/bm_regex_effbot.py b/pyperformance/benchmarks/bm_regex_effbot.py
index bd887b94..e661e584 100644
--- a/pyperformance/benchmarks/bm_regex_effbot.py
+++ b/pyperformance/benchmarks/bm_regex_effbot.py
@@ -16,13 +16,12 @@
# Local imports
import pyperf
-from six.moves import xrange
-USE_BYTES_IN_PY3K = False
+USE_BYTES = False
def re_compile(s):
- if USE_BYTES_IN_PY3K:
+ if USE_BYTES:
return re.compile(s.encode('latin1'))
else:
return re.compile(s)
@@ -66,7 +65,7 @@ def gen_string_table(n):
strings = []
def append(s):
- if USE_BYTES_IN_PY3K:
+ if USE_BYTES:
strings.append(s.encode('latin1'))
else:
strings.append(s)
@@ -119,7 +118,7 @@ def init_benchmarks(n_values=None):
data = []
for n in n_values:
- for id in xrange(len(regexs)):
+ for id in range(len(regexs)):
regex = regexs[id]
string = string_tables[n][id]
data.append((regex, string))
@@ -131,7 +130,7 @@ def bench_regex_effbot(loops):
bench_regex_effbot.data = init_benchmarks()
data = bench_regex_effbot.data
- range_it = xrange(loops)
+ range_it = range(loops)
search = re.search
t0 = pyperf.perf_counter()
@@ -167,11 +166,10 @@ def add_cmdline_args(cmd, args):
runner.metadata['description'] = ("Test the performance of regexps "
"using Fredik Lundh's benchmarks.")
runner.argparser.add_argument("-B", "--force_bytes", action="store_true",
- help="Force testing bytes regexps "
- "under 3.x.")
+ help="test bytes regexps")
options = runner.parse_args()
if options.force_bytes:
- USE_BYTES_IN_PY3K = True
+ USE_BYTES = True
runner.bench_time_func('regex_effbot', bench_regex_effbot,
inner_loops=10)
diff --git a/pyperformance/benchmarks/bm_regex_v8.py b/pyperformance/benchmarks/bm_regex_v8.py
index b1ac46cc..e31b6433 100644
--- a/pyperformance/benchmarks/bm_regex_v8.py
+++ b/pyperformance/benchmarks/bm_regex_v8.py
@@ -44,8 +44,6 @@
# Third party imports
import pyperf
-import six
-from six.moves import xrange
# The precompiled regexs that were in vars in the V8 code, split into
@@ -119,7 +117,7 @@
(r'^uggc:\/\/', ''),
(r'(?:^|\s+)qvfnoyrq(?:\s+|$)', ''),
(r'zrah_byq', 'g'),
- (r'^([#.]?)((?:[\w' + six.u('\u0128-\uffff') + r'*_-]|\\.)*)', ''),
+ (r'^([#.]?)((?:[\w' + '\u0128-\uffff' + r'*_-]|\\.)*)', ''),
(r'\{1\}', 'g'),
(r'\s+', ''),
(r'(\$\{4\})|(\$4\b)', 'g'),
@@ -131,10 +129,10 @@
(r'\bucfie\s*=\s*([^;]*)', 'i'),
(r'\bhfucjrn\s*=\s*([^;]*)', 'i'),
(r'\bmvc\s*=\s*([^;]*)', 'i'),
- (r'^((?:[\w' + six.u('\u0128-\uffff') + r'*_-]|\\.)+)(#)((?:[\w'
- + six.u('\u0128-\uffff') + r'*_-]|\\.)+)', ''),
+ (r'^((?:[\w' + '\u0128-\uffff' + r'*_-]|\\.)+)(#)((?:[\w'
+ + '\u0128-\uffff' + r'*_-]|\\.)+)', ''),
(r'^([>+~])\s*(\w*)', 'i'),
- (r'^>\s*((?:[\w' + six.u('\u0128-\uffff') + r'*_-]|\\.)+)', ''),
+ (r'^>\s*((?:[\w' + '\u0128-\uffff' + r'*_-]|\\.)+)', ''),
(r'^[\s[]?shapgvba', ''),
(r'v\/g.tvs#(.*)', 'i'),
(r'eaq_zbqobkva', ''),
@@ -144,9 +142,9 @@
(r'\s+$', ''),
(r'^\s+', ''),
(r'(\\\"|\x00-|\x1f|\x7f-|\x9f|'
- + six.u('\u00ad|\u0600-|\u0604|\u070f|\u17b4|\u17b5|\u200c-|\u200f|\u2028-|\u202f|\u2060-|\u206f|\ufeff|\ufff0-|\uffff') + r')', 'g'),
+ + '\u00ad|\u0600-|\u0604|\u070f|\u17b4|\u17b5|\u200c-|\u200f|\u2028-|\u202f|\u2060-|\u206f|\ufeff|\ufff0-|\uffff' + r')', 'g'),
(r'^(:)([\w-]+)\("?\'?(.*?(\(.*?\))?[^(]*?)"?\'?\)', ''),
- (r'^([:.#]*)((?:[\w' + six.u('\u0128-\uffff') + r'*_-]|\\.)+)', ''),
+ (r'^([:.#]*)((?:[\w' + '\u0128-\uffff' + r'*_-]|\\.)+)', ''),
(r'^(\[) *@?([\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\4 *\]', '')]
@@ -275,46 +273,46 @@
def block0():
- for i in xrange(6511):
+ for i in range(6511):
regexs[0].search(r'pyvpx')
- for i in xrange(1844):
+ for i in range(1844):
regexs[1].search(r'uggc://jjj.snprobbx.pbz/ybtva.cuc')
- for i in xrange(739):
+ for i in range(739):
regexs[2].sub(r'', 'QBZPbageby_cynprubyqre', subcount[2])
- for i in xrange(598):
+ for i in range(598):
regexs[1].search(r'uggc://jjj.snprobbx.pbz/')
- for i in xrange(454):
+ for i in range(454):
regexs[1].search(r'uggc://jjj.snprobbx.pbz/fepu.cuc')
- for i in xrange(352):
+ for i in range(352):
re.search(
r'qqqq|qqq|qq|q|ZZZZ|ZZZ|ZZ|Z|llll|ll|l|uu|u|UU|U|zz|z|ff|f|gg|g|sss|ss|s|mmm|mm|m', 'qqqq, ZZZ q, llll')
- for i in xrange(312):
+ for i in range(312):
regexs[3].search(r'vachggrkg QBZPbageby_cynprubyqre')
- for i in xrange(282):
+ for i in range(282):
regexs[4].search(r'/ZlFcnprUbzrcntr/Vaqrk-FvgrUbzr,10000000')
- for i in xrange(177):
+ for i in range(177):
regexs[5].sub(r'', 'vachggrkg', subcount[5])
- for i in xrange(170):
+ for i in range(170):
regexs[6].sub(r'', '528.9', subcount[6])
regexs[7].search(r'528')
- for i in xrange(156):
+ for i in range(156):
regexs[8].search(r'VCPhygher=ra-HF')
regexs[8].search(r'CersreerqPhygher=ra-HF')
- for i in xrange(144):
+ for i in range(144):
regexs[0].search(r'xrlcerff')
- for i in xrange(139):
+ for i in range(139):
regexs[6].sub(r'', '521', subcount[6])
# This has a different output to the V8 version.
@@ -323,26 +321,26 @@ def block0():
regexs[9].search(r'')
re.search(r'JroXvg\/(\S+)', strings[0])
- for i in xrange(137):
+ for i in range(137):
regexs[10].sub(r'', 'qvi .so_zrah', subcount[10])
re.sub(r'\[', '', 'qvi .so_zrah', 0)
regexs[11].sub(r'', 'qvi.so_zrah', subcount[11])
- for i in xrange(117):
+ for i in range(117):
regexs[2].sub(r'', 'uvqqra_ryrz', subcount[2])
- for i in xrange(95):
+ for i in range(95):
re.search(r'(?:^|;)\s*sevraqfgre_ynat=([^;]*)',
'sevraqfgre_naba=nvq%3Qn6ss9p85n868ro9s059pn854735956o3%26ers%3Q%26df%3Q%26vpgl%3QHF')
- for i in xrange(93):
+ for i in range(93):
regexs[12].sub(r'', 'uggc://ubzr.zlfcnpr.pbz/vaqrk.psz', subcount[12])
regexs[13].search(r'uggc://ubzr.zlfcnpr.pbz/vaqrk.psz')
- for i in xrange(92):
+ for i in range(92):
re.sub(r'([a-zA-Z]|\s)+', '', strings[1], 1)
- for i in xrange(85):
+ for i in range(85):
regexs[14].sub(r'', 'svefg', subcount[14])
regexs[15].sub(r'', 'svefg', subcount[15])
regexs[12].sub(
@@ -354,10 +352,10 @@ def block0():
def block1():
- for i in xrange(81):
+ for i in range(81):
regexs[8].search(r'VC=74.125.75.1')
- for i in xrange(78):
+ for i in range(78):
re.sub(r'(\s)+e', '', '9.0 e115', 1)
re.sub(r'.', '', 'k', 1)
@@ -383,22 +381,22 @@ def block1():
regexs[0].search(r'xrlqbja')
regexs[0].search(r'xrlhc')
- for i in xrange(77):
+ for i in range(77):
regexs[12].sub(
r'', 'uggc://zrffntvat.zlfcnpr.pbz/vaqrk.psz', subcount[12])
regexs[13].search(r'uggc://zrffntvat.zlfcnpr.pbz/vaqrk.psz')
- for i in xrange(73):
+ for i in range(73):
regexs[18].sub(
r'', 'FrffvbaFgbentr=%7O%22GnoThvq%22%3N%7O%22thvq%22%3N1231367125017%7Q%7Q', subcount[18])
- for i in xrange(72):
+ for i in range(72):
regexs[1].search(strings[6])
- for i in xrange(71):
+ for i in range(71):
regexs[19].search(r'')
- for i in xrange(70):
+ for i in range(70):
regexs[11].sub(r'', '3.5.0.0', subcount[11])
re.sub(r'd1', '', strings[7], 0)
re.sub(r'NQ_VQ', '', strings[8], 0)
@@ -409,7 +407,7 @@ def block1():
r'svz_zlfcnpr_ubzrcntr_abgybttrqva,svz_zlfcnpr_aba_HTP,svz_zlfcnpr_havgrq-fgngrf')
regexs[21].search(r'ybnqvat')
- for i in xrange(68):
+ for i in range(68):
regexs[1].search(r'#')
re.search(
r'(?:ZFVR.(\d+\.\d+))|(?:(?:Sversbk|TenaCnenqvfb|Vprjrnfry).(\d+\.\d+))|(?:Bcren.(\d+\.\d+))|(?:NccyrJroXvg.(\d+(?:\.\d+)?))', strings[0])
@@ -417,21 +415,21 @@ def block1():
re.search(r'Trpxb\/([0-9]+)', strings[0])
regexs[21].search(r'ybnqrq')
- for i in xrange(49):
+ for i in range(49):
regexs[16].search(r'pbybe')
- for i in xrange(44):
+ for i in range(44):
regexs[12].sub(
r'', 'uggc://sevraqf.zlfcnpr.pbz/vaqrk.psz', subcount[12])
regexs[13].search(r'uggc://sevraqf.zlfcnpr.pbz/vaqrk.psz')
def block2():
- for i in xrange(40):
+ for i in range(40):
regexs[14].sub(r'', 'fryrpgrq', subcount[14])
regexs[15].sub(r'', 'fryrpgrq', subcount[15])
- for i in xrange(39):
+ for i in range(39):
re.sub(r'\buvqqra_ryrz\b', '', 'vachggrkg uvqqra_ryrz', 0)
regexs[3].search(r'vachggrkg ')
regexs[3].search(r'vachggrkg')
@@ -441,19 +439,19 @@ def block2():
regexs[22].search(r'zrah_ybtva_pbagnvare')
re.search(r'\buvqqra_ryrz\b', 'vachgcnffjbeq')
- for i in xrange(37):
+ for i in range(37):
regexs[8].search(r'111soqs57qo8o8480qo18sor2011r3n591q7s6s37r120904')
regexs[8].search(r'SbeprqRkcvengvba=633669315660164980')
regexs[8].search(
r'FrffvbaQQS2=111soqs57qo8o8480qo18sor2011r3n591q7s6s37r120904')
- for i in xrange(35):
+ for i in range(35):
regexs[14].sub(r'', 'puvyq p1 svefg', subcount[14])
regexs[15].sub(r'', 'puvyq p1 svefg', subcount[15])
regexs[14].sub(r'', 'sylbhg pybfrq', subcount[14])
regexs[15].sub(r'', 'sylbhg pybfrq', subcount[15])
- for i in xrange(34):
+ for i in range(34):
regexs[19].search(r'gno2')
regexs[19].search(r'gno3')
regexs[8].search(r'44132r503660')
@@ -463,10 +461,10 @@ def block2():
r'FrffvbaQQS2=s6r4579npn4rn2135s904r0s75pp1o5334p6s6pospo12696')
regexs[8].search(r's6r4579npn4rn2135s904r0s75pp1o5334p6s6pospo12696')
- for i in xrange(32):
+ for i in range(32):
re.search(r'puebzr', strings[0], re.IGNORECASE)
- for i in xrange(31):
+ for i in range(31):
regexs[23].sub(r'', 'uggc://jjj.snprobbx.pbz/', subcount[23])
regexs[8].search(r'SbeprqRkcvengvba=633669358527244818')
regexs[8].search(r'VC=66.249.85.130')
@@ -475,29 +473,29 @@ def block2():
regexs[8].search(r's15q53p9n372sn76npr13o271n4s3p5r29p235746p908p58')
regexs[24].search(r'uggc://jjj.snprobbx.pbz/')
- for i in xrange(30):
+ for i in range(30):
regexs[6].sub(r'', '419', subcount[6])
re.search(r'(?:^|\s+)gvzrfgnzc(?:\s+|$)', 'gvzrfgnzc')
regexs[7].search(r'419')
- for i in xrange(29):
+ for i in range(29):
regexs[23].sub(r'', 'uggc://jjj.snprobbx.pbz/ybtva.cuc', subcount[23])
- for i in xrange(28):
+ for i in range(28):
regexs[25].sub(r'', 'Funer guvf tnqtrg', subcount[25])
regexs[12].sub(r'', 'Funer guvf tnqtrg', subcount[12])
regexs[26].search(r'uggc://jjj.tbbtyr.pbz/vt/qverpgbel')
def block3():
- for i in xrange(27):
+ for i in range(27):
re.sub(r'[A-Za-z]', '', 'e115', 0)
- for i in xrange(23):
+ for i in range(23):
regexs[27].sub(r'', 'qvfcynl', subcount[27])
regexs[27].sub(r'', 'cbfvgvba', subcount[27])
- for i in xrange(22):
+ for i in range(22):
regexs[14].sub(r'', 'unaqyr', subcount[14])
regexs[15].sub(r'', 'unaqyr', subcount[15])
regexs[14].sub(r'', 'yvar', subcount[14])
@@ -508,21 +506,21 @@ def block3():
regexs[15].sub(r'', 'fyvqre', subcount[15])
regexs[28].search(r'')
- for i in xrange(21):
+ for i in range(21):
regexs[12].sub(r'', 'uggc://jjj.zlfcnpr.pbz/', subcount[12])
regexs[13].search(r'uggc://jjj.zlfcnpr.pbz/')
- for i in xrange(20):
+ for i in range(20):
regexs[29].sub(r'', 'cntrivrj', subcount[29])
regexs[30].sub(r'', 'cntrivrj', subcount[30])
regexs[19].search(r'ynfg')
regexs[19].search(r'ba svefg')
regexs[8].search(r'VC=74.125.75.3')
- for i in xrange(19):
+ for i in range(19):
regexs[31].search(r'ra')
- for i in xrange(18):
+ for i in range(18):
regexs[32].split(strings[10])
regexs[32].split(strings[11])
regexs[33].sub(r'', strings[12], subcount[33])
@@ -541,7 +539,7 @@ def block3():
regexs[34].search(strings[10])
regexs[34].search(strings[11])
- for i in xrange(17):
+ for i in range(17):
re.match(r'zfvr', strings[0], re.IGNORECASE)
re.match(r'bcren', strings[0], re.IGNORECASE)
regexs[32].split(strings[15])
@@ -603,7 +601,7 @@ def block3():
def block4():
- for i in xrange(16):
+ for i in range(16):
re.sub(r'\*', '', '', 0)
re.search(r'\bnpgvir\b', 'npgvir')
re.search(r'sversbk', strings[0], re.IGNORECASE)
@@ -611,7 +609,7 @@ def block4():
re.search(r'zfvr', strings[0], re.IGNORECASE)
re.search(r'bcren', strings[0], re.IGNORECASE)
- for i in xrange(15):
+ for i in range(15):
regexs[32].split(strings[21])
regexs[32].split(strings[22])
regexs[12].sub(
@@ -644,7 +642,7 @@ def block4():
regexs[13].search(r'uggc://ohyyrgvaf.zlfcnpr.pbz/vaqrk.psz')
regexs[38].search(r'yv')
- for i in xrange(14):
+ for i in range(14):
regexs[18].sub(r'', '', subcount[18])
re.sub(r'(\s+e|\s+o[0-9]+)', '', '9.0 e115', 1)
re.sub(r'<', '', 'Funer guvf tnqtrg', 0)
@@ -675,7 +673,7 @@ def block4():
def block5():
- for i in xrange(13):
+ for i in range(13):
regexs[14].sub(r'', 'purpx', subcount[14])
regexs[15].sub(r'', 'purpx', subcount[15])
regexs[14].sub(r'', 'pvgl', subcount[14])
@@ -701,7 +699,7 @@ def block5():
re.search(r'NccyrJroXvg\/([^\s]*)', strings[0])
re.search(r'XUGZY', strings[0])
- for i in xrange(12):
+ for i in range(12):
re.sub(r'(\$\{cebg\})|(\$cebg\b)', '',
'${cebg}://${ubfg}${cngu}/${dz}', 0)
regexs[40].sub(r'', '1', subcount[40])
@@ -736,7 +734,7 @@ def block5():
def block6():
- for i in xrange(11):
+ for i in range(11):
re.sub(r'(?i)##yv0##', '', strings[27], 0)
regexs[57].sub(r'', strings[27], subcount[57])
regexs[58].sub(r'', strings[28], subcount[58])
@@ -785,7 +783,7 @@ def block6():
r'FrffvbaQQS2=473qq1rs0n2r70q9qo1pq48n021s9468ron90nps048p4p29')
re.search(r'AbxvnA[^\/]*', strings[0])
- for i in xrange(10):
+ for i in range(10):
re.sub(r'(?:^|\s+)bss(?:\s+|$)', '', ' bss', 0)
re.sub(r'(\$\{0\})|(\$0\b)', '', strings[34], 0)
re.sub(r'(\$\{1\})|(\$1\b)', '', strings[34], 0)
@@ -828,7 +826,7 @@ def block6():
def block7():
- for i in xrange(9):
+ for i in range(9):
regexs[40].sub(r'', '0', subcount[40])
regexs[10].sub(r'', '0', subcount[10])
regexs[51].sub(r'', '0', subcount[51])
@@ -844,7 +842,7 @@ def block7():
regexs[39].sub(r'', 'Lrf', subcount[39])
regexs[54].sub(r'', 'Lrf', subcount[54])
- for i in xrange(8):
+ for i in range(8):
regexs[63].sub(r'', 'Pybfr {0}', subcount[63])
regexs[63].sub(r'', 'Bcra {0}', subcount[63])
regexs[32].split(strings[36])
@@ -896,7 +894,7 @@ def block7():
def block8():
- for i in xrange(7):
+ for i in range(7):
re.match(r'\d+', strings[1])
regexs[64].sub(r'', 'nsgre', subcount[64])
regexs[64].sub(r'', 'orsber', subcount[64])
@@ -944,7 +942,7 @@ def block8():
re.search(r'znp|jva|yvahk', 'Jva32', re.IGNORECASE)
re.search(r'eton?\([\d\s,]+\)', 'fgngvp')
- for i in xrange(6):
+ for i in range(6):
re.sub(r'\r', '', '', 0)
regexs[40].sub(r'', '/', subcount[40])
regexs[10].sub(r'', '/', subcount[10])
@@ -980,7 +978,7 @@ def block8():
def block9():
- for i in xrange(5):
+ for i in range(5):
regexs[32].split(strings[42])
regexs[32].split(strings[43])
regexs[20].split(
@@ -1009,7 +1007,7 @@ def block9():
regexs[8].search(
r'__hgzm=144631658.1231364380.1.1.hgzpfe=(qverpg)|hgzppa=(qverpg)|hgzpzq=(abar)')
- for i in xrange(4):
+ for i in range(4):
regexs[14].sub(r'', ' yvfg1', subcount[14])
regexs[15].sub(r'', ' yvfg1', subcount[15])
regexs[14].sub(r'', ' yvfg2', subcount[14])
@@ -1162,7 +1160,7 @@ def block9():
def block10():
- for i in xrange(3):
+ for i in range(3):
regexs[39].sub(r'', '%3Szxg=ra-HF', subcount[39])
regexs[40].sub(r'', '-8', subcount[40])
regexs[10].sub(r'', '-8', subcount[10])
@@ -1316,7 +1314,7 @@ def block10():
def block11():
- for i in xrange(2):
+ for i in range(2):
regexs[18].sub(r'', ' .pybfr', subcount[18])
regexs[18].sub(r'', ' n.svryqOgaPnapry', subcount[18])
regexs[18].sub(r'', ' qg', subcount[18])
diff --git a/pyperformance/benchmarks/bm_richards.py b/pyperformance/benchmarks/bm_richards.py
index 9d65848c..84709cf3 100644
--- a/pyperformance/benchmarks/bm_richards.py
+++ b/pyperformance/benchmarks/bm_richards.py
@@ -12,7 +12,6 @@
from __future__ import print_function
import pyperf
-from six.moves import xrange
# Task IDs
@@ -353,7 +352,7 @@ def fn(self, pkt, r):
pkt.ident = dest
pkt.datum = 0
- for i in BUFSIZE_RANGE: # xrange(BUFSIZE)
+ for i in BUFSIZE_RANGE: # range(BUFSIZE)
w.count += 1
if w.count > 26:
w.count = 1
@@ -379,7 +378,7 @@ def schedule():
class Richards(object):
def run(self, iterations):
- for i in xrange(iterations):
+ for i in range(iterations):
taskWorkArea.holdCount = 0
taskWorkArea.qpktCount = 0
diff --git a/pyperformance/benchmarks/bm_scimark.py b/pyperformance/benchmarks/bm_scimark.py
index b6ba5b31..0928a643 100644
--- a/pyperformance/benchmarks/bm_scimark.py
+++ b/pyperformance/benchmarks/bm_scimark.py
@@ -2,7 +2,6 @@
import math
import pyperf
-from six.moves import xrange
class Array2D(object):
@@ -28,14 +27,14 @@ def __setitem__(self, x_y, val):
self.data[self._idx(x, y)] = val
def setup(self, data):
- for y in xrange(self.height):
- for x in xrange(self.width):
+ for y in range(self.height):
+ for x in range(self.width):
self[x, y] = data[y][x]
return self
def indexes(self):
- for y in xrange(self.height):
- for x in xrange(self.width):
+ for y in range(self.height):
+ for x in range(self.width):
yield x, y
def copy_data_from(self, other):
@@ -68,7 +67,7 @@ def initialize(self, seed):
j0 = jseed % self.m2
j1 = jseed / self.m2
self.m = array('d', [0]) * 17
- for iloop in xrange(17):
+ for iloop in range(17):
jseed = j0 * k0
j1 = (jseed / self.m2 + j0 * k1 + j1 * k0) % (self.m2 / 2)
j0 = jseed % self.m2
@@ -106,7 +105,7 @@ def RandomMatrix(self, a):
return a
def RandomVector(self, n):
- return array('d', [self.nextDouble() for i in xrange(n)])
+ return array('d', [self.nextDouble() for i in range(n)])
def copy_vector(vec):
@@ -121,7 +120,7 @@ class ArrayList(Array2D):
def __init__(self, w, h, data=None):
self.width = w
self.height = h
- self.data = [array('d', [0]) * w for y in xrange(h)]
+ self.data = [array('d', [0]) * w for y in range(h)]
if data is not None:
self.setup(data)
@@ -143,16 +142,16 @@ def copy_data_from(self, other):
def SOR_execute(omega, G, cycles, Array):
- for p in xrange(cycles):
- for y in xrange(1, G.height - 1):
- for x in xrange(1, G.width - 1):
+ for p in range(cycles):
+ for y in range(1, G.height - 1):
+ for x in range(1, G.width - 1):
G[x, y] = (omega * 0.25 * (G[x, y - 1] + G[x, y + 1] + G[x - 1, y]
+ G[x + 1, y])
+ (1.0 - omega) * G[x, y])
def bench_SOR(loops, n, cycles, Array):
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
@@ -163,13 +162,13 @@ def bench_SOR(loops, n, cycles, Array):
def SparseCompRow_matmult(M, y, val, row, col, x, num_iterations):
- range_it = xrange(num_iterations)
+ range_it = range(num_iterations)
t0 = pyperf.perf_counter()
for _ in range_it:
- for r in xrange(M):
+ for r in range(M):
sa = 0.0
- for i in xrange(row[r], row[r + 1]):
+ for i in range(row[r], row[r + 1]):
sa += x[col[i]] * val[i]
y[r] = sa
@@ -187,13 +186,13 @@ def bench_SparseMatMult(cycles, N, nz):
row = array('i', [0]) * (N + 1)
row[0] = 0
- for r in xrange(N):
+ for r in range(N):
rowr = row[r]
step = r // nr
row[r + 1] = rowr + nr
if step < 1:
step = 1
- for i in xrange(nr):
+ for i in range(nr):
col[rowr + i] = i * step
return SparseCompRow_matmult(N, y, val, row, col, x, cycles)
@@ -202,7 +201,7 @@ def bench_SparseMatMult(cycles, N, nz):
def MonteCarlo(Num_samples):
rnd = Random(113)
under_curve = 0
- for count in xrange(Num_samples):
+ for count in range(Num_samples):
x = rnd.nextDouble()
y = rnd.nextDouble()
if x * x + y * y <= 1.0:
@@ -211,7 +210,7 @@ def MonteCarlo(Num_samples):
def bench_MonteCarlo(loops, Num_samples):
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
@@ -223,10 +222,10 @@ def bench_MonteCarlo(loops, Num_samples):
def LU_factor(A, pivot):
M, N = A.height, A.width
minMN = min(M, N)
- for j in xrange(minMN):
+ for j in range(minMN):
jp = j
t = abs(A[j][j])
- for i in xrange(j + 1, M):
+ for i in range(j + 1, M):
ab = abs(A[i][j])
if ab > t:
jp = i
@@ -241,12 +240,12 @@ def LU_factor(A, pivot):
if j < M - 1:
recp = 1.0 / A[j][j]
- for k in xrange(j + 1, M):
+ for k in range(j + 1, M):
A[k][j] *= recp
if j < minMN - 1:
- for ii in xrange(j + 1, M):
- for jj in xrange(j + 1, N):
+ for ii in range(j + 1, M):
+ for jj in range(j + 1, N):
A[ii][jj] -= A[ii][j] * A[j][jj]
@@ -260,7 +259,7 @@ def bench_LU(cycles, N):
A = rnd.RandomMatrix(ArrayList(N, N))
lu = ArrayList(N, N)
pivot = array('i', [0]) * N
- range_it = xrange(cycles)
+ range_it = range(cycles)
t0 = pyperf.perf_counter()
for _ in range_it:
@@ -315,7 +314,7 @@ def FFT_transform_internal(N, data, direction):
data[j + 1] = data[i + 1] - wd_imag
data[i] += wd_real
data[i + 1] += wd_imag
- for a in xrange(1, dual):
+ for a in range(1, dual):
tmp_real = w_real - s * w_imag - s2 * w_real
tmp_imag = w_imag + s * w_real - s2 * w_imag
w_real = tmp_real
@@ -365,19 +364,19 @@ def FFT_inverse(N, data):
norm = 0.0
FFT_transform_internal(N, data, +1)
norm = 1 / float(n)
- for i in xrange(N):
+ for i in range(N):
data[i] *= norm
def bench_FFT(loops, N, cycles):
twoN = 2 * N
init_vec = Random(7).RandomVector(twoN)
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
x = copy_vector(init_vec)
- for i in xrange(cycles):
+ for i in range(cycles):
FFT_transform(twoN, x)
FFT_inverse(twoN, x)
diff --git a/pyperformance/benchmarks/bm_spectral_norm.py b/pyperformance/benchmarks/bm_spectral_norm.py
index fc47cf0a..53b3c37e 100644
--- a/pyperformance/benchmarks/bm_spectral_norm.py
+++ b/pyperformance/benchmarks/bm_spectral_norm.py
@@ -13,7 +13,7 @@
"""
import pyperf
-from six.moves import xrange, zip as izip
+
DEFAULT_N = 130
@@ -23,7 +23,7 @@ def eval_A(i, j):
def eval_times_u(func, u):
- return [func((i, u)) for i in xrange(len(list(u)))]
+ return [func((i, u)) for i in range(len(list(u)))]
def eval_AtA_times_u(u):
@@ -47,19 +47,19 @@ def part_At_times_u(i_u):
def bench_spectral_norm(loops):
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
u = [1] * DEFAULT_N
- for dummy in xrange(10):
+ for dummy in range(10):
v = eval_AtA_times_u(u)
u = eval_AtA_times_u(v)
vBv = vv = 0
- for ue, ve in izip(u, v):
+ for ue, ve in zip(u, v):
vBv += ue * ve
vv += ve * ve
diff --git a/pyperformance/benchmarks/bm_sqlalchemy_declarative.py b/pyperformance/benchmarks/bm_sqlalchemy_declarative.py
index 82dd5973..a977775a 100644
--- a/pyperformance/benchmarks/bm_sqlalchemy_declarative.py
+++ b/pyperformance/benchmarks/bm_sqlalchemy_declarative.py
@@ -1,5 +1,4 @@
import pyperf
-from six.moves import xrange
from sqlalchemy import Column, ForeignKey, Integer, String
from sqlalchemy.ext.declarative import declarative_base
@@ -59,7 +58,7 @@ class Address(Base):
def bench_sqlalchemy(loops, npeople):
total_dt = 0.0
- for loops in xrange(loops):
+ for loops in range(loops):
# drop rows created by the previous benchmark
session.query(Person).delete(synchronize_session=False)
session.query(Address).delete(synchronize_session=False)
@@ -67,7 +66,7 @@ def bench_sqlalchemy(loops, npeople):
# Run the benchmark once
t0 = pyperf.perf_counter()
- for i in xrange(npeople):
+ for i in range(npeople):
# Insert a Person in the person table
new_person = Person(name="name %i" % i)
session.add(new_person)
@@ -79,7 +78,7 @@ def bench_sqlalchemy(loops, npeople):
session.commit()
# do 100 queries per insert
- for i in xrange(npeople):
+ for i in range(npeople):
session.query(Person).all()
total_dt += (pyperf.perf_counter() - t0)
diff --git a/pyperformance/benchmarks/bm_sqlalchemy_imperative.py b/pyperformance/benchmarks/bm_sqlalchemy_imperative.py
index 6f79e7a9..b2fe89fa 100644
--- a/pyperformance/benchmarks/bm_sqlalchemy_imperative.py
+++ b/pyperformance/benchmarks/bm_sqlalchemy_imperative.py
@@ -1,5 +1,4 @@
import pyperf
-from six.moves import xrange
from sqlalchemy import Column, ForeignKey, Integer, String, Table, MetaData
from sqlalchemy.orm import sessionmaker
@@ -47,7 +46,7 @@
def bench_sqlalchemy(loops, npeople):
total_dt = 0.0
- for loops in xrange(loops):
+ for loops in range(loops):
# drop rows created by the previous benchmark
cur = Person.delete()
cur.execute()
@@ -58,7 +57,7 @@ def bench_sqlalchemy(loops, npeople):
# Run the benchmark once
t0 = pyperf.perf_counter()
- for i in xrange(npeople):
+ for i in range(npeople):
# Insert a Person in the person table
new_person = Person.insert()
new_person.execute(name="name %i" % i)
@@ -68,7 +67,7 @@ def bench_sqlalchemy(loops, npeople):
new_address.execute(post_code='%05i' % i)
# do 'npeople' queries per insert
- for i in xrange(npeople):
+ for i in range(npeople):
cur = Person.select()
cur.execute()
diff --git a/pyperformance/benchmarks/bm_sqlite_synth.py b/pyperformance/benchmarks/bm_sqlite_synth.py
index f3b71a9e..272bf4ce 100644
--- a/pyperformance/benchmarks/bm_sqlite_synth.py
+++ b/pyperformance/benchmarks/bm_sqlite_synth.py
@@ -10,7 +10,6 @@
import math
import pyperf
-from six.moves import xrange
class AvgLength(object):
@@ -33,7 +32,7 @@ def bench_sqlite(loops):
conn = sqlite3.connect(":memory:")
conn.execute('create table cos (x, y, z);')
- for i in xrange(loops):
+ for i in range(loops):
cos_i = math.cos(i)
conn.execute('insert into cos values (?, ?, ?)',
[i, cos_i, str(i)])
diff --git a/pyperformance/benchmarks/bm_sympy.py b/pyperformance/benchmarks/bm_sympy.py
index 014cb45d..afa3cc5f 100644
--- a/pyperformance/benchmarks/bm_sympy.py
+++ b/pyperformance/benchmarks/bm_sympy.py
@@ -1,5 +1,4 @@
import pyperf
-from six.moves import xrange
from sympy import expand, symbols, integrate, tan, summation
from sympy.core.cache import clear_cache
@@ -30,7 +29,7 @@ def bench_sympy(loops, func):
timer = pyperf.perf_counter
dt = 0
- for _ in xrange(loops):
+ for _ in range(loops):
# Don't benchmark clear_cache(), exclude it of the benchmark
clear_cache()
diff --git a/pyperformance/benchmarks/bm_telco.py b/pyperformance/benchmarks/bm_telco.py
index b4d0b234..50b49860 100644
--- a/pyperformance/benchmarks/bm_telco.py
+++ b/pyperformance/benchmarks/bm_telco.py
@@ -22,8 +22,6 @@
from struct import unpack
import pyperf
-import six
-from six.moves import xrange
def rel_path(*path):
@@ -42,7 +40,7 @@ def bench_telco(loops, filename):
data = infil.read()
infil = io.BytesIO(data)
- outfil = six.StringIO()
+ outfil = io.StringIO()
start = pyperf.perf_counter()
for _ in range(loops):
@@ -52,7 +50,7 @@ def bench_telco(loops, filename):
sumB = Decimal("0") # sum of basic tax
sumD = Decimal("0") # sum of 'distance' tax
- for i in xrange(5000):
+ for i in range(5000):
datum = infil.read(8)
if datum == '':
break
diff --git a/pyperformance/benchmarks/bm_tornado_http.py b/pyperformance/benchmarks/bm_tornado_http.py
index 0b14f5bd..4ff3fbf6 100644
--- a/pyperformance/benchmarks/bm_tornado_http.py
+++ b/pyperformance/benchmarks/bm_tornado_http.py
@@ -9,7 +9,6 @@
import sys
import socket
-from six.moves import xrange
import pyperf
from tornado.httpclient import AsyncHTTPClient
@@ -66,11 +65,11 @@ def bench_tornado(loops):
@coroutine
def run_client():
client = AsyncHTTPClient()
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
- futures = [client.fetch(url) for j in xrange(CONCURRENCY)]
+ futures = [client.fetch(url) for j in range(CONCURRENCY)]
for fut in futures:
resp = yield fut
buf = resp.buffer
diff --git a/pyperformance/benchmarks/bm_unpack_sequence.py b/pyperformance/benchmarks/bm_unpack_sequence.py
index 854958e2..6bb37d6b 100644
--- a/pyperformance/benchmarks/bm_unpack_sequence.py
+++ b/pyperformance/benchmarks/bm_unpack_sequence.py
@@ -1,11 +1,10 @@
"""Microbenchmark for Python's sequence unpacking."""
import pyperf
-from six.moves import xrange
def do_unpacking(loops, to_unpack):
- range_it = xrange(loops)
+ range_it = range(loops)
t0 = pyperf.perf_counter()
for _ in range_it:
diff --git a/pyperformance/benchmarks/bm_xml_etree.py b/pyperformance/benchmarks/bm_xml_etree.py
index a53de3de..07e74e6a 100644
--- a/pyperformance/benchmarks/bm_xml_etree.py
+++ b/pyperformance/benchmarks/bm_xml_etree.py
@@ -15,8 +15,6 @@
from collections import defaultdict
import pyperf
-import six
-from six.moves import xrange
__author__ = "stefan_ml@behnel.de (Stefan Behnel)"
@@ -29,15 +27,15 @@ def build_xml_tree(etree):
root = etree.Element('root')
# create a couple of repetitive broad subtrees
- for c in xrange(50):
+ for c in range(50):
child = SubElement(root, 'child-%d' % c,
tag_type="child")
- for i in xrange(100):
+ for i in range(100):
SubElement(child, 'subchild').text = 'LEAF-%d-%d' % (c, i)
# create a deep subtree
deep = SubElement(root, 'deepchildren', tag_type="deepchild")
- for i in xrange(50):
+ for i in range(50):
deep = SubElement(deep, 'deepchild')
SubElement(deep, 'deepleaf', tag_type="leaf").text = "LEAF"
@@ -188,7 +186,7 @@ def bench_etree(iterations, etree, bench_func):
t0 = pyperf.perf_counter()
- for _ in xrange(iterations):
+ for _ in range(iterations):
bench_func(etree, file_path, xml_data, xml_root)
dt = pyperf.perf_counter() - t0
@@ -217,12 +215,9 @@ def add_cmdline_args(cmd, args):
if __name__ == "__main__":
- if six.PY3:
- # On Python 3, xml.etree.cElementTree is a deprecated alias
- # to xml.etree.ElementTree
- default_etmodule = "xml.etree.ElementTree"
- else:
- default_etmodule = "xml.etree.cElementTree"
+ # On Python 3, xml.etree.cElementTree is a deprecated alias
+ # to xml.etree.ElementTree
+ default_etmodule = "xml.etree.ElementTree"
runner = pyperf.Runner(add_cmdline_args=add_cmdline_args)
runner.metadata['description'] = ("Test the performance of "
@@ -245,7 +240,7 @@ def add_cmdline_args(cmd, args):
options.etree_module = FALLBACK_ETMODULE
else:
options.etree_module = default_etmodule
- if options.no_accelerator and sys.version_info >= (3, 3):
+ if options.no_accelerator:
# prevent C accelerator from being used in 3.3
sys.modules['_elementtree'] = None
import xml.etree.ElementTree as et
@@ -271,10 +266,8 @@ def import_module(module_name):
# xml.etree.ElementTree._Element_Py was added to Python 3.4
if hasattr(etree_module, '_Element_Py'):
accelerator = (etree_module.Element is not etree_module._Element_Py)
- elif six.PY2:
- accelerator = module.endswith('cElementTree')
else:
- if options.no_accelerator and sys.version_info >= (3, 3):
+ if options.no_accelerator:
accelerator = False
else:
# Python 3.0-3.2 always use the accelerator
diff --git a/pyperformance/compare.py b/pyperformance/compare.py
index bcffc443..bdad324b 100644
--- a/pyperformance/compare.py
+++ b/pyperformance/compare.py
@@ -6,7 +6,6 @@
import sys
import pyperf
-import six
import statistics
@@ -402,11 +401,7 @@ def format_csv(value):
def write_csv(results, filename):
- if six.PY3:
- fp = open(filename, "w", newline='', encoding='ascii')
- else:
- fp = open(filename, "wb")
- with fp:
+ with open(filename, "w", newline='', encoding='ascii') as fp:
writer = csv.writer(fp)
writer.writerow(['Benchmark', 'Base', 'Changed'])
for result in results:
diff --git a/pyperformance/requirements.in b/pyperformance/requirements.in
index 1b3be0fe..3613cb8f 100644
--- a/pyperformance/requirements.in
+++ b/pyperformance/requirements.in
@@ -1,7 +1,6 @@
# pyperformance dependencies
# --------------------------
-six==1.14.0
pyperf==1.7.0
diff --git a/pyperformance/venv.py b/pyperformance/venv.py
index 0bc8da05..089fb646 100644
--- a/pyperformance/venv.py
+++ b/pyperformance/venv.py
@@ -7,19 +7,11 @@
import subprocess
import sys
import textwrap
-try:
- from shlex import quote as shell_quote
-except ImportError:
- from pipes import quote as shell_quote # Python 2
+import urllib.request
+from shlex import quote as shell_quote
import pyperformance
-# Avoid six dependency to easy installation of pyperformance itself
-try:
- import urllib2 as urllib_request # Python 3
-except ImportError:
- import urllib.request as urllib_request
-
GET_PIP_URL = 'https://bootstrap.pypa.io/get-pip.py'
REQ_OLD_PIP = 'pip==7.1.2'
@@ -211,7 +203,7 @@ def create_environ(inherit_environ):
def download(url, filename):
- response = urllib_request.urlopen(url)
+ response = urllib.request.urlopen(url)
with response:
content = response.read()
diff --git a/setup.py b/setup.py
index a4acfeb4..e259daad 100644
--- a/setup.py
+++ b/setup.py
@@ -106,7 +106,7 @@ def main():
'entry_points': {
'console_scripts': ['pyperformance=pyperformance.cli:main']
},
- 'install_requires': ["pyperf", "six"],
+ 'install_requires': ["pyperf"],
}
setup(**options)