From b6e98e172838bf365f727068a6f5cb613ac6b9c9 Mon Sep 17 00:00:00 2001 From: Vincent A Date: Wed, 22 Feb 2017 23:03:19 +0100 Subject: [PATCH] python3: replace old dict methods iter* TODO this is less efficient on python2 --- contrib/boobot.py | 2 +- .../videoob_web/templates/index.mako | 2 +- scripts/weboob | 2 +- tools/make_man.py | 6 +++--- tools/weboob_lint.py | 2 +- weboob/applications/boobank/boobank.py | 2 +- weboob/applications/boobathon/boobathon.py | 12 ++++++------ weboob/applications/boobmsg/boobmsg.py | 2 +- weboob/applications/boobtracker/boobtracker.py | 4 ++-- weboob/applications/flatboob/flatboob.py | 2 +- weboob/applications/havedate/havedate.py | 8 ++++---- weboob/applications/pastoob/pastoob.py | 2 +- weboob/applications/qflatboob/main_window.py | 2 +- weboob/applications/qhavedate/contacts.py | 6 +++--- weboob/applications/qhavedate/events.py | 2 +- .../webcontentedit/webcontentedit.py | 4 ++-- weboob/applications/weboobcfg/weboobcfg.py | 8 ++++---- weboob/applications/weboobdebug/weboobdebug.py | 2 +- weboob/applications/weboobrepos/weboobrepos.py | 2 +- weboob/browser/browsers.py | 10 +++++----- weboob/browser/elements.py | 6 +++--- weboob/browser/filters/javascript.py | 2 +- weboob/browser/filters/standard.py | 2 +- weboob/browser/url.py | 2 +- weboob/capabilities/base.py | 6 +++--- weboob/capabilities/contact.py | 8 ++++---- weboob/core/backendscfg.py | 2 +- weboob/core/ouiboube.py | 2 +- weboob/core/repositories.py | 8 ++++---- weboob/core/scheduler.py | 4 ++-- weboob/tools/application/console.py | 18 +++++++++--------- weboob/tools/application/formatters/csv.py | 2 +- .../tools/application/formatters/iformatter.py | 2 +- .../tools/application/formatters/multiline.py | 2 +- weboob/tools/application/formatters/simple.py | 2 +- weboob/tools/application/qt5/backendcfg.py | 16 ++++++++-------- weboob/tools/application/qt5/qt.py | 2 +- weboob/tools/application/repl.py | 12 ++++++------ weboob/tools/backend.py | 10 +++++----- weboob/tools/config/iniconfig.py | 2 +- weboob/tools/pdf.py | 2 +- 41 files changed, 97 insertions(+), 97 deletions(-) diff --git a/contrib/boobot.py b/contrib/boobot.py index e0e3211eda..8c432a61d1 100755 --- a/contrib/boobot.py +++ b/contrib/boobot.py @@ -159,7 +159,7 @@ def __init__(self, bot): self.bot.set_weboob(self.weboob) def run(self): - for ev in self.bot.joined.itervalues(): + for ev in self.bot.joined.values(): ev.wait() self.weboob.repeat(5, self.check_tasks) diff --git a/contrib/videoob_web/videoob_web/templates/index.mako b/contrib/videoob_web/videoob_web/templates/index.mako index a0a1f1353b..c52ed2a966 100644 --- a/contrib/videoob_web/videoob_web/templates/index.mako +++ b/contrib/videoob_web/videoob_web/templates/index.mako @@ -32,7 +32,7 @@ ${video_item(item)} % endfor % else: - % for backend, items in sorted(results.iteritems()): + % for backend, items in sorted(results.items()):

${backend}

