py3: recursive forcing to unicode missed converting set()

This resulted in e.g. ebook-convert-complete still storing most formats
in msgpack as bytestrings, and therefore not being completed.
This commit is contained in:
Eli Schwartz 2019-05-17 17:11:45 -04:00
parent b7d2c4b502
commit 09b4218b83
No known key found for this signature in database
GPG Key ID: CEB167EFB5722BD6

View File

@ -38,12 +38,12 @@ def as_unicode(x, encoding='utf-8', errors='strict'):
def only_unicode_recursive(x, encoding='utf-8', errors='strict'):
# Convert any bytestrings in lists/tuples/dicts to unicode
# Convert any bytestrings in sets/lists/tuples/dicts to unicode
if isinstance(x, bytes):
return x.decode(encoding, errors)
if isinstance(x, unicode_type):
return x
if isinstance(x, (list, tuple)):
if isinstance(x, (set, list, tuple)):
return type(x)(only_unicode_recursive(i, encoding, errors) for i in x)
if isinstance(x, dict):
return {only_unicode_recursive(k, encoding, errors): only_unicode_recursive(v, encoding, errors) for k, v in iteritems(x)}