1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-11-10 06:46:15 +01:00

python3 compatibility: dict

this patch
 1.) removes the iteritems/itervalues, which were dropped in py3
     items/values are used instead
 2.) add an extra list() in a cases the list-based access is needed
     (included appending, indexing and so)
 3.) changes a sorting idiom in few places
     instead of
     foo = dict.keys()
     foo.sort()
     for i in foo:

     there is a recommended

     for i in sorted(dict.keys()):
 4.) in one occassion it removes a if dict.has_key() by simpler
   dict.get(key, default)
This commit is contained in:
Michal Vyskocil 2013-04-09 11:25:19 +02:00 committed by Adrian Schröter
parent c5a235ed78
commit d3648be24b
6 changed files with 22 additions and 30 deletions

View File

@ -331,7 +331,7 @@ def get_prefer_pkgs(dirs, wanted_arch, type):
packageQueries.add(packageQuery)
prefer_pkgs = dict((name, packageQuery.path())
for name, packageQuery in packageQueries.iteritems())
for name, packageQuery in packageQueries.items())
depfile = create_deps(packageQueries.values())
cpio = cpio.CpioWrite()
@ -631,7 +631,7 @@ def main(apiurl, opts, argv):
else:
raise
bi = Buildinfo(bi_filename, apiurl, build_type, prefer_pkgs.keys())
bi = Buildinfo(bi_filename, apiurl, build_type, list(prefer_pkgs.keys()))
if bi.debuginfo and not (opts.disable_debuginfo or '--debug' in buildargs):
buildargs.append('--debug')
@ -660,7 +660,7 @@ def main(apiurl, opts, argv):
rpmlist_prefers = []
if prefer_pkgs:
print 'Evaluating preferred packages'
for name, path in prefer_pkgs.iteritems():
for name, path in prefer_pkgs.tems():
if bi.has_dep(name):
# We remove a preferred package from the buildinfo, so that the
# fetcher doesn't take care about them.
@ -804,7 +804,7 @@ def main(apiurl, opts, argv):
else:
os.symlink(sffn, tffn)
if prefer_pkgs:
for name, path in prefer_pkgs.iteritems():
for name, path in prefer_pkgs.items():
if name == filename:
print "Using prefered package: " + path + "/" + filename
os.unlink(tffn)

View File

@ -707,10 +707,8 @@ class RawCmdln(cmd.Cmd):
for attr in self.get_names():
if attr.startswith("do_"):
cmdnames[attr[3:]] = True
cmdnames = cmdnames.keys()
cmdnames.sort()
linedata = []
for cmdname in cmdnames:
for cmdname in sorted(cmdnames.keys()):
if aliases.get(cmdname):
a = aliases[cmdname]
a.sort()
@ -770,8 +768,7 @@ class RawCmdln(cmd.Cmd):
helpnames[helpname] = True
if helpnames:
helpnames = helpnames.keys()
helpnames.sort()
helpnames = sorted(helpnames.keys())
linedata = [(self.name+" help "+n, "") for n in helpnames]
subindent = indent + ' '*4

View File

@ -4135,7 +4135,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
if not pac.todo:
pac.todo = pac.filenamelist + pac.filenamelist_unvers
pac.todo.sort()
for prj_path, packages in prj_paths.iteritems():
for prj_path, packages in prj_paths.items():
prj = Project(prj_path)
if not msg:
msg = get_commit_msg(prj.absdir, pac_objs[prj_path])
@ -6490,7 +6490,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
if role_filter:
role_filter = '%s (%s)' % (search_term, role_filter)
kind_map = {'published/binary/id': 'binary'}
for kind, root in res.iteritems():
for kind, root in res.items():
results = []
for node in root.findall(kind_map.get(kind, kind)):
result = []
@ -7791,7 +7791,7 @@ Please submit there instead, or use --nodevelproject to force direct submission.
args = parseargs(args)
pacs = []
apiurls = conf.config['api_host_options'].keys()
apiurls = list(conf.config['api_host_options'].keys())
apiurl = ''
for i in args:
if is_project_dir(i):

View File

