From c72a6a4866f307a54e6784e66f6a5def7a397515 Mon Sep 17 00:00:00 2001 From: Xinyu Li Date: Mon, 22 Jan 2024 11:27:47 -0800 Subject: [PATCH 1/2] type check for bool on param --- python/ionpy/Param.py | 20 ++++++++++++-------- python/test/test_param.py | 9 +++++++-- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/python/ionpy/Param.py b/python/ionpy/Param.py index 84156ced..f98981ad 100644 --- a/python/ionpy/Param.py +++ b/python/ionpy/Param.py @@ -10,20 +10,24 @@ class Param: def __init__(self, - key: Optional[str] = None, - val: Any = None, - # -- or - obj_: Optional[c_ion_param_t] = None, - ): + key: Optional[str] = None, + val: Any = None, + # -- or + obj_: Optional[c_ion_param_t] = None, + ): if obj_ is None: obj_ = c_ion_param_t() - - ret = ion_param_create(ctypes.byref(obj_), key.encode(), str(val).lower().encode()) + if isinstance(val, bool): + if val: + val = "true" + else: + val = "false" + ret = ion_param_create(ctypes.byref(obj_), key.encode(), str(val).encode()) if ret != 0: raise Exception('Invalid operation') self.obj = obj_ def __del__(self): - if self.obj: # check not nullptr + if self.obj: # check not nullptr ion_param_destroy(self.obj) diff --git a/python/test/test_param.py b/python/test/test_param.py index 4d47be9b..8ec1b0de 100644 --- a/python/test/test_param.py +++ b/python/test/test_param.py @@ -2,5 +2,10 @@ def test_param(): - p = Param(key='iamkey', val='iamval') - print(p) + + p1 = Param(key='iamkey1', val="IAMKEY") # 'IAMKEY' + p2 = Param(key='iamkey2', val="iamkey") # 'iamkey' + p3 = Param(key='iamkey3', val=1) # '1' + p4 = Param(key='iamkey4', val=0.1) # '0.1' + p5 = Param(key='iamkey5', val=True) # 'true' + p6 = Param(key='iamkey6', val=False) # 'false' From b32a972929195533927f8604479c210ca7bb46f9 Mon Sep 17 00:00:00 2001 From: Xinyu Li Date: Mon, 22 Jan 2024 11:32:02 -0800 Subject: [PATCH 2/2] clang format --- python/ionpy/Param.py | 12 ++++++------ python/test/test_param.py | 1 - 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/python/ionpy/Param.py b/python/ionpy/Param.py index f98981ad..e305e2b8 100644 --- a/python/ionpy/Param.py +++ b/python/ionpy/Param.py @@ -10,11 +10,11 @@ class Param: def __init__(self, - key: Optional[str] = None, - val: Any = None, - # -- or - obj_: Optional[c_ion_param_t] = None, - ): + key: Optional[str] = None, + val: Any = None, + # -- or + obj_: Optional[c_ion_param_t] = None, + ): if obj_ is None: obj_ = c_ion_param_t() if isinstance(val, bool): @@ -29,5 +29,5 @@ def __init__(self, self.obj = obj_ def __del__(self): - if self.obj: # check not nullptr + if self.obj: # check not nullptr ion_param_destroy(self.obj) diff --git a/python/test/test_param.py b/python/test/test_param.py index 8ec1b0de..39ad450c 100644 --- a/python/test/test_param.py +++ b/python/test/test_param.py @@ -2,7 +2,6 @@ def test_param(): - p1 = Param(key='iamkey1', val="IAMKEY") # 'IAMKEY' p2 = Param(key='iamkey2', val="iamkey") # 'iamkey' p3 = Param(key='iamkey3', val=1) # '1'