It is possible that a user component class's docstring has no lines or a
single one, for example:
# no line
class MySink(bt2._UserSinkComponent):
""""""
def _user_consume(self):
pass
# single line
class MySink(bt2._UserSinkComponent):
"""The single line"""
def _user_consume(self):
pass
The previous version of _trim_docstring() expects this format:
class MySink(bt2._UserSinkComponent):
"""
My sink's description
Dolore officia ex et aliquip eiusmod enim pariatur reprehenderit
ad adipisicing non occaecat ullamco aliquip laborum duis
proident ex duis.
Irure commodo proident esse non pariatur in aute cillum id aute.
"""
def _user_consume(self):
pass
In _trim_docstring(), accept no lines or a single one.
Adding new tests to `test_component_class.py` to validate this
behaviour. The
# fmt: off
"""
"""
# fmt: on
docstring has off/on formatting markers as Black 20.8b1 transforms this
into the non-equivalent
""""""
(which is another test now).
In addition, reformat Python files with Black v20.8b1, so that the
pylint CI job passes.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Change-Id: Ia12b0e9bfd4d1e1aaa86f0c8c207c3c1535f5c3e
Reviewed-on: https://review.lttng.org/c/babeltrace/+/4072
Reviewed-on: https://review.lttng.org/c/babeltrace/+/4525
CI-Build: Simon Marchi <simon.marchi@efficios.com>
Tested-by: jenkins <jenkins@lttng.org>
class UnknownObject(Exception):
class UnknownObject(Exception):
Raised when a component class handles a query for an object it doesn't
know about.
Raised when a component class handles a query for an object it doesn't
know about.
def _trim_docstring(docstring):
lines = docstring.expandtabs().splitlines()
def _trim_docstring(docstring):
lines = docstring.expandtabs().splitlines()
+
+ if len(lines) == 0:
+ return ''
+
- for line in lines[1:]:
- stripped = line.lstrip()
+ if len(lines) > 1:
+ for line in lines[1:]:
+ stripped = line.lstrip()
- if stripped:
- indent = min(indent, len(line) - len(stripped))
+ if stripped:
+ indent = min(indent, len(line) - len(stripped))
trimmed = [lines[0].strip()]
trimmed = [lines[0].strip()]
- if indent < sys.maxsize:
+ if indent < sys.maxsize and len(lines) > 1:
for line in lines[1:]:
trimmed.append(line[indent:].rstrip())
for line in lines[1:]:
trimmed.append(line[indent:].rstrip())
self._component_name = native_bt.error_cause_component_actor_get_component_name(
ptr
)
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)
)
self._plugin_name = native_bt.error_cause_component_actor_get_plugin_name(ptr)
class _ComponentClassErrorCause(_ErrorCause):
def __init__(self, ptr):
super().__init__(ptr)
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
)
self._plugin_name = native_bt.error_cause_component_class_actor_get_plugin_name(
ptr
class _MessageIteratorErrorCause(_ErrorCause):
def __init__(self, ptr):
super().__init__(ptr)
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)
utils._check_uint64(beg_clock_snapshot)
utils._check_uint64(end_clock_snapshot)
utils._check_uint64(beg_clock_snapshot)
utils._check_uint64(end_clock_snapshot)
- ptr = native_bt.message_discarded_events_create_with_default_clock_snapshots(
- self._bt_ptr, stream._ptr, beg_clock_snapshot, end_clock_snapshot
+ ptr = (
+ native_bt.message_discarded_events_create_with_default_clock_snapshots(
+ self._bt_ptr, stream._ptr, beg_clock_snapshot, end_clock_snapshot
+ )
)
else:
if beg_clock_snapshot is not None or end_clock_snapshot is not None:
)
else:
if beg_clock_snapshot is not None or end_clock_snapshot is not None:
utils._check_uint64(beg_clock_snapshot)
utils._check_uint64(end_clock_snapshot)
utils._check_uint64(beg_clock_snapshot)
utils._check_uint64(end_clock_snapshot)
- ptr = native_bt.message_discarded_packets_create_with_default_clock_snapshots(
- self._bt_ptr, stream._ptr, beg_clock_snapshot, end_clock_snapshot
+ ptr = (
+ native_bt.message_discarded_packets_create_with_default_clock_snapshots(
+ self._bt_ptr, stream._ptr, beg_clock_snapshot, end_clock_snapshot
+ )
)
else:
if beg_clock_snapshot is not None or end_clock_snapshot is not None:
)
else:
if beg_clock_snapshot is not None or end_clock_snapshot is not None:
)
else:
utils._check_type(ranges, bt2_integer_range_set.SignedIntegerRangeSet)
)
else:
utils._check_type(ranges, bt2_integer_range_set.SignedIntegerRangeSet)
- ptr = native_bt.field_class_option_with_selector_field_integer_signed_create(
- self._ptr, content_fc._ptr, selector_fc._ptr, ranges._ptr
+ ptr = (
+ native_bt.field_class_option_with_selector_field_integer_signed_create(
+ self._ptr, content_fc._ptr, selector_fc._ptr, ranges._ptr
+ )
)
self._check_field_class_create_status(ptr, 'option')
)
self._check_field_class_create_status(ptr, 'option')
self.assertEqual(MySink.description, 'The description.')
self.assertEqual(MySink.description, 'The description.')
- def test_empty_description(self):
+ def test_empty_description_no_lines(self):
class MySink(bt2._UserSinkComponent):
class MySink(bt2._UserSinkComponent):
+ # fmt: off
+ """"""
+ # fmt: on
+
+ def _user_consume(self):
+ pass
+
+ self.assertIsNone(MySink.description)
+
+ def test_empty_description_no_contents(self):
+ class MySink(bt2._UserSinkComponent):
+ # fmt: off
def _user_consume(self):
pass
self.assertIsNone(MySink.description)
def _user_consume(self):
pass
self.assertIsNone(MySink.description)
+ def test_empty_description_single_line(self):
+ class MySink(bt2._UserSinkComponent):
+ """my description"""
+
+ def _user_consume(self):
+ pass
+
+ self.assertEqual(MySink.description, "my description")
+
def test_help(self):
class MySink(bt2._UserSinkComponent):
"""
def test_help(self):
class MySink(bt2._UserSinkComponent):
"""
class ComponentClassTestCase(unittest.TestCase):
def setUp(self):
class MySink(bt2._UserSinkComponent):
class ComponentClassTestCase(unittest.TestCase):
def setUp(self):
class MySink(bt2._UserSinkComponent):
The description.
The help.
The description.
The help.
def _user_consume(self):
pass
def _user_consume(self):
pass
event.payload_field['mosquito'] = 42
msg = self._create_test_const_event_message(
event.payload_field['mosquito'] = 42
msg = self._create_test_const_event_message(
- event_fields_config=event_fields_config, with_ep=True,
+ event_fields_config=event_fields_config,
+ with_ep=True,
# Trying to create when the stream does not support discarded packets.
def test_create_unsupported_raises(self):
def create_stream_class(tc, cc):
# Trying to create when the stream does not support discarded packets.
def test_create_unsupported_raises(self):
def create_stream_class(tc, cc):
- return tc.create_stream_class(supports_packets=True,)
+ return tc.create_stream_class(
+ supports_packets=True,
+ )
def msg_iter_next(msg_iter, stream):
with self.assertRaisesRegex(
def msg_iter_next(msg_iter, stream):
with self.assertRaisesRegex(