From a33d26558b856380e5076319e204a6c5a57d7dc8 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Sat, 9 May 2015 17:51:55 +0200 Subject: [PATCH] move guess_encoding into weboob.tools.misc --- weboob/tools/application/base.py | 14 ++------------ weboob/tools/misc.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/weboob/tools/application/base.py b/weboob/tools/application/base.py index 7194b5af..3cd66bd0 100644 --- a/weboob/tools/application/base.py +++ b/weboob/tools/application/base.py @@ -24,7 +24,6 @@ import logging import optparse from optparse import OptionGroup, OptionParser from datetime import datetime -import locale import os import sys import warnings @@ -35,7 +34,7 @@ from weboob.core.backendscfg import BackendsConfig from weboob.tools.config.iconfig import ConfigError from weboob.exceptions import FormFieldConversionWarning from weboob.tools.log import createColoredFormatter, getLogger, DEBUG_FILTERS, settings as log_settings -from weboob.tools.misc import to_unicode +from weboob.tools.misc import to_unicode, guess_encoding from .results import ResultsConditionError __all__ = ['Application'] @@ -175,16 +174,7 @@ class Application(object): self._is_default_count = True def guess_encoding(self, stdio=None): - if stdio is None: - stdio = self.stdout - try: - encoding = stdio.encoding or locale.getpreferredencoding() - except AttributeError: - encoding = None - # ASCII or ANSII is most likely a user mistake - if not encoding or encoding.lower() == 'ascii' or encoding.lower().startswith('ansi'): - encoding = 'UTF-8' - return encoding + return guess_encoding(stdio or self.stdout) def deinit(self): self.weboob.want_stop() diff --git a/weboob/tools/misc.py b/weboob/tools/misc.py index 226e1be2..f49d83e2 100644 --- a/weboob/tools/misc.py +++ b/weboob/tools/misc.py @@ -19,6 +19,7 @@ from time import time, sleep +import locale import os import sys import traceback @@ -92,6 +93,17 @@ def to_unicode(text): return unicode(text, 'windows-1252', 'replace') +def guess_encoding(stdio): + try: + encoding = stdio.encoding or locale.getpreferredencoding() + except AttributeError: + encoding = None + # ASCII or ANSII is most likely a user mistake + if not encoding or encoding.lower() == 'ascii' or encoding.lower().startswith('ansi'): + encoding = 'UTF-8' + return encoding + + def limit(iterator, lim): count = 0 iterator = iter(iterator)