Package: src:fsspec
Version: 2025.7.0-4
Severity: serious
Tags: ftbfs forky sid

Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

https://people.debian.org/~sanvila/build-logs/202512/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:fsspec, so that this is still
visible in the BTS web page for this package.

Thanks.

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --with sphinxdoc,python3 --buildsystem=pybuild
   debian/rules override_dh_auto_clean
make[1]: Entering directory '/<<PKGBUILDDIR>>'
dh_auto_clean
/usr/bin/make -C docs clean
make[2]: Entering directory '/<<PKGBUILDDIR>>/docs'
make[2]: Leaving directory '/<<PKGBUILDDIR>>/docs'
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
   dh_autoreconf_clean -O--buildsystem=pybuild
   dh_clean -O--buildsystem=pybuild
 debian/rules binary
dh binary --with sphinxdoc,python3 --buildsystem=pybuild
   dh_update_autotools_config -O--buildsystem=pybuild
   dh_autoreconf -O--buildsystem=pybuild

[... snipped ...]

            if other is not None:
                other -= 1
    
        elif response and response.get_redirect_location():
            # Redirect retry?
            if redirect is not None:
                redirect -= 1
            cause = "too many redirects"
            response_redirect_location = response.get_redirect_location()
            if response_redirect_location:
                redirect_location = response_redirect_location
            status = response.status
    
        else:
            # Incrementing because of a server error like a 500 in
            # status_forcelist and the given method is in the allowed_methods
            cause = ResponseError.GENERIC_ERROR
            if response and response.status:
                if status_count is not None:
                    status_count -= 1
                cause = 
ResponseError.SPECIFIC_ERROR.format(status_code=response.status)
                status = response.status
    
        history = self.history + (
            RequestHistory(method, url, error, status, redirect_location),
        )
    
        new_retry = self.new(
            total=total,
            connect=connect,
            read=read,
            redirect=redirect,
            status=status_count,
            other=other,
            history=history,
        )
    
        if new_retry.is_exhausted():
            reason = error or ResponseError(cause)
