2
STRING_TYPES = (str, unicode)
3
except NameError: #pragma NO COVER Python >= 3.0
8
except NameError: #pragma NO COVER Python >= 3.0
11
else: #pragma NO COVER Python < 3.0
15
from StringIO import StringIO
16
except ImportError: #pragma NO COVER Python >= 3.0
17
from io import StringIO
18
from io import BytesIO
19
else: #pragma NO COVER Python < 3.0
23
def must_decode(value): #pragma NO COVER
24
if type(value) is bytes:
26
return value.decode('utf-8')
27
except UnicodeDecodeError:
28
return value.decode('latin1')
31
def must_encode(value): #pragma NO COVER
33
return value.encode('utf-8')