From: Patrick Donnelly Date: Wed, 19 Jun 2019 03:38:26 +0000 (-0700) Subject: pybind/cephfs: avoid unicode check X-Git-Tag: v15.1.0~2401^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9bc49fefcd81fbb1c0ce62b1b81f3be420e81663;p=ceph.git 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 --- diff --git a/src/pybind/cephfs/cephfs.pyx b/src/pybind/cephfs/cephfs.pyx index 98932fb9e9d5..68da6a1934fe 100644 --- a/src/pybind/cephfs/cephfs.pyx +++ b/src/pybind/cephfs/cephfs.pyx @@ -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]