Source: smart-open Version: 5.2.1-6 Severity: serious Justification: FTBFS Tags: trixie sid ftbfs User: lu...@debian.org Usertags: ftbfs-20240615 ftbfs-trixie
Hi, During a rebuild of all packages in sid, your package failed to build on amd64. Relevant part (hopefully): > make[1]: Entering directory '/<<PKGBUILDDIR>>' > rm -f smart_open/gcs.py > rm -f smart_open/tests/test_gcs.py > make[1]: Leaving directory '/<<PKGBUILDDIR>>' > dh_auto_configure -O--buildsystem=pybuild > I: pybuild base:311: python3.12 setup.py config > running config > I: pybuild base:311: python3.11 setup.py config > running config > dh_auto_build -O--buildsystem=pybuild > I: pybuild base:311: /usr/bin/python3.12 setup.py build > running build > running build_py > creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/utils.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/transport.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/bytebuffer.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/version.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/s3.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/local_file.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/smart_open_lib.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/webhdfs.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/constants.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/doctools.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/concurrency.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/azure.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/compression.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/ssh.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/hdfs.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > copying smart_open/http.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > I: pybuild base:311: /usr/bin/python3 setup.py build > running build > running build_py > creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/utils.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/transport.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/bytebuffer.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/version.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/s3.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/local_file.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/smart_open_lib.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/webhdfs.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/constants.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/doctools.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/concurrency.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/azure.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/compression.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/ssh.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/hdfs.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > copying smart_open/http.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > dh_auto_test -O--buildsystem=pybuild > I: pybuild pybuild:308: cp -a smart_open/tests > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open > I: pybuild base:311: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build; python3.12 -m > pytest smart_open/tests > ============================= test session starts > ============================== > platform linux -- Python 3.12.4, pytest-8.2.2, pluggy-1.5.0 > rootdir: /<<PKGBUILDDIR>> > configfile: tox.ini > collected 306 items > > smart_open/tests/test_azure.py ....................................... [ > 12%] > smart_open/tests/test_bytebuffer.py ............... [ > 17%] > smart_open/tests/test_hdfs.py ........ [ > 20%] > smart_open/tests/test_http.py ..F...FFF... [ > 24%] > smart_open/tests/test_package.py sss [ > 25%] > smart_open/tests/test_s3.py s..sssssssssssssssssssssssssssssssssssssssss [ > 39%] > sssssssssssss..sss [ > 45%] > smart_open/tests/test_s3_version.py sssssss [ > 47%] > smart_open/tests/test_smart_open.py .................................... [ > 59%] > ...................................ssssssssssssssss....sssss............ [ > 83%] > .s.s.ss.......sssss..ss.ssss.. [ > 92%] > smart_open/tests/test_ssh.py ..... [ > 94%] > smart_open/tests/test_transport.py ... [ > 95%] > smart_open/tests/test_utils.py .............. > [100%] > > =================================== FAILURES > =================================== > _______________________ HttpTest.test_https_seek_forward > _______________________ > > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fd030> > > @contextmanager > def _error_catcher(self) -> typing.Generator[None, None, None]: > """ > Catch low-level python exceptions, instead re-raising urllib3 > variants, so that low-level exceptions are not leaked in the > high-level api. > > On exit, release the connection back to the pool. > """ > clean_exit = False > > try: > try: > > yield > > clean_exit = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fd030> > > /usr/lib/python3/dist-packages/urllib3/response.py:710: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fd030>, amt = 131072 > > def _raw_read( > self, > amt: int | None = None, > ) -> bytes: > """ > Reads `amt` of bytes from the socket. > """ > if self._fp is None: > return None # type: ignore[return-value] > > fp_closed = getattr(self._fp, "closed", False) > > with self._error_catcher(): > data = self._fp_read(amt) if not fp_closed else b"" > if amt is not None and amt != 0 and not data: > # Platform-specific: Buggy versions of Python. > # Close the connection when no data is returned > # > # This is redundant to what httplib/http.client _should_ > # already do. However, versions of python released before > # December 15, 2012 (http://bugs.python.org/issue16298) do > # not properly close the connection in all cases. There is > # no harm in redundantly calling close. > self._fp.close() > if ( > self.enforce_content_length > and self.length_remaining is not None > and self.length_remaining != 0 > ): > # This is an edge case that httplib failed to cover due > # to concerns of backward compatibility. We're > # addressing it here to make sure IncompleteRead is > # raised during streaming, so all calls with incorrect > # Content-Length are caught. > > raise IncompleteRead(self._fp_bytes_read, > > self.length_remaining) > E urllib3.exceptions.IncompleteRead: IncompleteRead(58 > bytes read, 10 more expected) > > amt = 131072 > data = b'' > fp_closed = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fd030> > > /usr/lib/python3/dist-packages/urllib3/response.py:835: IncompleteRead > > The above exception was the direct cause of the following exception: > > def generate(): > # Special case for urllib3. > if hasattr(self.raw, "stream"): > try: > > yield from self.raw.stream(chunk_size, decode_content=True) > > chunk_size = 131072 > self = <Response [200]> > > /usr/lib/python3/dist-packages/requests/models.py:820: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3/dist-packages/urllib3/response.py:936: in stream > data = self.read(amt=amt, decode_content=decode_content) > amt = 131072 > decode_content = True > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fd030> > /usr/lib/python3/dist-packages/urllib3/response.py:907: in read > data = self._raw_read(amt) > amt = 131072 > cache_content = False > data = b" hard and got so far but in the end it doesn't even > matter" > decode_content = True > decoded_data = b" hard and got so far but in the end it doesn't even > matter" > flush_decoder = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fd030> > /usr/lib/python3/dist-packages/urllib3/response.py:813: in _raw_read > with self._error_catcher(): > amt = 131072 > data = b'' > fp_closed = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fd030> > /usr/lib/python3.12/contextlib.py:158: in __exit__ > self.gen.throw(value) > self = <contextlib._GeneratorContextManager object at > 0x7f83bb2fd640> > traceback = <traceback object at 0x7f83bae6a200> > typ = <class 'urllib3.exceptions.IncompleteRead'> > value = IncompleteRead(58 bytes read, 10 more expected) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fd030> > > @contextmanager > def _error_catcher(self) -> typing.Generator[None, None, None]: > """ > Catch low-level python exceptions, instead re-raising urllib3 > variants, so that low-level exceptions are not leaked in the > high-level api. > > On exit, release the connection back to the pool. > """ > clean_exit = False > > try: > try: > yield > > except SocketTimeout as e: > # FIXME: Ideally we'd like to include the url in the > ReadTimeoutError but > # there is yet no clean way to get at it from this context. > raise ReadTimeoutError(self._pool, None, "Read timed out.") > from e # type: ignore[arg-type] > > except BaseSSLError as e: > # FIXME: Is there a better way to differentiate between > SSLErrors? > if "read operation timed out" not in str(e): > # SSL errors related to framing/MAC get wrapped and > reraised here > raise SSLError(e) from e > > raise ReadTimeoutError(self._pool, None, "Read timed out.") > from e # type: ignore[arg-type] > > except (HTTPException, OSError) as e: > # This includes IncompleteRead. > > raise ProtocolError(f"Connection broken: {e!r}", e) from e > E urllib3.exceptions.ProtocolError: ('Connection broken: > IncompleteRead(58 bytes read, 10 more expected)', IncompleteRead(58 bytes > read, 10 more expected)) > > clean_exit = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fd030> > > /usr/lib/python3/dist-packages/urllib3/response.py:727: ProtocolError > > During handling of the above exception, another exception occurred: > > self = <smart_open.tests.test_http.HttpTest > testMethod=test_https_seek_forward> > > @responses.activate > def test_https_seek_forward(self): > """Did the seek forward over HTTPS work?""" > responses.add_callback(responses.GET, HTTPS_URL, > callback=request_callback) > > with smart_open.open(HTTPS_URL, "rb") as fin: > fin.seek(10) > > read_bytes = fin.read(size=10) > > fin = <smart_open.http.SeekableBufferedInputBase object at > 0x7f83bb2fd210> > self = <smart_open.tests.test_http.HttpTest > testMethod=test_https_seek_forward> > > smart_open/tests/test_http.py:142: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > smart_open/http.py:175: in read > bytes_read = self._read_buffer.fill(self._read_iter) > self = <smart_open.http.SeekableBufferedInputBase object at > 0x7f83bb2fd210> > size = 10 > smart_open/bytebuffer.py:155: in fill > for more_bytes in source: > new_bytes = b'' > self = <smart_open.bytebuffer.ByteBuffer object at > 0x7f83bb2fca40> > size = 131072 > source = <generator object > Response.iter_content.<locals>.generate at 0x7f83bae20900> > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > def generate(): > # Special case for urllib3. > if hasattr(self.raw, "stream"): > try: > yield from self.raw.stream(chunk_size, decode_content=True) > except ProtocolError as e: > > raise ChunkedEncodingError(e) > E requests.exceptions.ChunkedEncodingError: ('Connection > broken: IncompleteRead(58 bytes read, 10 more expected)', IncompleteRead(58 > bytes read, 10 more expected)) > > chunk_size = 131072 > self = <Response [200]> > > /usr/lib/python3/dist-packages/requests/models.py:822: ChunkedEncodingError > _______________________ HttpTest.test_seek_from_current > ________________________ > > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fded0> > > @contextmanager > def _error_catcher(self) -> typing.Generator[None, None, None]: > """ > Catch low-level python exceptions, instead re-raising urllib3 > variants, so that low-level exceptions are not leaked in the > high-level api. > > On exit, release the connection back to the pool. > """ > clean_exit = False > > try: > try: > > yield > > clean_exit = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fded0> > > /usr/lib/python3/dist-packages/urllib3/response.py:710: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fded0>, amt = 131072 > > def _raw_read( > self, > amt: int | None = None, > ) -> bytes: > """ > Reads `amt` of bytes from the socket. > """ > if self._fp is None: > return None # type: ignore[return-value] > > fp_closed = getattr(self._fp, "closed", False) > > with self._error_catcher(): > data = self._fp_read(amt) if not fp_closed else b"" > if amt is not None and amt != 0 and not data: > # Platform-specific: Buggy versions of Python. > # Close the connection when no data is returned > # > # This is redundant to what httplib/http.client _should_ > # already do. However, versions of python released before > # December 15, 2012 (http://bugs.python.org/issue16298) do > # not properly close the connection in all cases. There is > # no harm in redundantly calling close. > self._fp.close() > if ( > self.enforce_content_length > and self.length_remaining is not None > and self.length_remaining != 0 > ): > # This is an edge case that httplib failed to cover due > # to concerns of backward compatibility. We're > # addressing it here to make sure IncompleteRead is > # raised during streaming, so all calls with incorrect > # Content-Length are caught. > > raise IncompleteRead(self._fp_bytes_read, > > self.length_remaining) > E urllib3.exceptions.IncompleteRead: IncompleteRead(58 > bytes read, 10 more expected) > > amt = 131072 > data = b'' > fp_closed = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fded0> > > /usr/lib/python3/dist-packages/urllib3/response.py:835: IncompleteRead > > The above exception was the direct cause of the following exception: > > def generate(): > # Special case for urllib3. > if hasattr(self.raw, "stream"): > try: > > yield from self.raw.stream(chunk_size, decode_content=True) > > chunk_size = 131072 > self = <Response [200]> > > /usr/lib/python3/dist-packages/requests/models.py:820: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3/dist-packages/urllib3/response.py:936: in stream > data = self.read(amt=amt, decode_content=decode_content) > amt = 131072 > decode_content = True > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fded0> > /usr/lib/python3/dist-packages/urllib3/response.py:907: in read > data = self._raw_read(amt) > amt = 131072 > cache_content = False > data = b" hard and got so far but in the end it doesn't even > matter" > decode_content = True > decoded_data = b" hard and got so far but in the end it doesn't even > matter" > flush_decoder = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fded0> > /usr/lib/python3/dist-packages/urllib3/response.py:813: in _raw_read > with self._error_catcher(): > amt = 131072 > data = b'' > fp_closed = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fded0> > /usr/lib/python3.12/contextlib.py:158: in __exit__ > self.gen.throw(value) > self = <contextlib._GeneratorContextManager object at > 0x7f83bb2ffe90> > traceback = <traceback object at 0x7f83baf46680> > typ = <class 'urllib3.exceptions.IncompleteRead'> > value = IncompleteRead(58 bytes read, 10 more expected) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fded0> > > @contextmanager > def _error_catcher(self) -> typing.Generator[None, None, None]: > """ > Catch low-level python exceptions, instead re-raising urllib3 > variants, so that low-level exceptions are not leaked in the > high-level api. > > On exit, release the connection back to the pool. > """ > clean_exit = False > > try: > try: > yield > > except SocketTimeout as e: > # FIXME: Ideally we'd like to include the url in the > ReadTimeoutError but > # there is yet no clean way to get at it from this context. > raise ReadTimeoutError(self._pool, None, "Read timed out.") > from e # type: ignore[arg-type] > > except BaseSSLError as e: > # FIXME: Is there a better way to differentiate between > SSLErrors? > if "read operation timed out" not in str(e): > # SSL errors related to framing/MAC get wrapped and > reraised here > raise SSLError(e) from e > > raise ReadTimeoutError(self._pool, None, "Read timed out.") > from e # type: ignore[arg-type] > > except (HTTPException, OSError) as e: > # This includes IncompleteRead. > > raise ProtocolError(f"Connection broken: {e!r}", e) from e > E urllib3.exceptions.ProtocolError: ('Connection broken: > IncompleteRead(58 bytes read, 10 more expected)', IncompleteRead(58 bytes > read, 10 more expected)) > > clean_exit = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb2fded0> > > /usr/lib/python3/dist-packages/urllib3/response.py:727: ProtocolError > > During handling of the above exception, another exception occurred: > > self = <smart_open.tests.test_http.HttpTest testMethod=test_seek_from_current> > > @responses.activate > def test_seek_from_current(self): > responses.add_callback(responses.GET, URL, callback=request_callback) > reader = smart_open.http.SeekableBufferedInputBase(URL) > > reader.seek(10) > > read_bytes = reader.read(size=10) > > reader = <smart_open.http.SeekableBufferedInputBase object at > 0x7f83bb2ff100> > self = <smart_open.tests.test_http.HttpTest > testMethod=test_seek_from_current> > > smart_open/tests/test_http.py:79: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > smart_open/http.py:175: in read > bytes_read = self._read_buffer.fill(self._read_iter) > self = <smart_open.http.SeekableBufferedInputBase object at > 0x7f83bb2ff100> > size = 10 > smart_open/bytebuffer.py:155: in fill > for more_bytes in source: > new_bytes = b'' > self = <smart_open.bytebuffer.ByteBuffer object at > 0x7f83bb2ff4d0> > size = 131072 > source = <generator object > Response.iter_content.<locals>.generate at 0x7f83bae219a0> > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > def generate(): > # Special case for urllib3. > if hasattr(self.raw, "stream"): > try: > yield from self.raw.stream(chunk_size, decode_content=True) > except ProtocolError as e: > > raise ChunkedEncodingError(e) > E requests.exceptions.ChunkedEncodingError: ('Connection > broken: IncompleteRead(58 bytes read, 10 more expected)', IncompleteRead(58 > bytes read, 10 more expected)) > > chunk_size = 131072 > self = <Response [200]> > > /usr/lib/python3/dist-packages/requests/models.py:822: ChunkedEncodingError > _________________________ HttpTest.test_seek_from_end > __________________________ > > self = <urllib3.response.HTTPResponse object at 0x7f83bb288fa0> > > @contextmanager > def _error_catcher(self) -> typing.Generator[None, None, None]: > """ > Catch low-level python exceptions, instead re-raising urllib3 > variants, so that low-level exceptions are not leaked in the > high-level api. > > On exit, release the connection back to the pool. > """ > clean_exit = False > > try: > try: > > yield > > clean_exit = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb288fa0> > > /usr/lib/python3/dist-packages/urllib3/response.py:710: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <urllib3.response.HTTPResponse object at 0x7f83bb288fa0>, amt = 131072 > > def _raw_read( > self, > amt: int | None = None, > ) -> bytes: > """ > Reads `amt` of bytes from the socket. > """ > if self._fp is None: > return None # type: ignore[return-value] > > fp_closed = getattr(self._fp, "closed", False) > > with self._error_catcher(): > data = self._fp_read(amt) if not fp_closed else b"" > if amt is not None and amt != 0 and not data: > # Platform-specific: Buggy versions of Python. > # Close the connection when no data is returned > # > # This is redundant to what httplib/http.client _should_ > # already do. However, versions of python released before > # December 15, 2012 (http://bugs.python.org/issue16298) do > # not properly close the connection in all cases. There is > # no harm in redundantly calling close. > self._fp.close() > if ( > self.enforce_content_length > and self.length_remaining is not None > and self.length_remaining != 0 > ): > # This is an edge case that httplib failed to cover due > # to concerns of backward compatibility. We're > # addressing it here to make sure IncompleteRead is > # raised during streaming, so all calls with incorrect > # Content-Length are caught. > > raise IncompleteRead(self._fp_bytes_read, > > self.length_remaining) > E urllib3.exceptions.IncompleteRead: IncompleteRead(10 > bytes read, 58 more expected) > > amt = 131072 > data = b'' > fp_closed = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb288fa0> > > /usr/lib/python3/dist-packages/urllib3/response.py:835: IncompleteRead > > The above exception was the direct cause of the following exception: > > def generate(): > # Special case for urllib3. > if hasattr(self.raw, "stream"): > try: > > yield from self.raw.stream(chunk_size, decode_content=True) > > chunk_size = 131072 > self = <Response [200]> > > /usr/lib/python3/dist-packages/requests/models.py:820: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3/dist-packages/urllib3/response.py:936: in stream > data = self.read(amt=amt, decode_content=decode_content) > amt = 131072 > decode_content = True > self = <urllib3.response.HTTPResponse object at 0x7f83bb288fa0> > /usr/lib/python3/dist-packages/urllib3/response.py:907: in read > data = self._raw_read(amt) > amt = 131072 > cache_content = False > data = b'ven matter' > decode_content = True > decoded_data = b'ven matter' > flush_decoder = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb288fa0> > /usr/lib/python3/dist-packages/urllib3/response.py:813: in _raw_read > with self._error_catcher(): > amt = 131072 > data = b'' > fp_closed = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb288fa0> > /usr/lib/python3.12/contextlib.py:158: in __exit__ > self.gen.throw(value) > self = <contextlib._GeneratorContextManager object at > 0x7f83bb2ffdd0> > traceback = <traceback object at 0x7f83baf0b580> > typ = <class 'urllib3.exceptions.IncompleteRead'> > value = IncompleteRead(10 bytes read, 58 more expected) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <urllib3.response.HTTPResponse object at 0x7f83bb288fa0> > > @contextmanager > def _error_catcher(self) -> typing.Generator[None, None, None]: > """ > Catch low-level python exceptions, instead re-raising urllib3 > variants, so that low-level exceptions are not leaked in the > high-level api. > > On exit, release the connection back to the pool. > """ > clean_exit = False > > try: > try: > yield > > except SocketTimeout as e: > # FIXME: Ideally we'd like to include the url in the > ReadTimeoutError but > # there is yet no clean way to get at it from this context. > raise ReadTimeoutError(self._pool, None, "Read timed out.") > from e # type: ignore[arg-type] > > except BaseSSLError as e: > # FIXME: Is there a better way to differentiate between > SSLErrors? > if "read operation timed out" not in str(e): > # SSL errors related to framing/MAC get wrapped and > reraised here > raise SSLError(e) from e > > raise ReadTimeoutError(self._pool, None, "Read timed out.") > from e # type: ignore[arg-type] > > except (HTTPException, OSError) as e: > # This includes IncompleteRead. > > raise ProtocolError(f"Connection broken: {e!r}", e) from e > E urllib3.exceptions.ProtocolError: ('Connection broken: > IncompleteRead(10 bytes read, 58 more expected)', IncompleteRead(10 bytes > read, 58 more expected)) > > clean_exit = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb288fa0> > > /usr/lib/python3/dist-packages/urllib3/response.py:727: ProtocolError > > During handling of the above exception, another exception occurred: > > self = <smart_open.tests.test_http.HttpTest testMethod=test_seek_from_end> > > @responses.activate > def test_seek_from_end(self): > responses.add_callback(responses.GET, URL, callback=request_callback) > reader = smart_open.http.SeekableBufferedInputBase(URL) > > reader.seek(-10, whence=smart_open.constants.WHENCE_END) > self.assertEqual(reader.tell(), len(BYTES) - 10) > > read_bytes = reader.read(size=10) > > reader = <smart_open.http.SeekableBufferedInputBase object at > 0x7f83bb2ff880> > self = <smart_open.tests.test_http.HttpTest > testMethod=test_seek_from_end> > > smart_open/tests/test_http.py:96: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > smart_open/http.py:175: in read > bytes_read = self._read_buffer.fill(self._read_iter) > self = <smart_open.http.SeekableBufferedInputBase object at > 0x7f83bb2ff880> > size = 10 > smart_open/bytebuffer.py:155: in fill > for more_bytes in source: > new_bytes = b'' > self = <smart_open.bytebuffer.ByteBuffer object at > 0x7f83bb2ffbc0> > size = 131072 > source = <generator object > Response.iter_content.<locals>.generate at 0x7f83bae20660> > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > def generate(): > # Special case for urllib3. > if hasattr(self.raw, "stream"): > try: > yield from self.raw.stream(chunk_size, decode_content=True) > except ProtocolError as e: > > raise ChunkedEncodingError(e) > E requests.exceptions.ChunkedEncodingError: ('Connection > broken: IncompleteRead(10 bytes read, 58 more expected)', IncompleteRead(10 > bytes read, 58 more expected)) > > chunk_size = 131072 > self = <Response [200]> > > /usr/lib/python3/dist-packages/requests/models.py:822: ChunkedEncodingError > ________________________ HttpTest.test_seek_from_start > _________________________ > > self = <urllib3.response.HTTPResponse object at 0x7f83bb2888b0> > > @contextmanager > def _error_catcher(self) -> typing.Generator[None, None, None]: > """ > Catch low-level python exceptions, instead re-raising urllib3 > variants, so that low-level exceptions are not leaked in the > high-level api. > > On exit, release the connection back to the pool. > """ > clean_exit = False > > try: > try: > > yield > > clean_exit = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb2888b0> > > /usr/lib/python3/dist-packages/urllib3/response.py:710: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <urllib3.response.HTTPResponse object at 0x7f83bb2888b0>, amt = 131072 > > def _raw_read( > self, > amt: int | None = None, > ) -> bytes: > """ > Reads `amt` of bytes from the socket. > """ > if self._fp is None: > return None # type: ignore[return-value] > > fp_closed = getattr(self._fp, "closed", False) > > with self._error_catcher(): > data = self._fp_read(amt) if not fp_closed else b"" > if amt is not None and amt != 0 and not data: > # Platform-specific: Buggy versions of Python. > # Close the connection when no data is returned > # > # This is redundant to what httplib/http.client _should_ > # already do. However, versions of python released before > # December 15, 2012 (http://bugs.python.org/issue16298) do > # not properly close the connection in all cases. There is > # no harm in redundantly calling close. > self._fp.close() > if ( > self.enforce_content_length > and self.length_remaining is not None > and self.length_remaining != 0 > ): > # This is an edge case that httplib failed to cover due > # to concerns of backward compatibility. We're > # addressing it here to make sure IncompleteRead is > # raised during streaming, so all calls with incorrect > # Content-Length are caught. > > raise IncompleteRead(self._fp_bytes_read, > > self.length_remaining) > E urllib3.exceptions.IncompleteRead: IncompleteRead(58 > bytes read, 10 more expected) > > amt = 131072 > data = b'' > fp_closed = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb2888b0> > > /usr/lib/python3/dist-packages/urllib3/response.py:835: IncompleteRead > > The above exception was the direct cause of the following exception: > > def generate(): > # Special case for urllib3. > if hasattr(self.raw, "stream"): > try: > > yield from self.raw.stream(chunk_size, decode_content=True) > > chunk_size = 131072 > self = <Response [200]> > > /usr/lib/python3/dist-packages/requests/models.py:820: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3/dist-packages/urllib3/response.py:936: in stream > data = self.read(amt=amt, decode_content=decode_content) > amt = 131072 > decode_content = True > self = <urllib3.response.HTTPResponse object at 0x7f83bb2888b0> > /usr/lib/python3/dist-packages/urllib3/response.py:907: in read > data = self._raw_read(amt) > amt = 131072 > cache_content = False > data = b" hard and got so far but in the end it doesn't even > matter" > decode_content = True > decoded_data = b" hard and got so far but in the end it doesn't even > matter" > flush_decoder = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb2888b0> > /usr/lib/python3/dist-packages/urllib3/response.py:813: in _raw_read > with self._error_catcher(): > amt = 131072 > data = b'' > fp_closed = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb2888b0> > /usr/lib/python3.12/contextlib.py:158: in __exit__ > self.gen.throw(value) > self = <contextlib._GeneratorContextManager object at > 0x7f83bb28b6b0> > traceback = <traceback object at 0x7f83bad17180> > typ = <class 'urllib3.exceptions.IncompleteRead'> > value = IncompleteRead(58 bytes read, 10 more expected) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <urllib3.response.HTTPResponse object at 0x7f83bb2888b0> > > @contextmanager > def _error_catcher(self) -> typing.Generator[None, None, None]: > """ > Catch low-level python exceptions, instead re-raising urllib3 > variants, so that low-level exceptions are not leaked in the > high-level api. > > On exit, release the connection back to the pool. > """ > clean_exit = False > > try: > try: > yield > > except SocketTimeout as e: > # FIXME: Ideally we'd like to include the url in the > ReadTimeoutError but > # there is yet no clean way to get at it from this context. > raise ReadTimeoutError(self._pool, None, "Read timed out.") > from e # type: ignore[arg-type] > > except BaseSSLError as e: > # FIXME: Is there a better way to differentiate between > SSLErrors? > if "read operation timed out" not in str(e): > # SSL errors related to framing/MAC get wrapped and > reraised here > raise SSLError(e) from e > > raise ReadTimeoutError(self._pool, None, "Read timed out.") > from e # type: ignore[arg-type] > > except (HTTPException, OSError) as e: > # This includes IncompleteRead. > > raise ProtocolError(f"Connection broken: {e!r}", e) from e > E urllib3.exceptions.ProtocolError: ('Connection broken: > IncompleteRead(58 bytes read, 10 more expected)', IncompleteRead(58 bytes > read, 10 more expected)) > > clean_exit = False > self = <urllib3.response.HTTPResponse object at 0x7f83bb2888b0> > > /usr/lib/python3/dist-packages/urllib3/response.py:727: ProtocolError > > During handling of the above exception, another exception occurred: > > self = <smart_open.tests.test_http.HttpTest testMethod=test_seek_from_start> > > @responses.activate > def test_seek_from_start(self): > responses.add_callback(responses.GET, URL, callback=request_callback) > reader = smart_open.http.SeekableBufferedInputBase(URL) > > reader.seek(10) > self.assertEqual(reader.tell(), 10) > > read_bytes = reader.read(size=10) > > reader = <smart_open.http.SeekableBufferedInputBase object at > 0x7f83bb28ba30> > self = <smart_open.tests.test_http.HttpTest > testMethod=test_seek_from_start> > > smart_open/tests/test_http.py:61: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > smart_open/http.py:175: in read > bytes_read = self._read_buffer.fill(self._read_iter) > self = <smart_open.http.SeekableBufferedInputBase object at > 0x7f83bb28ba30> > size = 10 > smart_open/bytebuffer.py:155: in fill > for more_bytes in source: > new_bytes = b'' > self = <smart_open.bytebuffer.ByteBuffer object at > 0x7f83bb28bad0> > size = 131072 > source = <generator object > Response.iter_content.<locals>.generate at 0x7f83bae21d20> > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > def generate(): > # Special case for urllib3. > if hasattr(self.raw, "stream"): > try: > yield from self.raw.stream(chunk_size, decode_content=True) > except ProtocolError as e: > > raise ChunkedEncodingError(e) > E requests.exceptions.ChunkedEncodingError: ('Connection > broken: IncompleteRead(58 bytes read, 10 more expected)', IncompleteRead(58 > bytes read, 10 more expected)) > > chunk_size = 131072 > self = <Response [200]> > > /usr/lib/python3/dist-packages/requests/models.py:822: ChunkedEncodingError > =============================== warnings summary > =============================== > .pybuild/cpython3_3.12_smart-open/build/smart_open/tests/test_http.py: 1 > warning > .pybuild/cpython3_3.12_smart-open/build/smart_open/tests/test_smart_open.py: > 10 warnings > /usr/lib/python3/dist-packages/responses/__init__.py:609: > DeprecationWarning: stream argument is deprecated. Use stream parameter in > request directly > warn( > > .pybuild/cpython3_3.12_smart-open/build/smart_open/tests/test_smart_open.py::SmartOpenTest::test_incorrect > .pybuild/cpython3_3.12_smart-open/build/smart_open/tests/test_smart_open.py::SmartOpenTest::test_incorrect > .pybuild/cpython3_3.12_smart-open/build/smart_open/tests/test_smart_open.py::SmartOpenTest::test_incorrect > .pybuild/cpython3_3.12_smart-open/build/smart_open/tests/test_smart_open.py::SmartOpenTest::test_incorrect > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build/smart_open/smart_open_lib.py:494: > DeprecationWarning: This function is deprecated. See > https://github.com/RaRe-Technologies/smart_open/blob/develop/MIGRATING_FROM_OLDER_VERSIONS.rst > for more information > warnings.warn(message, category=DeprecationWarning) > > -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html > ============================= slowest 20 durations > ============================= > 0.65s call > .pybuild/cpython3_3.12_smart-open/build/smart_open/tests/test_hdfs.py::CliRawInputBaseTest::test_unzip > 0.63s call > .pybuild/cpython3_3.12_smart-open/build/smart_open/tests/test_hdfs.py::CliRawOutputBaseTest::test_zip > 0.61s call > .pybuild/cpython3_3.12_smart-open/build/smart_open/tests/test_hdfs.py::CliRawInputBaseTest::test_context_manager > 0.59s call > .pybuild/cpython3_3.12_smart-open/build/smart_open/tests/test_hdfs.py::CliRawInputBaseTest::test_read > 0.55s call > .pybuild/cpython3_3.12_smart-open/build/smart_open/tests/test_hdfs.py::CliRawOutputBaseTest::test_write > 0.53s call > .pybuild/cpython3_3.12_smart-open/build/smart_open/tests/test_hdfs.py::CliRawInputBaseTest::test_read_75 > 0.07s call > .pybuild/cpython3_3.12_smart-open/build/smart_open/tests/test_ssh.py::SSHOpen::test_open > 0.05s call > .pybuild/cpython3_3.12_smart-open/build/smart_open/tests/test_smart_open.py::SmartOpenHttpTest::test_http_bz2 > 0.05s call > .pybuild/cpython3_3.12_smart-open/build/smart_open/tests/test_smart_open.py::SmartOpenHttpTest::test_http_bz2_query > 0.01s call > .pybuild/cpython3_3.12_smart-open/build/smart_open/tests/test_azure.py::WriterTest::test_write_03a > > (10 durations < 0.005s hidden. Use -vv to show these durations.) > =========================== short test summary info > ============================ > FAILED smart_open/tests/test_http.py::HttpTest::test_https_seek_forward - > req... > FAILED smart_open/tests/test_http.py::HttpTest::test_seek_from_current - > requ... > FAILED smart_open/tests/test_http.py::HttpTest::test_seek_from_end - > requests... > FAILED smart_open/tests/test_http.py::HttpTest::test_seek_from_start - > reques... > SKIPPED [1] smart_open/tests/test_package.py:18: requires missing dependencies > SKIPPED [1] smart_open/tests/test_package.py:13: requires missing dependencies > SKIPPED [1] smart_open/tests/test_package.py:24: requires missing dependencies > SKIPPED [1] smart_open/tests/test_s3.py:140: The test case needs a Moto > server running on the local 5000 port. > SKIPPED [1] smart_open/tests/test_s3.py:418: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:426: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:325: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:228: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:240: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:249: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:395: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:441: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:339: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:368: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:384: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:261: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:291: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:305: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:316: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:279: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:406: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:541: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:569: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:576: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:529: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:558: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:564: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:583: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:463: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:476: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:486: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:495: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:517: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:593: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:664: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:687: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:694: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:681: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:619: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:632: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:642: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:653: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:701: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:749: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:737: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:727: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:760: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:769: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:800: For Debian skip this test > SKIPPED [1] smart_open/tests/test_s3.py:831: For Debian skip this test > SKIPPED [1] smart_open/tests/test_s3.py:857: For Debian skip > IterBucketSingleProcessTest > SKIPPED [1] smart_open/tests/test_s3.py:874: For Debian skip > IterBucketCredentialsTest > SKIPPED [1] smart_open/tests/test_s3.py:897: For Debian skip DownloadKeyTest > SKIPPED [1] smart_open/tests/test_s3.py:904: For Debian skip DownloadKeyTest > SKIPPED [1] smart_open/tests/test_s3.py:922: For Debian skip DownloadKeyTest > SKIPPED [1] smart_open/tests/test_s3.py:913: For Debian skip DownloadKeyTest > SKIPPED [1] smart_open/tests/test_s3.py:932: For Debian skip DownloadKeyTest > SKIPPED [1] smart_open/tests/test_s3.py:949: For Debian skip OpenTest > SKIPPED [3] > ../../../../../../usr/lib/python3/dist-packages/_pytest/unittest.py:378: For > Debian skip this test > SKIPPED [1] smart_open/tests/test_s3_version.py:62: For Debian skip > TestVersionId > SKIPPED [1] smart_open/tests/test_s3_version.py:68: For Debian skip > TestVersionId > SKIPPED [1] smart_open/tests/test_s3_version.py:55: For Debian skip > TestVersionId > SKIPPED [1] smart_open/tests/test_s3_version.py:80: For Debian skip > TestVersionId > SKIPPED [1] smart_open/tests/test_s3_version.py:74: For Debian skip > TestVersionId > SKIPPED [1] smart_open/tests/test_s3_version.py:87: For Debian skip > TestVersionId > SKIPPED [1] smart_open/tests/test_s3_version.py:94: For Debian skip > TestVersionId > SKIPPED [1] smart_open/tests/test_smart_open.py:721: For Debian skip > test_read_never_returns_none > SKIPPED [1] smart_open/tests/test_smart_open.py:832: Skipping > test_read_newline_binary > SKIPPED [1] smart_open/tests/test_smart_open.py:774: Skipping > test_read_newline_cr > SKIPPED [1] smart_open/tests/test_smart_open.py:804: Skipping > test_read_newline_crlf > SKIPPED [1] smart_open/tests/test_smart_open.py:758: Skipping > test_read_newline_empty > SKIPPED [1] smart_open/tests/test_smart_open.py:789: Skipping > test_read_newline_lf > SKIPPED [1] smart_open/tests/test_smart_open.py:737: Skipping > test_read_newline_none > SKIPPED [1] smart_open/tests/test_smart_open.py:818: Skipping > test_read_newline_slurp > SKIPPED [1] smart_open/tests/test_smart_open.py:923: For Debian skip > test_readline > SKIPPED [1] smart_open/tests/test_smart_open.py:953: For Debian skip > test_readline_eof > SKIPPED [1] smart_open/tests/test_smart_open.py:936: For Debian skip > test_readline_iter > SKIPPED [1] smart_open/tests/test_smart_open.py:969: For Debian skip > test_s3_iter_lines > SKIPPED [1] smart_open/tests/test_smart_open.py:1094: For Debian skip > test_s3_iter_moto > SKIPPED [1] smart_open/tests/test_smart_open.py:1127: For Debian skip > test_s3_read_moto > SKIPPED [1] smart_open/tests/test_smart_open.py:1145: For Debian skip > test_s3_seek_moto > SKIPPED [1] smart_open/tests/test_smart_open.py:1167: For Debian skip > test_s3_tell > SKIPPED [1] smart_open/tests/test_smart_open.py:895: Skipping > test_write_newline_cr > SKIPPED [1] smart_open/tests/test_smart_open.py:909: Skipping > test_write_newline_crlf > SKIPPED [1] smart_open/tests/test_smart_open.py:867: Skipping > test_write_newline_empty > SKIPPED [1] smart_open/tests/test_smart_open.py:881: Skipping > test_write_newline_lf > SKIPPED [1] smart_open/tests/test_smart_open.py:847: Skipping > test_write_newline_none > SKIPPED [1] smart_open/tests/test_smart_open.py:1381: For Debian skip > test_s3_metadata_write > SKIPPED [1] smart_open/tests/test_smart_open.py:1361: For Debian skip > test_s3_modes_moto > SKIPPED [1] smart_open/tests/test_smart_open.py:1426: For Debian skip > test_write_bad_encoding_replace > SKIPPED [1] smart_open/tests/test_smart_open.py:1415: For Debian skip > test_write_bad_encoding_strict > SKIPPED [1] smart_open/tests/test_smart_open.py:1688: For Debian skip > test_gzip_read_mode > SKIPPED [1] smart_open/tests/test_smart_open.py:1676: For Debian skip > test_gzip_write_mode > SKIPPED [1] smart_open/tests/test_smart_open.py:1604: For Debian skip test_r > SKIPPED [1] smart_open/tests/test_smart_open.py:1705: For Debian skip > test_read_encoding > SKIPPED [1] smart_open/tests/test_smart_open.py:1719: For Debian skip > test_read_encoding_implicit_text > SKIPPED [1] smart_open/tests/test_smart_open.py:1626: For Debian skip > test_rw_encoding > SKIPPED [1] smart_open/tests/test_smart_open.py:1651: For Debian skip > test_rw_gzip > SKIPPED [1] smart_open/tests/test_smart_open.py:1761: For Debian skip > test_write_bad_encoding_replace > SKIPPED [1] smart_open/tests/test_smart_open.py:1748: For Debian skip > test_write_bad_encoding_strict > SKIPPED [1] smart_open/tests/test_smart_open.py:1733: For Debian skip > test_write_encoding > SKIPPED [1] smart_open/tests/test_smart_open.py:1777: For Debian skip > test_write_text_gzip > =========== 4 failed, 198 passed, 104 skipped, 15 warnings in 5.06s > ============ > E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_smart-open/build; python3.12 -m > pytest smart_open/tests > I: pybuild pybuild:308: cp -a smart_open/tests > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open > I: pybuild base:311: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build; python3.11 -m > pytest smart_open/tests > ============================= test session starts > ============================== > platform linux -- Python 3.11.9, pytest-8.2.2, pluggy-1.5.0 > rootdir: /<<PKGBUILDDIR>> > configfile: tox.ini > collected 306 items > > smart_open/tests/test_azure.py ....................................... [ > 12%] > smart_open/tests/test_bytebuffer.py ............... [ > 17%] > smart_open/tests/test_hdfs.py ........ [ > 20%] > smart_open/tests/test_http.py ..F...FFF... [ > 24%] > smart_open/tests/test_package.py sss [ > 25%] > smart_open/tests/test_s3.py s..sssssssssssssssssssssssssssssssssssssssss [ > 39%] > sssssssssssss..sss [ > 45%] > smart_open/tests/test_s3_version.py sssssss [ > 47%] > smart_open/tests/test_smart_open.py .................................... [ > 59%] > ...................................ssssssssssssssss....sssss............ [ > 83%] > .s.s.ss.......sssss..ss.ssss.. [ > 92%] > smart_open/tests/test_ssh.py ..... [ > 94%] > smart_open/tests/test_transport.py ... [ > 95%] > smart_open/tests/test_utils.py .............. > [100%] > > =================================== FAILURES > =================================== > _______________________ HttpTest.test_https_seek_forward > _______________________ > > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5f8790> > > @contextmanager > def _error_catcher(self) -> typing.Generator[None, None, None]: > """ > Catch low-level python exceptions, instead re-raising urllib3 > variants, so that low-level exceptions are not leaked in the > high-level api. > > On exit, release the connection back to the pool. > """ > clean_exit = False > > try: > try: > > yield > > clean_exit = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5f8790> > > /usr/lib/python3/dist-packages/urllib3/response.py:710: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5f8790>, amt = 131072 > > def _raw_read( > self, > amt: int | None = None, > ) -> bytes: > """ > Reads `amt` of bytes from the socket. > """ > if self._fp is None: > return None # type: ignore[return-value] > > fp_closed = getattr(self._fp, "closed", False) > > with self._error_catcher(): > data = self._fp_read(amt) if not fp_closed else b"" > if amt is not None and amt != 0 and not data: > # Platform-specific: Buggy versions of Python. > # Close the connection when no data is returned > # > # This is redundant to what httplib/http.client _should_ > # already do. However, versions of python released before > # December 15, 2012 (http://bugs.python.org/issue16298) do > # not properly close the connection in all cases. There is > # no harm in redundantly calling close. > self._fp.close() > if ( > self.enforce_content_length > and self.length_remaining is not None > and self.length_remaining != 0 > ): > # This is an edge case that httplib failed to cover due > # to concerns of backward compatibility. We're > # addressing it here to make sure IncompleteRead is > # raised during streaming, so all calls with incorrect > # Content-Length are caught. > > raise IncompleteRead(self._fp_bytes_read, > > self.length_remaining) > E urllib3.exceptions.IncompleteRead: IncompleteRead(58 > bytes read, 10 more expected) > > amt = 131072 > data = b'' > fp_closed = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5f8790> > > /usr/lib/python3/dist-packages/urllib3/response.py:835: IncompleteRead > > The above exception was the direct cause of the following exception: > > def generate(): > # Special case for urllib3. > if hasattr(self.raw, "stream"): > try: > > yield from self.raw.stream(chunk_size, decode_content=True) > > chunk_size = 131072 > self = <Response [200]> > > /usr/lib/python3/dist-packages/requests/models.py:820: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3/dist-packages/urllib3/response.py:936: in stream > data = self.read(amt=amt, decode_content=decode_content) > amt = 131072 > decode_content = True > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5f8790> > /usr/lib/python3/dist-packages/urllib3/response.py:907: in read > data = self._raw_read(amt) > amt = 131072 > cache_content = False > data = b" hard and got so far but in the end it doesn't even > matter" > decode_content = True > decoded_data = b" hard and got so far but in the end it doesn't even > matter" > flush_decoder = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5f8790> > /usr/lib/python3/dist-packages/urllib3/response.py:813: in _raw_read > with self._error_catcher(): > amt = 131072 > data = b'' > fp_closed = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5f8790> > /usr/lib/python3.11/contextlib.py:158: in __exit__ > self.gen.throw(typ, value, traceback) > self = <contextlib._GeneratorContextManager object at > 0x7fe8ea1d1a10> > traceback = <traceback object at 0x7fe8ea253400> > typ = <class 'urllib3.exceptions.IncompleteRead'> > value = IncompleteRead(58 bytes read, 10 more expected) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5f8790> > > @contextmanager > def _error_catcher(self) -> typing.Generator[None, None, None]: > """ > Catch low-level python exceptions, instead re-raising urllib3 > variants, so that low-level exceptions are not leaked in the > high-level api. > > On exit, release the connection back to the pool. > """ > clean_exit = False > > try: > try: > yield > > except SocketTimeout as e: > # FIXME: Ideally we'd like to include the url in the > ReadTimeoutError but > # there is yet no clean way to get at it from this context. > raise ReadTimeoutError(self._pool, None, "Read timed out.") > from e # type: ignore[arg-type] > > except BaseSSLError as e: > # FIXME: Is there a better way to differentiate between > SSLErrors? > if "read operation timed out" not in str(e): > # SSL errors related to framing/MAC get wrapped and > reraised here > raise SSLError(e) from e > > raise ReadTimeoutError(self._pool, None, "Read timed out.") > from e # type: ignore[arg-type] > > except (HTTPException, OSError) as e: > # This includes IncompleteRead. > > raise ProtocolError(f"Connection broken: {e!r}", e) from e > E urllib3.exceptions.ProtocolError: ('Connection broken: > IncompleteRead(58 bytes read, 10 more expected)', IncompleteRead(58 bytes > read, 10 more expected)) > > clean_exit = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5f8790> > > /usr/lib/python3/dist-packages/urllib3/response.py:727: ProtocolError > > During handling of the above exception, another exception occurred: > > self = <smart_open.tests.test_http.HttpTest > testMethod=test_https_seek_forward> > > @responses.activate > def test_https_seek_forward(self): > """Did the seek forward over HTTPS work?""" > responses.add_callback(responses.GET, HTTPS_URL, > callback=request_callback) > > with smart_open.open(HTTPS_URL, "rb") as fin: > fin.seek(10) > > read_bytes = fin.read(size=10) > > fin = <smart_open.http.SeekableBufferedInputBase object at > 0x7fe8ea5f90f0> > self = <smart_open.tests.test_http.HttpTest > testMethod=test_https_seek_forward> > > smart_open/tests/test_http.py:142: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > smart_open/http.py:175: in read > bytes_read = self._read_buffer.fill(self._read_iter) > self = <smart_open.http.SeekableBufferedInputBase object at > 0x7fe8ea5f90f0> > size = 10 > smart_open/bytebuffer.py:155: in fill > for more_bytes in source: > new_bytes = b'' > self = <smart_open.bytebuffer.ByteBuffer object at > 0x7fe8ea252c50> > size = 131072 > source = <generator object > Response.iter_content.<locals>.generate at 0x7fe8ea4ef100> > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > def generate(): > # Special case for urllib3. > if hasattr(self.raw, "stream"): > try: > yield from self.raw.stream(chunk_size, decode_content=True) > except ProtocolError as e: > > raise ChunkedEncodingError(e) > E requests.exceptions.ChunkedEncodingError: ('Connection > broken: IncompleteRead(58 bytes read, 10 more expected)', IncompleteRead(58 > bytes read, 10 more expected)) > > chunk_size = 131072 > self = <Response [200]> > > /usr/lib/python3/dist-packages/requests/models.py:822: ChunkedEncodingError > _______________________ HttpTest.test_seek_from_current > ________________________ > > self = <urllib3.response.HTTPResponse object at 0x7fe8ea28ece0> > > @contextmanager > def _error_catcher(self) -> typing.Generator[None, None, None]: > """ > Catch low-level python exceptions, instead re-raising urllib3 > variants, so that low-level exceptions are not leaked in the > high-level api. > > On exit, release the connection back to the pool. > """ > clean_exit = False > > try: > try: > > yield > > clean_exit = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea28ece0> > > /usr/lib/python3/dist-packages/urllib3/response.py:710: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <urllib3.response.HTTPResponse object at 0x7fe8ea28ece0>, amt = 131072 > > def _raw_read( > self, > amt: int | None = None, > ) -> bytes: > """ > Reads `amt` of bytes from the socket. > """ > if self._fp is None: > return None # type: ignore[return-value] > > fp_closed = getattr(self._fp, "closed", False) > > with self._error_catcher(): > data = self._fp_read(amt) if not fp_closed else b"" > if amt is not None and amt != 0 and not data: > # Platform-specific: Buggy versions of Python. > # Close the connection when no data is returned > # > # This is redundant to what httplib/http.client _should_ > # already do. However, versions of python released before > # December 15, 2012 (http://bugs.python.org/issue16298) do > # not properly close the connection in all cases. There is > # no harm in redundantly calling close. > self._fp.close() > if ( > self.enforce_content_length > and self.length_remaining is not None > and self.length_remaining != 0 > ): > # This is an edge case that httplib failed to cover due > # to concerns of backward compatibility. We're > # addressing it here to make sure IncompleteRead is > # raised during streaming, so all calls with incorrect > # Content-Length are caught. > > raise IncompleteRead(self._fp_bytes_read, > > self.length_remaining) > E urllib3.exceptions.IncompleteRead: IncompleteRead(58 > bytes read, 10 more expected) > > amt = 131072 > data = b'' > fp_closed = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea28ece0> > > /usr/lib/python3/dist-packages/urllib3/response.py:835: IncompleteRead > > The above exception was the direct cause of the following exception: > > def generate(): > # Special case for urllib3. > if hasattr(self.raw, "stream"): > try: > > yield from self.raw.stream(chunk_size, decode_content=True) > > chunk_size = 131072 > self = <Response [200]> > > /usr/lib/python3/dist-packages/requests/models.py:820: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3/dist-packages/urllib3/response.py:936: in stream > data = self.read(amt=amt, decode_content=decode_content) > amt = 131072 > decode_content = True > self = <urllib3.response.HTTPResponse object at 0x7fe8ea28ece0> > /usr/lib/python3/dist-packages/urllib3/response.py:907: in read > data = self._raw_read(amt) > amt = 131072 > cache_content = False > data = b" hard and got so far but in the end it doesn't even > matter" > decode_content = True > decoded_data = b" hard and got so far but in the end it doesn't even > matter" > flush_decoder = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea28ece0> > /usr/lib/python3/dist-packages/urllib3/response.py:813: in _raw_read > with self._error_catcher(): > amt = 131072 > data = b'' > fp_closed = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea28ece0> > /usr/lib/python3.11/contextlib.py:158: in __exit__ > self.gen.throw(typ, value, traceback) > self = <contextlib._GeneratorContextManager object at > 0x7fe8e9ece550> > traceback = <traceback object at 0x7fe8ea146a00> > typ = <class 'urllib3.exceptions.IncompleteRead'> > value = IncompleteRead(58 bytes read, 10 more expected) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <urllib3.response.HTTPResponse object at 0x7fe8ea28ece0> > > @contextmanager > def _error_catcher(self) -> typing.Generator[None, None, None]: > """ > Catch low-level python exceptions, instead re-raising urllib3 > variants, so that low-level exceptions are not leaked in the > high-level api. > > On exit, release the connection back to the pool. > """ > clean_exit = False > > try: > try: > yield > > except SocketTimeout as e: > # FIXME: Ideally we'd like to include the url in the > ReadTimeoutError but > # there is yet no clean way to get at it from this context. > raise ReadTimeoutError(self._pool, None, "Read timed out.") > from e # type: ignore[arg-type] > > except BaseSSLError as e: > # FIXME: Is there a better way to differentiate between > SSLErrors? > if "read operation timed out" not in str(e): > # SSL errors related to framing/MAC get wrapped and > reraised here > raise SSLError(e) from e > > raise ReadTimeoutError(self._pool, None, "Read timed out.") > from e # type: ignore[arg-type] > > except (HTTPException, OSError) as e: > # This includes IncompleteRead. > > raise ProtocolError(f"Connection broken: {e!r}", e) from e > E urllib3.exceptions.ProtocolError: ('Connection broken: > IncompleteRead(58 bytes read, 10 more expected)', IncompleteRead(58 bytes > read, 10 more expected)) > > clean_exit = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea28ece0> > > /usr/lib/python3/dist-packages/urllib3/response.py:727: ProtocolError > > During handling of the above exception, another exception occurred: > > self = <smart_open.tests.test_http.HttpTest testMethod=test_seek_from_current> > > @responses.activate > def test_seek_from_current(self): > responses.add_callback(responses.GET, URL, callback=request_callback) > reader = smart_open.http.SeekableBufferedInputBase(URL) > > reader.seek(10) > > read_bytes = reader.read(size=10) > > reader = <smart_open.http.SeekableBufferedInputBase object at > 0x7fe8ea28e0e0> > self = <smart_open.tests.test_http.HttpTest > testMethod=test_seek_from_current> > > smart_open/tests/test_http.py:79: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > smart_open/http.py:175: in read > bytes_read = self._read_buffer.fill(self._read_iter) > self = <smart_open.http.SeekableBufferedInputBase object at > 0x7fe8ea28e0e0> > size = 10 > smart_open/bytebuffer.py:155: in fill > for more_bytes in source: > new_bytes = b'' > self = <smart_open.bytebuffer.ByteBuffer object at > 0x7fe8ea146650> > size = 131072 > source = <generator object > Response.iter_content.<locals>.generate at 0x7fe8e9f58130> > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > def generate(): > # Special case for urllib3. > if hasattr(self.raw, "stream"): > try: > yield from self.raw.stream(chunk_size, decode_content=True) > except ProtocolError as e: > > raise ChunkedEncodingError(e) > E requests.exceptions.ChunkedEncodingError: ('Connection > broken: IncompleteRead(58 bytes read, 10 more expected)', IncompleteRead(58 > bytes read, 10 more expected)) > > chunk_size = 131072 > self = <Response [200]> > > /usr/lib/python3/dist-packages/requests/models.py:822: ChunkedEncodingError > _________________________ HttpTest.test_seek_from_end > __________________________ > > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5fcd30> > > @contextmanager > def _error_catcher(self) -> typing.Generator[None, None, None]: > """ > Catch low-level python exceptions, instead re-raising urllib3 > variants, so that low-level exceptions are not leaked in the > high-level api. > > On exit, release the connection back to the pool. > """ > clean_exit = False > > try: > try: > > yield > > clean_exit = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5fcd30> > > /usr/lib/python3/dist-packages/urllib3/response.py:710: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5fcd30>, amt = 131072 > > def _raw_read( > self, > amt: int | None = None, > ) -> bytes: > """ > Reads `amt` of bytes from the socket. > """ > if self._fp is None: > return None # type: ignore[return-value] > > fp_closed = getattr(self._fp, "closed", False) > > with self._error_catcher(): > data = self._fp_read(amt) if not fp_closed else b"" > if amt is not None and amt != 0 and not data: > # Platform-specific: Buggy versions of Python. > # Close the connection when no data is returned > # > # This is redundant to what httplib/http.client _should_ > # already do. However, versions of python released before > # December 15, 2012 (http://bugs.python.org/issue16298) do > # not properly close the connection in all cases. There is > # no harm in redundantly calling close. > self._fp.close() > if ( > self.enforce_content_length > and self.length_remaining is not None > and self.length_remaining != 0 > ): > # This is an edge case that httplib failed to cover due > # to concerns of backward compatibility. We're > # addressing it here to make sure IncompleteRead is > # raised during streaming, so all calls with incorrect > # Content-Length are caught. > > raise IncompleteRead(self._fp_bytes_read, > > self.length_remaining) > E urllib3.exceptions.IncompleteRead: IncompleteRead(10 > bytes read, 58 more expected) > > amt = 131072 > data = b'' > fp_closed = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5fcd30> > > /usr/lib/python3/dist-packages/urllib3/response.py:835: IncompleteRead > > The above exception was the direct cause of the following exception: > > def generate(): > # Special case for urllib3. > if hasattr(self.raw, "stream"): > try: > > yield from self.raw.stream(chunk_size, decode_content=True) > > chunk_size = 131072 > self = <Response [200]> > > /usr/lib/python3/dist-packages/requests/models.py:820: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3/dist-packages/urllib3/response.py:936: in stream > data = self.read(amt=amt, decode_content=decode_content) > amt = 131072 > decode_content = True > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5fcd30> > /usr/lib/python3/dist-packages/urllib3/response.py:907: in read > data = self._raw_read(amt) > amt = 131072 > cache_content = False > data = b'ven matter' > decode_content = True > decoded_data = b'ven matter' > flush_decoder = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5fcd30> > /usr/lib/python3/dist-packages/urllib3/response.py:813: in _raw_read > with self._error_catcher(): > amt = 131072 > data = b'' > fp_closed = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5fcd30> > /usr/lib/python3.11/contextlib.py:158: in __exit__ > self.gen.throw(typ, value, traceback) > self = <contextlib._GeneratorContextManager object at > 0x7fe8ea1b2d10> > traceback = <traceback object at 0x7fe8ea1b2900> > typ = <class 'urllib3.exceptions.IncompleteRead'> > value = IncompleteRead(10 bytes read, 58 more expected) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5fcd30> > > @contextmanager > def _error_catcher(self) -> typing.Generator[None, None, None]: > """ > Catch low-level python exceptions, instead re-raising urllib3 > variants, so that low-level exceptions are not leaked in the > high-level api. > > On exit, release the connection back to the pool. > """ > clean_exit = False > > try: > try: > yield > > except SocketTimeout as e: > # FIXME: Ideally we'd like to include the url in the > ReadTimeoutError but > # there is yet no clean way to get at it from this context. > raise ReadTimeoutError(self._pool, None, "Read timed out.") > from e # type: ignore[arg-type] > > except BaseSSLError as e: > # FIXME: Is there a better way to differentiate between > SSLErrors? > if "read operation timed out" not in str(e): > # SSL errors related to framing/MAC get wrapped and > reraised here > raise SSLError(e) from e > > raise ReadTimeoutError(self._pool, None, "Read timed out.") > from e # type: ignore[arg-type] > > except (HTTPException, OSError) as e: > # This includes IncompleteRead. > > raise ProtocolError(f"Connection broken: {e!r}", e) from e > E urllib3.exceptions.ProtocolError: ('Connection broken: > IncompleteRead(10 bytes read, 58 more expected)', IncompleteRead(10 bytes > read, 58 more expected)) > > clean_exit = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5fcd30> > > /usr/lib/python3/dist-packages/urllib3/response.py:727: ProtocolError > > During handling of the above exception, another exception occurred: > > self = <smart_open.tests.test_http.HttpTest testMethod=test_seek_from_end> > > @responses.activate > def test_seek_from_end(self): > responses.add_callback(responses.GET, URL, callback=request_callback) > reader = smart_open.http.SeekableBufferedInputBase(URL) > > reader.seek(-10, whence=smart_open.constants.WHENCE_END) > self.assertEqual(reader.tell(), len(BYTES) - 10) > > read_bytes = reader.read(size=10) > > reader = <smart_open.http.SeekableBufferedInputBase object at > 0x7fe8ea5fc250> > self = <smart_open.tests.test_http.HttpTest > testMethod=test_seek_from_end> > > smart_open/tests/test_http.py:96: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > smart_open/http.py:175: in read > bytes_read = self._read_buffer.fill(self._read_iter) > self = <smart_open.http.SeekableBufferedInputBase object at > 0x7fe8ea5fc250> > size = 10 > smart_open/bytebuffer.py:155: in fill > for more_bytes in source: > new_bytes = b'' > self = <smart_open.bytebuffer.ByteBuffer object at > 0x7fe8ea1b2c50> > size = 131072 > source = <generator object > Response.iter_content.<locals>.generate at 0x7fe8e9f58f40> > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > def generate(): > # Special case for urllib3. > if hasattr(self.raw, "stream"): > try: > yield from self.raw.stream(chunk_size, decode_content=True) > except ProtocolError as e: > > raise ChunkedEncodingError(e) > E requests.exceptions.ChunkedEncodingError: ('Connection > broken: IncompleteRead(10 bytes read, 58 more expected)', IncompleteRead(10 > bytes read, 58 more expected)) > > chunk_size = 131072 > self = <Response [200]> > > /usr/lib/python3/dist-packages/requests/models.py:822: ChunkedEncodingError > ________________________ HttpTest.test_seek_from_start > _________________________ > > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5e8820> > > @contextmanager > def _error_catcher(self) -> typing.Generator[None, None, None]: > """ > Catch low-level python exceptions, instead re-raising urllib3 > variants, so that low-level exceptions are not leaked in the > high-level api. > > On exit, release the connection back to the pool. > """ > clean_exit = False > > try: > try: > > yield > > clean_exit = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5e8820> > > /usr/lib/python3/dist-packages/urllib3/response.py:710: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5e8820>, amt = 131072 > > def _raw_read( > self, > amt: int | None = None, > ) -> bytes: > """ > Reads `amt` of bytes from the socket. > """ > if self._fp is None: > return None # type: ignore[return-value] > > fp_closed = getattr(self._fp, "closed", False) > > with self._error_catcher(): > data = self._fp_read(amt) if not fp_closed else b"" > if amt is not None and amt != 0 and not data: > # Platform-specific: Buggy versions of Python. > # Close the connection when no data is returned > # > # This is redundant to what httplib/http.client _should_ > # already do. However, versions of python released before > # December 15, 2012 (http://bugs.python.org/issue16298) do > # not properly close the connection in all cases. There is > # no harm in redundantly calling close. > self._fp.close() > if ( > self.enforce_content_length > and self.length_remaining is not None > and self.length_remaining != 0 > ): > # This is an edge case that httplib failed to cover due > # to concerns of backward compatibility. We're > # addressing it here to make sure IncompleteRead is > # raised during streaming, so all calls with incorrect > # Content-Length are caught. > > raise IncompleteRead(self._fp_bytes_read, > > self.length_remaining) > E urllib3.exceptions.IncompleteRead: IncompleteRead(58 > bytes read, 10 more expected) > > amt = 131072 > data = b'' > fp_closed = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5e8820> > > /usr/lib/python3/dist-packages/urllib3/response.py:835: IncompleteRead > > The above exception was the direct cause of the following exception: > > def generate(): > # Special case for urllib3. > if hasattr(self.raw, "stream"): > try: > > yield from self.raw.stream(chunk_size, decode_content=True) > > chunk_size = 131072 > self = <Response [200]> > > /usr/lib/python3/dist-packages/requests/models.py:820: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3/dist-packages/urllib3/response.py:936: in stream > data = self.read(amt=amt, decode_content=decode_content) > amt = 131072 > decode_content = True > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5e8820> > /usr/lib/python3/dist-packages/urllib3/response.py:907: in read > data = self._raw_read(amt) > amt = 131072 > cache_content = False > data = b" hard and got so far but in the end it doesn't even > matter" > decode_content = True > decoded_data = b" hard and got so far but in the end it doesn't even > matter" > flush_decoder = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5e8820> > /usr/lib/python3/dist-packages/urllib3/response.py:813: in _raw_read > with self._error_catcher(): > amt = 131072 > data = b'' > fp_closed = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5e8820> > /usr/lib/python3.11/contextlib.py:158: in __exit__ > self.gen.throw(typ, value, traceback) > self = <contextlib._GeneratorContextManager object at > 0x7fe8ea582690> > traceback = <traceback object at 0x7fe8ea5817c0> > typ = <class 'urllib3.exceptions.IncompleteRead'> > value = IncompleteRead(58 bytes read, 10 more expected) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5e8820> > > @contextmanager > def _error_catcher(self) -> typing.Generator[None, None, None]: > """ > Catch low-level python exceptions, instead re-raising urllib3 > variants, so that low-level exceptions are not leaked in the > high-level api. > > On exit, release the connection back to the pool. > """ > clean_exit = False > > try: > try: > yield > > except SocketTimeout as e: > # FIXME: Ideally we'd like to include the url in the > ReadTimeoutError but > # there is yet no clean way to get at it from this context. > raise ReadTimeoutError(self._pool, None, "Read timed out.") > from e # type: ignore[arg-type] > > except BaseSSLError as e: > # FIXME: Is there a better way to differentiate between > SSLErrors? > if "read operation timed out" not in str(e): > # SSL errors related to framing/MAC get wrapped and > reraised here > raise SSLError(e) from e > > raise ReadTimeoutError(self._pool, None, "Read timed out.") > from e # type: ignore[arg-type] > > except (HTTPException, OSError) as e: > # This includes IncompleteRead. > > raise ProtocolError(f"Connection broken: {e!r}", e) from e > E urllib3.exceptions.ProtocolError: ('Connection broken: > IncompleteRead(58 bytes read, 10 more expected)', IncompleteRead(58 bytes > read, 10 more expected)) > > clean_exit = False > self = <urllib3.response.HTTPResponse object at 0x7fe8ea5e8820> > > /usr/lib/python3/dist-packages/urllib3/response.py:727: ProtocolError > > During handling of the above exception, another exception occurred: > > self = <smart_open.tests.test_http.HttpTest testMethod=test_seek_from_start> > > @responses.activate > def test_seek_from_start(self): > responses.add_callback(responses.GET, URL, callback=request_callback) > reader = smart_open.http.SeekableBufferedInputBase(URL) > > reader.seek(10) > self.assertEqual(reader.tell(), 10) > > read_bytes = reader.read(size=10) > > reader = <smart_open.http.SeekableBufferedInputBase object at > 0x7fe8ea5e8df0> > self = <smart_open.tests.test_http.HttpTest > testMethod=test_seek_from_start> > > smart_open/tests/test_http.py:61: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > smart_open/http.py:175: in read > bytes_read = self._read_buffer.fill(self._read_iter) > self = <smart_open.http.SeekableBufferedInputBase object at > 0x7fe8ea5e8df0> > size = 10 > smart_open/bytebuffer.py:155: in fill > for more_bytes in source: > new_bytes = b'' > self = <smart_open.bytebuffer.ByteBuffer object at > 0x7fe8ea583fd0> > size = 131072 > source = <generator object > Response.iter_content.<locals>.generate at 0x7fe8e9f598a0> > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > def generate(): > # Special case for urllib3. > if hasattr(self.raw, "stream"): > try: > yield from self.raw.stream(chunk_size, decode_content=True) > except ProtocolError as e: > > raise ChunkedEncodingError(e) > E requests.exceptions.ChunkedEncodingError: ('Connection > broken: IncompleteRead(58 bytes read, 10 more expected)', IncompleteRead(58 > bytes read, 10 more expected)) > > chunk_size = 131072 > self = <Response [200]> > > /usr/lib/python3/dist-packages/requests/models.py:822: ChunkedEncodingError > =============================== warnings summary > =============================== > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_http.py: 1 > warning > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_smart_open.py: > 10 warnings > /usr/lib/python3/dist-packages/responses/__init__.py:609: > DeprecationWarning: stream argument is deprecated. Use stream parameter in > request directly > warn( > > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_smart_open.py::SmartOpenTest::test_incorrect > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_smart_open.py::SmartOpenTest::test_incorrect > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_smart_open.py::SmartOpenTest::test_incorrect > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_smart_open.py::SmartOpenTest::test_incorrect > > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build/smart_open/smart_open_lib.py:494: > DeprecationWarning: This function is deprecated. See > https://github.com/RaRe-Technologies/smart_open/blob/develop/MIGRATING_FROM_OLDER_VERSIONS.rst > for more information > warnings.warn(message, category=DeprecationWarning) > > -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html > ============================= slowest 20 durations > ============================= > 0.60s call > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_hdfs.py::CliRawInputBaseTest::test_read > 0.60s call > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_hdfs.py::CliRawInputBaseTest::test_unzip > 0.60s call > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_hdfs.py::CliRawOutputBaseTest::test_write > 0.60s call > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_hdfs.py::CliRawOutputBaseTest::test_zip > 0.57s call > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_hdfs.py::CliRawInputBaseTest::test_context_manager > 0.50s call > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_hdfs.py::CliRawInputBaseTest::test_read_75 > 0.06s call > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_smart_open.py::SmartOpenHttpTest::test_http_bz2 > 0.05s call > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_smart_open.py::SmartOpenHttpTest::test_http_bz2_query > 0.03s call > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_ssh.py::SSHOpen::test_open > 0.01s call > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_smart_open.py::SmartOpenHttpTest::test_http_gz > 0.01s call > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_ssh.py::SSHOpen::test_open_with_transport_params > 0.01s call > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_smart_open.py::WebHdfsWriteTest::test_write > 0.01s call > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_ssh.py::SSHOpen::test_percent_encoding > 0.01s call > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_ssh.py::SSHOpen::test_open_with_key_filename > 0.01s call > .pybuild/cpython3_3.11_smart-open/build/smart_open/tests/test_ssh.py::SSHOpen::test_open_without_password > > (5 durations < 0.005s hidden. Use -vv to show these durations.) > =========================== short test summary info > ============================ > FAILED smart_open/tests/test_http.py::HttpTest::test_https_seek_forward - > req... > FAILED smart_open/tests/test_http.py::HttpTest::test_seek_from_current - > requ... > FAILED smart_open/tests/test_http.py::HttpTest::test_seek_from_end - > requests... > FAILED smart_open/tests/test_http.py::HttpTest::test_seek_from_start - > reques... > SKIPPED [1] smart_open/tests/test_package.py:18: requires missing dependencies > SKIPPED [1] smart_open/tests/test_package.py:13: requires missing dependencies > SKIPPED [1] smart_open/tests/test_package.py:24: requires missing dependencies > SKIPPED [1] smart_open/tests/test_s3.py:140: The test case needs a Moto > server running on the local 5000 port. > SKIPPED [1] smart_open/tests/test_s3.py:418: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:426: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:325: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:228: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:240: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:249: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:395: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:441: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:339: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:368: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:384: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:261: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:291: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:305: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:316: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:279: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:406: For Debian skip ReaderTest > SKIPPED [1] smart_open/tests/test_s3.py:541: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:569: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:576: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:529: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:558: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:564: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:583: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:463: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:476: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:486: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:495: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:517: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:593: For Debian skip > MultipartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:664: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:687: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:694: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:681: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:619: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:632: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:642: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:653: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:701: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:749: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:737: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:727: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:760: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:769: For Debian skip > SinglepartWriterTest > SKIPPED [1] smart_open/tests/test_s3.py:800: For Debian skip this test > SKIPPED [1] smart_open/tests/test_s3.py:831: For Debian skip this test > SKIPPED [1] smart_open/tests/test_s3.py:857: For Debian skip > IterBucketSingleProcessTest > SKIPPED [1] smart_open/tests/test_s3.py:874: For Debian skip > IterBucketCredentialsTest > SKIPPED [1] smart_open/tests/test_s3.py:897: For Debian skip DownloadKeyTest > SKIPPED [1] smart_open/tests/test_s3.py:904: For Debian skip DownloadKeyTest > SKIPPED [1] smart_open/tests/test_s3.py:922: For Debian skip DownloadKeyTest > SKIPPED [1] smart_open/tests/test_s3.py:913: For Debian skip DownloadKeyTest > SKIPPED [1] smart_open/tests/test_s3.py:932: For Debian skip DownloadKeyTest > SKIPPED [1] smart_open/tests/test_s3.py:949: For Debian skip OpenTest > SKIPPED [3] > ../../../../../../usr/lib/python3/dist-packages/_pytest/unittest.py:378: For > Debian skip this test > SKIPPED [1] smart_open/tests/test_s3_version.py:62: For Debian skip > TestVersionId > SKIPPED [1] smart_open/tests/test_s3_version.py:68: For Debian skip > TestVersionId > SKIPPED [1] smart_open/tests/test_s3_version.py:55: For Debian skip > TestVersionId > SKIPPED [1] smart_open/tests/test_s3_version.py:80: For Debian skip > TestVersionId > SKIPPED [1] smart_open/tests/test_s3_version.py:74: For Debian skip > TestVersionId > SKIPPED [1] smart_open/tests/test_s3_version.py:87: For Debian skip > TestVersionId > SKIPPED [1] smart_open/tests/test_s3_version.py:94: For Debian skip > TestVersionId > SKIPPED [1] smart_open/tests/test_smart_open.py:721: For Debian skip > test_read_never_returns_none > SKIPPED [1] smart_open/tests/test_smart_open.py:832: Skipping > test_read_newline_binary > SKIPPED [1] smart_open/tests/test_smart_open.py:774: Skipping > test_read_newline_cr > SKIPPED [1] smart_open/tests/test_smart_open.py:804: Skipping > test_read_newline_crlf > SKIPPED [1] smart_open/tests/test_smart_open.py:758: Skipping > test_read_newline_empty > SKIPPED [1] smart_open/tests/test_smart_open.py:789: Skipping > test_read_newline_lf > SKIPPED [1] smart_open/tests/test_smart_open.py:737: Skipping > test_read_newline_none > SKIPPED [1] smart_open/tests/test_smart_open.py:818: Skipping > test_read_newline_slurp > SKIPPED [1] smart_open/tests/test_smart_open.py:923: For Debian skip > test_readline > SKIPPED [1] smart_open/tests/test_smart_open.py:953: For Debian skip > test_readline_eof > SKIPPED [1] smart_open/tests/test_smart_open.py:936: For Debian skip > test_readline_iter > SKIPPED [1] smart_open/tests/test_smart_open.py:969: For Debian skip > test_s3_iter_lines > SKIPPED [1] smart_open/tests/test_smart_open.py:1094: For Debian skip > test_s3_iter_moto > SKIPPED [1] smart_open/tests/test_smart_open.py:1127: For Debian skip > test_s3_read_moto > SKIPPED [1] smart_open/tests/test_smart_open.py:1145: For Debian skip > test_s3_seek_moto > SKIPPED [1] smart_open/tests/test_smart_open.py:1167: For Debian skip > test_s3_tell > SKIPPED [1] smart_open/tests/test_smart_open.py:895: Skipping > test_write_newline_cr > SKIPPED [1] smart_open/tests/test_smart_open.py:909: Skipping > test_write_newline_crlf > SKIPPED [1] smart_open/tests/test_smart_open.py:867: Skipping > test_write_newline_empty > SKIPPED [1] smart_open/tests/test_smart_open.py:881: Skipping > test_write_newline_lf > SKIPPED [1] smart_open/tests/test_smart_open.py:847: Skipping > test_write_newline_none > SKIPPED [1] smart_open/tests/test_smart_open.py:1381: For Debian skip > test_s3_metadata_write > SKIPPED [1] smart_open/tests/test_smart_open.py:1361: For Debian skip > test_s3_modes_moto > SKIPPED [1] smart_open/tests/test_smart_open.py:1426: For Debian skip > test_write_bad_encoding_replace > SKIPPED [1] smart_open/tests/test_smart_open.py:1415: For Debian skip > test_write_bad_encoding_strict > SKIPPED [1] smart_open/tests/test_smart_open.py:1688: For Debian skip > test_gzip_read_mode > SKIPPED [1] smart_open/tests/test_smart_open.py:1676: For Debian skip > test_gzip_write_mode > SKIPPED [1] smart_open/tests/test_smart_open.py:1604: For Debian skip test_r > SKIPPED [1] smart_open/tests/test_smart_open.py:1705: For Debian skip > test_read_encoding > SKIPPED [1] smart_open/tests/test_smart_open.py:1719: For Debian skip > test_read_encoding_implicit_text > SKIPPED [1] smart_open/tests/test_smart_open.py:1626: For Debian skip > test_rw_encoding > SKIPPED [1] smart_open/tests/test_smart_open.py:1651: For Debian skip > test_rw_gzip > SKIPPED [1] smart_open/tests/test_smart_open.py:1761: For Debian skip > test_write_bad_encoding_replace > SKIPPED [1] smart_open/tests/test_smart_open.py:1748: For Debian skip > test_write_bad_encoding_strict > SKIPPED [1] smart_open/tests/test_smart_open.py:1733: For Debian skip > test_write_encoding > SKIPPED [1] smart_open/tests/test_smart_open.py:1777: For Debian skip > test_write_text_gzip > =========== 4 failed, 198 passed, 104 skipped, 15 warnings in 5.07s > ============ > E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_smart-open/build; python3.11 -m > pytest smart_open/tests > dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 > 3.11" returned exit code 13 The full build log is available from: http://qa-logs.debian.net/2024/06/15/smart-open_5.2.1-6_unstable.log All bugs filed during this archive rebuild are listed at: https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20240615;users=lu...@debian.org or: https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20240615&fusertaguser=lu...@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results A list of current common problems and possible solutions is available at http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute! If you reassign this bug to another package, please mark it as 'affects'-ing this package. See https://www.debian.org/Bugs/server-control#affects If you fail to reproduce this, please provide a build log and diff it with mine so that we can identify if something relevant changed in the meantime.