in share/multiline.py [0:0]
def grow(self, data: bytes, newline: bytes) -> None:
add_newline: bool = False
if (len(self._buffer) > 0 or self._previous_was_empty) and not self._skip_newline:
self._previous_was_empty = False
add_newline = True
if len(data) == 0:
self._previous_was_empty = True
below_max_lines: bool = False
if self._max_lines <= 0 or self._buffer_lines < self._max_lines:
below_max_lines = True
grow_size: int = self._max_bytes - len(self._buffer)
below_max_bytes: bool = False
if self._max_bytes <= 0 or grow_size > 0:
below_max_bytes = True
self._current_length += len(data) + len(newline)
if below_max_lines and below_max_bytes:
if grow_size < 0 or grow_size > len(data):
grow_size = len(data)
if add_newline:
self._buffer += self._previous_newline
self._buffer += data[:grow_size]
self._buffer_lines += 1
self._previous_newline = newline
self.previous = data
self._processed_lines += 1