move guess_encoding into weboob.tools.misc

This commit is contained in:
Romain Bignon 2015-05-09 17:51:55 +02:00
commit a33d26558b
2 changed files with 14 additions and 12 deletions

View file

@ -24,7 +24,6 @@ import logging
import optparse import optparse
from optparse import OptionGroup, OptionParser from optparse import OptionGroup, OptionParser
from datetime import datetime from datetime import datetime
import locale
import os import os
import sys import sys
import warnings import warnings
@ -35,7 +34,7 @@ from weboob.core.backendscfg import BackendsConfig
from weboob.tools.config.iconfig import ConfigError from weboob.tools.config.iconfig import ConfigError
from weboob.exceptions import FormFieldConversionWarning from weboob.exceptions import FormFieldConversionWarning
from weboob.tools.log import createColoredFormatter, getLogger, DEBUG_FILTERS, settings as log_settings 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 from .results import ResultsConditionError
__all__ = ['Application'] __all__ = ['Application']
@ -175,16 +174,7 @@ class Application(object):
self._is_default_count = True self._is_default_count = True
def guess_encoding(self, stdio=None): def guess_encoding(self, stdio=None):
if stdio is None: return guess_encoding(stdio or self.stdout)
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
def deinit(self): def deinit(self):
self.weboob.want_stop() self.weboob.want_stop()

View file

@ -19,6 +19,7 @@
from time import time, sleep from time import time, sleep
import locale
import os import os
import sys import sys
import traceback import traceback
@ -92,6 +93,17 @@ def to_unicode(text):
return unicode(text, 'windows-1252', 'replace') 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): def limit(iterator, lim):
count = 0 count = 0
iterator = iter(iterator) iterator = iter(iterator)