py3 does not have the unicode built-in. Instead, simply try to do the encoding
and catch failures appropriately. If it quacks like a duck...
(Note that cython apparently cheats and allows the unicode check but this is
simpler.)
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit
9bc49fefcd81fbb1c0ce62b1b81f3be420e81663)
return None
if isinstance(val, bytes):
return val
- elif isinstance(val, unicode):
- return val.encode(encoding)
else:
- raise TypeError('%s must be a string' % name)
-
+ try:
+ v = val.encode(encoding)
+ except:
+ raise TypeError('%s must be encodeable as a bytearray' % name)
+ assert isinstance(v, bytes)
+ return v
def cstr_list(list_str, name, encoding="utf-8"):
return [cstr(s, name) for s in list_str]