pybind/cephfs: avoid unicode check

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>
This commit is contained in:
Patrick Donnelly 2019-06-18 20:38:26 -07:00
parent 753da4ec7b
commit 9bc49fefcd
No known key found for this signature in database
GPG Key ID: 3A2A7E25BEA8AADB

View File

@ -293,11 +293,13 @@ def cstr(val, name, encoding="utf-8", opt=False):
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]