@DontRaiseUnicodeError
def write(self, s):
- self._out.write('%s' % s)
+ self._out.write(s)
self._out.flush()
@DontRaiseUnicodeError
return print_list(*args, **kwargs)
def print_dict(self, *args, **kwargs):
- kwargs.setdefault('out', self._out)
+ kwargs.setdefault('out', self)
return print_dict(*args, **kwargs)
def print_json(self, *args, **kwargs):
- kwargs.setdefault('out', self._out)
+ kwargs.setdefault('out', self)
return print_json(*args, **kwargs)
def print_items(self, *args, **kwargs):
- kwargs.setdefault('out', self._out)
+ kwargs.setdefault('out', self)
return print_items(*args, **kwargs)
def ask_user(self, *args, **kwargs):
kwargs.setdefault('user_in', self._in)
- kwargs.setdefault('out', self._out)
+ kwargs.setdefault('out', self)
return ask_user(*args, **kwargs)
@DontRaiseKeyError
def _optional_output(self, r):
if self['json_output']:
- print_json(r, out=self._out)
+ print_json(r, out=self)
elif self['with_output']:
- print_items([r] if isinstance(r, dict) else r, out=self._out)
+ print_items([r] if isinstance(r, dict) else r, out=self)
class _optional_json(object):
def _print(self, output, print_method=print_items, **print_method_kwargs):
if self['json_output'] or self['output_format']:
- print_json(output, out=self._out)
+ print_json(output, out=self)
else:
- print_method_kwargs.setdefault('out', self._out)
+ print_method_kwargs.setdefault('out', self)
print_method(output, **print_method_kwargs)
newstr, err_counter = '', 0
for c in somestr:
try:
- newc = c.encode(encoding)
+ newc = c.decode('utf-8').encode(encoding)
newstr = '%s%s' % (newstr, newc)
except UnicodeError:
newstr = '%s%s' % (newstr, replacement)
err_counter += 1
if err_counter:
- log.debug('\t%s character%s failed to be encoded as %s' % (
+ log.warning('\t%s character%s failed to be encoded as %s' % (
err_counter, 's' if err_counter > 1 else '', encoding))
return newstr
def DontRaiseUnicodeError(foo):
+ if pref_enc.lower() == 'utf-8':
+ return foo
+
def wrap(self, *args, **kwargs):
try:
s = kwargs.pop('s')
return foo(self, *args, **kwargs)
args = args[1:]
try:
- s = s.encode(pref_enc)
+ s = (u'%s' % s).decode('utf-8').encode(pref_enc)
except UnicodeError as ue:
log.debug('Encoding(%s): %s' % (pref_enc, ue))
- s = _encode_nicely(s, pref_enc, replacement='?')
+ s = _encode_nicely(u'%s' % s, pref_enc, replacement='?')
return foo(self, s, *args, **kwargs)
return wrap
if encoding.lower() == 'utf-8':
return s
try:
- return s.encode(encoding)
+ return s.decode('utf-8').encode(encoding)
except UnicodeError as ue:
log.debug('Encoding(%s): %s' % (encoding, ue))
return _encode_nicely(s, encoding, replacement)
"""
out.write(dumps(data, indent=INDENT_TAB))
out.write('\n')
- out.flush()
def print_dict(
recursive_enumeration, recursive_enumeration, out)
else:
out.write('%s %s\n' % (print_str, v))
- out.flush()
def print_list(
if item in exclude:
continue
out.write('%s%s\n' % (print_str, item))
- out.flush()
- out.flush()
def print_items(
if not (isinstance(items, dict) or isinstance(items, list) or isinstance(
items, tuple)):
out.write('%s\n' % items)
- out.flush()
return
for i, item in enumerate(items):
print_list(item, indent=INDENT_TAB, out=out)
else:
out.write(' %s\n' % item)
- out.flush()
- out.flush()
def format_size(size, decimal_factors=False):
yep = ', '.join(true_resp)
nope = '<not %s>' % yep if 'n' in true_resp or 'N' in true_resp else 'N'
out.write('%s [%s/%s]: ' % (msg, yep, nope))
- out.flush()
user_response = user_in.readline()
return user_response[0].lower() in [s.lower() for s in true_resp]