| Index: recipe_engine/util.py
|
| diff --git a/recipe_engine/util.py b/recipe_engine/util.py
|
| index e7497073fab6b4d9dbfbe56da10fc497ef621d5a..a0b1673005daf0d1031c06c833780abca4252345 100644
|
| --- a/recipe_engine/util.py
|
| +++ b/recipe_engine/util.py
|
| @@ -309,3 +309,19 @@ def map_defer_exceptions(fn, it, *exc_types):
|
| with mexc_builder.catch(*exc_types):
|
| fn(e)
|
| mexc_builder.raise_if_any()
|
| +
|
| +def strip_unicode(obj):
|
| + """Recursively re-encodes strings as utf-8 inside |obj|. Returns the result.
|
| + """
|
| + if isinstance(obj, unicode):
|
| + return obj.encode('utf-8', 'replace')
|
| +
|
| + if isinstance(obj, list):
|
| + return map(strip_unicode, obj)
|
| +
|
| + if isinstance(obj, dict):
|
| + new_obj = type(obj)(
|
| + (strip_unicode(k), strip_unicode(v)) for k, v in obj.iteritems() )
|
| + return new_obj
|
| +
|
| + return obj
|
|
|