From 9bc49fefcd81fbb1c0ce62b1b81f3be420e81663 Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Tue, 18 Jun 2019 20:38:26 -0700 Subject: [PATCH] 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 --- src/pybind/cephfs/cephfs.pyx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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] -- 2.47.3