diff --git a/cli/koji b/cli/koji index 05c3e932..f8516792 100755 --- a/cli/koji +++ b/cli/koji @@ -24,7 +24,9 @@ # Mike Bonnet # Cristian Balint +from __future__ import absolute_import import sys +from six.moves import range try: import krbV except ImportError: # pragma: no cover @@ -2119,7 +2121,7 @@ def handle_prune_signed_copies(options, session, args): timeline.sort() #find most recent creation entry for our build and crop there latest_ts = None - for i in xrange(len(timeline)-1, -1, -1): + for i in range(len(timeline)-1, -1, -1): #searching in reverse cronological order event_id, is_create, entry = timeline[i] if entry['build_id'] == binfo['id'] and is_create: diff --git a/hub/kojihub.py b/hub/kojihub.py index e3afce1a..b33a2d6e 100644 --- a/hub/kojihub.py +++ b/hub/kojihub.py @@ -22,6 +22,7 @@ # Mike Bonnet # Cristian Balint +from __future__ import absolute_import import base64 import calendar import cgi @@ -56,6 +57,7 @@ import types import xmlrpclib import zipfile from koji.context import context +from six.moves import range try: import json diff --git a/hub/kojixmlrpc.py b/hub/kojixmlrpc.py index 53cd2291..1991d5a4 100644 --- a/hub/kojixmlrpc.py +++ b/hub/kojixmlrpc.py @@ -18,6 +18,7 @@ # Authors: # Mike McLean +from __future__ import absolute_import from ConfigParser import RawConfigParser import datetime import inspect @@ -40,6 +41,7 @@ import koji.plugin import koji.policy import koji.util from koji.context import context +from six.moves import range # Workaround to allow xmlrpclib deal with iterators diff --git a/koji/__init__.py b/koji/__init__.py index 84aceb0b..d26bdef4 100644 --- a/koji/__init__.py +++ b/koji/__init__.py @@ -21,7 +21,9 @@ # Mike McLean # Mike Bonnet +from __future__ import absolute_import import sys +from six.moves import range try: import krbV except ImportError: # pragma: no cover @@ -528,7 +530,7 @@ def multibyte(data): """Convert a list of bytes to an integer (network byte order)""" sum = 0 n = len(data) - for i in xrange(n): + for i in range(n): sum += data[i] << (8 * (n - i - 1)) return sum @@ -606,9 +608,9 @@ class RawHeader(object): #read the index (starts at offset 16) index = {} - for i in xrange(il): + for i in range(il): entry = [] - for j in xrange(4): + for j in range(4): ofs = 16 + i*16 + j*4 data = [ord(x) for x in self.header[ofs:ofs+4]] entry.append(multibyte(data)) @@ -653,14 +655,14 @@ class RawHeader(object): next = pos elif dtype == 1: #char - for i in xrange(count): + for i in range(count): print("Char: %r" % self.header[pos]) pos += 1 next = pos elif dtype >= 2 and dtype <= 5: #integer n = 1 << (dtype - 2) - for i in xrange(count): + for i in range(count): data = [ord(x) for x in self.header[pos:pos+n]] print("%r" % data) num = multibyte(data) @@ -677,14 +679,14 @@ class RawHeader(object): next = pos+count elif dtype == 8: # string array - for i in xrange(count): + for i in range(count): end = self.header.find('\0', pos) print("String(%d): %r" % (end-pos, self.header[pos:end])) pos = end + 1 next = pos elif dtype == 9: # unicode string array - for i in xrange(count): + for i in range(count): end = self.header.find('\0', pos) print("i18n(%d): %r" % (end-pos, self.header[pos:end])) pos = end + 1 @@ -1754,7 +1756,7 @@ def get_profile_module(profile_name, config=None): class PathInfo(object): # ASCII numbers and upper- and lower-case letter for use in tmpdir() - ASCII_CHARS = [chr(i) for i in range(48, 58) + range(65, 91) + range(97, 123)] + ASCII_CHARS = [chr(i) for i in list(range(48, 58)) + list(range(65, 91)) + list(range(97, 123))] def __init__(self, topdir=None): self._topdir = topdir diff --git a/koji/auth.py b/koji/auth.py index 60445908..69cfca50 100644 --- a/koji/auth.py +++ b/koji/auth.py @@ -19,6 +19,7 @@ # Mike McLean # Mike Bonnet +from __future__ import absolute_import import socket import string import random @@ -27,6 +28,7 @@ import krbV import koji import cgi #for parse_qs from context import context +from six.moves import range # 1 - load session if provided # - check uri for session id diff --git a/koji/context.py b/koji/context.py index 56a79f77..03e22ed8 100755 --- a/koji/context.py +++ b/koji/context.py @@ -24,7 +24,9 @@ # - request data # - auth data +from __future__ import absolute_import import thread +from six.moves import range class _data(object): pass @@ -97,7 +99,7 @@ if __name__ == '__main__': context._threadclear() print(context) - for x in xrange(1, 10): + for x in range(1, 10): thread.start_new_thread(test, ()) time.sleep(4) diff --git a/koji/daemon.py b/koji/daemon.py index 637566f4..355a4cf7 100644 --- a/koji/daemon.py +++ b/koji/daemon.py @@ -20,6 +20,7 @@ # Mike McLean # Mike Bonnet +from __future__ import absolute_import import koji import koji.tasks from koji.tasks import safe_rmtree @@ -35,6 +36,7 @@ import sys import traceback import errno import xmlrpclib +from six.moves import range def incremental_upload(session, fname, fd, path, retries=5, logger=None): @@ -664,7 +666,7 @@ class TaskManager(object): fo = file(fn, 'r') id = None name = None - for n in xrange(10): + for n in range(10): # data should be in first few lines line = fo.readline() if line.startswith('# Koji buildroot id:'): diff --git a/koji/tasks.py b/koji/tasks.py index 9591c239..8245cabd 100644 --- a/koji/tasks.py +++ b/koji/tasks.py @@ -20,6 +20,7 @@ # Mike McLean # Mike Bonnet +from __future__ import absolute_import import koji import koji.util import os @@ -31,6 +32,7 @@ import shutil import random import time import pprint +from six.moves import range def scan_mounts(topdir): """Search path for mountpoints""" @@ -402,7 +404,7 @@ class SleepTask(BaseTaskHandler): class ForkTask(BaseTaskHandler): Methods = ['fork'] def handler(self, n=5, m=37): - for i in xrange(n): + for i in range(n): os.spawnvp(os.P_NOWAIT, 'sleep', ['sleep', str(m)]) class WaitTestTask(BaseTaskHandler): @@ -417,7 +419,7 @@ class WaitTestTask(BaseTaskHandler): _taskWeight = 0.1 def handler(self, count, seconds=10): tasks = [] - for i in xrange(count): + for i in range(count): task_id = self.subtask(method='sleep', arglist=[seconds], label=str(i), parent=self.id) tasks.append(task_id) bad_task = self.subtask('sleep', ['BAD_ARG'], label='bad') diff --git a/koji/util.py b/koji/util.py index f3d867f0..5a3c7b9c 100644 --- a/koji/util.py +++ b/koji/util.py @@ -18,6 +18,7 @@ # Mike McLean # Mike Bonnet +from __future__ import absolute_import import calendar from fnmatch import fnmatch import koji @@ -32,6 +33,7 @@ import sys import time import ConfigParser from zlib import adler32 +from six.moves import range # imported from kojiweb and kojihub try: diff --git a/tests/test_builder/test_choose_taskarch.py b/tests/test_builder/test_choose_taskarch.py index 2bce61df..129b89da 100644 --- a/tests/test_builder/test_choose_taskarch.py +++ b/tests/test_builder/test_choose_taskarch.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import import unittest import os import sys @@ -7,6 +8,7 @@ import tempfile import koji from loadkojid import kojid +from six.moves import range class FakeHeader(dict): diff --git a/tests/test_cli/test_unique_path.py b/tests/test_cli/test_unique_path.py index f2035819..e8127759 100644 --- a/tests/test_cli/test_unique_path.py +++ b/tests/test_cli/test_unique_path.py @@ -1,6 +1,8 @@ +from __future__ import absolute_import import unittest import loadcli +from six.moves import range cli = loadcli.cli diff --git a/tests/test_cli/test_watch_tasks.py b/tests/test_cli/test_watch_tasks.py index 6ab971d9..d9e7ce5b 100644 --- a/tests/test_cli/test_watch_tasks.py +++ b/tests/test_cli/test_watch_tasks.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import import unittest import os @@ -9,6 +10,7 @@ import mock from mock import call import loadcli +from six.moves import range cli = loadcli.cli @@ -64,7 +66,7 @@ class TestWatchTasks(unittest.TestCase): def side_effect(*args, **kwargs): rt = None - if args[0] not in range(2): + if args[0] not in list(range(2)): rt = mock.MagicMock() rt.level = args[2] rt.is_done.return_value = True @@ -76,7 +78,7 @@ class TestWatchTasks(unittest.TestCase): return rt twClzMock.side_effect = side_effect - rv = cli.watch_tasks(self.session, range(2), quiet=False) + rv = cli.watch_tasks(self.session, list(range(2)), quiet=False) actual = stdout.getvalue() self.assertMultiLineEqual( actual, "Watching tasks (this may be safely interrupted)...\n\n") @@ -201,7 +203,7 @@ class TestWatchTasks(unittest.TestCase): def side_effect(*args, **kwargs): rt = None - if args[0] not in range(2): + if args[0] not in list(range(2)): rt = mock.MagicMock() rt.level = args[2] rt.is_done.return_value = True @@ -215,7 +217,7 @@ class TestWatchTasks(unittest.TestCase): twClzMock.side_effect = side_effect with self.assertRaises(KeyboardInterrupt): - cli.watch_tasks(self.session, range(2), quiet=False) + cli.watch_tasks(self.session, list(range(2)), quiet=False) actual = stdout.getvalue() self.assertMultiLineEqual( diff --git a/tests/test_profiles.py b/tests/test_profiles.py index ef53a50a..3903db1e 100644 --- a/tests/test_profiles.py +++ b/tests/test_profiles.py @@ -1,9 +1,11 @@ +from __future__ import absolute_import import unittest import koji import sys import threading import traceback +from six.moves import range class ProfilesTestCase(unittest.TestCase): @@ -14,7 +16,7 @@ class ProfilesTestCase(unittest.TestCase): # loop a few times to increase chances of hitting race conditions for i in range(20): errors = {} - threads = [threading.Thread(target=stress, args=(errors, _)) for _ in xrange(100)] + threads = [threading.Thread(target=stress, args=(errors, _)) for _ in range(100)] for t in threads: t.start() for t in threads: diff --git a/util/koji-shadow b/util/koji-shadow index 233d33d1..e06b61d9 100755 --- a/util/koji-shadow +++ b/util/koji-shadow @@ -22,6 +22,8 @@ # Dennis Gilmore # Karsten Hopp +from __future__ import absolute_import +from six.moves import range try: import krbV except ImportError: # pragma: no cover @@ -861,7 +863,7 @@ class BuildTracker(object): taginfo = remote.getTag(tag) builds = remote.listTagged(taginfo['id'], latest=True) for build in builds: - for retry in xrange(10): + for retry in range(10): try: self.scanBuild(build['id'], tag=tag) if options.first_one: diff --git a/www/kojiweb/index.py b/www/kojiweb/index.py index 49ea24b2..9d27f446 100644 --- a/www/kojiweb/index.py +++ b/www/kojiweb/index.py @@ -20,6 +20,7 @@ # Mike Bonnet # Mike McLean +from __future__ import absolute_import import os import os.path import re @@ -36,6 +37,7 @@ from kojiweb.util import _initValues from kojiweb.util import _genHTML from kojiweb.util import _getValidTokens from koji.util import sha1_constructor +from six.moves import range # Convenience definition of a commonly-used sort function _sortbyname = kojiweb.util.sortByKeyFunc('name') @@ -809,7 +811,7 @@ def tags(environ, start=None, order=None, childID=None): return _genHTML(environ, 'tags.chtml') -_PREFIX_CHARS = [chr(char) for char in range(48, 58) + range(97, 123)] +_PREFIX_CHARS = [chr(char) for char in list(range(48, 58)) + list(range(97, 123))] def packages(environ, tagID=None, userID=None, order='package_name', start=None, prefix=None, inherited='1'): values = _initValues(environ, 'Packages', 'packages') diff --git a/www/lib/kojiweb/util.py b/www/lib/kojiweb/util.py index 6cdcecc1..4201297d 100644 --- a/www/lib/kojiweb/util.py +++ b/www/lib/kojiweb/util.py @@ -20,6 +20,7 @@ # Mike Bonnet # Mike McLean +from __future__ import absolute_import import Cheetah.Template import datetime import koji @@ -32,6 +33,7 @@ from socket import sslerror as socket_sslerror from xmlrpclib import ProtocolError from xml.parsers.expat import ExpatError import cgi +from six.moves import range class NoSuchException(Exception): pass