diff --git a/rida/builder.py b/rida/builder.py index 7796cd26..0bb3cabb 100644 --- a/rida/builder.py +++ b/rida/builder.py @@ -28,6 +28,7 @@ # their tag names. # TODO: Ensure the RPM %dist tag is set according to the policy. +import six from abc import ABCMeta, abstractmethod import logging import os @@ -112,7 +113,7 @@ Koji workflow 8) (optional) wait for selected builds to be available in buildroot """ -class GenericBuilder: +class GenericBuilder(six.with_metaclass(ABCMeta)): """ External Api for builders @@ -138,7 +139,6 @@ class GenericBuilder: "?#70fa7516b83768595a4f3280ae890a7ac957e0c7") """ - __metaclass__ = ABCMeta backend = "generic" @@ -589,7 +589,7 @@ chmod 644 %buildroot/%_rpmconfigdir/macros.d/macros.modules :param build_tag_name :param groups: A dict {'group' : [package, ...]} """ - log.debug("Adding groups=%s to tag=%s" % (groups.keys(), dest_tag)) + log.debug("Adding groups=%s to tag=%s" % (list(groups), dest_tag)) if groups and not isinstance(groups, dict): raise ValueError("Expected dict {'group' : [str(package1), ...]") @@ -599,7 +599,7 @@ chmod 644 %buildroot/%_rpmconfigdir/macros.d/macros.modules for p in self.koji_session.getTagGroups(dest_tag, inherit=False) ]) - for group, packages in groups.iteritems(): + for group, packages in groups.items(): group_id = existing_groups.get(group, None) if group_id is not None: log.debug("Group %s already exists for tag %s. Skipping creation." % (group, dest_tag)) @@ -646,7 +646,7 @@ chmod 644 %buildroot/%_rpmconfigdir/macros.d/macros.modules raise SystemError("Tag %s: master lock already set. Can't edit tag" % taginfo['name']) perm_ids = dict([(p['name'], p['id']) for p in self.koji_session.getAllPerms()]) - if perm not in perm_ids.keys(): + if perm not in perm_ids: raise ValueError("Unknown permissions %s" % perm) perm_id = perm_ids[perm] diff --git a/rida/config.py b/rida/config.py index 49bba237..2ec05b00 100644 --- a/rida/config.py +++ b/rida/config.py @@ -25,11 +25,6 @@ """Configuration handler functions.""" -try: - import configparser # py3 -except ImportError: - import ConfigParser as configparser # py2 - import six from rida import app diff --git a/rida/pdc.py b/rida/pdc.py index f97eadeb..39bb100e 100644 --- a/rida/pdc.py +++ b/rida/pdc.py @@ -27,6 +27,7 @@ import modulemd from pdc_client import PDCClient +import six @@ -68,7 +69,7 @@ def get_variant_dict(data): return isinstance(data, modulemd.ModuleMetadata) def is_module_str(data): - return isinstance(data, str) or isinstance(data, unicode) + return isinstance(data, six.string_types) result = None diff --git a/rida/scheduler/main.py b/rida/scheduler/main.py index a3cbd468..171a9463 100644 --- a/rida/scheduler/main.py +++ b/rida/scheduler/main.py @@ -29,21 +29,13 @@ This is the main component of the orchestrator and is responsible for proper scheduling component builds in the supported build systems. """ - import inspect import operator import os import pprint import threading import time - -try: - # Py3 - import queue -except ImportError: - # Py2 - import Queue as queue - +import six.moves.queue as queue import rida.config import rida.messaging @@ -64,7 +56,9 @@ class STOP_WORK(object): def module_build_state_from_msg(msg): state = int(msg.module_build_state) # TODO better handling - assert state in models.BUILD_STATES.values(), "state=%s(%s) is not in %s" % (state, type(state), models.BUILD_STATES.values()) + assert state in models.BUILD_STATES.values(), ( + 'state=%s(%s) is not in %s' + % (state, type(state), list(models.BUILD_STATES.values()))) return state @@ -116,7 +110,8 @@ class MessageWorker(threading.Thread): if koji.BUILD_STATES[state] not in self.on_build_change: raise KeyError("Koji build states %r not handled." % state) - all_fns = self.on_build_change.items() + self.on_module_change.items() + all_fns = (list(self.on_build_change.items()) + + list(self.on_module_change.items())) for key, callback in all_fns: expected = ['config', 'session', 'msg'] argspec = inspect.getargspec(callback)[0] diff --git a/rida/utils.py b/rida/utils.py index caa02f65..3f1cfbfb 100644 --- a/rida/utils.py +++ b/rida/utils.py @@ -27,7 +27,7 @@ import re import functools import time from rida import log, models -from errors import ValidationError +from rida.errors import ValidationError def retry(timeout=120, interval=30, wait_on=Exception): diff --git a/rida/views.py b/rida/views.py index eb2cec82..14a71038 100644 --- a/rida/views.py +++ b/rida/views.py @@ -41,8 +41,8 @@ import tempfile from rida import app, conf, db, log from rida import models from rida.utils import pagination_metadata, filter_module_builds -from errors import (ValidationError, Unauthorized, UnprocessableEntity, - Conflict, NotFound) +from rida.errors import ( + ValidationError, Unauthorized, UnprocessableEntity, Conflict, NotFound) class SubmitBuild(View): """Handles new module build submissions.""" diff --git a/tests/test_views/test_views.py b/tests/test_views/test_views.py index 34bc6e63..4e13ad8f 100644 --- a/tests/test_views/test_views.py +++ b/tests/test_views/test_views.py @@ -25,7 +25,6 @@ import json from mock import patch from shutil import copyfile from os import path, mkdir -from datetime import datetime from tests import app, init_data