@ -1234,9 +1234,7 @@ class Package:
def __generate_commitlist(self, todo_send):
root = ET.Element('directory')
keys = todo_send.keys()
keys.sort()
for i in keys:
for i in sorted(todo_send.keys()):
ET.SubElement(root, 'entry', name=i, md5=todo_send[i])
return root
@ -2302,10 +2300,7 @@ class Action:
raise oscerr.WrongArgs('invalid argument: \'%s\'' % i)
# set all type specific attributes
for i in Action.type_args[type]:
if kwargs.has_key(i):
setattr(self, i, kwargs[i])
else:
setattr(self, i, None)
setattr(self, i, kwargs.get(i))
def to_xml(self):
"""
@ -3721,7 +3716,7 @@ def get_review_list(apiurl, project='', package='', byuser='', bygroup='', bypro
todo['project'] = project
if package:
todo['package'] = package
for kind, val in todo.iteritems():
for kind, val in todo.items():
xpath_base = 'action/target/@%(kind)s=\'%(val)s\' or ' \
'submit/target/@%(kind)s=\'%(val)s\''
@ -3787,7 +3782,7 @@ def get_request_list(apiurl, project='', package='', req_who='', req_state=('new
todo['project'] = project
if package:
todo['package'] = package
for kind, val in todo.iteritems():
for kind, val in todo.items():
xpath_base = 'action/target/@%(kind)s=\'%(val)s\' or ' \
'submit/target/@%(kind)s=\'%(val)s\''
@ -3827,7 +3822,7 @@ def get_user_projpkgs_request_list(apiurl, user, req_state=('new','review',), re
if not i.get('project') in projects:
projpkgs.setdefault(i.get('project'), []).append(i.get('name'))
xpath = ''
for prj, pacs in projpkgs.iteritems():
for prj, pacs in projpkgs.items():
if not len(pacs):
xpath = xpath_join(xpath, 'action/target/@project=\'%s\'' % prj, inner=True)
else:
@ -4493,7 +4488,7 @@ def aggregate_pac(src_project, src_package, dst_project, dst_package, repo_map =
aggregate_template += """\
<nosources />
"""
for src, tgt in repo_map.iteritems():
for src, tgt in repo_map.items():
aggregate_template += """\
<repository target="%s" source="%s" />
""" % (tgt, src)
@ -5758,7 +5753,7 @@ def search(apiurl, **kwargs):
GET /search/kindN?match=xpathN
"""
res = {}
for urlpath, xpath in kwargs.iteritems():
for urlpath, xpath in kwargs.items():
path = [ 'search' ]
path += urlpath.split('_') # FIXME: take underscores as path seperators. I see no other way atm to fix OBS api calls and not breaking osc api
u = makeurl(apiurl, path, ['match=%s' % quote_plus(xpath)])
@ -6591,7 +6586,7 @@ def filter_role(meta, user, role):
remove all project/package nodes if no person node exists
where @userid=user and @role=role
"""
for kind, root in meta.iteritems():
for kind, root in meta.items():
delete = []
for node in root.findall(kind):
found = False

View File

@ -122,7 +122,7 @@ class Fetcher:
archive.copyin_file(hdr.filename, os.path.dirname(tmpfile), os.path.basename(tmpfile))
self.move_package(tmpfile, pac.localdir, pac)
# check if we got all packages... (because we've no .errors file)
for pac in pkgs.itervalues():
for pac in pkgs.values():
if not os.path.isfile(pac.fullfilename):
raise oscerr.APIError('failed to fetch file \'%s\': ' \
'does not exist in CPIO archive' % pac.repofilename)
@ -130,7 +130,7 @@ class Fetcher:
if e.errno != 14 or e.code != 414:
raise
# query str was too large
keys = pkgs.keys()
keys = list(pkgs.keys())
if len(keys) == 1:
raise oscerr.APIError('unable to fetch cpio archive: server always returns code 414')
n = len(pkgs) / 2
@ -145,7 +145,7 @@ class Fetcher:
os.unlink(tmpfile)
def __fetch_cpio(self, apiurl):
for prpap, pkgs in self.cpio.iteritems():
for prpap, pkgs in self.cpio.items():
project, repo, arch, package = prpap.split('/', 3)
self.__download_cpio_archive(apiurl, project, repo, arch, package, **pkgs)
@ -246,7 +246,7 @@ class Fetcher:
self.__fetch_cpio(buildinfo.apiurl)
prjs = buildinfo.projects.keys()
prjs = list(buildinfo.projects.keys())
for i in prjs:
dest = "%s/%s" % (self.cachedir, i)
if not os.path.exists(dest):

View File

@ -62,7 +62,7 @@ class CpioHdr:
self.namesize = namesize
# != 0 indicates CRC format (which we do not support atm)
self.checksum = checksum
for k,v in self.__dict__.iteritems():
for k,v in self.__dict__.items():
self.__dict__[k] = int(v, 16)
self.filename = filename
# data starts at dataoff and ends at dataoff+filesize