X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fbindings%2Fpython%2Fbt2%2Fbt2%2Ferror.py;h=a067345187c3a646d35f1dc5eda93ebc66ce2b33;hb=776a2a252c9875caa1e8b4f41cb8cc12c79611c3;hp=7fd4648246d34685232c52385fc63fdbafe2c9ef;hpb=ce4923b0c7a2de36eba95725334d251e9aa08aad;p=babeltrace.git diff --git a/src/bindings/python/bt2/bt2/error.py b/src/bindings/python/bt2/bt2/error.py index 7fd46482..a0673451 100644 --- a/src/bindings/python/bt2/bt2/error.py +++ b/src/bindings/python/bt2/bt2/error.py @@ -1,4 +1,8 @@ -from bt2 import utils, native_bt +# SPDX-License-Identifier: MIT +# +# Copyright (c) 2019 Simon Marchi + +from bt2 import native_bt from collections import abc @@ -26,11 +30,10 @@ class _ErrorCause: self._module_name = native_bt.error_cause_get_module_name(ptr) self._file_name = native_bt.error_cause_get_file_name(ptr) self._line_number = native_bt.error_cause_get_line_number(ptr) + self._str = native_bt.bt2_format_bt_error_cause(ptr) def __str__(self): - s = '[{}] ({}:{})\n'.format(self.module_name, self.file_name, self.line_number) - s += self.message - return s + return self._str @property def message(self): @@ -55,11 +58,11 @@ class _ComponentErrorCause(_ErrorCause): self._component_name = native_bt.error_cause_component_actor_get_component_name( ptr ) - self._component_class_type = native_bt.error_cause_component_actor_get_component_class_type( - ptr + self._component_class_type = ( + native_bt.error_cause_component_actor_get_component_class_type(ptr) ) - self._component_class_name = native_bt.error_cause_component_actor_get_component_class_name( - ptr + self._component_class_name = ( + native_bt.error_cause_component_actor_get_component_class_name(ptr) ) self._plugin_name = native_bt.error_cause_component_actor_get_plugin_name(ptr) @@ -83,11 +86,11 @@ class _ComponentErrorCause(_ErrorCause): class _ComponentClassErrorCause(_ErrorCause): def __init__(self, ptr): super().__init__(ptr) - self._component_class_type = native_bt.error_cause_component_class_actor_get_component_class_type( - ptr + self._component_class_type = ( + native_bt.error_cause_component_class_actor_get_component_class_type(ptr) ) - self._component_class_name = native_bt.error_cause_component_class_actor_get_component_class_name( - ptr + self._component_class_name = ( + native_bt.error_cause_component_class_actor_get_component_class_name(ptr) ) self._plugin_name = native_bt.error_cause_component_class_actor_get_plugin_name( ptr @@ -109,20 +112,22 @@ class _ComponentClassErrorCause(_ErrorCause): class _MessageIteratorErrorCause(_ErrorCause): def __init__(self, ptr): super().__init__(ptr) - self._component_name = native_bt.error_cause_message_iterator_actor_get_component_name( - ptr + self._component_name = ( + native_bt.error_cause_message_iterator_actor_get_component_name(ptr) ) - self._component_output_port_name = native_bt.error_cause_message_iterator_actor_get_component_output_port_name( - ptr + self._component_output_port_name = ( + native_bt.error_cause_message_iterator_actor_get_component_output_port_name( + ptr + ) ) - self._component_class_type = native_bt.error_cause_message_iterator_actor_get_component_class_type( - ptr + self._component_class_type = ( + native_bt.error_cause_message_iterator_actor_get_component_class_type(ptr) ) - self._component_class_name = native_bt.error_cause_message_iterator_actor_get_component_class_name( - ptr + self._component_class_name = ( + native_bt.error_cause_message_iterator_actor_get_component_class_name(ptr) ) - self._plugin_name = native_bt.error_cause_message_iterator_actor_get_plugin_name( - ptr + self._plugin_name = ( + native_bt.error_cause_message_iterator_actor_get_plugin_name(ptr) ) @property @@ -154,7 +159,7 @@ _ACTOR_TYPE_TO_CLS = { } -class Error(Exception, abc.Sequence): +class _Error(Exception, abc.Sequence): """ Babeltrace API call error. @@ -162,12 +167,15 @@ class Error(Exception, abc.Sequence): the ERROR or MEMORY_ERROR status codes. """ - def __init__(self, msg, ptr=None): + def __init__(self, msg): super().__init__(msg) # Steal the current thread's error. self._ptr = native_bt.current_thread_take_error() assert self._ptr is not None + self._msg = msg + self._str = msg + '\n' + native_bt.bt2_format_bt_error(self._ptr) + # Read everything we might need from the error pointer, so we don't # depend on it. It's possible for the user to keep an Error object # and to want to read its causes after the error pointer has been @@ -208,3 +216,6 @@ class Error(Exception, abc.Sequence): def __len__(self): return len(self._causes) + + def __str__(self): + return self._str