X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fbindings%2Fpython%2Fbt2%2Fbt2%2Ffield.py;h=b3bdcd54a3ad7984ec13c6bce8ccb52f813fc603;hb=5995b304e5601bf9b97ffa661b21874bec6c0e3a;hp=7228db92b8f572eef51c4c137fb35ca720f15aca;hpb=81b8fa4490092c27f40470f1f50a925f768b7b83;p=babeltrace.git diff --git a/src/bindings/python/bt2/bt2/field.py b/src/bindings/python/bt2/bt2/field.py index 7228db92..b3bdcd54 100644 --- a/src/bindings/python/bt2/bt2/field.py +++ b/src/bindings/python/bt2/bt2/field.py @@ -1,37 +1,21 @@ -# The MIT License (MIT) +# SPDX-License-Identifier: MIT # # Copyright (c) 2017 Philippe Proulx -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -from bt2 import native_bt, object, utils -from bt2 import field_class as bt2_field_class -import collections.abc -import functools -import numbers + import math +import numbers +import functools +import collections.abc + +from bt2 import utils as bt2_utils +from bt2 import object as bt2_object +from bt2 import native_bt +from bt2 import field_class as bt2_field_class def _create_field_from_ptr_template( object_map, ptr, owner_ptr, owner_get_ref, owner_put_ref ): - field_class_ptr = native_bt.field_borrow_class_const(ptr) typeid = native_bt.field_class_get_type(field_class_ptr) field = object_map[typeid]._create_from_ptr_and_get_ref( @@ -68,7 +52,7 @@ def _get_leaf_field(field): return field -class _FieldConst(object._UniqueObject): +class _FieldConst(bt2_object._UniqueObject): _create_field_from_ptr = staticmethod(_create_field_from_const_ptr) _create_field_class_from_ptr_and_get_ref = staticmethod( bt2_field_class._create_field_class_from_const_ptr_and_get_ref @@ -101,7 +85,7 @@ class _Field(_FieldConst): class _BitArrayFieldConst(_FieldConst): - _NAME = 'Const bit array' + _NAME = "Const bit array" @property def value_as_integer(self): @@ -124,10 +108,10 @@ class _BitArrayFieldConst(_FieldConst): class _BitArrayField(_BitArrayFieldConst, _Field): - _NAME = 'Bit array' + _NAME = "Bit array" def _value_as_integer(self, value): - utils._check_uint64(value) + bt2_utils._check_uint64(value) native_bt.field_bit_array_set_value_as_integer(self._ptr, value) value_as_integer = property( @@ -167,7 +151,7 @@ class _NumericFieldConst(_FieldConst): def __lt__(self, other): if not isinstance(other, numbers.Number): raise TypeError( - 'unorderable types: {}() < {}()'.format( + "unorderable types: {}() < {}()".format( self.__class__.__name__, other.__class__.__name__ ) ) @@ -248,7 +232,7 @@ class _NumericField(_NumericFieldConst, _Field): def __hash__(self): # Non const field are not hashable as their value may be modified # without changing the underlying Python object. - raise TypeError('unhashable type: \'{}\''.format(self._NAME)) + raise TypeError("unhashable type: '{}'".format(self._NAME)) class _IntegralFieldConst(_NumericFieldConst, numbers.Integral): @@ -291,7 +275,7 @@ class _IntegralField(_IntegralFieldConst, _NumericField): class _BoolFieldConst(_IntegralFieldConst, _FieldConst): - _NAME = 'Const boolean' + _NAME = "Const boolean" def __bool__(self): return self._value @@ -316,7 +300,7 @@ class _BoolFieldConst(_IntegralFieldConst, _FieldConst): class _BoolField(_BoolFieldConst, _IntegralField, _Field): - _NAME = 'Boolean' + _NAME = "Boolean" def _set_value(self, value): value = self._value_to_bool(value) @@ -340,12 +324,12 @@ class _IntegerField(_IntegerFieldConst, _IntegralField, _Field): class _UnsignedIntegerFieldConst(_IntegerFieldConst, _FieldConst): - _NAME = 'Const unsigned integer' + _NAME = "Const unsigned integer" @classmethod def _value_to_int(cls, value): if not isinstance(value, numbers.Integral): - raise TypeError('expecting an integral number object') + raise TypeError("expecting an integral number object") return int(value) @@ -355,7 +339,7 @@ class _UnsignedIntegerFieldConst(_IntegerFieldConst, _FieldConst): class _UnsignedIntegerField(_UnsignedIntegerFieldConst, _IntegerField, _Field): - _NAME = 'Unsigned integer' + _NAME = "Unsigned integer" def _set_value(self, value): value = self._value_to_int(value) @@ -372,16 +356,16 @@ class _UnsignedIntegerField(_UnsignedIntegerFieldConst, _IntegerField, _Field): @property def _upper_bound(self): - return (2 ** self.cls.field_value_range) - 1 + return (2**self.cls.field_value_range) - 1 class _SignedIntegerFieldConst(_IntegerFieldConst, _FieldConst): - _NAME = 'Const signed integer' + _NAME = "Const signed integer" @classmethod def _value_to_int(cls, value): if not isinstance(value, numbers.Integral): - raise TypeError('expecting an integral number object') + raise TypeError("expecting an integral number object") return int(value) @@ -391,7 +375,7 @@ class _SignedIntegerFieldConst(_IntegerFieldConst, _FieldConst): class _SignedIntegerField(_SignedIntegerFieldConst, _IntegerField, _Field): - _NAME = 'Signed integer' + _NAME = "Signed integer" def _set_value(self, value): value = self._value_to_int(value) @@ -412,7 +396,7 @@ class _SignedIntegerField(_SignedIntegerFieldConst, _IntegerField, _Field): class _RealFieldConst(_NumericFieldConst, numbers.Real): - _NAME = 'Const real' + _NAME = "Const real" @classmethod def _value_to_float(cls, value): @@ -423,7 +407,7 @@ class _RealFieldConst(_NumericFieldConst, numbers.Real): class _SinglePrecisionRealFieldConst(_RealFieldConst): - _NAME = 'Const single-precision real' + _NAME = "Const single-precision real" @property def _value(self): @@ -431,7 +415,7 @@ class _SinglePrecisionRealFieldConst(_RealFieldConst): class _DoublePrecisionRealFieldConst(_RealFieldConst): - _NAME = 'Const double-precision real' + _NAME = "Const double-precision real" @property def _value(self): @@ -439,11 +423,11 @@ class _DoublePrecisionRealFieldConst(_RealFieldConst): class _RealField(_RealFieldConst, _NumericField): - _NAME = 'Real' + _NAME = "Real" class _SinglePrecisionRealField(_SinglePrecisionRealFieldConst, _RealField): - _NAME = 'Single-precision real' + _NAME = "Single-precision real" def _set_value(self, value): value = self._value_to_float(value) @@ -453,7 +437,7 @@ class _SinglePrecisionRealField(_SinglePrecisionRealFieldConst, _RealField): class _DoublePrecisionRealField(_DoublePrecisionRealFieldConst, _RealField): - _NAME = 'Double-precision real' + _NAME = "Double-precision real" def _set_value(self, value): value = self._value_to_float(value) @@ -464,12 +448,12 @@ class _DoublePrecisionRealField(_DoublePrecisionRealFieldConst, _RealField): class _EnumerationFieldConst(_IntegerFieldConst): def _repr(self): - return '{} ({})'.format(self._value, ', '.join(self.labels)) + return "{} ({})".format(self._value, ", ".join(self.labels)) @property def labels(self): status, labels = self._get_mapping_labels(self._ptr) - utils._handle_func_status(status, "cannot get label for enumeration field") + bt2_utils._handle_func_status(status, "cannot get label for enumeration field") assert labels is not None return labels @@ -482,7 +466,7 @@ class _EnumerationField(_EnumerationFieldConst, _IntegerField): class _UnsignedEnumerationFieldConst( _EnumerationFieldConst, _UnsignedIntegerFieldConst ): - _NAME = 'Const unsigned Enumeration' + _NAME = "Const unsigned Enumeration" _get_mapping_labels = staticmethod( native_bt.field_enumeration_unsigned_get_mapping_labels ) @@ -491,11 +475,11 @@ class _UnsignedEnumerationFieldConst( class _UnsignedEnumerationField( _UnsignedEnumerationFieldConst, _EnumerationField, _UnsignedIntegerField ): - _NAME = 'Unsigned enumeration' + _NAME = "Unsigned enumeration" class _SignedEnumerationFieldConst(_EnumerationFieldConst, _SignedIntegerFieldConst): - _NAME = 'Const signed Enumeration' + _NAME = "Const signed Enumeration" _get_mapping_labels = staticmethod( native_bt.field_enumeration_signed_get_mapping_labels ) @@ -504,12 +488,12 @@ class _SignedEnumerationFieldConst(_EnumerationFieldConst, _SignedIntegerFieldCo class _SignedEnumerationField( _SignedEnumerationFieldConst, _EnumerationField, _SignedIntegerField ): - _NAME = 'Signed enumeration' + _NAME = "Signed enumeration" @functools.total_ordering class _StringFieldConst(_FieldConst): - _NAME = 'Const string' + _NAME = "Const string" @classmethod def _value_to_str(cls, value): @@ -554,7 +538,7 @@ class _StringFieldConst(_FieldConst): class _StringField(_StringFieldConst, _Field): - _NAME = 'String' + _NAME = "String" def _set_value(self, value): value = self._value_to_str(value) @@ -565,7 +549,7 @@ class _StringField(_StringFieldConst, _Field): def __iadd__(self, value): value = self._value_to_str(value) status = native_bt.field_string_append(self._ptr, value) - utils._handle_func_status( + bt2_utils._handle_func_status( status, "cannot append to string field object's value" ) return self @@ -573,7 +557,7 @@ class _StringField(_StringFieldConst, _Field): def __hash__(self): # Non const field are not hashable as their value may be modified # without changing the underlying Python object. - raise TypeError('unhashable type: \'{}\''.format(self._NAME)) + raise TypeError("unhashable type: '{}'".format(self._NAME)) class _ContainerFieldConst(_FieldConst): @@ -593,7 +577,7 @@ class _ContainerFieldConst(_FieldConst): def __setitem__(self, index, value): raise TypeError( - '\'{}\' object does not support item assignment'.format(self.__class__) + "'{}' object does not support item assignment".format(self.__class__) ) @@ -602,7 +586,7 @@ class _ContainerField(_ContainerFieldConst, _Field): class _StructureFieldConst(_ContainerFieldConst, collections.abc.Mapping): - _NAME = 'Const structure' + _NAME = "Const structure" _borrow_member_field_ptr_by_index = staticmethod( native_bt.field_structure_borrow_member_field_by_index_const ) @@ -635,11 +619,11 @@ class _StructureFieldConst(_ContainerFieldConst, collections.abc.Mapping): return True def _repr(self): - items = ['{}: {}'.format(repr(k), repr(v)) for k, v in self.items()] - return '{{{}}}'.format(', '.join(items)) + items = ["{}: {}".format(repr(k), repr(v)) for k, v in self.items()] + return "{{{}}}".format(", ".join(items)) def __getitem__(self, key): - utils._check_str(key) + bt2_utils._check_str(key) field_ptr = self._borrow_member_field_ptr_by_name(self._ptr, key) if field_ptr is None: @@ -650,7 +634,7 @@ class _StructureFieldConst(_ContainerFieldConst, collections.abc.Mapping): ) def member_at_index(self, index): - utils._check_uint64(index) + bt2_utils._check_uint64(index) if index >= len(self): raise IndexError @@ -664,7 +648,7 @@ class _StructureFieldConst(_ContainerFieldConst, collections.abc.Mapping): class _StructureField( _StructureFieldConst, _ContainerField, collections.abc.MutableMapping ): - _NAME = 'Structure' + _NAME = "Structure" _borrow_member_field_ptr_by_index = staticmethod( native_bt.field_structure_borrow_member_field_by_index ) @@ -691,7 +675,7 @@ class _StructureField( class _OptionFieldConst(_FieldConst): - _NAME = 'Const option' + _NAME = "Const option" _borrow_field_ptr = staticmethod(native_bt.field_option_borrow_field_const) @property @@ -723,11 +707,11 @@ class _OptionFieldConst(_FieldConst): class _OptionField(_OptionFieldConst, _Field): - _NAME = 'Option' + _NAME = "Option" _borrow_field_ptr = staticmethod(native_bt.field_option_borrow_field) def _has_field(self, value): - utils._check_bool(value) + bt2_utils._check_bool(value) native_bt.field_option_set_has_field(self._ptr, value) has_field = property(fget=_OptionFieldConst.has_field.fget, fset=_has_field) @@ -742,7 +726,7 @@ class _OptionField(_OptionFieldConst, _Field): class _VariantFieldConst(_ContainerFieldConst, _FieldConst): - _NAME = 'Const variant' + _NAME = "Const variant" _borrow_selected_option_field_ptr = staticmethod( native_bt.field_variant_borrow_selected_option_field_const ) @@ -752,7 +736,7 @@ class _VariantFieldConst(_ContainerFieldConst, _FieldConst): @property def selected_option_index(self): - return native_bt.field_variant_get_selected_option_field_index(self._ptr) + return native_bt.field_variant_get_selected_option_index(self._ptr) @property def selected_option(self): @@ -779,16 +763,16 @@ class _VariantFieldConst(_ContainerFieldConst, _FieldConst): class _VariantField(_VariantFieldConst, _ContainerField, _Field): - _NAME = 'Variant' + _NAME = "Variant" _borrow_selected_option_field_ptr = staticmethod( native_bt.field_variant_borrow_selected_option_field ) def _selected_option_index(self, index): if index < 0 or index >= len(self): - raise IndexError('{} field object index is out of range'.format(self._NAME)) + raise IndexError("{} field object index is out of range".format(self._NAME)) - native_bt.field_variant_select_option_field_by_index(self._ptr, index) + native_bt.field_variant_select_option_by_index(self._ptr, index) selected_option_index = property( fget=_VariantFieldConst.selected_option_index.fget, fset=_selected_option_index @@ -821,7 +805,7 @@ class _ArrayFieldConst(_ContainerFieldConst, _FieldConst, collections.abc.Sequen index = int(index) if index < 0 or index >= len(self): - raise IndexError('{} field object index is out of range'.format(self._NAME)) + raise IndexError("{} field object index is out of range".format(self._NAME)) field_ptr = self._borrow_element_field_ptr_by_index(self._ptr, index) assert field_ptr @@ -847,7 +831,7 @@ class _ArrayFieldConst(_ContainerFieldConst, _FieldConst, collections.abc.Sequen return True def _repr(self): - return '[{}]'.format(', '.join([repr(v) for v in self])) + return "[{}]".format(", ".join([repr(v) for v in self])) class _ArrayField( @@ -862,7 +846,7 @@ class _ArrayField( field = self[index] if not isinstance(field, (_NumericField, _StringField)): - raise TypeError('can only set the value of a number or string field') + raise TypeError("can only set the value of a number or string field") # the field's property does the appropriate conversion or raises # the appropriate exception @@ -870,19 +854,19 @@ class _ArrayField( class _StaticArrayFieldConst(_ArrayFieldConst, _FieldConst): - _NAME = 'Const static array' + _NAME = "Const static array" def _count(self): return native_bt.field_array_get_length(self._ptr) class _StaticArrayField(_StaticArrayFieldConst, _ArrayField, _Field): - _NAME = 'Static array' + _NAME = "Static array" def _set_value(self, values): if len(self) != len(values): raise ValueError( - 'expected length of value ({}) and array field ({}) to match'.format( + "expected length of value ({}) and array field ({}) to match".format( len(values), len(self) ) ) @@ -895,19 +879,19 @@ class _StaticArrayField(_StaticArrayFieldConst, _ArrayField, _Field): class _DynamicArrayFieldConst(_ArrayFieldConst, _FieldConst): - _NAME = 'Const dynamic array' + _NAME = "Const dynamic array" def _count(self): return self.length class _DynamicArrayField(_DynamicArrayFieldConst, _ArrayField, _Field): - _NAME = 'Dynamic array' + _NAME = "Dynamic array" def _set_length(self, length): - utils._check_uint64(length) + bt2_utils._check_uint64(length) status = native_bt.field_array_dynamic_set_length(self._ptr, length) - utils._handle_func_status(status, "cannot set dynamic array length") + bt2_utils._handle_func_status(status, "cannot set dynamic array length") length = property(fget=_ArrayField._get_length, fset=_set_length) @@ -936,13 +920,13 @@ _TYPE_ID_TO_CONST_OBJ = { native_bt.FIELD_CLASS_TYPE_STATIC_ARRAY: _StaticArrayFieldConst, native_bt.FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITHOUT_LENGTH_FIELD: _DynamicArrayFieldConst, native_bt.FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITH_LENGTH_FIELD: _DynamicArrayFieldConst, - native_bt.FIELD_CLASS_TYPE_OPTION_WITHOUT_SELECTOR: _OptionFieldConst, - native_bt.FIELD_CLASS_TYPE_OPTION_WITH_BOOL_SELECTOR: _OptionFieldConst, - native_bt.FIELD_CLASS_TYPE_OPTION_WITH_UNSIGNED_INTEGER_SELECTOR: _OptionFieldConst, - native_bt.FIELD_CLASS_TYPE_OPTION_WITH_SIGNED_INTEGER_SELECTOR: _OptionFieldConst, - native_bt.FIELD_CLASS_TYPE_VARIANT_WITHOUT_SELECTOR: _VariantFieldConst, - native_bt.FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR: _VariantFieldConst, - native_bt.FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_INTEGER_SELECTOR: _VariantFieldConst, + native_bt.FIELD_CLASS_TYPE_OPTION_WITHOUT_SELECTOR_FIELD: _OptionFieldConst, + native_bt.FIELD_CLASS_TYPE_OPTION_WITH_BOOL_SELECTOR_FIELD: _OptionFieldConst, + native_bt.FIELD_CLASS_TYPE_OPTION_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD: _OptionFieldConst, + native_bt.FIELD_CLASS_TYPE_OPTION_WITH_SIGNED_INTEGER_SELECTOR_FIELD: _OptionFieldConst, + native_bt.FIELD_CLASS_TYPE_VARIANT_WITHOUT_SELECTOR_FIELD: _VariantFieldConst, + native_bt.FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD: _VariantFieldConst, + native_bt.FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_INTEGER_SELECTOR_FIELD: _VariantFieldConst, } _TYPE_ID_TO_OBJ = { @@ -959,11 +943,11 @@ _TYPE_ID_TO_OBJ = { native_bt.FIELD_CLASS_TYPE_STATIC_ARRAY: _StaticArrayField, native_bt.FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITHOUT_LENGTH_FIELD: _DynamicArrayField, native_bt.FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITH_LENGTH_FIELD: _DynamicArrayField, - native_bt.FIELD_CLASS_TYPE_OPTION_WITHOUT_SELECTOR: _OptionField, - native_bt.FIELD_CLASS_TYPE_OPTION_WITH_BOOL_SELECTOR: _OptionField, - native_bt.FIELD_CLASS_TYPE_OPTION_WITH_UNSIGNED_INTEGER_SELECTOR: _OptionField, - native_bt.FIELD_CLASS_TYPE_OPTION_WITH_SIGNED_INTEGER_SELECTOR: _OptionField, - native_bt.FIELD_CLASS_TYPE_VARIANT_WITHOUT_SELECTOR: _VariantField, - native_bt.FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR: _VariantField, - native_bt.FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_INTEGER_SELECTOR: _VariantField, + native_bt.FIELD_CLASS_TYPE_OPTION_WITHOUT_SELECTOR_FIELD: _OptionField, + native_bt.FIELD_CLASS_TYPE_OPTION_WITH_BOOL_SELECTOR_FIELD: _OptionField, + native_bt.FIELD_CLASS_TYPE_OPTION_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD: _OptionField, + native_bt.FIELD_CLASS_TYPE_OPTION_WITH_SIGNED_INTEGER_SELECTOR_FIELD: _OptionField, + native_bt.FIELD_CLASS_TYPE_VARIANT_WITHOUT_SELECTOR_FIELD: _VariantField, + native_bt.FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD: _VariantField, + native_bt.FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_INTEGER_SELECTOR_FIELD: _VariantField, }