import bt2
-def _handle_status(status, obj_name):
- if status >= 0:
- return
- else:
- raise RuntimeError('unexpected error')
-
-
def _create_from_ptr(ptr):
if ptr is None or ptr == native_bt.value_null:
return
if isinstance(value, bool):
return BoolValue(value)
- if isinstance(value, int):
+ if isinstance(value, numbers.Integral):
return SignedIntegerValue(value)
- if isinstance(value, float):
+ if isinstance(value, numbers.Real):
return RealValue(value)
if isinstance(value, str):
return StringValue(value)
- try:
- return MapValue(value)
- except:
- pass
-
- try:
+ if isinstance(value, collections.abc.Sequence):
return ArrayValue(value)
- except:
- pass
+
+ if isinstance(value, collections.abc.Mapping):
+ return MapValue(value)
raise TypeError("cannot create value object from '{}' object".format(value.__class__.__name__))
def __ne__(self, other):
return not (self == other)
- def _handle_status(self, status):
- _handle_status(status, self._NAME)
-
def _check_create_status(self, ptr):
if ptr is None:
raise bt2.CreationError(
def _set_value(self, value):
status = native_bt.value_string_set(self._ptr, self._value_to_str(value))
- self._handle_status(status)
+ utils._handle_func_status(status)
value = property(fset=_set_value)
status = native_bt.value_array_set_element_by_index(
self._ptr, index, ptr)
- self._handle_status(status)
+ utils._handle_func_status(status)
def append(self, value):
value = create_value(value)
ptr = value._ptr
status = native_bt.value_array_append_element(self._ptr, ptr)
- self._handle_status(status)
+ utils._handle_func_status(status)
def __iadd__(self, iterable):
# Python will raise a TypeError if there's anything wrong with
ptr = value._ptr
status = native_bt.value_map_insert_entry(self._ptr, key, ptr)
- self._handle_status(status)
+ utils._handle_func_status(status)
def __repr__(self):
items = ['{}: {}'.format(repr(k), repr(v)) for k, v in self.items()]