+# SPDX-License-Identifier: MIT
+#
+# Copyright (c) 2019 Simon Marchi <simon.marchi@efficios.com>
+
from bt2 import native_bt
from collections import abc
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):
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
return len(self._causes)
def __str__(self):
- s = self._msg + '\n'
- for c in reversed(self):
- s += str(c) + '\n'
- return s
+ return self._str