X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fbindings%2Fpython%2Fbt2%2Fbt2%2Ffield.py;h=bb35300c72ac5222c4e00cb39330e3c7610298cb;hb=cfbd7cf3bde05e8a6606478889dcd663604ef7b5;hp=9882f0236549a143841d299c98e72b5600bedd9b;hpb=25bb9babab83dac379726dc2de47f6023a3834e9;p=babeltrace.git diff --git a/src/bindings/python/bt2/bt2/field.py b/src/bindings/python/bt2/bt2/field.py index 9882f023..bb35300c 100644 --- a/src/bindings/python/bt2/bt2/field.py +++ b/src/bindings/python/bt2/bt2/field.py @@ -34,7 +34,8 @@ def _create_field_from_ptr(ptr, owner_ptr, owner_get_ref, owner_put_ref): utils._handle_ptr(field_class_ptr, "cannot get field object's class") typeid = native_bt.field_class_get_type(field_class_ptr) field = _TYPE_ID_TO_OBJ[typeid]._create_from_ptr_and_get_ref( - ptr, owner_ptr, owner_get_ref, owner_put_ref) + ptr, owner_ptr, owner_get_ref, owner_put_ref + ) return field @@ -42,6 +43,7 @@ def _create_field_from_ptr(ptr, owner_ptr, owner_get_ref, owner_put_ref): # currently selected field. If `field` is of any other type, return `field` # directly. + def _get_leaf_field(field): if not isinstance(field, _VariantField): return field @@ -83,7 +85,9 @@ class _NumericField(_Field): if isinstance(other, numbers.Complex): return complex(other) - raise TypeError("'{}' object is not a number object".format(other.__class__.__name__)) + raise TypeError( + "'{}' object is not a number object".format(other.__class__.__name__) + ) def __int__(self): return int(self._value) @@ -96,8 +100,11 @@ class _NumericField(_Field): def __lt__(self, other): if not isinstance(other, numbers.Number): - raise TypeError('unorderable types: {}() < {}()'.format(self.__class__.__name__, - other.__class__.__name__)) + raise TypeError( + 'unorderable types: {}() < {}()'.format( + self.__class__.__name__, other.__class__.__name__ + ) + ) return self._value < self._extract_value(other) @@ -279,8 +286,8 @@ class _EnumerationField(_IntegerField): @property def labels(self): - ret, labels = self._get_mapping_labels(self._ptr) - utils._handle_ret(ret, "cannot get label for enumeration field") + status, labels = self._get_mapping_labels(self._ptr) + utils._handle_func_status(status, "cannot get label for enumeration field") assert labels is not None return labels @@ -288,12 +295,16 @@ class _EnumerationField(_IntegerField): class _UnsignedEnumerationField(_EnumerationField, _UnsignedIntegerField): _NAME = 'Unsigned Enumeration' - _get_mapping_labels = staticmethod(native_bt.field_unsigned_enumeration_get_mapping_labels) + _get_mapping_labels = staticmethod( + native_bt.field_unsigned_enumeration_get_mapping_labels + ) class _SignedEnumerationField(_EnumerationField, _SignedIntegerField): _NAME = 'Signed Enumeration' - _get_mapping_labels = staticmethod(native_bt.field_signed_enumeration_get_mapping_labels) + _get_mapping_labels = staticmethod( + native_bt.field_signed_enumeration_get_mapping_labels + ) @functools.total_ordering @@ -345,8 +356,10 @@ class _StringField(_Field): def __iadd__(self, value): value = self._value_to_str(value) - ret = native_bt.field_string_append(self._ptr, value) - utils._handle_ret(ret, "cannot append to string field object's value") + status = native_bt.field_string_append(self._ptr, value) + utils._handle_func_status( + status, "cannot append to string field object's value" + ) return self @@ -413,14 +426,16 @@ class _StructureField(_ContainerField, collections.abc.MutableMapping): def __getitem__(self, key): utils._check_str(key) - field_ptr = native_bt.field_structure_borrow_member_field_by_name(self._ptr, key) + field_ptr = native_bt.field_structure_borrow_member_field_by_name( + self._ptr, key + ) if field_ptr is None: raise KeyError(key) - return _create_field_from_ptr(field_ptr, self._owner_ptr, - self._owner_get_ref, - self._owner_put_ref) + return _create_field_from_ptr( + field_ptr, self._owner_ptr, self._owner_get_ref, self._owner_put_ref + ) def member_at_index(self, index): utils._check_uint64(index) @@ -428,11 +443,13 @@ class _StructureField(_ContainerField, collections.abc.MutableMapping): if index >= len(self): raise IndexError - field_ptr = native_bt.field_structure_borrow_member_field_by_index(self._ptr, index) + field_ptr = native_bt.field_structure_borrow_member_field_by_index( + self._ptr, index + ) assert field_ptr is not None - return _create_field_from_ptr(field_ptr, self._owner_ptr, - self._owner_get_ref, - self._owner_put_ref) + return _create_field_from_ptr( + field_ptr, self._owner_ptr, self._owner_get_ref, self._owner_put_ref + ) class _VariantField(_ContainerField, _Field): @@ -444,16 +461,16 @@ class _VariantField(_ContainerField, _Field): @selected_option_index.setter def selected_option_index(self, index): - native_bt.field_variant_select_option_field(self._ptr, index) + native_bt.field_variant_select_option_field_by_index(self._ptr, index) @property def selected_option(self): field_ptr = native_bt.field_variant_borrow_selected_option_field(self._ptr) utils._handle_ptr(field_ptr, "cannot get variant field's selected option") - return _create_field_from_ptr(field_ptr, self._owner_ptr, - self._owner_get_ref, - self._owner_put_ref) + return _create_field_from_ptr( + field_ptr, self._owner_ptr, self._owner_get_ref, self._owner_put_ref + ) def _spec_eq(self, other): return _get_leaf_field(self) == other @@ -481,24 +498,26 @@ class _ArrayField(_ContainerField, _Field, collections.abc.MutableSequence): def __getitem__(self, index): if not isinstance(index, numbers.Integral): - raise TypeError("'{}' is not an integral number object: invalid index".format(index.__class__.__name__)) + raise TypeError( + "'{}' is not an integral number object: invalid index".format( + index.__class__.__name__ + ) + ) index = int(index) if index < 0 or index >= len(self): raise IndexError('{} field object index is out of range'.format(self._NAME)) - field_ptr = native_bt.field_array_borrow_element_field_by_index(self._ptr, index) - assert(field_ptr) - return _create_field_from_ptr(field_ptr, self._owner_ptr, - self._owner_get_ref, - self._owner_put_ref) + field_ptr = native_bt.field_array_borrow_element_field_by_index( + self._ptr, index + ) + assert field_ptr + return _create_field_from_ptr( + field_ptr, self._owner_ptr, self._owner_get_ref, self._owner_put_ref + ) def __setitem__(self, index, value): - # we can only set numbers and strings - if not isinstance(value, (numbers.Number, _StringField, str)): - raise TypeError('expecting number or string object') - # raises if index is somehow invalid field = self[index] @@ -538,8 +557,7 @@ class _StaticArrayField(_ArrayField, _Field): def _set_value(self, values): if len(self) != len(values): - raise ValueError( - 'expected length of value and array field to match') + raise ValueError('expected length of value and array field to match') for index, value in enumerate(values): if value is not None: @@ -556,8 +574,8 @@ class _DynamicArrayField(_ArrayField, _Field): def _set_length(self, length): utils._check_uint64(length) - ret = native_bt.field_dynamic_array_set_length(self._ptr, length) - utils._handle_ret(ret, "cannot set dynamic array length") + status = native_bt.field_dynamic_array_set_length(self._ptr, length) + utils._handle_func_status(status, "cannot set dynamic array length") length = property(fget=_ArrayField._get_length, fset=_set_length) @@ -582,5 +600,7 @@ _TYPE_ID_TO_OBJ = { native_bt.FIELD_CLASS_TYPE_STRUCTURE: _StructureField, native_bt.FIELD_CLASS_TYPE_STATIC_ARRAY: _StaticArrayField, native_bt.FIELD_CLASS_TYPE_DYNAMIC_ARRAY: _DynamicArrayField, - native_bt.FIELD_CLASS_TYPE_VARIANT: _VariantField, + native_bt.FIELD_CLASS_TYPE_VARIANT_WITHOUT_SELECTOR: _VariantField, + native_bt.FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_SELECTOR: _VariantField, + native_bt.FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_SELECTOR: _VariantField, }