>           raise MaxRetryError(_pool, url, reason) from reason  # type: 
> ignore[arg-type]
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           urllib3.exceptions.MaxRetryError: 
HTTPSConnectionPool(host='api.github.com', port=443): Max retries exceeded with 
url: /gists/2656908684d3965b80c2/2fb2f12f332f7e242b1a2af1f41e30ddf99f24c7 
(Caused by ProxyError('Unable to connect to proxy', 
NewConnectionError('<urllib3.connection.HTTPSConnection object at 
0x7fe549511a90>: Failed to establish a new connection: [Errno 111] Connection 
refused')))

/usr/lib/python3/dist-packages/urllib3/util/retry.py:519: MaxRetryError

During handling of the above exception, another exception occurred:

gist_id = '2656908684d3965b80c2'
sha = '2fb2f12f332f7e242b1a2af1f41e30ddf99f24c7'
file = 'file-that-doesnt-exist.py'

    @pytest.mark.parametrize(
        "gist_id,sha,file",
        [
            (
                "2656908684d3965b80c2",
                "2fb2f12f332f7e242b1a2af1f41e30ddf99f24c7",
                "file-that-doesnt-exist.py",
            )
        ],
    )
    def test_gist_public_missing_file(gist_id, sha, file):
        with pytest.raises(FileNotFoundError):
>           fsspec.filesystem("gist", gist_id=gist_id, sha=sha, 
> filenames=[file])

/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_fsspec/build/fsspec/implementations/tests/test_gist.py:62:
 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_fsspec/build/fsspec/registry.py:322: in 
filesystem
    return cls(**storage_options)
           ^^^^^^^^^^^^^^^^^^^^^^
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_fsspec/build/fsspec/spec.py:81: in 
__call__
    obj = super().__call__(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_fsspec/build/fsspec/implementations/gist.py:65:
 in __init__
    self.dircache[""] = self._fetch_file_list()
                        ^^^^^^^^^^^^^^^^^^^^^^^
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_fsspec/build/fsspec/implementations/gist.py:96:
 in _fetch_file_list
    meta = self._fetch_gist_metadata()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_fsspec/build/fsspec/implementations/gist.py:83:
 in _fetch_gist_metadata
    r = requests.get(url, timeout=self.timeout, **self.kw)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/requests/api.py:73: in get
    return request("get", url, params=params, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/requests/api.py:59: in request
    return session.request(method=method, url=url, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/requests/sessions.py:589: in request
    resp = self.send(prep, **send_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/requests/sessions.py:703: in send
    r = adapter.send(request, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <requests.adapters.HTTPAdapter object at 0x7fe5496e4770>
request = <PreparedRequest [GET]>, stream = False
timeout = Timeout(connect=60, read=60, total=None), verify = True, cert = None
proxies = OrderedDict({'no': 'localhost', 'https': 'https://127.0.0.1:9/', 
'http': 'http://127.0.9.1:9'})

    def send(
        self, request, stream=False, timeout=None, verify=True, cert=None, 
proxies=None
    ):
        """Sends PreparedRequest object. Returns Response object.
    
        :param request: The :class:`PreparedRequest <PreparedRequest>` being 
sent.
        :param stream: (optional) Whether to stream the request content.
        :param timeout: (optional) How long to wait for the server to send
            data before giving up, as a float, or a :ref:`(connect timeout,
            read timeout) <timeouts>` tuple.
        :type timeout: float or tuple or urllib3 Timeout object
        :param verify: (optional) Either a boolean, in which case it controls 
whether
            we verify the server's TLS certificate, or a string, in which case 
it
            must be a path to a CA bundle to use
        :param cert: (optional) Any user-provided SSL certificate to be trusted.
        :param proxies: (optional) The proxies dictionary to apply to the 
request.
        :rtype: requests.Response
        """
    
        try:
            conn = self.get_connection_with_tls_context(
                request, verify, proxies=proxies, cert=cert
            )
        except LocationValueError as e:
            raise InvalidURL(e, request=request)
    
        self.cert_verify(conn, request.url, verify, cert)
        url = self.request_url(request, proxies)
        self.add_headers(
            request,
            stream=stream,
            timeout=timeout,
            verify=verify,
            cert=cert,
            proxies=proxies,
        )
    
        chunked = not (request.body is None or "Content-Length" in 
request.headers)
    
        if isinstance(timeout, tuple):
            try:
                connect, read = timeout
                timeout = TimeoutSauce(connect=connect, read=read)
            except ValueError:
                raise ValueError(
                    f"Invalid timeout {timeout}. Pass a (connect, read) timeout 
tuple, "
                    f"or a single float to set both timeouts to the same value."
                )
        elif isinstance(timeout, TimeoutSauce):
            pass
        else:
            timeout = TimeoutSauce(connect=timeout, read=timeout)
    
        try:
            resp = conn.urlopen(
                method=request.method,
                url=url,
                body=request.body,
                headers=request.headers,
                redirect=False,
                assert_same_host=False,
                preload_content=False,
                decode_content=False,
                retries=self.max_retries,
                timeout=timeout,
                chunked=chunked,
            )
    
        except (ProtocolError, OSError) as err:
            raise ConnectionError(err, request=request)
    
        except MaxRetryError as e:
            if isinstance(e.reason, ConnectTimeoutError):
                # TODO: Remove this in 3.0.0: see #2811
                if not isinstance(e.reason, NewConnectionError):
                    raise ConnectTimeout(e, request=request)
    
            if isinstance(e.reason, ResponseError):
                raise RetryError(e, request=request)
    
            if isinstance(e.reason, _ProxyError):
>               raise ProxyError(e, request=request)
E               requests.exceptions.ProxyError: 
HTTPSConnectionPool(host='api.github.com', port=443): Max retries exceeded with 
url: /gists/2656908684d3965b80c2/2fb2f12f332f7e242b1a2af1f41e30ddf99f24c7 
(Caused by ProxyError('Unable to connect to proxy', 
NewConnectionError('<urllib3.connection.HTTPSConnection object at 
0x7fe549511a90>: Failed to establish a new connection: [Errno 111] Connection 
refused')))

/usr/lib/python3/dist-packages/requests/adapters.py:671: ProxyError
=============================== warnings summary ===============================
fsspec/tests/test_async.py::test_async_streamed_file_write
  /usr/lib/python3.14/functools.py:58: RuntimeWarning: coroutine 
'test_run_coros_in_chunks.<locals>.runner' was never awaited
    getattr(wrapper, attr).update(getattr(wrapped, attr, {}))
  Enable tracemalloc to get traceback where the object was allocated.
  See 
https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings
 for more info.

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED 
fsspec/implementations/tests/test_gist.py::test_gist_public_all_files[2656908684d3965b80c2-2fb2f12f332f7e242b1a2af1f41e30ddf99f24c7]
FAILED 
fsspec/implementations/tests/test_gist.py::test_gist_public_one_file[2656908684d3965b80c2-2fb2f12f332f7e242b1a2af1f41e30ddf99f24c7-distributed_error_logs_PY3_7-3-2016]
FAILED 
fsspec/implementations/tests/test_gist.py::test_gist_public_missing_file[2656908684d3965b80c2-2fb2f12f332f7e242b1a2af1f41e30ddf99f24c7-file-that-doesnt-exist.py]
= 3 failed, 1428 passed, 339 skipped, 3 deselected, 2 xfailed, 1 warning in 
23.15s =
E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_fsspec/build; python3.14 -m pytest 
--ignore=fsspec/implementations/tests/test_http_sync.py  
--ignore=fsspec/implementations/tests/test_github.py -k 'not 
test_dbfs_file_listing and not test_dbfs_mkdir and not test_dbfs_write_and_read 
and not test_dbfs_read_range and not test_dbfs_read_range_chunked and not 
test_find_returns_expected_result_detail_true_include_dirs and not 
test_find_returns_expected_result_detail_true and not 
test_async_cat_file_ranges' fsspec/
I: pybuild pybuild:308: cp -R /<<PKGBUILDDIR>>/fsspec/tests 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_fsspec/build/fsspec/ ; cp -R 
/<<PKGBUILDDIR>>/fsspec/implementations/tests 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_fsspec/build/fsspec/implementations/
I: pybuild base:317: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_fsspec/build; 
python3.13 -m pytest --ignore=fsspec/implementations/tests/test_http_sync.py  
--ignore=fsspec/implementations/tests/test_github.py -k 'not 
test_dbfs_file_listing and not test_dbfs_mkdir and not test_dbfs_write_and_read 
and not test_dbfs_read_range and not test_dbfs_read_range_chunked and not 
test_find_returns_expected_result_detail_true_include_dirs and not 
test_find_returns_expected_result_detail_true and not 
test_async_cat_file_ranges' fsspec/
============================= test session starts ==============================
platform linux -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0
rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_fsspec/build
configfile: pyproject.toml
plugins: asyncio-1.2.0, typeguard-4.4.4, mock-3.15.1, vcr-1.0.2
asyncio: mode=Mode.STRICT, debug=False, 
asyncio_default_fixture_loop_scope=None, 
asyncio_default_test_loop_scope=function
collected 1757 items / 3 deselected / 11 skipped / 1754 selected

fsspec/implementations/tests/local/local_test.py ....................... [  1%]
........................................................................ [  5%]
........................................                                 [  7%]
fsspec/implementations/tests/memory/memory_test.py ..................... [  8%]
........................................................................ [ 12%]
............................................                             [ 15%]
fsspec/implementations/tests/test_archive.py ........................... [ 17%]
.................................ssssssss.s.s...................s.s.s..s [ 21%]
sss                                                                      [ 21%]
fsspec/implementations/tests/test_asyn_wrapper.py .........              [ 21%]
fsspec/implementations/tests/test_cached.py ..........ssssssss......sss. [ 23%]
.................ssssssssssssssss.s........ssss.....................     [ 27%]
fsspec/implementations/tests/test_common.py ssss                         [ 27%]
fsspec/implementations/tests/test_data.py ..                             [ 27%]
fsspec/implementations/tests/test_dirfs.py ............................. [ 29%]
........................................................................ [ 33%]
.................................                                        [ 35%]
fsspec/implementations/tests/test_ftp.py sssssssssssssssssss             [ 36%]
fsspec/implementations/tests/test_http.py .............................. [ 38%]
...........................                                              [ 39%]
fsspec/implementations/tests/test_libarchive.py s                        [ 39%]
fsspec/implementations/tests/test_local.py .s........................s.. [ 41%]
.................................................................ss..... [ 45%]
...ss.sssss.......sss....s..........................                     [ 48%]
fsspec/implementations/tests/test_memory.py ............................ [ 50%]
..                                                                       [ 50%]
fsspec/implementations/tests/test_reference.py ..................s.....s [ 51%]
s..sssss                                                                 [ 51%]
fsspec/implementations/tests/test_tar.py .........................       [ 53%]
fsspec/implementations/tests/test_webhdfs.py ssssssssssss                [ 54%]
fsspec/implementations/tests/test_zip.py ...............                 [ 54%]
fsspec/tests/test_api.py ...............x......                          [ 56%]
fsspec/tests/test_async.py ............                                  [ 56%]
fsspec/tests/test_caches.py ............................................ [ 59%]
........................................................................ [ 63%]
..............................                                           [ 65%]
fsspec/tests/test_callbacks.py ........                                  [ 65%]
fsspec/tests/test_compression.py ...sss                                  [ 66%]
fsspec/tests/test_config.py .......                                      [ 66%]
fsspec/tests/test_core.py .............................................. [ 69%]
...ss..sss.s                                                             [ 69%]
fsspec/tests/test_file.py sssssssss.s                                    [ 70%]
fsspec/tests/test_generic.py .......                                     [ 70%]
fsspec/tests/test_mapping.py .................                           [ 71%]
fsspec/tests/test_parquet.py sssssssssssssssssssssssssssssssssssssssssss [ 74%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 78%]
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 82%]
sssss                                                                    [ 82%]
fsspec/tests/test_registry.py ......s                                    [ 83%]
fsspec/tests/test_spec.py ....................x......................... [ 85%]
............ssssssssss.................................................. [ 89%]
........................................................................ [ 93%]
........................................                                 [ 96%]
fsspec/tests/test_utils.py ............................................. [ 98%]
......................                                                   [100%]

=============================== warnings summary ===============================
fsspec/tests/test_caches.py::test_cache_getitem[background]
  /usr/lib/python3.13/inspect.py:764: RuntimeWarning: coroutine 
'test_run_coros_in_chunks.<locals>.runner' was never awaited
    def unwrap(func, *, stop=None):
  Enable tracemalloc to get traceback where the object was allocated.
  See 
https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings
 for more info.

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
==== 1422 passed, 341 skipped, 3 deselected, 2 xfailed, 1 warning in 23.00s ====
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.14 
3.13" returned exit code 13
make: *** [debian/rules:20: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------

Reply via email to