% for item in items: ${video_item(item)} diff --git a/scripts/weboob b/scripts/weboob index 9bd955ef88..c7cb92834e 100755 --- a/scripts/weboob +++ b/scripts/weboob @@ -143,7 +143,7 @@ class Weboob(ConsoleApplication): else: capApplicationDict[capability] = [application] - return OrderedDict([(k, v) for k, v in sorted(capApplicationDict.iteritems())]) + return OrderedDict([(k, v) for k, v in sorted(capApplicationDict.items())]) def get_application_capabilities(self, application): if hasattr(application, 'CAPS') and application.CAPS: diff --git a/tools/make_man.py b/tools/make_man.py index a62274925b..718d7ec41e 100755 --- a/tools/make_man.py +++ b/tools/make_man.py @@ -70,7 +70,7 @@ def format_description(self, description): self.app.weboob.modules_loader.load_all() caps = self.app.CAPS if isinstance(self.app.CAPS, tuple) else (self.app.CAPS,) modules = [] - for name, module in self.app.weboob.modules_loader.loaded.iteritems(): + for name, module in self.app.weboob.modules_loader.loaded.items(): if module.has_caps(*caps): modules.append(u'* %s (%s)' % (name, module.description)) if len(modules) > 0: @@ -80,7 +80,7 @@ def format_description(self, description): def format_commands(self, commands): s = u'' - for section, cmds in commands.iteritems(): + for section, cmds in commands.items(): if len(cmds) == 0: continue s += '.SH %s COMMANDS\n' % section.upper() @@ -130,7 +130,7 @@ def main(): else: print("Loaded %s" % fname) # Find the applications we can handle - for klass in script.__dict__.itervalues(): + for klass in script.__dict__.values(): if inspect.isclass(klass) and issubclass(klass, Application) and klass.VERSION: analyze_application(klass, fname) finally: diff --git a/tools/weboob_lint.py b/tools/weboob_lint.py index 4ec44417e5..8cdf6ec183 100755 --- a/tools/weboob_lint.py +++ b/tools/weboob_lint.py @@ -16,7 +16,7 @@ backends_without_icons = [] backends_using_deprecated = [] -for name, backend in weboob.modules_loader.loaded.iteritems(): +for name, backend in weboob.modules_loader.loaded.items(): path = backend.package.__path__[0] if not os.path.exists(os.path.join(path, 'test.py')): backends_without_tests.append(name) diff --git a/weboob/applications/boobank/boobank.py b/weboob/applications/boobank/boobank.py index f1839db50d..15fead6486 100644 --- a/weboob/applications/boobank/boobank.py +++ b/weboob/applications/boobank/boobank.py @@ -376,7 +376,7 @@ def format_obj(self, obj, alias): def flush(self): self.output(u'------------------------------------------%s+----------+----------' % (('-' * 15) if not self.interactive else '')) - for currency, currency_totals in sorted(self.totals.iteritems(), key=lambda k_v: (k_v[1],k_v[0])): + for currency, currency_totals in sorted(self.totals.items(), key=lambda k_v: (k_v[1],k_v[0])): balance = currency_totals['balance'] coming = currency_totals['coming'] diff --git a/weboob/applications/boobathon/boobathon.py b/weboob/applications/boobathon/boobathon.py index ab0dc1dcaf..1096904f54 100644 --- a/weboob/applications/boobathon/boobathon.py +++ b/weboob/applications/boobathon/boobathon.py @@ -233,7 +233,7 @@ def save(self, message): self.format_duration() or '_Unknown_', self.location or '_Unknown_') - for member in self.members.itervalues(): + for member in self.members.values(): if self.date: availabilities = '' else: @@ -355,7 +355,7 @@ def do_progress(self, line): Display progress of members. """ self.event.load() - for member in self.event.members.itervalues(): + for member in self.event.members.values(): if member.is_me and member is self.event.winner: status = '\o/ ->' elif member.is_me: @@ -421,7 +421,7 @@ def do_tasks(self, line): if i >= 0 and i%2: # second line of task, see if we'll stop stop = True - for mem in self.event.members.itervalues(): + for mem in self.event.members.values(): if len(mem.tasks) > (i/2+1): # there are more tasks, don't stop now stop = False @@ -455,7 +455,7 @@ def complete_close(self, text, line, *ignored): args = line.split(' ') if len(args) == 2: self.event.load() - return [member.name for member in self.event.members.itervalues()] + return [member.name for member in self.event.members.values()] def do_close(self, name): """ @@ -465,7 +465,7 @@ def do_close(self, name): """ self.event.load() - for member in self.event.members.itervalues(): + for member in self.event.members.values(): if member.name == name: self.event.winner = member if self.save_event('Close event'): @@ -533,7 +533,7 @@ def do_members(self, line): Display members information. """ self.event.load() - for member in self.event.members.itervalues(): + for member in self.event.members.values(): print(member.name) print('-' * len(member.name)) print('Repository:', member.repository) diff --git a/weboob/applications/boobmsg/boobmsg.py b/weboob/applications/boobmsg/boobmsg.py index 2a25bf2b96..2a89357a96 100644 --- a/weboob/applications/boobmsg/boobmsg.py +++ b/weboob/applications/boobmsg/boobmsg.py @@ -289,7 +289,7 @@ def do_status(self, line): else: results[field.backend] = [field] - for name, fields in results.iteritems(): + for name, fields in results.items(): print(':: %s ::' % name) for f in fields: if f.flags & f.FIELD_HTML: diff --git a/weboob/applications/boobtracker/boobtracker.py b/weboob/applications/boobtracker/boobtracker.py index 2ce190594e..b7404b0c95 100644 --- a/weboob/applications/boobtracker/boobtracker.py +++ b/weboob/applications/boobtracker/boobtracker.py @@ -72,7 +72,7 @@ def format_obj(self, obj, alias): result += self.format_attr(obj, 'category') result += self.format_attr(obj, 'assignee') if hasattr(obj, 'fields') and not empty(obj.fields): - for key, value in obj.fields.iteritems(): + for key, value in obj.fields.items(): result += self.format_key(key.capitalize(), value) if hasattr(obj, 'attachments') and obj.attachments: result += '\n%s\n' % self.colored('Attachments:', 'green') @@ -310,7 +310,7 @@ def issue2text(self, issue, backend=None): for o in objects_list]) output += 'X-Available-%s: %s\n' % (self.sanitize_key(key), availables) - for key, value in issue.fields.iteritems(): + for key, value in issue.fields.items(): output += '%s: %s\n' % (self.sanitize_key(key), value or '') # TODO: Add X-Available-* for lists diff --git a/weboob/applications/flatboob/flatboob.py b/weboob/applications/flatboob/flatboob.py index b9fb038586..97f34c7375 100644 --- a/weboob/applications/flatboob/flatboob.py +++ b/weboob/applications/flatboob/flatboob.py @@ -66,7 +66,7 @@ def format_obj(self, obj, alias): if hasattr(obj, 'details') and obj.details: result += '\n\n%sDetails%s\n' % (self.BOLD, self.NC) - for key, value in obj.details.iteritems(): + for key, value in obj.details.items(): result += ' %s: %s\n' % (key, value) return result diff --git a/weboob/applications/havedate/havedate.py b/weboob/applications/havedate/havedate.py index 3cd126a977..e577945655 100644 --- a/weboob/applications/havedate/havedate.py +++ b/weboob/applications/havedate/havedate.py @@ -74,7 +74,7 @@ def main(self, argv): self.bcall_errors_handler(e) optimizations = self.storage.get('optims') - for optim, backends in optimizations.iteritems(): + for optim, backends in optimizations.items(): self.optims('start', backends, optim, store=False) return ReplApplication.main(self, argv) @@ -100,7 +100,7 @@ def edit_optims(self, backend_names, optims_names, stop=False): for optim in self.do('get_optimization', optim_name, backends=backend_names): if optim: backends_optims[optim.backend] = optim - for backend_name, optim in backends_optims.iteritems(): + for backend_name, optim in backends_optims.items(): if len(optim.CONFIG) == 0: print('%s.%s does not require configuration.' % (backend_name, optim_name)) continue @@ -114,7 +114,7 @@ def edit_optims(self, backend_names, optims_names, stop=False): params = {} print('Configuration of %s.%s' % (backend_name, optim_name)) print('-----------------%s-%s' % ('-' * len(backend_name), '-' * len(optim_name))) - for key, value in optim.CONFIG.iteritems(): + for key, value in optim.CONFIG.items(): params[key] = self.ask(value, default=params[key] if (key in params) else value.default) optim.set_config(params) @@ -236,7 +236,7 @@ def do_optim(self, line): backends.add(optim.backend) backends = sorted(backends) - for name, backends_status in optims.iteritems(): + for name, backends_status in optims.items(): line = [('name', name)] for b in backends: try: diff --git a/weboob/applications/pastoob/pastoob.py b/weboob/applications/pastoob/pastoob.py index 29a3035332..e939f428bd 100644 --- a/weboob/applications/pastoob/pastoob.py +++ b/weboob/applications/pastoob/pastoob.py @@ -198,7 +198,7 @@ def str_to_duration(self, s): seconds = 0 for number, unit in parts: - for rx, secs in argsmap.iteritems(): + for rx, secs in argsmap.items(): if re.match('^(%s)$' % rx, unit): seconds += float(number) * float(secs) diff --git a/weboob/applications/qflatboob/main_window.py b/weboob/applications/qflatboob/main_window.py index b2434037db..3680f5d176 100644 --- a/weboob/applications/qflatboob/main_window.py +++ b/weboob/applications/qflatboob/main_window.py @@ -345,7 +345,7 @@ def setHousing(self, housing, nottext='Loading...'): child.widget().deleteLater() if housing.details: - for key, value in housing.details.iteritems(): + for key, value in housing.details.items(): if empty(value): continue label = QLabel(value) diff --git a/weboob/applications/qhavedate/contacts.py b/weboob/applications/qhavedate/contacts.py index 023bb22dd1..0276f7db63 100644 --- a/weboob/applications/qhavedate/contacts.py +++ b/weboob/applications/qhavedate/contacts.py @@ -256,7 +256,7 @@ def gotProfile(self, contact): missing_fields.add('profile') elif not self.loaded_profile: self.loaded_profile = True - for head in contact.profile.itervalues(): + for head in contact.profile.values(): if head.flags & head.HEAD: widget = self.ui.headWidget else: @@ -271,7 +271,7 @@ def process_node(self, node, widget): if node.flags & node.SECTION: value = QWidget() value.setLayout(QFormLayout()) - for sub in node.value.itervalues(): + for sub in node.value.values(): self.process_node(sub, value) elif isinstance(node.value, list): value = QLabel('
'.join(unicode(s) for s in node.value)) @@ -491,7 +491,7 @@ def setPhoto(self, contact, item): pass img = None - for photo in contact.photos.itervalues(): + for photo in contact.photos.values(): if photo.thumbnail_data: img = QImage.fromData(photo.thumbnail_data) break diff --git a/weboob/applications/qhavedate/events.py b/weboob/applications/qhavedate/events.py index 602c298581..0b09c9c326 100644 --- a/weboob/applications/qhavedate/events.py +++ b/weboob/applications/qhavedate/events.py @@ -90,7 +90,7 @@ def setPhoto(self, contact, item): pass img = None - for photo in contact.photos.itervalues(): + for photo in contact.photos.values(): if photo.thumbnail_data: img = QImage.fromData(photo.thumbnail_data) break diff --git a/weboob/applications/webcontentedit/webcontentedit.py b/weboob/applications/webcontentedit/webcontentedit.py index d2e8214d7b..ac36190dc4 100644 --- a/weboob/applications/webcontentedit/webcontentedit.py +++ b/weboob/applications/webcontentedit/webcontentedit.py @@ -81,7 +81,7 @@ def do_edit(self, line): params = '-p' os.system("%s %s %s" % (editor, params, ' '.join('"%s"' % path.replace('"', '\\"') for path in paths))) - for path, content in paths.iteritems(): + for path, content in paths.items(): with open(path, 'r') as f: data = f.read() try: @@ -106,7 +106,7 @@ def do_edit(self, line): errors = CallErrors([]) for content in contents: - path = [path for path, c in paths.iteritems() if c == content][0] + path = [path for path, c in paths.items() if c == content][0] self.stdout.write('Pushing %s...' % content.id.encode('utf-8')) self.stdout.flush() try: diff --git a/weboob/applications/weboobcfg/weboobcfg.py b/weboob/applications/weboobcfg/weboobcfg.py index 2f6bfc3df0..fa27af32b9 100644 --- a/weboob/applications/weboobcfg/weboobcfg.py +++ b/weboob/applications/weboobcfg/weboobcfg.py @@ -59,7 +59,7 @@ def format_dict(self, minfo): result += '| Location | %s\n' % minfo['location'] if 'config' in minfo: first = True - for key, field in minfo['config'].iteritems(): + for key, field in minfo['config'].items(): label = field['label'] if field['default'] is not None: label += ' (default: %s)' % field['default'] @@ -186,7 +186,7 @@ def do_list(self, line): ('Configuration', ', '.join( '%s=%s' % (key, ('*****' if key in module.config and module.config[key].masked else value)) - for key, value in params.iteritems())), + for key, value in params.items())), ]) self.format(row) @@ -243,7 +243,7 @@ def do_modules(self, line): Show available modules. """ caps = line.split() - for name, info in sorted(self.weboob.repositories.get_all_modules_info(caps).iteritems()): + for name, info in sorted(self.weboob.repositories.get_all_modules_info(caps).items()): row = OrderedDict([('Name', name), ('Capabilities', CapabilitiesWrapper(info.capabilities)), ('Description', info.description), @@ -287,7 +287,7 @@ def create_minfo_dict(self, minfo, module): module_info['location'] = '%s' % (minfo.url or os.path.join(minfo.path, minfo.name)) if module: module_info['config'] = {} - for key, field in module.config.iteritems(): + for key, field in module.config.items(): module_info['config'][key] = {'label': field.label, 'default': field.default, 'description': field.description, diff --git a/weboob/applications/weboobdebug/weboobdebug.py b/weboob/applications/weboobdebug/weboobdebug.py index 357abff0b2..dc998d10cc 100644 --- a/weboob/applications/weboobdebug/weboobdebug.py +++ b/weboob/applications/weboobdebug/weboobdebug.py @@ -59,7 +59,7 @@ def main(self, argv): locs = dict(backend=backend, browser=backend.browser, application=self, weboob=self.weboob) banner = 'Weboob debug shell\nBackend "%s" loaded.\nAvailable variables:\n' % backend_name \ - + '\n'.join([' %s: %s' % (k, v) for k, v in locs.iteritems()]) + + '\n'.join([' %s: %s' % (k, v) for k, v in locs.items()]) if self.options.bpython: funcs = [self.bpython, self.ipython, self.python] diff --git a/weboob/applications/weboobrepos/weboobrepos.py b/weboob/applications/weboobrepos/weboobrepos.py index c7da460388..dad821362b 100644 --- a/weboob/applications/weboobrepos/weboobrepos.py +++ b/weboob/applications/weboobrepos/weboobrepos.py @@ -137,7 +137,7 @@ def do_build(self, line): else: print('Keyring is up to date') - for name, module in r.modules.iteritems(): + for name, module in r.modules.items(): tarname = os.path.join(repo_path, '%s.tar.gz' % name) if r.signed: sigfiles.append(os.path.basename(tarname)) diff --git a/weboob/browser/browsers.py b/weboob/browser/browsers.py index 258886f8f2..d7de961162 100644 --- a/weboob/browser/browsers.py +++ b/weboob/browser/browsers.py @@ -159,7 +159,7 @@ def save_response(self, response, warning=False, **kwargs): request = response.request with open(response_filepath + '-request.txt', 'w') as f: f.write('%s %s\n\n\n' % (request.method, request.url)) - for key, value in request.headers.iteritems(): + for key, value in request.headers.items(): f.write('%s: %s\n' % (key, value)) if request.body is not None: # separate '' from None f.write('\n\n\n%s' % request.body) @@ -167,7 +167,7 @@ def save_response(self, response, warning=False, **kwargs): if hasattr(response.elapsed, 'total_seconds'): f.write('Time: %3.3fs\n' % response.elapsed.total_seconds()) f.write('%s %s\n\n\n' % (response.status_code, response.reason)) - for key, value in response.headers.iteritems(): + for key, value in response.headers.items(): f.write('%s: %s\n' % (key, value)) match_filepath = os.path.join(self.responses_dirname, 'url_response_match.txt') @@ -397,7 +397,7 @@ def build_request(self, url, referrer=None, data_encoding=None, **kwargs): req.data = req.data.encode(data_encoding) if isinstance(req.data, dict) and data_encoding: req.data = OrderedDict([(k, v.encode(data_encoding) if isinstance(v, unicode) else v) - for k, v in req.data.iteritems()]) + for k, v in req.data.items()]) if referrer is None: referrer = self.get_referrer(self.url, url) @@ -658,7 +658,7 @@ def __init__(self, *args, **kwargs): self.page = None self._urls = deepcopy(self._urls) - for url in self._urls.itervalues(): + for url in self._urls.values(): url.browser = self def open(self, *args, **kwargs): @@ -677,7 +677,7 @@ def open(self, *args, **kwargs): def internal_callback(response): # Try to handle the response page with an URL instance. response.page = None - for url in self._urls.itervalues(): + for url in self._urls.values(): page = url.handle(response) if page is not None: self.logger.debug('Handle %s with %s' % (response.url, page.__class__.__name__)) diff --git a/weboob/browser/elements.py b/weboob/browser/elements.py index 06d583be85..496c321487 100644 --- a/weboob/browser/elements.py +++ b/weboob/browser/elements.py @@ -125,7 +125,7 @@ def __init__(self, *args, **kwargs): self.objects = OrderedDict() def __call__(self, *args, **kwargs): - for key, value in kwargs.iteritems(): + for key, value in kwargs.items(): self.env[key] = value return self.__iter__() @@ -173,7 +173,7 @@ def __iter__(self): self.check_next_page() def flush(self): - for obj in self.objects.itervalues(): + for obj in self.objects.values(): yield obj def check_next_page(self): @@ -352,7 +352,7 @@ def __init__(self, *args, **kwargs): colnum = 0 for el in self.el.xpath(self.head_xpath): title = self.cleaner.clean(el) - for name, titles in columns.iteritems(): + for name, titles in columns.items(): if name in self._cols: continue if title.lower() in [s for s in titles if isinstance(s, (str, unicode))] or \ diff --git a/weboob/browser/filters/javascript.py b/weboob/browser/filters/javascript.py index 7c03ff7774..29e0abd86b 100644 --- a/weboob/browser/filters/javascript.py +++ b/weboob/browser/filters/javascript.py @@ -94,7 +94,7 @@ class JSValue(Regexp): def to_python(self, m): "Convert MatchObject to python value" values = m.groupdict() - for t, v in values.iteritems(): + for t, v in values.items(): if v is not None: break if self.need_type and t != self.need_type: diff --git a/weboob/browser/filters/standard.py b/weboob/browser/filters/standard.py index ad639fcc78..3ee9b4a44b 100644 --- a/weboob/browser/filters/standard.py +++ b/weboob/browser/filters/standard.py @@ -740,7 +740,7 @@ def filter(self, txt): m = self._regexp.search(txt) if m: kwargs = {} - for key, index in self.kwargs.iteritems(): + for key, index in self.kwargs.items(): kwargs[key] = int(m.groupdict()[index] or 0) return self.klass(**kwargs) diff --git a/weboob/browser/url.py b/weboob/browser/url.py index 6d61cd563a..0994145b16 100644 --- a/weboob/browser/url.py +++ b/weboob/browser/url.py @@ -74,7 +74,7 @@ def is_here(self, **kwargs): # XXX use unquote on current params values because if there are spaces # or special characters in them, it is encoded only in but not in kwargs. return self.browser.page and isinstance(self.browser.page, self.klass) \ - and (params is None or params == dict([(k,unquote(v)) for k,v in self.browser.page.params.iteritems()])) + and (params is None or params == dict([(k,unquote(v)) for k,v in self.browser.page.params.items()])) def stay_or_go(self, **kwargs): """ diff --git a/weboob/capabilities/base.py b/weboob/capabilities/base.py index d68631bc3f..c3336a42e2 100644 --- a/weboob/capabilities/base.py +++ b/weboob/capabilities/base.py @@ -68,7 +68,7 @@ def find_object(mylist, error=None, **kwargs): """ for a in mylist: found = True - for key, value in kwargs.iteritems(): + for key, value in kwargs.items(): if getattr(a, key) != value: found = False break @@ -407,7 +407,7 @@ def iter_fields(self): if hasattr(self, 'id') and self.id is not None: yield 'id', self.id - for name, field in self._fields.iteritems(): + for name, field in self._fields.items(): yield name, field.value def __eq__(self, obj): @@ -566,7 +566,7 @@ def get_currency(klass, text): """ curtexts = klass.EXTRACTOR.sub(' ', text.upper()).split() for curtext in curtexts: - for currency, symbols in klass.CURRENCIES.iteritems(): + for currency, symbols in klass.CURRENCIES.items(): if curtext in currency: return currency for symbol in symbols: diff --git a/weboob/capabilities/contact.py b/weboob/capabilities/contact.py index e327da51dd..63f4d4d2a7 100644 --- a/weboob/capabilities/contact.py +++ b/weboob/capabilities/contact.py @@ -124,7 +124,7 @@ def set_photo(self, name, **kwargs): self.photos[name] = ContactPhoto(name) photo = self.photos[name] - for key, value in kwargs.iteritems(): + for key, value in kwargs.items(): setattr(photo, key, value) def get_text(self): @@ -132,7 +132,7 @@ def print_node(node, level=1): result = u'' if node.flags & node.SECTION: result += u'\t' * level + node.label + '\n' - for sub in node.value.itervalues(): + for sub in node.value.values(): result += print_node(sub, level + 1) else: if isinstance(node.value, (tuple, list)): @@ -156,10 +156,10 @@ def print_node(node, level=1): result += u'Status: %s (%s)\n' % (s, self.status_msg) result += u'URL: %s\n' % self.url result += u'Photos:\n' - for name, photo in self.photos.iteritems(): + for name, photo in self.photos.items(): result += u'\t%s%s\n' % (photo, ' (hidden)' if photo.hidden else '') result += u'\nProfile:\n' - for head in self.profile.itervalues(): + for head in self.profile.values(): result += print_node(head) result += u'Description:\n' for s in self.summary.split('\n'): diff --git a/weboob/core/backendscfg.py b/weboob/core/backendscfg.py index 36dc2f67ad..f5addf0c51 100644 --- a/weboob/core/backendscfg.py +++ b/weboob/core/backendscfg.py @@ -146,7 +146,7 @@ def add_backend(self, backend_name, module_name, params, edit=False): except DuplicateSectionError: raise BackendAlreadyExists(backend_name) config.set(backend_name, '_module', module_name) - for key, value in params.iteritems(): + for key, value in params.items(): config.set(backend_name, key, value) self._write_config(config) diff --git a/weboob/core/ouiboube.py b/weboob/core/ouiboube.py index cffe8f630e..437c11adef 100644 --- a/weboob/core/ouiboube.py +++ b/weboob/core/ouiboube.py @@ -211,7 +211,7 @@ def iter_backends(self, caps=None, module=None): :type module: :class:`basestring` :rtype: iter[:class:`weboob.tools.backend.Module`] """ - for _, backend in sorted(self.backend_instances.iteritems()): + for _, backend in sorted(self.backend_instances.items()): if (caps is None or backend.has_caps(caps)) and \ (module is None or backend.NAME == module): with backend: diff --git a/weboob/core/repositories.py b/weboob/core/repositories.py index c3899d8b31..bb829421d4 100644 --- a/weboob/core/repositories.py +++ b/weboob/core/repositories.py @@ -334,7 +334,7 @@ def save(self, filename, private=False): if private: config.set(DEFAULTSECT, 'url', self.url) - for module in self.modules.itervalues(): + for module in self.modules.values(): config.add_section(module.name) for key, value in module.dump(): config.set(module.name, key, to_unicode(value).encode('utf-8')) @@ -370,7 +370,7 @@ def set(self, name, version): def save(self): config = RawConfigParser() - for name, version in self.versions.iteritems(): + for name, version in self.versions.items(): config.set(DEFAULTSECT, name, version) with open(os.path.join(self.path, self.VERSIONS_LIST), 'wb') as fp: config.write(fp) @@ -490,7 +490,7 @@ def get_all_modules_info(self, caps=None): """ modules = {} for repos in reversed(self.repositories): - for name, info in repos.modules.iteritems(): + for name, info in repos.modules.items(): if name not in modules and (not caps or info.has_caps(caps)): modules[name] = self._extend_module_info(repos, info) return modules @@ -621,7 +621,7 @@ def update(self, progress=PrintProgress()): self.update_repositories(progress) to_update = [] - for name, info in self.get_all_modules_info().iteritems(): + for name, info in self.get_all_modules_info().items(): if not info.is_local() and info.is_installed(): if self.versions.get(name) != info.version: to_update.append(info) diff --git a/weboob/core/scheduler.py b/weboob/core/scheduler.py index 1f49a25db0..687d94fe14 100644 --- a/weboob/core/scheduler.py +++ b/weboob/core/scheduler.py @@ -152,7 +152,7 @@ def cancel(self, ev): def _wait_to_stop(self): self.want_stop() with self.mutex: - for e in self.queue.itervalues(): + for e in self.queue.values(): e.cancel() e.join() self.queue = {} @@ -171,7 +171,7 @@ def run(self): def want_stop(self): self.stop_event.set() with self.mutex: - for t in self.queue.itervalues(): + for t in self.queue.values(): t.cancel() # Contrary to _wait_to_stop(), don't call t.join # because want_stop() have to be non-blocking. diff --git a/weboob/tools/application/console.py b/weboob/tools/application/console.py index c9f30ba9f4..9e69c07e5b 100644 --- a/weboob/tools/application/console.py +++ b/weboob/tools/application/console.py @@ -107,7 +107,7 @@ def login_cb(self, backend_name, value): def unload_backends(self, *args, **kwargs): unloaded = self.weboob.unload_backends(*args, **kwargs) - for backend in unloaded.itervalues(): + for backend in unloaded.values(): try: self.enabled_backends.remove(backend) except KeyError: @@ -130,7 +130,7 @@ def load_backends(self, *args, **kwargs): self.edit_backend(err.backend_name) self.load_backends(names=[err.backend_name]) - for name, backend in ret.iteritems(): + for name, backend in ret.items(): self.enabled_backends.add(backend) self.check_loaded_backends() @@ -152,7 +152,7 @@ def prompt_create_backends(self, default_config=None): while r != 'q': modules = [] print('\nAvailable modules:') - for name, info in sorted(self.weboob.repositories.get_all_modules_info().iteritems()): + for name, info in sorted(self.weboob.repositories.get_all_modules_info().items()): if not self.is_module_loadable(info): continue modules.append(name) @@ -277,7 +277,7 @@ def register_backend(self, name, ask_add=True): website = 'with backend %s' % backend.name while True: asked_config = False - for key, prop in backend.klass.ACCOUNT_REGISTER_PROPERTIES.iteritems(): + for key, prop in backend.klass.ACCOUNT_REGISTER_PROPERTIES.items(): if not asked_config: asked_config = True print('Configuration of new account %s' % website) @@ -298,7 +298,7 @@ def register_backend(self, name, ask_add=True): else: break backend_config = {} - for key, value in account.properties.iteritems(): + for key, value in account.properties.items(): if key in backend.config: backend_config[key] = value.get() @@ -348,7 +348,7 @@ def add_backend(self, module_name, backend_name, params=None, edit=False, ask_re # ask for params non-specified on command-line arguments asked_config = False - for key, value in config.iteritems(): + for key, value in config.items(): if not asked_config: asked_config = True print('') @@ -373,7 +373,7 @@ def add_backend(self, module_name, backend_name, params=None, edit=False, ask_re try: config = config.load(self.weboob, module.name, backend_name, params, nofail=True) - for key, value in params.iteritems(): + for key, value in params.items(): if key not in config: continue config[key].set(value) @@ -477,10 +477,10 @@ def ask(self, question, default=None, masked=None, regexp=None, choices=None, ti for s in v.choices: if s == v.default: aliases[s.upper()] = s - for key, value in v.choices.iteritems(): + for key, value in v.choices.items(): print(' %s%s%s: %s' % (self.BOLD, key, self.NC, value)) else: - for n, (key, value) in enumerate(v.choices.iteritems()): + for n, (key, value) in enumerate(v.choices.items()): print(' %s%2d)%s %s' % (self.BOLD, n + 1, self.NC, value.encode(self.encoding))) aliases[str(n + 1)] = key diff --git a/weboob/tools/application/formatters/csv.py b/weboob/tools/application/formatters/csv.py index 83395e7683..1a5d290020 100644 --- a/weboob/tools/application/formatters/csv.py +++ b/weboob/tools/application/formatters/csv.py @@ -49,4 +49,4 @@ def write_dict(self, item, fp): writer.writerow([unicode(v).encode('utf-8') for v in item.keys()]) self.started = True - writer.writerow([unicode(v).encode('utf-8') for v in item.itervalues()]) + writer.writerow([unicode(v).encode('utf-8') for v in item.values()]) diff --git a/weboob/tools/application/formatters/iformatter.py b/weboob/tools/application/formatters/iformatter.py index 23cd43ba87..6ab42b694d 100644 --- a/weboob/tools/application/formatters/iformatter.py +++ b/weboob/tools/application/formatters/iformatter.py @@ -190,7 +190,7 @@ def format(self, obj, selected_fields=None, alias=None): if selected_fields: obj = obj.copy() - for name, value in obj.iteritems(): + for name, value in obj.items(): if name not in selected_fields: obj.pop(name) diff --git a/weboob/tools/application/formatters/multiline.py b/weboob/tools/application/formatters/multiline.py index 9fc0a0d857..340422cec0 100644 --- a/weboob/tools/application/formatters/multiline.py +++ b/weboob/tools/application/formatters/multiline.py @@ -37,7 +37,7 @@ def flush(self): def format_dict(self, item): result = u'\n'.join(u'%s%s' % ( (u'%s%s' % (k, self.key_value_separator) if self.display_keys else ''), v) - for k, v in item.iteritems() if (v is not NotLoaded and v is not NotAvailable)) + for k, v in item.items() if (v is not NotLoaded and v is not NotAvailable)) if len(item) > 1: result += self.after_item return result diff --git a/weboob/tools/application/formatters/simple.py b/weboob/tools/application/formatters/simple.py index d4de31e2e3..c8255acb2c 100644 --- a/weboob/tools/application/formatters/simple.py +++ b/weboob/tools/application/formatters/simple.py @@ -33,4 +33,4 @@ def __init__(self, field_separator=u'\t', key_value_separator=u'='): def format_dict(self, item): return self.field_separator.join(u'%s%s' % ( (u'%s%s' % (k, self.key_value_separator) if self.display_keys else ''), v) - for k, v in item.iteritems()) + for k, v in item.items()) diff --git a/weboob/tools/application/qt5/backendcfg.py b/weboob/tools/application/qt5/backendcfg.py index cd3f2346bb..e5af408d0c 100644 --- a/weboob/tools/application/qt5/backendcfg.py +++ b/weboob/tools/application/qt5/backendcfg.py @@ -200,7 +200,7 @@ def editRepositories(self): def loadModules(self): self.ui.modulesList.clear() - for name, module in sorted(self.weboob.repositories.get_all_modules_info(self.caps).iteritems()): + for name, module in sorted(self.weboob.repositories.get_all_modules_info(self.caps).items()): item = QListWidgetItem(name.capitalize()) self.set_icon(item, module) self.ui.modulesList.addItem(item) @@ -328,7 +328,7 @@ def editBackend(self, backend_name=None): info = self.weboob.repositories.get_module_info(module_name) if info and (info.is_installed() or self.installModule(info)): module = self.weboob.modules_loader.get_or_load_module(module_name) - for key, value in module.config.load(self.weboob, module_name, backend_name, params, nofail=True).iteritems(): + for key, value in module.config.load(self.weboob, module_name, backend_name, params, nofail=True).items(): try: l, widget = self.config_widgets[key] except KeyError: @@ -348,7 +348,7 @@ def editBackend(self, backend_name=None): @Slot() def moduleSelectionChanged(self): - for key, (label, value) in self.config_widgets.iteritems(): + for key, (label, value) in self.config_widgets.items(): label.hide() value.hide() self.ui.configLayout.removeWidget(label) @@ -406,7 +406,7 @@ def moduleSelectionChanged(self): else: self.ui.registerButton.hide() - for key, field in module.config.iteritems(): + for key, field in module.config.items(): label = QLabel(u'%s:' % field.label) qvalue = QtValue(field) self.ui.configLayout.addRow(label, qvalue) @@ -459,7 +459,7 @@ def acceptBackend(self): return config = module.config.load(self.weboob, module.name, backend_name, {}, nofail=True) - for key, field in config.iteritems(): + for key, field in config.items(): label, qtvalue = self.config_widgets[key] try: @@ -510,7 +510,7 @@ def registerEvent(self): vbox.addWidget(QLabel('To create an account %s, please provide this information:' % website)) formlayout = QFormLayout() props_widgets = OrderedDict() - for key, prop in module.klass.ACCOUNT_REGISTER_PROPERTIES.iteritems(): + for key, prop in module.klass.ACCOUNT_REGISTER_PROPERTIES.items(): widget = QtValue(prop) formlayout.addRow(QLabel(u'%s:' % prop.label), widget) props_widgets[prop.id] = widget @@ -528,7 +528,7 @@ def registerEvent(self): if dialog.exec_(): account = Account() account.properties = {} - for key, widget in props_widgets.iteritems(): + for key, widget in props_widgets.items(): try: v = widget.get_value() except ValueError as e: @@ -546,7 +546,7 @@ def registerEvent(self): self.tr('Unable to register account %s:

