Target E202 - Whitespace before ')'
https://www.flake8rules.com/rules/E202.html
This commit is contained in:
parent
529d1dafae
commit
54079e949f
2
.flake8
2
.flake8
@ -1,4 +1,4 @@
|
||||
[flake8]
|
||||
exclude = abichecker
|
||||
max-line-length = 100
|
||||
ignore = W503,W504,E501,F401,E128,E251,E201,E202
|
||||
ignore = W503,W504,E501,F401,E128,E251,E201
|
||||
|
18
ReviewBot.py
18
ReviewBot.py
@ -78,7 +78,7 @@ class ReviewBot(object):
|
||||
return (None|True|False)
|
||||
"""
|
||||
|
||||
DEFAULT_REVIEW_MESSAGES = { 'accepted': 'ok', 'declined': 'review failed' }
|
||||
DEFAULT_REVIEW_MESSAGES = { 'accepted': 'ok', 'declined': 'review failed'}
|
||||
REVIEW_CHOICES = ('normal', 'no', 'accept', 'accept-onpass', 'fallback-onfail', 'fallback-always')
|
||||
|
||||
COMMENT_MARKER_REGEX = re.compile(r'<!-- (?P<bot>[^ ]+) state=(?P<state>[^ ]+)(?: result=(?P<result>[^ ]+))? -->')
|
||||
@ -120,7 +120,7 @@ class ReviewBot(object):
|
||||
def _load_config(self, handle = None):
|
||||
d = self.__class__.config_defaults
|
||||
y = yaml.safe_load(handle) if handle is not None else {}
|
||||
return namedtuple('BotConfig', sorted(d.keys()))(*[ y.get(p, d[p]) for p in sorted(d.keys()) ])
|
||||
return namedtuple('BotConfig', sorted(d.keys()))(*[ y.get(p, d[p]) for p in sorted(d.keys())])
|
||||
|
||||
def load_config(self, filename = None):
|
||||
if filename:
|
||||
@ -166,7 +166,7 @@ class ReviewBot(object):
|
||||
|
||||
def set_request_ids(self, ids):
|
||||
for rqid in ids:
|
||||
u = osc.core.makeurl(self.apiurl, [ 'request', rqid ], { 'withfullhistory': '1' })
|
||||
u = osc.core.makeurl(self.apiurl, [ 'request', rqid], { 'withfullhistory': '1'})
|
||||
r = osc.core.http_GET(u)
|
||||
root = ET.parse(r).getroot()
|
||||
req = osc.core.Request()
|
||||
@ -559,7 +559,7 @@ class ReviewBot(object):
|
||||
@staticmethod
|
||||
@memoize(session=True)
|
||||
def _get_sourceinfo(apiurl, project, package, rev=None):
|
||||
query = { 'view': 'info' }
|
||||
query = { 'view': 'info'}
|
||||
if rev is not None:
|
||||
query['rev'] = rev
|
||||
url = osc.core.makeurl(apiurl, ('source', project, package), query=query)
|
||||
@ -585,7 +585,7 @@ class ReviewBot(object):
|
||||
return None
|
||||
|
||||
props = ('package', 'rev', 'vrev', 'srcmd5', 'lsrcmd5', 'verifymd5')
|
||||
return namedtuple('SourceInfo', props)(*[ root.get(p) for p in props ])
|
||||
return namedtuple('SourceInfo', props)(*[ root.get(p) for p in props])
|
||||
|
||||
# TODO: what if there is more than _link?
|
||||
def _get_linktarget_self(self, src_project, src_package):
|
||||
@ -637,7 +637,7 @@ class ReviewBot(object):
|
||||
review = "@by_user='%s' and @state='new'" % self.review_user
|
||||
if self.review_group:
|
||||
review = osc.core.xpath_join(review, "@by_group='%s' and @state='new'" % self.review_group)
|
||||
url = osc.core.makeurl(self.apiurl, ('search', 'request'), { 'match': "state/@name='review' and review[%s]" % review, 'withfullhistory': 1 } )
|
||||
url = osc.core.makeurl(self.apiurl, ('search', 'request'), { 'match': "state/@name='review' and review[%s]" % review, 'withfullhistory': 1})
|
||||
root = ET.parse(osc.core.http_GET(url)).getroot()
|
||||
|
||||
self.requests = []
|
||||
@ -651,7 +651,7 @@ class ReviewBot(object):
|
||||
def ids_project(self, project, typename):
|
||||
url = osc.core.makeurl(self.apiurl, ('search', 'request'),
|
||||
{ 'match': "(state/@name='review' or state/@name='new') and (action/target/@project='%s' and action/@type='%s')" % (project, typename),
|
||||
'withfullhistory': 1 })
|
||||
'withfullhistory': 1})
|
||||
root = ET.parse(osc.core.http_GET(url)).getroot()
|
||||
|
||||
ret = []
|
||||
@ -790,7 +790,7 @@ class ReviewBot(object):
|
||||
|
||||
if history_limit:
|
||||
self.logger.debug("%s not the latest version, checking history", rev)
|
||||
u = osc.core.makeurl(self.apiurl, [ 'source', project, package, '_history' ], { 'limit': history_limit })
|
||||
u = osc.core.makeurl(self.apiurl, [ 'source', project, package, '_history'], { 'limit': history_limit})
|
||||
try:
|
||||
r = osc.core.http_GET(u)
|
||||
except HTTPError:
|
||||
@ -1002,4 +1002,4 @@ class CommandLineInterface(cmdln.Cmdln):
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = CommandLineInterface()
|
||||
sys.exit( app.main() )
|
||||
sys.exit( app.main())
|
||||
|
@ -94,7 +94,7 @@ class ToolBase(object):
|
||||
|
||||
def meta_get_packagelist(self, prj, deleted=None, expand=False):
|
||||
root = ET.fromstring(self._meta_get_packagelist(prj, deleted, expand))
|
||||
return [ node.get('name') for node in root.findall('entry') if not node.get('name') == '000product' and not node.get('name').startswith('patchinfo.') ]
|
||||
return [ node.get('name') for node in root.findall('entry') if not node.get('name') == '000product' and not node.get('name').startswith('patchinfo.')]
|
||||
|
||||
def latest_packages(self, project):
|
||||
data = self.cached_GET(self.makeurl(['project', 'latest_commits', project]))
|
||||
@ -204,4 +204,4 @@ class CommandLineInterface(cmdln.Cmdln):
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = CommandLineInterface()
|
||||
sys.exit( app.main() )
|
||||
sys.exit( app.main())
|
||||
|
@ -53,7 +53,7 @@ class BiArchTool(ToolBase.ToolBase):
|
||||
if expand:
|
||||
query['expand'] = 1
|
||||
root = ET.fromstring(self.cached_GET(self.makeurl(['source', self.project, package], query)))
|
||||
return [ node.get('name') for node in root.findall('entry') ]
|
||||
return [ node.get('name') for node in root.findall('entry')]
|
||||
|
||||
def has_baselibs(self, package):
|
||||
if package in self._has_baselibs:
|
||||
@ -125,7 +125,7 @@ class BiArchTool(ToolBase.ToolBase):
|
||||
if self.rdeps is not None:
|
||||
return
|
||||
self.rdeps = dict()
|
||||
url = self.makeurl(['build', self.project, 'standard', self.arch, '_builddepinfo' ], {'view': 'revpkgnames'})
|
||||
url = self.makeurl(['build', self.project, 'standard', self.arch, '_builddepinfo'], {'view': 'revpkgnames'})
|
||||
x = ET.fromstring(self.cached_GET(url))
|
||||
for pnode in x.findall('package'):
|
||||
name = pnode.get('name')
|
||||
@ -201,7 +201,7 @@ class BiArchTool(ToolBase.ToolBase):
|
||||
bn = pkgmeta.find('build')
|
||||
if bn is None:
|
||||
bn = ET.SubElement(pkgmeta, 'build')
|
||||
ET.SubElement(bn, 'disable', { 'arch': self.arch })
|
||||
ET.SubElement(bn, 'disable', { 'arch': self.arch})
|
||||
changed = True
|
||||
|
||||
if changed:
|
||||
@ -214,7 +214,7 @@ class BiArchTool(ToolBase.ToolBase):
|
||||
self.http_POST(self.makeurl(['build', self.project], {
|
||||
'cmd': 'wipe',
|
||||
'arch': self.arch,
|
||||
'package': pkg }))
|
||||
'package': pkg}))
|
||||
except HTTPError as e:
|
||||
logger.error('failed to update %s: %s', pkg, e)
|
||||
|
||||
@ -264,7 +264,7 @@ class BiArchTool(ToolBase.ToolBase):
|
||||
bn = pkgmeta.find('build')
|
||||
if bn is None:
|
||||
bn = ET.SubElement(pkgmeta, 'build')
|
||||
ET.SubElement(bn, 'disable', { 'arch': self.arch })
|
||||
ET.SubElement(bn, 'disable', { 'arch': self.arch})
|
||||
changed = True
|
||||
else:
|
||||
logger.debug('%s already disabled for %s', pkg, self.arch)
|
||||
@ -296,7 +296,7 @@ class BiArchTool(ToolBase.ToolBase):
|
||||
self.http_POST(self.makeurl(['build', self.project], {
|
||||
'cmd': 'wipe',
|
||||
'arch': self.arch,
|
||||
'package': pkg }))
|
||||
'package': pkg}))
|
||||
except HTTPError as e:
|
||||
logger.error('failed to update %s: %s', pkg, e)
|
||||
|
||||
@ -371,4 +371,4 @@ class CommandLineInterface(ToolBase.CommandLineInterface):
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = CommandLineInterface()
|
||||
sys.exit( app.main() )
|
||||
sys.exit( app.main())
|
||||
|
@ -55,7 +55,7 @@ class BugownerTool(ToolBase.ToolBase):
|
||||
url = self.makeurl(['person', name])
|
||||
root = ET.fromstring(self.cached_GET(url))
|
||||
|
||||
person = Person(*[ root.find('./{}'.format(field)).text for field in Person._fields ])
|
||||
person = Person(*[ root.find('./{}'.format(field)).text for field in Person._fields])
|
||||
self.persons[name] = person
|
||||
|
||||
return person
|
||||
@ -116,7 +116,7 @@ class BugownerTool(ToolBase.ToolBase):
|
||||
logging.debug("%s was last touched by %s, ignored." % (package, user))
|
||||
return None
|
||||
|
||||
return [ Owner('person', user) ]
|
||||
return [ Owner('person', user)]
|
||||
|
||||
def is_release_manager(self, name):
|
||||
if self.release_managers is None:
|
||||
|
@ -211,7 +211,7 @@ maintainer/bugowner did not yet find the time to look into the
|
||||
matter and he/she would certainly appreciate help to get this
|
||||
sorted.
|
||||
|
||||
""" % { 'project': project }
|
||||
""" % { 'project': project}
|
||||
for pkg in ProjectComplainList:
|
||||
text += "- %s\n" % pkg
|
||||
text += u"""
|
||||
@ -220,7 +220,7 @@ package(s) are going to be removed from %(project)s.
|
||||
|
||||
Kind regards,
|
||||
%(sender)s
|
||||
""" % { 'project': project, 'sender': sender }
|
||||
""" % { 'project': project, 'sender': sender}
|
||||
SendMail(logger, project, sender, to, fullname, subject, text)
|
||||
|
||||
|
||||
|
@ -39,7 +39,7 @@ class MaintenanceChecker(ReviewBot.ReviewBot):
|
||||
self.logger.debug("%s looks wrong as maintainer, skipped", prj)
|
||||
continue
|
||||
self.add_review(req, by_project = prj, by_package = pkg,
|
||||
msg = 'Submission for {} by someone who is not maintainer in the devel project ({}). Please review'.format(pkg, prj) )
|
||||
msg = 'Submission for {} by someone who is not maintainer in the devel project ({}). Please review'.format(pkg, prj))
|
||||
|
||||
@staticmethod
|
||||
@memoize(session=True)
|
||||
@ -157,4 +157,4 @@ class MaintenanceChecker(ReviewBot.ReviewBot):
|
||||
if __name__ == "__main__":
|
||||
app = ReviewBot.CommandLineInterface()
|
||||
app.clazz = MaintenanceChecker
|
||||
sys.exit( app.main() )
|
||||
sys.exit( app.main())
|
||||
|
@ -272,7 +272,7 @@ class CheckSource(ReviewBot.ReviewBot):
|
||||
|
||||
return True
|
||||
|
||||
def suppresses_whitelist_warnings( self, source_project, source_package ):
|
||||
def suppresses_whitelist_warnings( self, source_project, source_package):
|
||||
# checks if there's a rpmlintrc that suppresses warnings that we check
|
||||
found_entries = set()
|
||||
contents = source_file_load(self.apiurl, source_project, source_package, source_package + '-rpmlintrc')
|
||||
@ -295,7 +295,7 @@ class CheckSource(ReviewBot.ReviewBot):
|
||||
|
||||
return found_entries
|
||||
|
||||
def has_whitelist_warnings( self, source_project, source_package, target_project, target_package ):
|
||||
def has_whitelist_warnings( self, source_project, source_package, target_project, target_package):
|
||||
# this checks if this is a submit to an product project and it has warnings for non-whitelisted permissions/files
|
||||
found_entries = set()
|
||||
url = osc.core.makeurl(self.apiurl, ['build', target_project])
|
||||
|
@ -21,8 +21,8 @@ class FactorySourceChecker(ReviewBot.ReviewBot):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
ReviewBot.ReviewBot.__init__(self, *args, **kwargs)
|
||||
self.factory = [ "openSUSE:Factory" ]
|
||||
self.review_messages = { 'accepted': 'ok', 'declined': 'the package needs to be accepted in Factory first' }
|
||||
self.factory = [ "openSUSE:Factory"]
|
||||
self.review_messages = { 'accepted': 'ok', 'declined': 'the package needs to be accepted in Factory first'}
|
||||
self.history_limit = 5
|
||||
|
||||
def check_source_submission(self, src_project, src_package, src_rev, target_project, target_package):
|
||||
@ -165,4 +165,4 @@ class CommandLineInterface(ReviewBot.CommandLineInterface):
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = CommandLineInterface()
|
||||
sys.exit( app.main() )
|
||||
sys.exit( app.main())
|
||||
|
@ -18,7 +18,7 @@ class TagChecker(ReviewBot.ReviewBot):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(TagChecker, self).__init__(*args, **kwargs)
|
||||
self.factory = [ "openSUSE:Factory" ]
|
||||
self.factory = [ "openSUSE:Factory"]
|
||||
self.review_messages['declined'] = """
|
||||
(This is a script, so report bugs)
|
||||
|
||||
@ -125,7 +125,7 @@ class CommandLineInterface(ReviewBot.CommandLineInterface):
|
||||
bot = ReviewBot.CommandLineInterface.setup_checker(self)
|
||||
|
||||
if self.options.factory:
|
||||
bot.factory = [ self.options.factory ]
|
||||
bot.factory = [ self.options.factory]
|
||||
|
||||
return bot
|
||||
|
||||
|
@ -47,11 +47,11 @@ class Fetcher(object):
|
||||
self.projects.append(Project(self, name, kwargs))
|
||||
|
||||
def build_summary(self, project, repository):
|
||||
url = makeurl(self.apiurl, ['build', project, '_result'], { 'repository': repository, 'view': 'summary' })
|
||||
url = makeurl(self.apiurl, ['build', project, '_result'], { 'repository': repository, 'view': 'summary'})
|
||||
try:
|
||||
f = http_GET(url)
|
||||
except HTTPError:
|
||||
return { 'building': -1 }
|
||||
return { 'building': -1}
|
||||
root = ET.parse(f).getroot()
|
||||
failed = 0
|
||||
unresolvable = 0
|
||||
@ -85,7 +85,7 @@ class Fetcher(object):
|
||||
return { 'building': 10000 - int(building * 10000 / (building + failed + succeeded + broken)),
|
||||
'failed': failed,
|
||||
'broken': broken,
|
||||
'unresolvable': unresolvable }
|
||||
'unresolvable': unresolvable}
|
||||
|
||||
def generate_all_archs(self, project):
|
||||
meta = ET.fromstringlist(show_project_meta(self.apiurl, project))
|
||||
|
@ -85,7 +85,7 @@ class ChangeLogger(cmdln.Cmdln):
|
||||
if srpm in changelogs:
|
||||
changelogs[srpm]['packages'].append(binrpm)
|
||||
else:
|
||||
data = { 'packages': [ binrpm ] }
|
||||
data = { 'packages': [ binrpm]}
|
||||
data['changelogtime'] = h['changelogtime']
|
||||
data['changelogtext'] = h['changelogtext']
|
||||
for (t, txt) in enumerate(data['changelogtext']):
|
||||
@ -104,7 +104,7 @@ class ChangeLogger(cmdln.Cmdln):
|
||||
|
||||
# On Tumbleweed, there is no '/suse' prefix
|
||||
for path in ['/suse/x86_64', '/suse/noarch', '/suse/aarch64',
|
||||
'/suse/s390x', '/x86_64', '/noarch', '/aarch64', '/s390x' ]:
|
||||
'/suse/s390x', '/x86_64', '/noarch', '/aarch64', '/s390x']:
|
||||
file_stats = iso.readdir(path)
|
||||
if file_stats is None:
|
||||
continue
|
||||
@ -125,7 +125,7 @@ class ChangeLogger(cmdln.Cmdln):
|
||||
for pkg in [ os.path.join(root, file) for file in files]:
|
||||
if not pkg.endswith('.rpm'):
|
||||
continue
|
||||
h = self.readRpmHeader( pkg )
|
||||
h = self.readRpmHeader( pkg)
|
||||
_getdata(h)
|
||||
else:
|
||||
raise Exception("don't know what to do with %s" % arg)
|
||||
@ -281,4 +281,4 @@ class ChangeLogger(cmdln.Cmdln):
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = ChangeLogger()
|
||||
sys.exit( app.main() )
|
||||
sys.exit( app.main())
|
||||
|
@ -228,7 +228,7 @@ class FccSubmitter(object):
|
||||
|
||||
def check_multiple_specfiles(self, project, package):
|
||||
try:
|
||||
url = makeurl(self.apiurl, ['source', project, package], { 'expand': '1' } )
|
||||
url = makeurl(self.apiurl, ['source', project, package], { 'expand': '1'})
|
||||
except HTTPError as e:
|
||||
if e.code == 404:
|
||||
return None
|
||||
@ -241,7 +241,7 @@ class FccSubmitter(object):
|
||||
else:
|
||||
data['linkinfo'] = None
|
||||
|
||||
files = [ entry.get('name').replace('.spec', '') for entry in root.findall('entry') if entry.get('name').endswith('.spec') ]
|
||||
files = [ entry.get('name').replace('.spec', '') for entry in root.findall('entry') if entry.get('name').endswith('.spec')]
|
||||
data['specs'] = files
|
||||
|
||||
if len(files) > 1:
|
||||
|
@ -273,7 +273,7 @@ class LegalAuto(ReviewBot.ReviewBot):
|
||||
'external_link': tproject}
|
||||
if revision:
|
||||
params['rev'] = revision
|
||||
old_id = self.pkg_cache.get(package, { None: None }).get(revision, None)
|
||||
old_id = self.pkg_cache.get(package, { None: None}).get(revision, None)
|
||||
if old_id:
|
||||
return old_id
|
||||
|
||||
@ -288,7 +288,7 @@ class LegalAuto(ReviewBot.ReviewBot):
|
||||
return None
|
||||
legaldb_id = obj['saved']['id']
|
||||
self.logger.debug("PKG {}/{}[{}]->{} is {}".format(sproject, package, revision, tproject, legaldb_id))
|
||||
self.pkg_cache[package] = { revision: legaldb_id }
|
||||
self.pkg_cache[package] = { revision: legaldb_id}
|
||||
if obj['saved']['state'] == 'obsolete':
|
||||
url = osc.core.makeurl(self.legaldb, ['packages', 'import', str(legaldb_id)], {
|
||||
'result': f'Reopened for {tproject}', 'state': 'new',
|
||||
|
@ -22,7 +22,7 @@ class AcceptCommand(object):
|
||||
|
||||
def find_new_requests(self, project):
|
||||
match = f"state/@name='new' and action/target/@project='{project}'"
|
||||
url = self.api.makeurl(['search', 'request'], { 'match': match })
|
||||
url = self.api.makeurl(['search', 'request'], { 'match': match})
|
||||
|
||||
f = http_GET(url)
|
||||
root = ET.parse(f).getroot()
|
||||
@ -70,7 +70,7 @@ class AcceptCommand(object):
|
||||
print('ERROR: Not compatible with force option')
|
||||
return False
|
||||
|
||||
self.requests = { 'delete': [], 'submit': [] }
|
||||
self.requests = { 'delete': [], 'submit': []}
|
||||
staging_packages = {}
|
||||
|
||||
if accept_all_green:
|
||||
@ -104,7 +104,7 @@ class AcceptCommand(object):
|
||||
|
||||
# we have checked ourselves and accepting one staging project creates a race
|
||||
# for the other staging projects to appear building again
|
||||
opts = { 'force': '1' }
|
||||
opts = { 'force': '1'}
|
||||
|
||||
print('triggering staging accepts...')
|
||||
for project in staging_packages.keys():
|
||||
|
@ -1271,6 +1271,6 @@ def message_suffix(action, message=None):
|
||||
|
||||
|
||||
def request_state_change(apiurl, request_id, state):
|
||||
query = { 'newstate': state, 'cmd': 'changestate' }
|
||||
query = { 'newstate': state, 'cmd': 'changestate'}
|
||||
url = makeurl(apiurl, ['request', request_id], query)
|
||||
return ET.parse(http_POST(url)).getroot().get('code')
|
||||
|
@ -198,13 +198,13 @@ def config_resolve_create_workarounds(config, values_workaround, origins_skip):
|
||||
|
||||
values_new = deepcopy(values)
|
||||
values_new.update(values_workaround)
|
||||
origins.insert(i, { origin_new: values_new })
|
||||
origins.insert(i, { origin_new: values_new})
|
||||
|
||||
|
||||
def config_resolve_create_family(apiurl, project, config, position, origin, values):
|
||||
projects = project_list_family_prior_pattern(apiurl, origin, project)
|
||||
for origin_expanded in reversed(projects):
|
||||
config['origins'].insert(position, { str(origin_expanded): values })
|
||||
config['origins'].insert(position, { str(origin_expanded): values})
|
||||
|
||||
|
||||
def config_resolve_apply(config, values_apply, key=None, workaround=False, until=None):
|
||||
|
@ -21,7 +21,7 @@ class PrioCommand(object):
|
||||
req = osc.core.get_request(self.api.apiurl, reqid)
|
||||
if req.priority == priority:
|
||||
continue
|
||||
query = { 'cmd': 'setpriority', 'priority': priority }
|
||||
query = { 'cmd': 'setpriority', 'priority': priority}
|
||||
url = osc.core.makeurl(self.api.apiurl, ['request', reqid], query)
|
||||
print(f"raising priority of {r.get('package')} [{r.get('request')}] to {priority}")
|
||||
try:
|
||||
|
@ -160,7 +160,7 @@ class RequestFinder(object):
|
||||
This function is only called for its side effect.
|
||||
"""
|
||||
|
||||
url = self.api.makeurl(['staging', self.api.project, 'staging_projects'], { 'requests': 1 })
|
||||
url = self.api.makeurl(['staging', self.api.project, 'staging_projects'], { 'requests': 1})
|
||||
status = ET.parse(self.api.retried_GET(url)).getroot()
|
||||
|
||||
for p in pkgs:
|
||||
@ -180,7 +180,7 @@ class RequestFinder(object):
|
||||
all requests staged in it
|
||||
"""
|
||||
project = self.api.prj_from_short(project)
|
||||
url = self.api.makeurl(['staging', self.api.project, 'staging_projects', project], { 'requests': 1 })
|
||||
url = self.api.makeurl(['staging', self.api.project, 'staging_projects', project], { 'requests': 1})
|
||||
try:
|
||||
staging = ET.parse(self.api.retried_GET(url)).getroot()
|
||||
except HTTPError:
|
||||
|
@ -229,7 +229,7 @@ class RequestSplitter(object):
|
||||
'project': project,
|
||||
'bootstrapped': bootstrapped,
|
||||
# TODO: find better place for splitter info
|
||||
'splitter_info': { 'strategy': { 'name': 'none' } },
|
||||
'splitter_info': { 'strategy': { 'name': 'none'}},
|
||||
'status': status
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,7 @@ class SelectCommand(object):
|
||||
package = self._package(request)
|
||||
|
||||
candidates = [] # Store candidates to be supersede by 'request'
|
||||
url = self.api.makeurl(['staging', self.api.project, 'staging_projects'], { 'requests': 1 })
|
||||
url = self.api.makeurl(['staging', self.api.project, 'staging_projects'], { 'requests': 1})
|
||||
status = ET.parse(self.api.retried_GET(url)).getroot()
|
||||
for prj in status.findall('staging_project'):
|
||||
for req in prj.findall('./staged_requests/request'):
|
||||
|
@ -247,7 +247,7 @@ class StagingAPI(object):
|
||||
"""
|
||||
|
||||
packages_staged = {}
|
||||
url = self.makeurl(['staging', self.project, 'staging_projects'], { 'requests': 1 })
|
||||
url = self.makeurl(['staging', self.project, 'staging_projects'], { 'requests': 1})
|
||||
status = ET.parse(self.retried_GET(url)).getroot()
|
||||
for prj in status.findall('staging_project'):
|
||||
for req in prj.findall('./staged_requests/request'):
|
||||
@ -566,13 +566,13 @@ class StagingAPI(object):
|
||||
def add_ignored_request(self, request_id, comment):
|
||||
url = self.makeurl(['staging', self.project, 'excluded_requests'])
|
||||
root = ET.Element('excluded_requests')
|
||||
ET.SubElement(root, 'request', { 'id': str(request_id), 'description': comment })
|
||||
ET.SubElement(root, 'request', { 'id': str(request_id), 'description': comment})
|
||||
http_POST(url, data=ET.tostring(root))
|
||||
|
||||
def del_ignored_request(self, request_id):
|
||||
url = self.makeurl(['staging', self.project, 'excluded_requests'])
|
||||
root = ET.Element('excluded_requests')
|
||||
ET.SubElement(root, 'request', { 'id': str(request_id) })
|
||||
ET.SubElement(root, 'request', { 'id': str(request_id)})
|
||||
http_DELETE(url, data=ET.tostring(root))
|
||||
|
||||
@memoize(session=True, add_invalidate=True)
|
||||
@ -592,7 +592,7 @@ class StagingAPI(object):
|
||||
where = "@by_group='{}' and @state='new'".format(self.cstaging_group)
|
||||
target = "target[@project='{}']".format(self.project)
|
||||
|
||||
query = {'match': f"state/@name='review' and review[{where}] and {target}" }
|
||||
query = {'match': f"state/@name='review' and review[{where}] and {target}"}
|
||||
if query_extra is not None:
|
||||
query.update(query_extra)
|
||||
url = self.makeurl(['search', 'request'], query)
|
||||
@ -957,7 +957,7 @@ class StagingAPI(object):
|
||||
if not project:
|
||||
project = self.project
|
||||
|
||||
url = self.makeurl(['source', project, package], { 'cmd': 'showlinked' })
|
||||
url = self.makeurl(['source', project, package], { 'cmd': 'showlinked'})
|
||||
f = http_POST(url)
|
||||
root = ET.parse(f).getroot()
|
||||
result = []
|
||||
@ -984,7 +984,7 @@ class StagingAPI(object):
|
||||
# now trigger wipebinaries to emulate a delete
|
||||
self._wipe_package(project, package)
|
||||
|
||||
url = self.makeurl(['source', project, package], { 'view': 'getmultibuild' })
|
||||
url = self.makeurl(['source', project, package], { 'view': 'getmultibuild'})
|
||||
f = http_GET(url)
|
||||
root = ET.parse(f).getroot()
|
||||
for entry in root.findall('entry'):
|
||||
@ -1148,7 +1148,7 @@ class StagingAPI(object):
|
||||
return status.tag
|
||||
|
||||
def switch_flag_in_prj(self, project, flag='build', state='disable', repository=None, arch=None):
|
||||
query = { 'cmd': 'set_flag', 'flag': flag, 'status': state }
|
||||
query = { 'cmd': 'set_flag', 'flag': flag, 'status': state}
|
||||
if repository:
|
||||
query['repository'] = repository
|
||||
if arch:
|
||||
|
@ -158,7 +158,7 @@ def mail_send_with_details(relay, sender, subject, to, text, xmailer=None, follo
|
||||
return
|
||||
logger.info("%s: %s", msg['To'], msg['Subject'])
|
||||
s = smtplib.SMTP(relay)
|
||||
s.sendmail(msg['From'], {msg['To'], sender }, msg.as_string())
|
||||
s.sendmail(msg['From'], {msg['To'], sender}, msg.as_string())
|
||||
s.quit()
|
||||
|
||||
|
||||
|
@ -263,7 +263,7 @@ class RepoChecker():
|
||||
|
||||
query = {'cmd': 'rebuild', 'repository': repository, 'arch': arch, 'package': rebuilds}
|
||||
url = makeurl(self.apiurl, ['build', project])
|
||||
headers = { 'Content-Type': 'application/x-www-form-urlencoded' }
|
||||
headers = { 'Content-Type': 'application/x-www-form-urlencoded'}
|
||||
http_request('POST', url, headers, data=urlencode(query, doseq=True))
|
||||
|
||||
self.store_yaml(oldstate, project, repository, arch)
|
||||
|
@ -431,7 +431,7 @@ class StagingWorkflow(ABC):
|
||||
root = ET.fromstring(meta)
|
||||
persons = ET.SubElement(root, 'person')
|
||||
for user in users:
|
||||
ET.SubElement(persons, 'person', {'userid': user} )
|
||||
ET.SubElement(persons, 'person', {'userid': user})
|
||||
meta = ET.tostring(root)
|
||||
|
||||
if name not in self.groups:
|
||||
@ -855,20 +855,20 @@ class Project(object):
|
||||
|
||||
root = ET.fromstring(meta)
|
||||
for group in reviewer.get('groups', []):
|
||||
ET.SubElement(root, 'group', { 'groupid': group, 'role': 'reviewer'} )
|
||||
ET.SubElement(root, 'group', { 'groupid': group, 'role': 'reviewer'})
|
||||
for group in reviewer.get('users', []):
|
||||
ET.SubElement(root, 'person', { 'userid': group, 'role': 'reviewer'} )
|
||||
ET.SubElement(root, 'person', { 'userid': group, 'role': 'reviewer'})
|
||||
# TODO: avoid this duplication
|
||||
for group in maintainer.get('groups', []):
|
||||
ET.SubElement(root, 'group', { 'groupid': group, 'role': 'maintainer'} )
|
||||
ET.SubElement(root, 'group', { 'groupid': group, 'role': 'maintainer'})
|
||||
for group in maintainer.get('users', []):
|
||||
ET.SubElement(root, 'person', { 'userid': group, 'role': 'maintainer'} )
|
||||
ET.SubElement(root, 'person', { 'userid': group, 'role': 'maintainer'})
|
||||
|
||||
for link in project_links:
|
||||
ET.SubElement(root, 'link', { 'project': link })
|
||||
ET.SubElement(root, 'link', { 'project': link})
|
||||
|
||||
if with_repo:
|
||||
repo = ET.SubElement(root, 'repository', { 'name': 'standard' })
|
||||
repo = ET.SubElement(root, 'repository', { 'name': 'standard'})
|
||||
ET.SubElement(repo, 'arch').text = 'x86_64'
|
||||
|
||||
self.custom_meta(ET.tostring(root))
|
||||
@ -894,8 +894,8 @@ class Project(object):
|
||||
:rtype: dict[str, dict or list(str) or bool]
|
||||
"""
|
||||
meta = {
|
||||
'reviewer': { 'groups': [], 'users': [] },
|
||||
'maintainer': { 'groups': [], 'users': [] },
|
||||
'reviewer': { 'groups': [], 'users': []},
|
||||
'maintainer': { 'groups': [], 'users': []},
|
||||
'project_links': [],
|
||||
'with_repo': False
|
||||
}
|
||||
@ -992,7 +992,7 @@ class Package(object):
|
||||
|
||||
if devel_project:
|
||||
root = ET.fromstring(meta)
|
||||
ET.SubElement(root, 'devel', { 'project': devel_project })
|
||||
ET.SubElement(root, 'devel', { 'project': devel_project})
|
||||
meta = ET.tostring(root)
|
||||
|
||||
url = osc.core.make_meta_url('pkg', (self.project.name, self.name), APIURL)
|
||||
|
@ -33,7 +33,7 @@ class TestCheckSource(OBSLocal.TestCase):
|
||||
self.wf.create_group(REVIEW_TEAM)
|
||||
|
||||
self.wf.remote_config_set(
|
||||
{ 'required-source-maintainer': 'Admin', 'review-team': REVIEW_TEAM }
|
||||
{ 'required-source-maintainer': 'Admin', 'review-team': REVIEW_TEAM}
|
||||
)
|
||||
|
||||
self.bot_user = 'factory-auto'
|
||||
@ -142,7 +142,7 @@ class TestCheckSource(OBSLocal.TestCase):
|
||||
|
||||
# Change the required maintainer
|
||||
self.wf.create_group(FACTORY_MAINTAINERS.replace('group:', ''))
|
||||
self.wf.remote_config_set({ 'required-source-maintainer': FACTORY_MAINTAINERS })
|
||||
self.wf.remote_config_set({ 'required-source-maintainer': FACTORY_MAINTAINERS})
|
||||
|
||||
req = self.wf.create_submit_request(SRC_PROJECT, 'blowfish', add_commit = False)
|
||||
|
||||
@ -172,7 +172,7 @@ class TestCheckSource(OBSLocal.TestCase):
|
||||
"""Accepts the request when the 'required_maintainer' is a group and is a maintainer for the project"""
|
||||
group_name = FACTORY_MAINTAINERS.replace('group:', '')
|
||||
self.wf.create_group(group_name)
|
||||
self.wf.remote_config_set({ 'required-source-maintainer': FACTORY_MAINTAINERS })
|
||||
self.wf.remote_config_set({ 'required-source-maintainer': FACTORY_MAINTAINERS})
|
||||
|
||||
self._setup_devel_project(maintainer={'groups': [group_name]})
|
||||
|
||||
@ -191,7 +191,7 @@ class TestCheckSource(OBSLocal.TestCase):
|
||||
# Change the required maintainer
|
||||
group_name = FACTORY_MAINTAINERS.replace('group:', '')
|
||||
self.wf.create_group(group_name)
|
||||
self.wf.remote_config_set({ 'required-source-maintainer': FACTORY_MAINTAINERS })
|
||||
self.wf.remote_config_set({ 'required-source-maintainer': FACTORY_MAINTAINERS})
|
||||
|
||||
self.wf.create_project(SRC_PROJECT.rsplit(':', 1)[0], maintainer={'groups': [group_name]})
|
||||
|
||||
|
@ -153,7 +153,7 @@ class TestFactorySourceAccept(OBSLocal.TestCase):
|
||||
""")
|
||||
])
|
||||
|
||||
result = { 'status': None }
|
||||
result = { 'status': None}
|
||||
|
||||
def change_request(result, method, uri, headers):
|
||||
query = parse_qs(urlparse(uri).query)
|
||||
@ -275,7 +275,7 @@ class TestFactorySourceAccept(OBSLocal.TestCase):
|
||||
</collection>
|
||||
""")
|
||||
|
||||
result = { 'factory_source_declined': None }
|
||||
result = { 'factory_source_declined': None}
|
||||
|
||||
def change_request(result, method, uri, headers):
|
||||
query = parse_qs(urlparse(uri).query)
|
||||
|
@ -108,7 +108,7 @@ class TestMaintenance(OBSLocal.TestCase):
|
||||
</directory>
|
||||
""")
|
||||
|
||||
result = { 'devel_review_added': None }
|
||||
result = { 'devel_review_added': None}
|
||||
|
||||
def change_request(result, method, uri, headers):
|
||||
query = parse_qs(urlparse(uri).query)
|
||||
@ -226,7 +226,7 @@ class TestMaintenance(OBSLocal.TestCase):
|
||||
</directory>
|
||||
""")
|
||||
|
||||
result = { 'devel_review_added': None }
|
||||
result = { 'devel_review_added': None}
|
||||
|
||||
def change_request(result, method, uri, headers):
|
||||
u = urlparse(uri)
|
||||
@ -324,11 +324,11 @@ class TestMaintenance(OBSLocal.TestCase):
|
||||
<collection/>
|
||||
""")
|
||||
|
||||
result = { 'factory_review_added': None }
|
||||
result = { 'factory_review_added': None}
|
||||
|
||||
def change_request(result, method, uri, headers):
|
||||
query = parse_qs(urlparse(uri).query)
|
||||
if query == { 'cmd': ['addreview'], 'by_user': ['factory-source'] }:
|
||||
if query == { 'cmd': ['addreview'], 'by_user': ['factory-source']}:
|
||||
result['factory_review_added'] = True
|
||||
return (200, headers, '<status code="ok"/>')
|
||||
|
||||
|
@ -309,7 +309,7 @@ class TestOrigin(OBSLocal.TestCase):
|
||||
self.origin_config_write([
|
||||
{'<devel>': {}},
|
||||
{upstream1_project: {}},
|
||||
{upstream2_project: { 'pending_submission_consider': True }},
|
||||
{upstream2_project: { 'pending_submission_consider': True}},
|
||||
{'*~': {}},
|
||||
], {'unknown_origin_wait': True})
|
||||
|
||||
@ -385,8 +385,8 @@ class TestOrigin(OBSLocal.TestCase):
|
||||
attribute_value_save(self.wf.apiurl, upstream3_project, 'ApprovedRequestSource', '', 'OBS')
|
||||
|
||||
self.origin_config_write([
|
||||
{upstream1_project: { 'automatic_updates_initial': True }},
|
||||
{upstream2_project: { 'automatic_updates_initial': True }},
|
||||
{upstream1_project: { 'automatic_updates_initial': True}},
|
||||
{upstream2_project: { 'automatic_updates_initial': True}},
|
||||
{upstream3_project: {}},
|
||||
])
|
||||
|
||||
|
@ -255,7 +255,7 @@ class ToTestPublisher(ToTestManager):
|
||||
return
|
||||
|
||||
status_flag = 'published'
|
||||
data = {'text': 'tag:{}:{}:{}'.format(snapshot, status_flag, status_flag) }
|
||||
data = {'text': 'tag:{}:{}:{}'.format(snapshot, status_flag, status_flag)}
|
||||
self.openqa.openqa_request('POST', 'groups/%s/comments' % group_id, data=data)
|
||||
|
||||
def openqa_group_id(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user