diff --git a/scripts/weboob b/scripts/weboob
index 999eb605c54bb41210ddd978fdd1098b7cb19ecb..24b70c46bb1c91692bc229bd69a262d6ee5fcbe4 100755
--- a/scripts/weboob
+++ b/scripts/weboob
@@ -21,6 +21,7 @@
# along with weboob. If not, see .
from __future__ import absolute_import
+from __future__ import print_function
import re
import os
diff --git a/weboob/applications/boobank/boobank.py b/weboob/applications/boobank/boobank.py
index d6d86b4947c5a6294cbbb4f1782708b751fdeb02..f1839db50d911e6a1b70d7d441a327a28fd9023c 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): (v,k)):
+ for currency, currency_totals in sorted(self.totals.iteritems(), key=lambda k_v: (k_v[1],k_v[0])):
balance = currency_totals['balance']
coming = currency_totals['coming']
diff --git a/weboob/applications/qhavedate/search.py b/weboob/applications/qhavedate/search.py
index 6f9f805ae68c434e9abe36ea63589b64203d54cb..ea46282945d04ed2dd911837197281f928184d60 100644
--- a/weboob/applications/qhavedate/search.py
+++ b/weboob/applications/qhavedate/search.py
@@ -72,7 +72,7 @@ def retrieveNewContacts_cb(self, contact):
self.contacts.insert(0, contact)
self.ui.queueLabel.setText('%d' % len(self.contacts))
if self.current is None:
- self.next()
+ next(self)
@Slot()
def next(self):
diff --git a/weboob/applications/radioob/radioob.py b/weboob/applications/radioob/radioob.py
index cc90be07e6726de8e1eb2c1cd589bb95791b12eb..2c72dc1688b76933793e42420b0ea7f1d9d07b7d 100644
--- a/weboob/applications/radioob/radioob.py
+++ b/weboob/applications/radioob/radioob.py
@@ -292,7 +292,7 @@ def do_play(self, line):
stream = self.get_object(stream.id, 'get_audio')
else:
r = requests.get(stream.url, stream=True)
- buf = r.iter_content(512).next()
+ buf = next(r.iter_content(512))
r.close()
playlistFormat = None
for line in buf.split("\n"):
diff --git a/weboob/browser/browsers.py b/weboob/browser/browsers.py
index 8e8781fd74028f65151821a0acb623fcca1818c8..3f83687ff3428f788e7c2e0a1aa22032ff641114 100644
--- a/weboob/browser/browsers.py
+++ b/weboob/browser/browsers.py
@@ -25,6 +25,7 @@
import pickle
import base64
import zlib
+from functools import reduce
try:
from requests.packages import urllib3
except ImportError:
diff --git a/weboob/browser/elements.py b/weboob/browser/elements.py
index c87361dd2511ab3a5f5063449b6763ea19ec31a6..71111b3a02f2f00d081a0cbc0cdd50c07b9c3e43 100644
--- a/weboob/browser/elements.py
+++ b/weboob/browser/elements.py
@@ -17,6 +17,8 @@
# You should have received a copy of the GNU Affero General Public License
# along with weboob. If not, see .
+from __future__ import print_function
+
import os
import re
import sys
diff --git a/weboob/browser/pages.py b/weboob/browser/pages.py
index dc2744764c0bc9024e8c4a0a154970462d72476d..9a4129aadb92d78b5617d9b737688fd02c67803f 100644
--- a/weboob/browser/pages.py
+++ b/weboob/browser/pages.py
@@ -25,6 +25,7 @@
from io import BytesIO
import codecs
from cgi import parse_header
+from functools import reduce
try:
import urlparse
except ImportError:
diff --git a/weboob/capabilities/base.py b/weboob/capabilities/base.py
index 8b4f036ed4da2e3b50e3d8316d9b939b84db126a..2d4d5c6932aae00a6fd4375484cb459d77d44a7f 100644
--- a/weboob/capabilities/base.py
+++ b/weboob/capabilities/base.py
@@ -38,7 +38,7 @@ def enum(**enums):
_keys = enums.keys()
_items = enums.items()
_types = list((type(value) for value in enums.values()))
- _index = dict((value if not isinstance(value, dict) else value.itervalues().next(), i) for i, value in enumerate(enums.values()))
+ _index = dict((value if not isinstance(value, dict) else next(value.itervalues()), i) for i, value in enumerate(enums.values()))
enums['keys'] = _keys
enums['values'] = _values
diff --git a/weboob/capabilities/collection.py b/weboob/capabilities/collection.py
index 0704543414bcec71380af1a743f3aaa6bbfec231..40842a02d85f559db492fa412f6af888cea0ecb1 100644
--- a/weboob/capabilities/collection.py
+++ b/weboob/capabilities/collection.py
@@ -140,7 +140,7 @@ def validate_collection(self, objs, collection):
return
try:
i = self.iter_resources(objs, collection.split_path)
- i.next()
+ next(i)
except StopIteration:
raise CollectionNotFound(collection.split_path)
diff --git a/weboob/tools/capabilities/gallery/genericcomicreadertest.py b/weboob/tools/capabilities/gallery/genericcomicreadertest.py
index 5607cfeb4e5d4d31c630272798f28bfe3729350b..8965db541a6e377a99e5f7f1b1a7754971030984 100644
--- a/weboob/tools/capabilities/gallery/genericcomicreadertest.py
+++ b/weboob/tools/capabilities/gallery/genericcomicreadertest.py
@@ -24,6 +24,6 @@ class GenericComicReaderTest(BackendTest):
def _test_download(self, _id):
g = self.backend.get_gallery(_id)
it = self.backend.iter_gallery_images(g)
- it.next()
- img = it.next()
+ next(it)
+ img = next(it)
self.backend.fillobj(img, ('url', 'data'))
diff --git a/weboob/tools/misc.py b/weboob/tools/misc.py
index 7b8c82cb32f5ac023b664607fd319cdc34d65301..4053f1f429de3297ebd692c77ae2bf7c79fcc6c0 100644
--- a/weboob/tools/misc.py
+++ b/weboob/tools/misc.py
@@ -118,7 +118,7 @@ def limit(iterator, lim):
count = 0
iterator = iter(iterator)
while count < lim:
- yield iterator.next()
+ yield next(iterator)
count += 1
diff --git a/weboob/tools/regex_helper.py b/weboob/tools/regex_helper.py
index 42252c94a8069bb07c909b126608f61ce33ee214..a102534691a41ebd7912e2d030fb5d3b551a5fa4 100644
--- a/weboob/tools/regex_helper.py
+++ b/weboob/tools/regex_helper.py
@@ -107,7 +107,7 @@ def normalize(pattern):
# at the next character and possibly go around without consuming another
# one at the top of the loop.
try:
- ch, escaped = pattern_iter.next()
+ ch, escaped = next(pattern_iter)
except StopIteration:
return zip([u''], [[]])
@@ -137,14 +137,14 @@ def normalize(pattern):
result = result[:start] + [inner]
elif ch == '[':
# Replace ranges with the first character in the range.
- ch, escaped = pattern_iter.next()
+ ch, escaped = next(pattern_iter)
result.append(ch)
- ch, escaped = pattern_iter.next()
+ ch, escaped = next(pattern_iter)
while escaped or ch != ']':
- ch, escaped = pattern_iter.next()
+ ch, escaped = next(pattern_iter)
elif ch == '(':
# Some kind of group.
- ch, escaped = pattern_iter.next()
+ ch, escaped = next(pattern_iter)
if ch != '?' or escaped:
# A positional group
name = "_%d" % num_args
@@ -152,7 +152,7 @@ def normalize(pattern):
result.append(Group(((u"%%(%s)s" % name), name)))
walk_to_end(ch, pattern_iter)
else:
- ch, escaped = pattern_iter.next()
+ ch, escaped = next(pattern_iter)
if ch in "iLmsu#":
# All of these are ignorable. Walk to the end of the
# group.
@@ -165,7 +165,7 @@ def normalize(pattern):
# we cannot reverse.
raise ValueError("Non-reversible reg-exp portion: '(?%s'" % ch)
else:
- ch, escaped = pattern_iter.next()
+ ch, escaped = next(pattern_iter)
if ch not in ('<', '='):
raise ValueError("Non-reversible reg-exp portion: '(?P%s'" % ch)
# We are in a named capturing group. Extra the name and
@@ -176,10 +176,10 @@ def normalize(pattern):
else:
terminal_char = ')'
name = []
- ch, escaped = pattern_iter.next()
+ ch, escaped = next(pattern_iter)
while ch != terminal_char:
name.append(ch)
- ch, escaped = pattern_iter.next()
+ ch, escaped = next(pattern_iter)
param = ''.join(name)
# Named backreferences have already consumed the
# parenthesis.
@@ -215,7 +215,7 @@ def normalize(pattern):
result.append(ch)
if consume_next:
- ch, escaped = pattern_iter.next()
+ ch, escaped = next(pattern_iter)
else:
consume_next = True
except StopIteration:
@@ -241,7 +241,7 @@ def next_char(input_iter):
if ch != '\\':
yield ch, False
continue
- ch = input_iter.next()
+ ch = next(input_iter)
representative = ESCAPE_MAPPINGS.get(ch, ch)
if representative is None:
continue
@@ -280,7 +280,7 @@ def get_quantifier(ch, input_iter):
"""
if ch in '*?+':
try:
- ch2, escaped = input_iter.next()
+ ch2, escaped = next(input_iter)
except StopIteration:
ch2 = None
if ch2 == '?':
@@ -291,14 +291,14 @@ def get_quantifier(ch, input_iter):
quant = []
while ch != '}':
- ch, escaped = input_iter.next()
+ ch, escaped = next(input_iter)
quant.append(ch)
quant = quant[:-1]
values = ''.join(quant).split(',')
# Consume the trailing '?', if necessary.
try:
- ch, escaped = input_iter.next()
+ ch, escaped = next(input_iter)
except StopIteration:
ch = None
if ch == '?':
diff --git a/weboob/tools/test.py b/weboob/tools/test.py
index bfd3fdad767bfe39b76652d34c024fe1dfc0b320..c624394c5be89726d4689733ce0a3fb55b09eecf 100644
--- a/weboob/tools/test.py
+++ b/weboob/tools/test.py
@@ -17,6 +17,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with weboob. If not, see .
+from __future__ import print_function
import sys
from functools import wraps
from unittest import TestCase