From 53539483c32dec537064628c0c6e407eb8ce1c2f Mon Sep 17 00:00:00 2001 From: Andrey Rakhmatullin Date: Mon, 7 Aug 2023 15:13:20 +0400 Subject: [PATCH] Refactor _StreamReader.read(). --- scrapy/utils/iterators.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scrapy/utils/iterators.py b/scrapy/utils/iterators.py index 40af68dec..baf92681a 100644 --- a/scrapy/utils/iterators.py +++ b/scrapy/utils/iterators.py @@ -110,12 +110,17 @@ class _StreamReader: else: self._text, self.encoding = obj, "utf-8" self._is_unicode: bool = isinstance(self._text, str) + self._is_first_read: bool = True def read(self, n: int = 65535) -> bytes: - self.read: Callable[[int], bytes] = ( # type: ignore[method-assign] + method: Callable[[int], bytes] = ( self._read_unicode if self._is_unicode else self._read_string ) - return self.read(n).lstrip() + result = method(n) + if self._is_first_read: + self._is_first_read = False + result = result.lstrip() + return result def _read_string(self, n: int = 65535) -> bytes: s, e = self._ptr, self._ptr + n