def collect()

in share/multiline.py [0:0]


    def collect(self) -> CollectIterator:
        for data, newline in self.feed:
            last_iteration_datetime: datetime.datetime = datetime.datetime.now(datetime.UTC)
            if self._pre_collect_buffer:
                self._buffer.collect_and_reset()
                self._buffer.grow(data, newline)
                self._pre_collect_buffer = False
            elif self._flush_pattern and self._flush_pattern.search(data) is not None:
                self._buffer.grow(data, newline)
                self._pre_collect_buffer = True

                yield self._buffer.collect_and_reset()
            elif (
                not self._buffer.is_empty() and self._check_matcher() and not self._matcher(self._buffer.previous, data)
            ):
                content, current_length, _ = self._buffer.collect_and_reset()

                self._buffer.grow(data, newline)

                yield content, current_length, newline
            else:
                if (datetime.datetime.now(datetime.UTC) - last_iteration_datetime) > timedelta_circuit_breaker:
                    yield self._buffer.collect_and_reset()
                self._buffer.grow(data, newline)

        if not self._buffer.is_empty():
            yield self._buffer.collect_and_reset()