%s') % (website, e)) end = False else: - for key, value in account.properties.iteritems(): + for key, value in account.properties.items(): if key in self.config_widgets: self.config_widgets[key][1].set_value(value) diff --git a/weboob/tools/application/qt5/qt.py b/weboob/tools/application/qt5/qt.py index 3e6f414e4c..b720e02e06 100644 --- a/weboob/tools/application/qt5/qt.py +++ b/weboob/tools/application/qt5/qt.py @@ -402,7 +402,7 @@ class _QtValueChoices(QComboBox): def __init__(self, value): QComboBox.__init__(self) self._value = value - for k, l in value.choices.iteritems(): + for k, l in value.choices.items(): self.addItem(l, QVariant(k)) if value.default == k: self.setCurrentIndex(self.count()-1) diff --git a/weboob/tools/application/repl.py b/weboob/tools/application/repl.py index e6369aaa84..53dcbf8965 100644 --- a/weboob/tools/application/repl.py +++ b/weboob/tools/application/repl.py @@ -60,7 +60,7 @@ def format_option_help(self, formatter=None): class ReplOptionFormatter(IndentedHelpFormatter): def format_commands(self, commands): s = u'' - for section, cmds in commands.iteritems(): + for section, cmds in commands.items(): if len(cmds) == 0: continue if len(s) > 0: @@ -128,7 +128,7 @@ def __init__(self): '', )) self.formatters_loader = FormattersLoader() - for key, klass in self.EXTRA_FORMATTERS.iteritems(): + for key, klass in self.EXTRA_FORMATTERS.items(): self.formatters_loader.register_formatter(key, klass) self.formatter = None self.commands_formatters = self.COMMANDS_FORMATTERS.copy() @@ -634,7 +634,7 @@ def complete_backends(self, text, line, begidx, endidx): elif args[1] == 'disable': choices = sorted(enabled_backends_names) elif args[1] in ('add', 'register') and len(args) == 3: - for name, module in sorted(self.weboob.repositories.get_all_modules_info(self.CAPS).iteritems()): + for name, module in sorted(self.weboob.repositories.get_all_modules_info(self.CAPS).items()): choices.append(name) elif args[1] == 'edit': choices = sorted(available_backends_names) @@ -725,7 +725,7 @@ def do_backends(self, line): enabled = backend in self.enabled_backends self.unload_backends(names=[backend.name]) self.edit_backend(backend.name) - for newb in self.load_backends(names=[backend.name]).itervalues(): + for newb in self.load_backends(names=[backend.name]).values(): if not enabled: self.enabled_backends.remove(newb) elif action == 'remove': @@ -735,7 +735,7 @@ def do_backends(self, line): elif action == 'list-modules': modules = [] print('Modules list:') - for name, info in sorted(self.weboob.repositories.get_all_modules_info().iteritems()): + for name, info in sorted(self.weboob.repositories.get_all_modules_info().items()): if not self.is_module_loadable(info): continue modules.append(name) @@ -933,7 +933,7 @@ def do_formatter(self, line): return 1 else: print('Default formatter: %s' % self.DEFAULT_FORMATTER) - for key, klass in self.commands_formatters.iteritems(): + for key, klass in self.commands_formatters.items(): print('Command "%s": %s' % (key, klass)) def do_select(self, line): diff --git a/weboob/tools/backend.py b/weboob/tools/backend.py index a05291be8c..62bd4deec7 100644 --- a/weboob/tools/backend.py +++ b/weboob/tools/backend.py @@ -153,7 +153,7 @@ def load(self, weboob, modname, instname, config, nofail=False): cfg.modname = modname cfg.instname = instname cfg.weboob = weboob - for name, field in self.iteritems(): + for name, field in self.items(): value = config.get(name, None) if value is None: @@ -180,7 +180,7 @@ def dump(self): :rtype: :class:`dict` """ settings = {} - for name, value in self.iteritems(): + for name, value in self.items(): settings[name] = value.dump() return settings @@ -274,7 +274,7 @@ def __init__(self, weboob, name, config=None, storage=None, logger=None, nofail= config = {} # Private fields (which start with '_') - self._private_config = dict((key, value) for key, value in config.iteritems() if key.startswith('_')) + self._private_config = dict((key, value) for key, value in config.items() if key.startswith('_')) # Load configuration of backend. self.config = self.CONFIG.load(weboob, self.NAME, self.name, config, nofail) @@ -430,7 +430,7 @@ def filter_missing_fields(obj, fields, check_cb): missing = False if hasattr(value, '__iter__'): - for v in (value.itervalues() if isinstance(value, dict) else value): + for v in (value.values() if isinstance(value, dict) else value): if not_loaded(v): missing = True break @@ -450,7 +450,7 @@ def filter_missing_fields(obj, fields, check_cb): if not missing_fields: return obj - for key, value in self.OBJECTS.iteritems(): + for key, value in self.OBJECTS.items(): if isinstance(obj, key): self.logger.debug(u'Fill %r with fields: %s' % (obj, missing_fields)) obj = value(self, obj, missing_fields) or obj diff --git a/weboob/tools/config/iniconfig.py b/weboob/tools/config/iniconfig.py index c26d910954..466d968273 100644 --- a/weboob/tools/config/iniconfig.py +++ b/weboob/tools/config/iniconfig.py @@ -74,7 +74,7 @@ def load(self, default={}): def save(self): def save_section(values, root_section=self.ROOTSECT): - for k, v in values.iteritems(): + for k, v in values.items(): if isinstance(v, (int, Decimal, float, basestring)): if not self.config.has_section(root_section): self.config.add_section(root_section) diff --git a/weboob/tools/pdf.py b/weboob/tools/pdf.py index 57093c6c52..446b18ea62 100644 --- a/weboob/tools/pdf.py +++ b/weboob/tools/pdf.py @@ -207,7 +207,7 @@ def build_rows(lines): plines[a].append(line) boxes = ApproxVecDict() - for plines in points.itervalues(): + for plines in points.values(): if not (plines[ANGLE_HORIZONTAL] and plines[ANGLE_VERTICAL]): continue for hline in plines[ANGLE_HORIZONTAL]: -- GitLab