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)