diff --git a/weboob/applications/boobsize/boobsize.py b/weboob/applications/boobsize/boobsize.py
index b6ee67d835f514bf901c7688bb9c1e39cf3f5000..492c3cc6f1c8a76e4363a073688a6d5923976441 100644
--- a/weboob/applications/boobsize/boobsize.py
+++ b/weboob/applications/boobsize/boobsize.py
@@ -23,6 +23,7 @@
from weboob.capabilities.gauge import CapGauge, SensorNotFound
from weboob.tools.application.repl import ReplApplication
from weboob.tools.application.formatters.iformatter import IFormatter
+from weboob.tools.compat import unicode
__all__ = ['Boobsize']
diff --git a/weboob/applications/boobtracker/boobtracker.py b/weboob/applications/boobtracker/boobtracker.py
index ad6635b0d5363d187bd18ee16d245bee1c006011..c23da01b266463f2b0ee0e72a7407f5705aaec74 100644
--- a/weboob/applications/boobtracker/boobtracker.py
+++ b/weboob/applications/boobtracker/boobtracker.py
@@ -32,6 +32,7 @@
from weboob.capabilities.bugtracker import CapBugTracker, Query, Update, Project, Issue, IssueError
from weboob.tools.application.repl import ReplApplication, defaultcount
from weboob.tools.application.formatters.iformatter import IFormatter, PrettyFormatter
+from weboob.tools.compat import basestring, unicode
from weboob.tools.html import html2text
from weboob.tools.date import parse_french_date
diff --git a/weboob/applications/monboob/monboob.py b/weboob/applications/monboob/monboob.py
index 1f7621c3adff7acf6497ff158e186a332b4195b4..c06bc8a860ed445f87a60e08a7be5acf37dc96d9 100644
--- a/weboob/applications/monboob/monboob.py
+++ b/weboob/applications/monboob/monboob.py
@@ -36,6 +36,7 @@
from weboob.core.scheduler import Scheduler
from weboob.capabilities.messages import CapMessages, CapMessagesPost, Thread, Message
from weboob.tools.application.repl import ReplApplication
+from weboob.tools.compat import unicode
from weboob.tools.date import utc2local
from weboob.tools.html import html2text
from weboob.tools.misc import get_backtrace, to_unicode
diff --git a/weboob/applications/qcineoob/main_window.py b/weboob/applications/qcineoob/main_window.py
index ac88e954571b899f430fdf4437fd482701a9ebca..cdffd59fe15c579e3803ce2c3269600da70b4443 100644
--- a/weboob/applications/qcineoob/main_window.py
+++ b/weboob/applications/qcineoob/main_window.py
@@ -31,6 +31,7 @@
from weboob.tools.application.qt5.backendcfg import BackendCfg
from weboob.tools.application.qt5.models import BackendListModel
from weboob.tools.application.qt5.search_history import HistoryCompleter
+from weboob.tools.compat import unicode
from weboob.applications.suboob.suboob import LANGUAGE_CONV
from weboob.applications.qcineoob.ui.main_window_ui import Ui_MainWindow
diff --git a/weboob/applications/qcineoob/movie.py b/weboob/applications/qcineoob/movie.py
index 67c3214c3b4ad3ca6cc3face62242cba49082ff3..fc98c59c6e214cae24514e9d579a6df567d9006a 100644
--- a/weboob/applications/qcineoob/movie.py
+++ b/weboob/applications/qcineoob/movie.py
@@ -26,6 +26,7 @@
from weboob.applications.qcineoob.ui.movie_ui import Ui_Movie
from weboob.capabilities.base import empty
from weboob.applications.suboob.suboob import LANGUAGE_CONV
+from weboob.tools.compat import unicode
class Movie(QFrame):
diff --git a/weboob/applications/qcineoob/torrent.py b/weboob/applications/qcineoob/torrent.py
index 21fd3bc033d07f3c00c375fee52a2279cbe97585..adf4809beda84eaa06b05769cc1ff76292f25b6d 100644
--- a/weboob/applications/qcineoob/torrent.py
+++ b/weboob/applications/qcineoob/torrent.py
@@ -25,6 +25,7 @@
from weboob.applications.qcineoob.ui.torrent_ui import Ui_Torrent
from weboob.applications.weboorrents.weboorrents import sizeof_fmt
from weboob.capabilities.base import empty
+from weboob.tools.compat import unicode
class Torrent(QFrame):
diff --git a/weboob/applications/qhavedate/contacts.py b/weboob/applications/qhavedate/contacts.py
index 05dbe47bc44d6300c6d4e86fcff0c6ddb3c76f3b..a5a2b6311d36ceb4afaf1ba97734d0bb7b4c4604 100644
--- a/weboob/applications/qhavedate/contacts.py
+++ b/weboob/applications/qhavedate/contacts.py
@@ -27,7 +27,7 @@
from weboob.tools.application.qt5 import QtDo, HTMLDelegate
from weboob.tools.application.qt5.models import BackendListModel
-from weboob.tools.compat import range
+from weboob.tools.compat import range, basestring, unicode
from weboob.tools.misc import to_unicode
from weboob.capabilities.contact import CapContact, Contact
from weboob.capabilities.chat import CapChat
diff --git a/weboob/applications/qvideoob/minivideo.py b/weboob/applications/qvideoob/minivideo.py
index 10207778b95f65e12782282f07d6823670e3cf25..3060ca1d09cdee00694a211c36d89cbb1aac9521 100644
--- a/weboob/applications/qvideoob/minivideo.py
+++ b/weboob/applications/qvideoob/minivideo.py
@@ -22,6 +22,7 @@
from PyQt5.QtWidgets import QFrame
from weboob.tools.application.qt5 import QtDo
+from weboob.tools.compat import unicode
from weboob.applications.qvideoob.ui.minivideo_ui import Ui_MiniVideo
from .video import Video
diff --git a/weboob/applications/qvideoob/video.py b/weboob/applications/qvideoob/video.py
index 465dce6cd1722d393e155323a2b56b11d4fcd15c..15e4b5298097407308ad87b050a958726692da42 100644
--- a/weboob/applications/qvideoob/video.py
+++ b/weboob/applications/qvideoob/video.py
@@ -23,6 +23,7 @@
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
from weboob.applications.qvideoob.ui.video_ui import Ui_Video
+from weboob.tools.compat import unicode
class Video(QDialog):
diff --git a/weboob/applications/webcontentedit/webcontentedit.py b/weboob/applications/webcontentedit/webcontentedit.py
index 78b04ce59882adb00004aac4d1f595e862a030af..d2e8214d7bf24a6517b38da6df8264f95f9ed22d 100644
--- a/weboob/applications/webcontentedit/webcontentedit.py
+++ b/weboob/applications/webcontentedit/webcontentedit.py
@@ -27,6 +27,7 @@
from weboob.core.bcall import CallErrors
from weboob.capabilities.content import CapContent, Revision
from weboob.tools.application.repl import ReplApplication, defaultcount
+from weboob.tools.compat import unicode
__all__ = ['WebContentEdit']
diff --git a/weboob/browser/browsers.py b/weboob/browser/browsers.py
index 3f83687ff3428f788e7c2e0a1aa22032ff641114..47384dd9e851b9c51af1f3b12cd18c69ead2d04d 100644
--- a/weboob/browser/browsers.py
+++ b/weboob/browser/browsers.py
@@ -51,6 +51,7 @@
from weboob.exceptions import BrowserHTTPSDowngrade, ModuleInstallError
from weboob.tools.log import getLogger
+from weboob.tools.compat import basestring, unicode
from weboob.tools.json import json
from .cookies import WeboobCookieJar
diff --git a/weboob/browser/elements.py b/weboob/browser/elements.py
index 71111b3a02f2f00d081a0cbc0cdd50c07b9c3e43..06d583be85b7669e17642fc7f7b1067eefa1b8a1 100644
--- a/weboob/browser/elements.py
+++ b/weboob/browser/elements.py
@@ -28,6 +28,7 @@
import lxml.html
from weboob.tools.log import getLogger, DEBUG_FILTERS
+from weboob.tools.compat import basestring, unicode
from weboob.browser.pages import NextPage
from .filters.standard import _Filter, CleanText
diff --git a/weboob/browser/filters/html.py b/weboob/browser/filters/html.py
index 051709ac743878ccc3b2662a15072923499e6f56..18c75ef195268967b69a1ea7fdef98e6e6fc69a5 100644
--- a/weboob/browser/filters/html.py
+++ b/weboob/browser/filters/html.py
@@ -21,6 +21,7 @@
import lxml.html as html
from .standard import _Selector, _NO_DEFAULT, Filter, FilterError
from weboob.tools.html import html2text
+from weboob.tools.compat import basestring, unicode
__all__ = ['CSS', 'XPath', 'XPathNotFound', 'AttributeNotFound',
diff --git a/weboob/browser/filters/json.py b/weboob/browser/filters/json.py
index d9b9221a34831859177596da777d997b37d973dd..fc12b78494a07dc7cb8163fe1f77051065032f9d 100644
--- a/weboob/browser/filters/json.py
+++ b/weboob/browser/filters/json.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 weboob.tools.compat import basestring
from .standard import _Filter, _NO_DEFAULT, Filter, ParseError
diff --git a/weboob/browser/filters/standard.py b/weboob/browser/filters/standard.py
index 49724cb32c45d773cab39b83ffde1064ecbf77e3..a7c6f5bdcde0ec2df80d371ac573b53dd44e4711 100644
--- a/weboob/browser/filters/standard.py
+++ b/weboob/browser/filters/standard.py
@@ -32,7 +32,7 @@
from weboob.capabilities.base import empty
from weboob.capabilities.base import Currency as BaseCurrency
-from weboob.tools.compat import basestring
+from weboob.tools.compat import basestring, unicode
from weboob.exceptions import ParseError
from weboob.browser.url import URL
from weboob.tools.log import getLogger, DEBUG_FILTERS
diff --git a/weboob/browser/pages.py b/weboob/browser/pages.py
index 9a4129aadb92d78b5617d9b737688fd02c67803f..2b8557072c3b638ed9cfec19e01e306113a0624c 100644
--- a/weboob/browser/pages.py
+++ b/weboob/browser/pages.py
@@ -34,7 +34,7 @@
import requests
from weboob.exceptions import ParseError, ModuleInstallError
-from weboob.tools.compat import basestring
+from weboob.tools.compat import basestring, unicode
from weboob.tools.log import getLogger
from weboob.tools.pdf import decompress_pdf
diff --git a/weboob/browser/url.py b/weboob/browser/url.py
index 3d787c91e730941d74da2ade11d549b7907a7a05..9745bf1d61adbcbeb254458e57bb1edffe428771 100644
--- a/weboob/browser/url.py
+++ b/weboob/browser/url.py
@@ -25,6 +25,7 @@
import re
import requests
+from weboob.tools.compat import basestring
from weboob.tools.regex_helper import normalize
from weboob.tools.misc import to_unicode
diff --git a/weboob/capabilities/audio.py b/weboob/capabilities/audio.py
index 70fef112aba1a0c980d0233f2d4b9c0aef2a7e34..1a0d52934da9bd9ec39696c321449459d269d9ba 100644
--- a/weboob/capabilities/audio.py
+++ b/weboob/capabilities/audio.py
@@ -19,6 +19,8 @@
import re
+from weboob.tools.compat import unicode
+
from .image import Thumbnail
from .base import Field, StringField, IntField, BaseObject
from .date import DeltaField
diff --git a/weboob/capabilities/bank.py b/weboob/capabilities/bank.py
index 5ad831c12fa3a29ac95cd00eaaf18c137ddbb35e..550a1e59dd2738b368c2375c7ef6de66cc66c609 100644
--- a/weboob/capabilities/bank.py
+++ b/weboob/capabilities/bank.py
@@ -25,6 +25,7 @@
from weboob.capabilities.base import empty
from weboob.exceptions import BrowserQuestion
from weboob.tools.capabilities.bank.iban import is_iban_valid
+from weboob.tools.compat import unicode
from .base import BaseObject, Field, StringField, DecimalField, IntField, \
UserError, Currency, NotAvailable
diff --git a/weboob/capabilities/bugtracker.py b/weboob/capabilities/bugtracker.py
index f2350117e0977faaff04818aac7ef9934d13831a..b57fa2de4fc7fcc6c53d99a0edec6938468faee5 100644
--- a/weboob/capabilities/bugtracker.py
+++ b/weboob/capabilities/bugtracker.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 weboob.tools.compat import unicode
from .base import Capability, BaseObject, Field, StringField,\
IntField, UserError
diff --git a/weboob/capabilities/contact.py b/weboob/capabilities/contact.py
index af704f19f0cac35d2afdc1034ad61e4c63c527aa..e327da51ddf114f3ac6bcc2e979f29713ccccc94 100644
--- a/weboob/capabilities/contact.py
+++ b/weboob/capabilities/contact.py
@@ -19,6 +19,8 @@
from collections import OrderedDict
+from weboob.tools.compat import unicode
+
from .base import Capability, BaseObject, Field, StringField, BytesField, IntField, \
BoolField, UserError
diff --git a/weboob/capabilities/gallery.py b/weboob/capabilities/gallery.py
index 9f4850b05e376ab3e3bfa662bfe051dff5659881..9c67e551a71f262c49b8700e4cff4d518603e7b4 100644
--- a/weboob/capabilities/gallery.py
+++ b/weboob/capabilities/gallery.py
@@ -19,6 +19,7 @@
from weboob.capabilities.image import BaseImage as CIBaseImage, Thumbnail
+from weboob.tools.compat import unicode
from .base import Capability, BaseObject, NotLoaded, Field, StringField, \
IntField, FloatField
from .date import DateField
diff --git a/weboob/capabilities/messages.py b/weboob/capabilities/messages.py
index 1e7989d41672964ccf0396dec43f48f78056b633..dbab953865a7d9e5aba14ced1ea002dbbb40f429 100644
--- a/weboob/capabilities/messages.py
+++ b/weboob/capabilities/messages.py
@@ -21,6 +21,8 @@
import datetime
import time
+from weboob.tools.compat import unicode
+
from .base import Capability, BaseObject, NotLoaded, Field, StringField, \
IntField, UserError
from .date import DateField
diff --git a/weboob/capabilities/paste.py b/weboob/capabilities/paste.py
index e2b802af9e6ffa4b6766de5927eadf5c0e02801b..157149d0eb6f7beac769d064246b25e3f4fdce3e 100644
--- a/weboob/capabilities/paste.py
+++ b/weboob/capabilities/paste.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 weboob.tools.compat import unicode
from .base import Capability, BaseObject, NotLoaded, StringField, BoolField, UserError
diff --git a/weboob/capabilities/weather.py b/weboob/capabilities/weather.py
index 080330fec69bf81b5cc34ccb4096acb32093cebb..c2fbc6a8c53ba95b08214b6c851bda911622dfaf 100644
--- a/weboob/capabilities/weather.py
+++ b/weboob/capabilities/weather.py
@@ -20,6 +20,8 @@
from datetime import datetime, date
+from weboob.tools.compat import basestring, unicode
+
from .base import Capability, BaseObject, Field, FloatField, \
StringField, UserError, NotLoaded
from .date import DateField
diff --git a/weboob/core/backendscfg.py b/weboob/core/backendscfg.py
index 63b4af714099e885b24bcc9540bc214095ff7ce7..36dc2f67ade7c66955a77aca3082eaacde110b42 100644
--- a/weboob/core/backendscfg.py
+++ b/weboob/core/backendscfg.py
@@ -27,6 +27,9 @@
from configparser import RawConfigParser, DuplicateSectionError
from logging import warning
+from weboob.tools.compat import unicode
+
+
__all__ = ['BackendsConfig', 'BackendAlreadyExists']
diff --git a/weboob/core/bcall.py b/weboob/core/bcall.py
index f3b1dc938671b19cc58bf8a5b51e534420563f7f..b0d35842fb030bf10e2017d01dddfdbb35fa6a7b 100644
--- a/weboob/core/bcall.py
+++ b/weboob/core/bcall.py
@@ -26,6 +26,7 @@
import queue as Queue
from weboob.capabilities.base import BaseObject
+from weboob.tools.compat import basestring
from weboob.tools.misc import get_backtrace
from weboob.tools.log import getLogger
diff --git a/weboob/core/modules.py b/weboob/core/modules.py
index 78576e4663e2a0672618a9ff36e1d62ac6605081..6558fba23e24f8697c6a893dac80e416a6324705 100644
--- a/weboob/core/modules.py
+++ b/weboob/core/modules.py
@@ -22,6 +22,7 @@
import logging
from weboob.tools.backend import Module
+from weboob.tools.compat import basestring
from weboob.tools.log import getLogger
from weboob.exceptions import ModuleLoadError
diff --git a/weboob/core/ouiboube.py b/weboob/core/ouiboube.py
index 5f32c9791a5e7bfdf165ba0adf398e0f1b5eeaa5..f4fbcd38b232b7c708ac225caca18dfae81c463c 100644
--- a/weboob/core/ouiboube.py
+++ b/weboob/core/ouiboube.py
@@ -27,6 +27,7 @@
from weboob.core.repositories import Repositories, PrintProgress
from weboob.core.scheduler import Scheduler
from weboob.tools.backend import Module
+from weboob.tools.compat import basestring, unicode
from weboob.tools.config.iconfig import ConfigError
from weboob.tools.log import getLogger
from weboob.exceptions import ModuleLoadError
diff --git a/weboob/core/repositories.py b/weboob/core/repositories.py
index b2021f6268a486405bf6d5a7f3914355132975ec..c3899d8b31a53ac0cda84de1d5eee28f137d63bd 100644
--- a/weboob/core/repositories.py
+++ b/weboob/core/repositories.py
@@ -36,6 +36,7 @@
from .modules import LoadedModule
from weboob.tools.log import getLogger
from weboob.tools.misc import get_backtrace, to_unicode, find_exe
+from weboob.tools.compat import basestring, unicode
try:
from ConfigParser import RawConfigParser, DEFAULTSECT
except ImportError:
diff --git a/weboob/deprecated/browser/browser.py b/weboob/deprecated/browser/browser.py
index 3c7f3bc796677683930411f2a6f82b9092fa6b75..92241810a9345df370b0fa375c5b426b0c79feac 100644
--- a/weboob/deprecated/browser/browser.py
+++ b/weboob/deprecated/browser/browser.py
@@ -53,6 +53,7 @@
from threading import RLock
from weboob.exceptions import BrowserUnavailable, BrowserIncorrectPassword, BrowserPasswordExpired, BrowserForbidden, BrowserBanned, BrowserHTTPNotFound, BrowserHTTPError, FormFieldConversionWarning, BrowserSSLError
+from weboob.tools.compat import basestring, unicode
from weboob.tools.decorators import retry
from weboob.tools.log import getLogger
from weboob.deprecated.browser.parsers import get_parser
diff --git a/weboob/deprecated/browser/parsers/csvparser.py b/weboob/deprecated/browser/parsers/csvparser.py
index 1ac07f535e1a9771a2b1f4230dda918a9921eb99..de7b1bb044ffed746bac513258787faa75732965 100644
--- a/weboob/deprecated/browser/parsers/csvparser.py
+++ b/weboob/deprecated/browser/parsers/csvparser.py
@@ -21,6 +21,7 @@
import csv
from weboob.tools.log import getLogger
+from weboob.tools.compat import basestring, unicode
from .iparser import IParser
diff --git a/weboob/tools/application/console.py b/weboob/tools/application/console.py
index 6331183717afab725445811f8c5099fceb67ab49..7749a953e2d1f9a2a166f30d78f5cd26b7f9e377 100644
--- a/weboob/tools/application/console.py
+++ b/weboob/tools/application/console.py
@@ -41,6 +41,7 @@
TransferInvalidEmitter, TransferInvalidRecipient
from weboob.tools.value import Value, ValueBool, ValueFloat, ValueInt, ValueBackendPassword
from weboob.tools.misc import to_unicode
+from weboob.tools.compat import unicode
from .base import Application, MoreResultsAvailable
diff --git a/weboob/tools/application/formatters/csv.py b/weboob/tools/application/formatters/csv.py
index fb5bf777effc18ebd1a02c623e78dcc791266366..83395e7683adb7b6b39be0f6bf190fdf5a99039f 100644
--- a/weboob/tools/application/formatters/csv.py
+++ b/weboob/tools/application/formatters/csv.py
@@ -20,6 +20,8 @@
from __future__ import absolute_import
import csv
+from weboob.tools.compat import basestring, unicode
+
from .iformatter import IFormatter
__all__ = ['CSVFormatter']
diff --git a/weboob/tools/application/formatters/iformatter.py b/weboob/tools/application/formatters/iformatter.py
index 658ee28581d7a9a2b8c9838f9dd2784d979978d3..7e29dc4feb3084b640afcc75b03cf9043955a20e 100644
--- a/weboob/tools/application/formatters/iformatter.py
+++ b/weboob/tools/application/formatters/iformatter.py
@@ -62,6 +62,7 @@ def readch():
from weboob.capabilities.base import BaseObject
from weboob.tools.application.console import ConsoleApplication
+from weboob.tools.compat import basestring
from weboob.tools.misc import guess_encoding
__all__ = ['IFormatter', 'MandatoryFieldsNotFound']
diff --git a/weboob/tools/application/qt5/backendcfg.py b/weboob/tools/application/qt5/backendcfg.py
index b8ef49729dfe73864efd03266c6bb9f0ab4fa36c..cd3f2346bb67ce2c19da1f12cb07be855019111f 100644
--- a/weboob/tools/application/qt5/backendcfg.py
+++ b/weboob/tools/application/qt5/backendcfg.py
@@ -38,6 +38,7 @@
from .backendcfg_ui import Ui_BackendCfg
from .reposdlg_ui import Ui_RepositoriesDlg
from weboob.tools.misc import to_unicode
+from weboob.tools.compat import unicode
from .qt import QtValue
diff --git a/weboob/tools/application/qt5/qt.py b/weboob/tools/application/qt5/qt.py
index 69797e009e3c5df476006b0dbb853eb319fe9beb..3e6f414e4cbb9f785605c950d1777cc450085a9e 100644
--- a/weboob/tools/application/qt5/qt.py
+++ b/weboob/tools/application/qt5/qt.py
@@ -36,7 +36,7 @@
from weboob.core.ouiboube import Weboob, VersionsMismatchError
from weboob.core.scheduler import IScheduler
-from weboob.tools.compat import range
+from weboob.tools.compat import range, unicode
from weboob.tools.config.iconfig import ConfigError
from weboob.exceptions import BrowserUnavailable, BrowserIncorrectPassword, BrowserForbidden, ModuleInstallError
from weboob.tools.value import ValueInt, ValueBool, ValueBackendPassword
diff --git a/weboob/tools/application/repl.py b/weboob/tools/application/repl.py
index d5c938dd7ae2613d28b8a94d60d60d73d5b19515..e6369aaa84e4169503fc7cda0705e10625fe9044 100644
--- a/weboob/tools/application/repl.py
+++ b/weboob/tools/application/repl.py
@@ -31,7 +31,7 @@
from weboob.capabilities.base import FieldNotFound, BaseObject, UserError
from weboob.core import CallErrors
from weboob.tools.application.formatters.iformatter import MandatoryFieldsNotFound
-from weboob.tools.compat import range
+from weboob.tools.compat import range, basestring, unicode
from weboob.tools.misc import to_unicode
from weboob.tools.path import WorkingPath
from weboob.capabilities.collection import Collection, BaseCollection, CapCollection, CollectionNotFound
diff --git a/weboob/tools/application/results.py b/weboob/tools/application/results.py
index d6565642c8633453d29f46a7fb060f4808b8a682..a4f9fe3c6bdaaeaf1efedbfd6a90a025e91ed0c9 100644
--- a/weboob/tools/application/results.py
+++ b/weboob/tools/application/results.py
@@ -18,6 +18,7 @@
# along with weboob. If not, see .
from weboob.capabilities import UserError
+from weboob.tools.compat import unicode
__all__ = ['ResultsCondition', 'ResultsConditionError']
diff --git a/weboob/tools/backend.py b/weboob/tools/backend.py
index 54159428ea231a48de9f59804fad57c16ca05be7..a05291be8cfc4d29c8ce9f2a99970150e4c8ae24 100644
--- a/weboob/tools/backend.py
+++ b/weboob/tools/backend.py
@@ -24,6 +24,7 @@
from weboob.capabilities.base import BaseObject, FieldNotFound, \
Capability, NotLoaded, NotAvailable
from weboob.tools.misc import iter_fields
+from weboob.tools.compat import basestring
from weboob.tools.log import getLogger
from weboob.tools.value import ValuesDict
from weboob.exceptions import ModuleInstallError
diff --git a/weboob/tools/capabilities/bank/iban.py b/weboob/tools/capabilities/bank/iban.py
index 1b6a5c8651e7c6e436fe95a43308e79d3cfd83c8..ff7d3850dd8a6173b83a30257a5bfdc420593e4a 100644
--- a/weboob/tools/capabilities/bank/iban.py
+++ b/weboob/tools/capabilities/bank/iban.py
@@ -20,6 +20,8 @@
import re
+from weboob.tools.compat import unicode
+
_country2length = dict(
AL=28, AD=24, AT=20, AZ=28, BE=16, BH=22, BA=20, BR=29,
BG=22, CR=21, HR=21, CY=28, CZ=24, DK=18, DO=28, EE=20,
diff --git a/weboob/tools/captcha/virtkeyboard.py b/weboob/tools/captcha/virtkeyboard.py
index 61cc74bd01b04e617d58cfe5c73da091b4e906bc..779dec8f68f0719ed154a7a4b59c7cdafdb21c2e 100644
--- a/weboob/tools/captcha/virtkeyboard.py
+++ b/weboob/tools/captcha/virtkeyboard.py
@@ -26,6 +26,8 @@
except ImportError:
raise ImportError('Please install python-imaging')
+from weboob.tools.compat import basestring
+
class VirtKeyboardError(Exception):
pass
diff --git a/weboob/tools/config/iniconfig.py b/weboob/tools/config/iniconfig.py
index 34d5bad6d8a15738ef737aa884eea60d8c657118..c26d910954425fe9c96fa25ace35fbd278cabe6b 100644
--- a/weboob/tools/config/iniconfig.py
+++ b/weboob/tools/config/iniconfig.py
@@ -28,6 +28,8 @@
import logging
import os
+from weboob.tools.compat import basestring, unicode
+
from .iconfig import IConfig
diff --git a/weboob/tools/html.py b/weboob/tools/html.py
index 53c039c726037ca2f087e709069fa46c749408fb..774b3d9f8522405d260fde971eb2207f8c5d1fff 100644
--- a/weboob/tools/html.py
+++ b/weboob/tools/html.py
@@ -19,6 +19,8 @@
import warnings
+from weboob.tools.compat import unicode
+
__all__ = ['html2text']
diff --git a/weboob/tools/json.py b/weboob/tools/json.py
index 615d81f325a35a9de2655d144d9bda97668f61d4..811c3ba5f07f1fb4e30b74b82ab7cc4b569e84a6 100644
--- a/weboob/tools/json.py
+++ b/weboob/tools/json.py
@@ -36,6 +36,7 @@
import json
from weboob.capabilities.base import BaseObject, NotAvailable, NotLoaded
+from weboob.tools.compat import basestring
def mini_jsonpath(node, path):
diff --git a/weboob/tools/path.py b/weboob/tools/path.py
index aa07ade3ec75cb5eb087e2c20276fd353f3de6a4..abb88f0ce6be39c8f2e0c83bcc0013e203227519 100644
--- a/weboob/tools/path.py
+++ b/weboob/tools/path.py
@@ -19,6 +19,8 @@
from copy import copy
from posixpath import sep, join
+from .compat import unicode
+
class WorkingPath(object):
def __init__(self):
diff --git a/weboob/tools/regex_helper.py b/weboob/tools/regex_helper.py
index a102534691a41ebd7912e2d030fb5d3b551a5fa4..5bb39c5e94a7cead421efa72924048c880e14fcc 100644
--- a/weboob/tools/regex_helper.py
+++ b/weboob/tools/regex_helper.py
@@ -34,6 +34,8 @@
should be good enough for a large class of URLS, however.
"""
+from weboob.tools.compat import basestring
+
# Mapping of an escape character to a representative of that class. So, e.g.,
# "\w" is replaced by "x" in a reverse URL. A value of None means to ignore
# this sequence. Any missing key is mapped to itself.
diff --git a/weboob/tools/value.py b/weboob/tools/value.py
index 6a93e3825b7031e9eed700636f91dee1082922ad..1dbcbe43317f60611624422fcad1add057070fea 100644
--- a/weboob/tools/value.py
+++ b/weboob/tools/value.py
@@ -25,6 +25,8 @@
from collections import OrderedDict
from subprocess import check_output
+from weboob.tools.compat import basestring, unicode
+
from .misc import to_unicode