Skip to content

Conversation

flying-sheep
Copy link
Member

@flying-sheep flying-sheep commented Sep 4, 2025

@flying-sheep flying-sheep changed the title Fix variable names style: Fix variable names Sep 4, 2025
@flying-sheep flying-sheep added this to the 1.11.4 milestone Sep 4, 2025
Copy link

codecov bot commented Sep 4, 2025

❌ 32 Tests Failed:

Tests completed Failed Passed Skipped
2404 32 2372 137
View the top 3 failed test(s) by shortest run time
tests/test_highly_variable_genes.py::test_pearson_residuals_batch[csr_matrix-int64-200n-subset]
Stack Traces | 0s run time
self = <urllib.request.HTTPSHandler object at 0x7f400af10440>
http_class = <class 'http.client.HTTPSConnection'>
req = <urllib.request.Request object at 0x7f400e95b620>
http_conn_args = {'context': <ssl.SSLContext object at 0x7f400f60c0e0>}
host = 'falexwolf.de'
h = <http.client.HTTPSConnection object at 0x7f400af10590>
headers = {'Connection': 'close', 'Host': 'falexwolf.de', 'User-Agent': 'scanpy-user'}

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mdo_open#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, http_class, req, **http_conn_args):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return an HTTPResponse object for the request, using http_class.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    http_class must implement the HTTPConnection API from http.client.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        host = req.host#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m host:#x1B[90m#x1B[39;49;00m
            #x1B[94mraise#x1B[39;49;00m URLError(#x1B[33m'#x1B[39;49;00m#x1B[33mno host given#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# will parse host:port#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        h = http_class(host, timeout=req.timeout, **http_conn_args)#x1B[90m#x1B[39;49;00m
        h.set_debuglevel(#x1B[96mself#x1B[39;49;00m._debuglevel)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        headers = #x1B[96mdict#x1B[39;49;00m(req.unredirected_hdrs)#x1B[90m#x1B[39;49;00m
        headers.update({k: v #x1B[94mfor#x1B[39;49;00m k, v #x1B[95min#x1B[39;49;00m req.headers.items()#x1B[90m#x1B[39;49;00m
                        #x1B[94mif#x1B[39;49;00m k #x1B[95mnot#x1B[39;49;00m #x1B[95min#x1B[39;49;00m headers})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# TODO(jhylton): Should this be redesigned to handle#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# persistent connections?#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We want to make an HTTP/1.1 request, but the addinfourl#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# class isn't prepared to deal with a persistent connection.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# It will try to read all remaining data from the socket,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# which will block while the server waits for the next request.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# So make sure the connection gets closed after the (only)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# request.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        headers[#x1B[33m"#x1B[39;49;00m#x1B[33mConnection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m] = #x1B[33m"#x1B[39;49;00m#x1B[33mclose#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        headers = {name.title(): val #x1B[94mfor#x1B[39;49;00m name, val #x1B[95min#x1B[39;49;00m headers.items()}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m req._tunnel_host:#x1B[90m#x1B[39;49;00m
            tunnel_headers = {}#x1B[90m#x1B[39;49;00m
            proxy_auth_hdr = #x1B[33m"#x1B[39;49;00m#x1B[33mProxy-Authorization#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[94mif#x1B[39;49;00m proxy_auth_hdr #x1B[95min#x1B[39;49;00m headers:#x1B[90m#x1B[39;49;00m
                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]#x1B[90m#x1B[39;49;00m
                #x1B[90m# Proxy-Authorization should not be sent to origin#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[90m# server.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[94mdel#x1B[39;49;00m headers[proxy_auth_hdr]#x1B[90m#x1B[39;49;00m
            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>               h.request(req.get_method(), req.selector, req.data, headers,#x1B[90m#x1B[39;49;00m
                          encode_chunked=req.has_header(#x1B[33m'#x1B[39;49;00m#x1B[33mTransfer-encoding#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:1319: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1338: in request
    #x1B[0m#x1B[96mself#x1B[39;49;00m._send_request(method, url, body, headers, encode_chunked)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1384: in _send_request
    #x1B[0m#x1B[96mself#x1B[39;49;00m.endheaders(body, encode_chunked=encode_chunked)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1333: in endheaders
    #x1B[0m#x1B[96mself#x1B[39;49;00m._send_output(message_body, encode_chunked=encode_chunked)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1093: in _send_output
    #x1B[0m#x1B[96mself#x1B[39;49;00m.send(msg)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1037: in send
    #x1B[0m#x1B[96mself#x1B[39;49;00m.connect()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1472: in connect
    #x1B[0m#x1B[96msuper#x1B[39;49;00m().connect()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1003: in connect
    #x1B[0m#x1B[96mself#x1B[39;49;00m.sock = #x1B[96mself#x1B[39;49;00m._create_connection(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/socket.py#x1B[0m:864: in create_connection
    #x1B[0m#x1B[94mraise#x1B[39;49;00m exceptions[#x1B[94m0#x1B[39;49;00m]#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

address = ('falexwolf.de', 443), timeout = <object object at 0x7f404d180900>
source_address = None

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mcreate_connection#x1B[39;49;00m(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,#x1B[90m#x1B[39;49;00m
                          source_address=#x1B[94mNone#x1B[39;49;00m, *, all_errors=#x1B[94mFalse#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Connect to *address* and return the socket object.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Convenience function.  Connect to *address* (a 2-tuple ``(host,#x1B[39;49;00m
    #x1B[33m    port)``) and return the socket object.  Passing the optional#x1B[39;49;00m
    #x1B[33m    *timeout* parameter will set the timeout on the socket instance#x1B[39;49;00m
    #x1B[33m    before attempting to connect.  If no *timeout* is supplied, the#x1B[39;49;00m
    #x1B[33m    global default timeout setting returned by :func:`getdefaulttimeout`#x1B[39;49;00m
    #x1B[33m    is used.  If *source_address* is set it must be a tuple of (host, port)#x1B[39;49;00m
    #x1B[33m    for the socket to bind as a source address before making the connection.#x1B[39;49;00m
    #x1B[33m    A host of '' or port 0 tells the OS to use the default. When a connection#x1B[39;49;00m
    #x1B[33m    cannot be created, raises the last error if *all_errors* is False,#x1B[39;49;00m
    #x1B[33m    and an ExceptionGroup of all errors if *all_errors* is True.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        host, port = address#x1B[90m#x1B[39;49;00m
        exceptions = []#x1B[90m#x1B[39;49;00m
        #x1B[94mfor#x1B[39;49;00m res #x1B[95min#x1B[39;49;00m getaddrinfo(host, port, #x1B[94m0#x1B[39;49;00m, SOCK_STREAM):#x1B[90m#x1B[39;49;00m
            af, socktype, proto, canonname, sa = res#x1B[90m#x1B[39;49;00m
            sock = #x1B[94mNone#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                sock = socket(af, socktype, proto)#x1B[90m#x1B[39;49;00m
                #x1B[94mif#x1B[39;49;00m timeout #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m _GLOBAL_DEFAULT_TIMEOUT:#x1B[90m#x1B[39;49;00m
                    sock.settimeout(timeout)#x1B[90m#x1B[39;49;00m
                #x1B[94mif#x1B[39;49;00m source_address:#x1B[90m#x1B[39;49;00m
                    sock.bind(source_address)#x1B[90m#x1B[39;49;00m
>               sock.connect(sa)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE               TimeoutError: [Errno 110] Connection timed out#x1B[0m

#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/socket.py#x1B[0m:849: TimeoutError

#x1B[33mDuring handling of the above exception, another exception occurred:#x1B[0m

url = 'https://falexwolf.de/data/pbmc3k_raw.h5ad'
path = PosixPath('data/pbmc3k_raw.h5ad')

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_download#x1B[39;49;00m(url: #x1B[96mstr#x1B[39;49;00m, path: Path):#x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96murllib#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96merror#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m URLError#x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96murllib#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96mrequest#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m Request, urlopen#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96mtqdm#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96mauto#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m tqdm#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        blocksize = #x1B[94m1024#x1B[39;49;00m * #x1B[94m8#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        blocknum = #x1B[94m0#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            req = Request(url, headers={#x1B[33m"#x1B[39;49;00m#x1B[33mUser-agent#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m: #x1B[33m"#x1B[39;49;00m#x1B[33mscanpy-user#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
            #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>               open_url = urlopen(req)#x1B[90m#x1B[39;49;00m
                           ^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31msrc/scanpy/readwrite.py#x1B[0m:1080: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:189: in urlopen
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m opener.open(url, data, timeout)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:489: in open
    #x1B[0mresponse = #x1B[96mself#x1B[39;49;00m._open(req, data)#x1B[90m#x1B[39;49;00m
               ^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:506: in _open
    #x1B[0mresult = #x1B[96mself#x1B[39;49;00m._call_chain(#x1B[96mself#x1B[39;49;00m.handle_open, protocol, protocol +#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:466: in _call_chain
    #x1B[0mresult = func(*args)#x1B[90m#x1B[39;49;00m
             ^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:1367: in https_open
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.do_open(http.client.HTTPSConnection, req,#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <urllib.request.HTTPSHandler object at 0x7f400af10440>
http_class = <class 'http.client.HTTPSConnection'>
req = <urllib.request.Request object at 0x7f400e95b620>
http_conn_args = {'context': <ssl.SSLContext object at 0x7f400f60c0e0>}
host = 'falexwolf.de'
h = <http.client.HTTPSConnection object at 0x7f400af10590>
headers = {'Connection': 'close', 'Host': 'falexwolf.de', 'User-Agent': 'scanpy-user'}

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mdo_open#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, http_class, req, **http_conn_args):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return an HTTPResponse object for the request, using http_class.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    http_class must implement the HTTPConnection API from http.client.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        host = req.host#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m host:#x1B[90m#x1B[39;49;00m
            #x1B[94mraise#x1B[39;49;00m URLError(#x1B[33m'#x1B[39;49;00m#x1B[33mno host given#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# will parse host:port#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        h = http_class(host, timeout=req.timeout, **http_conn_args)#x1B[90m#x1B[39;49;00m
        h.set_debuglevel(#x1B[96mself#x1B[39;49;00m._debuglevel)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        headers = #x1B[96mdict#x1B[39;49;00m(req.unredirected_hdrs)#x1B[90m#x1B[39;49;00m
        headers.update({k: v #x1B[94mfor#x1B[39;49;00m k, v #x1B[95min#x1B[39;49;00m req.headers.items()#x1B[90m#x1B[39;49;00m
                        #x1B[94mif#x1B[39;49;00m k #x1B[95mnot#x1B[39;49;00m #x1B[95min#x1B[39;49;00m headers})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# TODO(jhylton): Should this be redesigned to handle#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# persistent connections?#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We want to make an HTTP/1.1 request, but the addinfourl#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# class isn't prepared to deal with a persistent connection.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# It will try to read all remaining data from the socket,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# which will block while the server waits for the next request.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# So make sure the connection gets closed after the (only)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# request.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        headers[#x1B[33m"#x1B[39;49;00m#x1B[33mConnection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m] = #x1B[33m"#x1B[39;49;00m#x1B[33mclose#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        headers = {name.title(): val #x1B[94mfor#x1B[39;49;00m name, val #x1B[95min#x1B[39;49;00m headers.items()}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m req._tunnel_host:#x1B[90m#x1B[39;49;00m
            tunnel_headers = {}#x1B[90m#x1B[39;49;00m
            proxy_auth_hdr = #x1B[33m"#x1B[39;49;00m#x1B[33mProxy-Authorization#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[94mif#x1B[39;49;00m proxy_auth_hdr #x1B[95min#x1B[39;49;00m headers:#x1B[90m#x1B[39;49;00m
                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]#x1B[90m#x1B[39;49;00m
                #x1B[90m# Proxy-Authorization should not be sent to origin#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[90m# server.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[94mdel#x1B[39;49;00m headers[proxy_auth_hdr]#x1B[90m#x1B[39;49;00m
            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                h.request(req.get_method(), req.selector, req.data, headers,#x1B[90m#x1B[39;49;00m
                          encode_chunked=req.has_header(#x1B[33m'#x1B[39;49;00m#x1B[33mTransfer-encoding#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
            #x1B[94mexcept#x1B[39;49;00m #x1B[96mOSError#x1B[39;49;00m #x1B[94mas#x1B[39;49;00m err: #x1B[90m# timeout error#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>               #x1B[94mraise#x1B[39;49;00m URLError(err)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE               urllib.error.URLError: <urlopen error [Errno 110] Connection timed out>#x1B[0m

#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:1322: URLError

#x1B[33mDuring handling of the above exception, another exception occurred:#x1B[0m

request = <SubRequest 'pbmc3ks_parametrized_session' for <Function test_pearson_residuals_general[csr_matrix-int64-200n-inftheta-noclip-full]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        scope=#x1B[33m"#x1B[39;49;00m#x1B[33msession#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        params=#x1B[96mlist#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
            product([sparse.csr_matrix.toarray, sparse.csr_matrix], [#x1B[33m"#x1B[39;49;00m#x1B[33mfloat32#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mint64#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m])  #x1B[90m# noqa: TID251#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        ),#x1B[90m#x1B[39;49;00m
        ids=#x1B[94mlambda#x1B[39;49;00m x: #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mx[#x1B[94m0#x1B[39;49;00m].#x1B[91m__name__#x1B[39;49;00m#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mx[#x1B[94m1#x1B[39;49;00m]#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mpbmc3ks_parametrized_session#x1B[39;49;00m(request) -> #x1B[96mdict#x1B[39;49;00m[#x1B[96mbool#x1B[39;49;00m, AnnData]:#x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96m_helpers#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96mdata#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m pbmc3k#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        sparsity_func, dtype = request.param#x1B[90m#x1B[39;49;00m
        #x1B[94mreturn#x1B[39;49;00m {#x1B[90m#x1B[39;49;00m
>           small: _prepare_pbmc_testdata(pbmc3k(), sparsity_func, dtype, small=small)#x1B[90m#x1B[39;49;00m
                                          ^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m small #x1B[95min#x1B[39;49;00m [#x1B[94mTrue#x1B[39;49;00m, #x1B[94mFalse#x1B[39;49;00m]#x1B[90m#x1B[39;49;00m
        }#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[.../_pytest/fixtures/data.py#x1B[0m:55: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[.../scanpy/_helpers/data.py#x1B[0m:31: in pbmc3k
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m _pbmc3k().copy()#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../scanpy/datasets/_utils.py#x1B[0m:20: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m f(*args, **kwargs)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../scanpy/datasets/_datasets.py#x1B[0m:414: in pbmc3k
    #x1B[0madata = read(settings.datasetdir / #x1B[33m"#x1B[39;49;00m#x1B[33mpbmc3k_raw.h5ad#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, backup_url=url)#x1B[90m#x1B[39;49;00m
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../scanpy/B9PcT7QG/hatch-test.stable/lib/python3.13.../site-packages/legacy_api_wrap/__init__.py#x1B[0m:82: in fn_compatible
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m fn(*args_all, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31msrc/scanpy/readwrite.py#x1B[0m:152: in read
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m _read(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31msrc/scanpy/readwrite.py#x1B[0m:836: in _read
    #x1B[0mis_present = _check_datafile_present_and_download(filename, backup_url=backup_url)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31msrc/scanpy/readwrite.py#x1B[0m:1139: in _check_datafile_present_and_download
    #x1B[0m_download(backup_url, path)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

url = 'https://falexwolf.de/data/pbmc3k_raw.h5ad'
path = PosixPath('data/pbmc3k_raw.h5ad')

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_download#x1B[39;49;00m(url: #x1B[96mstr#x1B[39;49;00m, path: Path):#x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96murllib#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96merror#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m URLError#x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96murllib#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96mrequest#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m Request, urlopen#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96mtqdm#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96mauto#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m tqdm#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        blocksize = #x1B[94m1024#x1B[39;49;00m * #x1B[94m8#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        blocknum = #x1B[94m0#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            req = Request(url, headers={#x1B[33m"#x1B[39;49;00m#x1B[33mUser-agent#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m: #x1B[33m"#x1B[39;49;00m#x1B[33mscanpy-user#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
            #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                open_url = urlopen(req)#x1B[90m#x1B[39;49;00m
            #x1B[94mexcept#x1B[39;49;00m URLError:#x1B[90m#x1B[39;49;00m
                #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m url.startswith(#x1B[33m"#x1B[39;49;00m#x1B[33mhttps://#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
                    #x1B[94mraise#x1B[39;49;00m  #x1B[90m# No need to try using certifi#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                msg = #x1B[33m"#x1B[39;49;00m#x1B[33mFailed to open the url with default certificates.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>                   #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96mcertifi#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m where#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE                   ModuleNotFoundError: No module named 'certifi'#x1B[0m
#x1B[1m#x1B[31mE                   Failed to open the url with default certificates. Please install `certifi` and try again.#x1B[0m

#x1B[1m#x1B[31msrc/scanpy/readwrite.py#x1B[0m:1087: ModuleNotFoundError
tests/test_highly_variable_genes.py::test_pearson_residuals_general[csr_matrix-int64-100n-100theta-30clip-subset]
Stack Traces | 0s run time
self = <urllib.request.HTTPSHandler object at 0x7f400af10440>
http_class = <class 'http.client.HTTPSConnection'>
req = <urllib.request.Request object at 0x7f400e95b620>
http_conn_args = {'context': <ssl.SSLContext object at 0x7f400f60c0e0>}
host = 'falexwolf.de'
h = <http.client.HTTPSConnection object at 0x7f400af10590>
headers = {'Connection': 'close', 'Host': 'falexwolf.de', 'User-Agent': 'scanpy-user'}

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mdo_open#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, http_class, req, **http_conn_args):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return an HTTPResponse object for the request, using http_class.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    http_class must implement the HTTPConnection API from http.client.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        host = req.host#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m host:#x1B[90m#x1B[39;49;00m
            #x1B[94mraise#x1B[39;49;00m URLError(#x1B[33m'#x1B[39;49;00m#x1B[33mno host given#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# will parse host:port#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        h = http_class(host, timeout=req.timeout, **http_conn_args)#x1B[90m#x1B[39;49;00m
        h.set_debuglevel(#x1B[96mself#x1B[39;49;00m._debuglevel)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        headers = #x1B[96mdict#x1B[39;49;00m(req.unredirected_hdrs)#x1B[90m#x1B[39;49;00m
        headers.update({k: v #x1B[94mfor#x1B[39;49;00m k, v #x1B[95min#x1B[39;49;00m req.headers.items()#x1B[90m#x1B[39;49;00m
                        #x1B[94mif#x1B[39;49;00m k #x1B[95mnot#x1B[39;49;00m #x1B[95min#x1B[39;49;00m headers})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# TODO(jhylton): Should this be redesigned to handle#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# persistent connections?#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We want to make an HTTP/1.1 request, but the addinfourl#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# class isn't prepared to deal with a persistent connection.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# It will try to read all remaining data from the socket,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# which will block while the server waits for the next request.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# So make sure the connection gets closed after the (only)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# request.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        headers[#x1B[33m"#x1B[39;49;00m#x1B[33mConnection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m] = #x1B[33m"#x1B[39;49;00m#x1B[33mclose#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        headers = {name.title(): val #x1B[94mfor#x1B[39;49;00m name, val #x1B[95min#x1B[39;49;00m headers.items()}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m req._tunnel_host:#x1B[90m#x1B[39;49;00m
            tunnel_headers = {}#x1B[90m#x1B[39;49;00m
            proxy_auth_hdr = #x1B[33m"#x1B[39;49;00m#x1B[33mProxy-Authorization#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[94mif#x1B[39;49;00m proxy_auth_hdr #x1B[95min#x1B[39;49;00m headers:#x1B[90m#x1B[39;49;00m
                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]#x1B[90m#x1B[39;49;00m
                #x1B[90m# Proxy-Authorization should not be sent to origin#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[90m# server.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[94mdel#x1B[39;49;00m headers[proxy_auth_hdr]#x1B[90m#x1B[39;49;00m
            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>               h.request(req.get_method(), req.selector, req.data, headers,#x1B[90m#x1B[39;49;00m
                          encode_chunked=req.has_header(#x1B[33m'#x1B[39;49;00m#x1B[33mTransfer-encoding#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:1319: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1338: in request
    #x1B[0m#x1B[96mself#x1B[39;49;00m._send_request(method, url, body, headers, encode_chunked)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1384: in _send_request
    #x1B[0m#x1B[96mself#x1B[39;49;00m.endheaders(body, encode_chunked=encode_chunked)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1333: in endheaders
    #x1B[0m#x1B[96mself#x1B[39;49;00m._send_output(message_body, encode_chunked=encode_chunked)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1093: in _send_output
    #x1B[0m#x1B[96mself#x1B[39;49;00m.send(msg)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1037: in send
    #x1B[0m#x1B[96mself#x1B[39;49;00m.connect()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1472: in connect
    #x1B[0m#x1B[96msuper#x1B[39;49;00m().connect()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1003: in connect
    #x1B[0m#x1B[96mself#x1B[39;49;00m.sock = #x1B[96mself#x1B[39;49;00m._create_connection(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/socket.py#x1B[0m:864: in create_connection
    #x1B[0m#x1B[94mraise#x1B[39;49;00m exceptions[#x1B[94m0#x1B[39;49;00m]#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

address = ('falexwolf.de', 443), timeout = <object object at 0x7f404d180900>
source_address = None

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mcreate_connection#x1B[39;49;00m(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,#x1B[90m#x1B[39;49;00m
                          source_address=#x1B[94mNone#x1B[39;49;00m, *, all_errors=#x1B[94mFalse#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Connect to *address* and return the socket object.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Convenience function.  Connect to *address* (a 2-tuple ``(host,#x1B[39;49;00m
    #x1B[33m    port)``) and return the socket object.  Passing the optional#x1B[39;49;00m
    #x1B[33m    *timeout* parameter will set the timeout on the socket instance#x1B[39;49;00m
    #x1B[33m    before attempting to connect.  If no *timeout* is supplied, the#x1B[39;49;00m
    #x1B[33m    global default timeout setting returned by :func:`getdefaulttimeout`#x1B[39;49;00m
    #x1B[33m    is used.  If *source_address* is set it must be a tuple of (host, port)#x1B[39;49;00m
    #x1B[33m    for the socket to bind as a source address before making the connection.#x1B[39;49;00m
    #x1B[33m    A host of '' or port 0 tells the OS to use the default. When a connection#x1B[39;49;00m
    #x1B[33m    cannot be created, raises the last error if *all_errors* is False,#x1B[39;49;00m
    #x1B[33m    and an ExceptionGroup of all errors if *all_errors* is True.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        host, port = address#x1B[90m#x1B[39;49;00m
        exceptions = []#x1B[90m#x1B[39;49;00m
        #x1B[94mfor#x1B[39;49;00m res #x1B[95min#x1B[39;49;00m getaddrinfo(host, port, #x1B[94m0#x1B[39;49;00m, SOCK_STREAM):#x1B[90m#x1B[39;49;00m
            af, socktype, proto, canonname, sa = res#x1B[90m#x1B[39;49;00m
            sock = #x1B[94mNone#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                sock = socket(af, socktype, proto)#x1B[90m#x1B[39;49;00m
                #x1B[94mif#x1B[39;49;00m timeout #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m _GLOBAL_DEFAULT_TIMEOUT:#x1B[90m#x1B[39;49;00m
                    sock.settimeout(timeout)#x1B[90m#x1B[39;49;00m
                #x1B[94mif#x1B[39;49;00m source_address:#x1B[90m#x1B[39;49;00m
                    sock.bind(source_address)#x1B[90m#x1B[39;49;00m
>               sock.connect(sa)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE               TimeoutError: [Errno 110] Connection timed out#x1B[0m

#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/socket.py#x1B[0m:849: TimeoutError

#x1B[33mDuring handling of the above exception, another exception occurred:#x1B[0m

url = 'https://falexwolf.de/data/pbmc3k_raw.h5ad'
path = PosixPath('data/pbmc3k_raw.h5ad')

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_download#x1B[39;49;00m(url: #x1B[96mstr#x1B[39;49;00m, path: Path):#x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96murllib#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96merror#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m URLError#x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96murllib#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96mrequest#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m Request, urlopen#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96mtqdm#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96mauto#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m tqdm#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        blocksize = #x1B[94m1024#x1B[39;49;00m * #x1B[94m8#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        blocknum = #x1B[94m0#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            req = Request(url, headers={#x1B[33m"#x1B[39;49;00m#x1B[33mUser-agent#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m: #x1B[33m"#x1B[39;49;00m#x1B[33mscanpy-user#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
            #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>               open_url = urlopen(req)#x1B[90m#x1B[39;49;00m
                           ^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31msrc/scanpy/readwrite.py#x1B[0m:1080: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:189: in urlopen
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m opener.open(url, data, timeout)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:489: in open
    #x1B[0mresponse = #x1B[96mself#x1B[39;49;00m._open(req, data)#x1B[90m#x1B[39;49;00m
               ^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:506: in _open
    #x1B[0mresult = #x1B[96mself#x1B[39;49;00m._call_chain(#x1B[96mself#x1B[39;49;00m.handle_open, protocol, protocol +#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:466: in _call_chain
    #x1B[0mresult = func(*args)#x1B[90m#x1B[39;49;00m
             ^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:1367: in https_open
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.do_open(http.client.HTTPSConnection, req,#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <urllib.request.HTTPSHandler object at 0x7f400af10440>
http_class = <class 'http.client.HTTPSConnection'>
req = <urllib.request.Request object at 0x7f400e95b620>
http_conn_args = {'context': <ssl.SSLContext object at 0x7f400f60c0e0>}
host = 'falexwolf.de'
h = <http.client.HTTPSConnection object at 0x7f400af10590>
headers = {'Connection': 'close', 'Host': 'falexwolf.de', 'User-Agent': 'scanpy-user'}

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mdo_open#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, http_class, req, **http_conn_args):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return an HTTPResponse object for the request, using http_class.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    http_class must implement the HTTPConnection API from http.client.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        host = req.host#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m host:#x1B[90m#x1B[39;49;00m
            #x1B[94mraise#x1B[39;49;00m URLError(#x1B[33m'#x1B[39;49;00m#x1B[33mno host given#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# will parse host:port#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        h = http_class(host, timeout=req.timeout, **http_conn_args)#x1B[90m#x1B[39;49;00m
        h.set_debuglevel(#x1B[96mself#x1B[39;49;00m._debuglevel)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        headers = #x1B[96mdict#x1B[39;49;00m(req.unredirected_hdrs)#x1B[90m#x1B[39;49;00m
        headers.update({k: v #x1B[94mfor#x1B[39;49;00m k, v #x1B[95min#x1B[39;49;00m req.headers.items()#x1B[90m#x1B[39;49;00m
                        #x1B[94mif#x1B[39;49;00m k #x1B[95mnot#x1B[39;49;00m #x1B[95min#x1B[39;49;00m headers})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# TODO(jhylton): Should this be redesigned to handle#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# persistent connections?#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We want to make an HTTP/1.1 request, but the addinfourl#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# class isn't prepared to deal with a persistent connection.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# It will try to read all remaining data from the socket,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# which will block while the server waits for the next request.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# So make sure the connection gets closed after the (only)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# request.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        headers[#x1B[33m"#x1B[39;49;00m#x1B[33mConnection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m] = #x1B[33m"#x1B[39;49;00m#x1B[33mclose#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        headers = {name.title(): val #x1B[94mfor#x1B[39;49;00m name, val #x1B[95min#x1B[39;49;00m headers.items()}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m req._tunnel_host:#x1B[90m#x1B[39;49;00m
            tunnel_headers = {}#x1B[90m#x1B[39;49;00m
            proxy_auth_hdr = #x1B[33m"#x1B[39;49;00m#x1B[33mProxy-Authorization#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[94mif#x1B[39;49;00m proxy_auth_hdr #x1B[95min#x1B[39;49;00m headers:#x1B[90m#x1B[39;49;00m
                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]#x1B[90m#x1B[39;49;00m
                #x1B[90m# Proxy-Authorization should not be sent to origin#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[90m# server.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[94mdel#x1B[39;49;00m headers[proxy_auth_hdr]#x1B[90m#x1B[39;49;00m
            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                h.request(req.get_method(), req.selector, req.data, headers,#x1B[90m#x1B[39;49;00m
                          encode_chunked=req.has_header(#x1B[33m'#x1B[39;49;00m#x1B[33mTransfer-encoding#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
            #x1B[94mexcept#x1B[39;49;00m #x1B[96mOSError#x1B[39;49;00m #x1B[94mas#x1B[39;49;00m err: #x1B[90m# timeout error#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>               #x1B[94mraise#x1B[39;49;00m URLError(err)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE               urllib.error.URLError: <urlopen error [Errno 110] Connection timed out>#x1B[0m

#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:1322: URLError

#x1B[33mDuring handling of the above exception, another exception occurred:#x1B[0m

request = <SubRequest 'pbmc3ks_parametrized_session' for <Function test_pearson_residuals_general[csr_matrix-int64-200n-inftheta-noclip-full]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        scope=#x1B[33m"#x1B[39;49;00m#x1B[33msession#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        params=#x1B[96mlist#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
            product([sparse.csr_matrix.toarray, sparse.csr_matrix], [#x1B[33m"#x1B[39;49;00m#x1B[33mfloat32#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mint64#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m])  #x1B[90m# noqa: TID251#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        ),#x1B[90m#x1B[39;49;00m
        ids=#x1B[94mlambda#x1B[39;49;00m x: #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mx[#x1B[94m0#x1B[39;49;00m].#x1B[91m__name__#x1B[39;49;00m#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mx[#x1B[94m1#x1B[39;49;00m]#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mpbmc3ks_parametrized_session#x1B[39;49;00m(request) -> #x1B[96mdict#x1B[39;49;00m[#x1B[96mbool#x1B[39;49;00m, AnnData]:#x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96m_helpers#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96mdata#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m pbmc3k#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        sparsity_func, dtype = request.param#x1B[90m#x1B[39;49;00m
        #x1B[94mreturn#x1B[39;49;00m {#x1B[90m#x1B[39;49;00m
>           small: _prepare_pbmc_testdata(pbmc3k(), sparsity_func, dtype, small=small)#x1B[90m#x1B[39;49;00m
                                          ^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m small #x1B[95min#x1B[39;49;00m [#x1B[94mTrue#x1B[39;49;00m, #x1B[94mFalse#x1B[39;49;00m]#x1B[90m#x1B[39;49;00m
        }#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[.../_pytest/fixtures/data.py#x1B[0m:55: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[.../scanpy/_helpers/data.py#x1B[0m:31: in pbmc3k
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m _pbmc3k().copy()#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../scanpy/datasets/_utils.py#x1B[0m:20: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m f(*args, **kwargs)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../scanpy/datasets/_datasets.py#x1B[0m:414: in pbmc3k
    #x1B[0madata = read(settings.datasetdir / #x1B[33m"#x1B[39;49;00m#x1B[33mpbmc3k_raw.h5ad#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, backup_url=url)#x1B[90m#x1B[39;49;00m
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../scanpy/B9PcT7QG/hatch-test.stable/lib/python3.13.../site-packages/legacy_api_wrap/__init__.py#x1B[0m:82: in fn_compatible
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m fn(*args_all, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31msrc/scanpy/readwrite.py#x1B[0m:152: in read
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m _read(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31msrc/scanpy/readwrite.py#x1B[0m:836: in _read
    #x1B[0mis_present = _check_datafile_present_and_download(filename, backup_url=backup_url)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31msrc/scanpy/readwrite.py#x1B[0m:1139: in _check_datafile_present_and_download
    #x1B[0m_download(backup_url, path)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

url = 'https://falexwolf.de/data/pbmc3k_raw.h5ad'
path = PosixPath('data/pbmc3k_raw.h5ad')

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_download#x1B[39;49;00m(url: #x1B[96mstr#x1B[39;49;00m, path: Path):#x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96murllib#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96merror#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m URLError#x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96murllib#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96mrequest#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m Request, urlopen#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96mtqdm#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96mauto#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m tqdm#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        blocksize = #x1B[94m1024#x1B[39;49;00m * #x1B[94m8#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        blocknum = #x1B[94m0#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            req = Request(url, headers={#x1B[33m"#x1B[39;49;00m#x1B[33mUser-agent#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m: #x1B[33m"#x1B[39;49;00m#x1B[33mscanpy-user#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
            #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                open_url = urlopen(req)#x1B[90m#x1B[39;49;00m
            #x1B[94mexcept#x1B[39;49;00m URLError:#x1B[90m#x1B[39;49;00m
                #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m url.startswith(#x1B[33m"#x1B[39;49;00m#x1B[33mhttps://#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
                    #x1B[94mraise#x1B[39;49;00m  #x1B[90m# No need to try using certifi#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                msg = #x1B[33m"#x1B[39;49;00m#x1B[33mFailed to open the url with default certificates.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>                   #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96mcertifi#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m where#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE                   ModuleNotFoundError: No module named 'certifi'#x1B[0m
#x1B[1m#x1B[31mE                   Failed to open the url with default certificates. Please install `certifi` and try again.#x1B[0m

#x1B[1m#x1B[31msrc/scanpy/readwrite.py#x1B[0m:1087: ModuleNotFoundError
tests/test_highly_variable_genes.py::test_pearson_residuals_general[csr_matrix-int64-200n-100theta-noclip-subset]
Stack Traces | 0s run time
self = <urllib.request.HTTPSHandler object at 0x7f400af10440>
http_class = <class 'http.client.HTTPSConnection'>
req = <urllib.request.Request object at 0x7f400e95b620>
http_conn_args = {'context': <ssl.SSLContext object at 0x7f400f60c0e0>}
host = 'falexwolf.de'
h = <http.client.HTTPSConnection object at 0x7f400af10590>
headers = {'Connection': 'close', 'Host': 'falexwolf.de', 'User-Agent': 'scanpy-user'}

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mdo_open#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, http_class, req, **http_conn_args):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return an HTTPResponse object for the request, using http_class.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    http_class must implement the HTTPConnection API from http.client.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        host = req.host#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m host:#x1B[90m#x1B[39;49;00m
            #x1B[94mraise#x1B[39;49;00m URLError(#x1B[33m'#x1B[39;49;00m#x1B[33mno host given#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# will parse host:port#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        h = http_class(host, timeout=req.timeout, **http_conn_args)#x1B[90m#x1B[39;49;00m
        h.set_debuglevel(#x1B[96mself#x1B[39;49;00m._debuglevel)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        headers = #x1B[96mdict#x1B[39;49;00m(req.unredirected_hdrs)#x1B[90m#x1B[39;49;00m
        headers.update({k: v #x1B[94mfor#x1B[39;49;00m k, v #x1B[95min#x1B[39;49;00m req.headers.items()#x1B[90m#x1B[39;49;00m
                        #x1B[94mif#x1B[39;49;00m k #x1B[95mnot#x1B[39;49;00m #x1B[95min#x1B[39;49;00m headers})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# TODO(jhylton): Should this be redesigned to handle#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# persistent connections?#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We want to make an HTTP/1.1 request, but the addinfourl#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# class isn't prepared to deal with a persistent connection.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# It will try to read all remaining data from the socket,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# which will block while the server waits for the next request.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# So make sure the connection gets closed after the (only)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# request.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        headers[#x1B[33m"#x1B[39;49;00m#x1B[33mConnection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m] = #x1B[33m"#x1B[39;49;00m#x1B[33mclose#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        headers = {name.title(): val #x1B[94mfor#x1B[39;49;00m name, val #x1B[95min#x1B[39;49;00m headers.items()}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m req._tunnel_host:#x1B[90m#x1B[39;49;00m
            tunnel_headers = {}#x1B[90m#x1B[39;49;00m
            proxy_auth_hdr = #x1B[33m"#x1B[39;49;00m#x1B[33mProxy-Authorization#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[94mif#x1B[39;49;00m proxy_auth_hdr #x1B[95min#x1B[39;49;00m headers:#x1B[90m#x1B[39;49;00m
                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]#x1B[90m#x1B[39;49;00m
                #x1B[90m# Proxy-Authorization should not be sent to origin#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[90m# server.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[94mdel#x1B[39;49;00m headers[proxy_auth_hdr]#x1B[90m#x1B[39;49;00m
            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>               h.request(req.get_method(), req.selector, req.data, headers,#x1B[90m#x1B[39;49;00m
                          encode_chunked=req.has_header(#x1B[33m'#x1B[39;49;00m#x1B[33mTransfer-encoding#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:1319: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1338: in request
    #x1B[0m#x1B[96mself#x1B[39;49;00m._send_request(method, url, body, headers, encode_chunked)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1384: in _send_request
    #x1B[0m#x1B[96mself#x1B[39;49;00m.endheaders(body, encode_chunked=encode_chunked)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1333: in endheaders
    #x1B[0m#x1B[96mself#x1B[39;49;00m._send_output(message_body, encode_chunked=encode_chunked)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1093: in _send_output
    #x1B[0m#x1B[96mself#x1B[39;49;00m.send(msg)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1037: in send
    #x1B[0m#x1B[96mself#x1B[39;49;00m.connect()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1472: in connect
    #x1B[0m#x1B[96msuper#x1B[39;49;00m().connect()#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/http/client.py#x1B[0m:1003: in connect
    #x1B[0m#x1B[96mself#x1B[39;49;00m.sock = #x1B[96mself#x1B[39;49;00m._create_connection(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/socket.py#x1B[0m:864: in create_connection
    #x1B[0m#x1B[94mraise#x1B[39;49;00m exceptions[#x1B[94m0#x1B[39;49;00m]#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

address = ('falexwolf.de', 443), timeout = <object object at 0x7f404d180900>
source_address = None

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mcreate_connection#x1B[39;49;00m(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,#x1B[90m#x1B[39;49;00m
                          source_address=#x1B[94mNone#x1B[39;49;00m, *, all_errors=#x1B[94mFalse#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Connect to *address* and return the socket object.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Convenience function.  Connect to *address* (a 2-tuple ``(host,#x1B[39;49;00m
    #x1B[33m    port)``) and return the socket object.  Passing the optional#x1B[39;49;00m
    #x1B[33m    *timeout* parameter will set the timeout on the socket instance#x1B[39;49;00m
    #x1B[33m    before attempting to connect.  If no *timeout* is supplied, the#x1B[39;49;00m
    #x1B[33m    global default timeout setting returned by :func:`getdefaulttimeout`#x1B[39;49;00m
    #x1B[33m    is used.  If *source_address* is set it must be a tuple of (host, port)#x1B[39;49;00m
    #x1B[33m    for the socket to bind as a source address before making the connection.#x1B[39;49;00m
    #x1B[33m    A host of '' or port 0 tells the OS to use the default. When a connection#x1B[39;49;00m
    #x1B[33m    cannot be created, raises the last error if *all_errors* is False,#x1B[39;49;00m
    #x1B[33m    and an ExceptionGroup of all errors if *all_errors* is True.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        host, port = address#x1B[90m#x1B[39;49;00m
        exceptions = []#x1B[90m#x1B[39;49;00m
        #x1B[94mfor#x1B[39;49;00m res #x1B[95min#x1B[39;49;00m getaddrinfo(host, port, #x1B[94m0#x1B[39;49;00m, SOCK_STREAM):#x1B[90m#x1B[39;49;00m
            af, socktype, proto, canonname, sa = res#x1B[90m#x1B[39;49;00m
            sock = #x1B[94mNone#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                sock = socket(af, socktype, proto)#x1B[90m#x1B[39;49;00m
                #x1B[94mif#x1B[39;49;00m timeout #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m _GLOBAL_DEFAULT_TIMEOUT:#x1B[90m#x1B[39;49;00m
                    sock.settimeout(timeout)#x1B[90m#x1B[39;49;00m
                #x1B[94mif#x1B[39;49;00m source_address:#x1B[90m#x1B[39;49;00m
                    sock.bind(source_address)#x1B[90m#x1B[39;49;00m
>               sock.connect(sa)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE               TimeoutError: [Errno 110] Connection timed out#x1B[0m

#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/socket.py#x1B[0m:849: TimeoutError

#x1B[33mDuring handling of the above exception, another exception occurred:#x1B[0m

url = 'https://falexwolf.de/data/pbmc3k_raw.h5ad'
path = PosixPath('data/pbmc3k_raw.h5ad')

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_download#x1B[39;49;00m(url: #x1B[96mstr#x1B[39;49;00m, path: Path):#x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96murllib#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96merror#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m URLError#x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96murllib#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96mrequest#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m Request, urlopen#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96mtqdm#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96mauto#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m tqdm#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        blocksize = #x1B[94m1024#x1B[39;49;00m * #x1B[94m8#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        blocknum = #x1B[94m0#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            req = Request(url, headers={#x1B[33m"#x1B[39;49;00m#x1B[33mUser-agent#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m: #x1B[33m"#x1B[39;49;00m#x1B[33mscanpy-user#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
            #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>               open_url = urlopen(req)#x1B[90m#x1B[39;49;00m
                           ^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31msrc/scanpy/readwrite.py#x1B[0m:1080: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:189: in urlopen
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m opener.open(url, data, timeout)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:489: in open
    #x1B[0mresponse = #x1B[96mself#x1B[39;49;00m._open(req, data)#x1B[90m#x1B[39;49;00m
               ^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:506: in _open
    #x1B[0mresult = #x1B[96mself#x1B[39;49;00m._call_chain(#x1B[96mself#x1B[39;49;00m.handle_open, protocol, protocol +#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:466: in _call_chain
    #x1B[0mresult = func(*args)#x1B[90m#x1B[39;49;00m
             ^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:1367: in https_open
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.do_open(http.client.HTTPSConnection, req,#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <urllib.request.HTTPSHandler object at 0x7f400af10440>
http_class = <class 'http.client.HTTPSConnection'>
req = <urllib.request.Request object at 0x7f400e95b620>
http_conn_args = {'context': <ssl.SSLContext object at 0x7f400f60c0e0>}
host = 'falexwolf.de'
h = <http.client.HTTPSConnection object at 0x7f400af10590>
headers = {'Connection': 'close', 'Host': 'falexwolf.de', 'User-Agent': 'scanpy-user'}

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mdo_open#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, http_class, req, **http_conn_args):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return an HTTPResponse object for the request, using http_class.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    http_class must implement the HTTPConnection API from http.client.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        host = req.host#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m host:#x1B[90m#x1B[39;49;00m
            #x1B[94mraise#x1B[39;49;00m URLError(#x1B[33m'#x1B[39;49;00m#x1B[33mno host given#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# will parse host:port#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        h = http_class(host, timeout=req.timeout, **http_conn_args)#x1B[90m#x1B[39;49;00m
        h.set_debuglevel(#x1B[96mself#x1B[39;49;00m._debuglevel)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        headers = #x1B[96mdict#x1B[39;49;00m(req.unredirected_hdrs)#x1B[90m#x1B[39;49;00m
        headers.update({k: v #x1B[94mfor#x1B[39;49;00m k, v #x1B[95min#x1B[39;49;00m req.headers.items()#x1B[90m#x1B[39;49;00m
                        #x1B[94mif#x1B[39;49;00m k #x1B[95mnot#x1B[39;49;00m #x1B[95min#x1B[39;49;00m headers})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# TODO(jhylton): Should this be redesigned to handle#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# persistent connections?#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# We want to make an HTTP/1.1 request, but the addinfourl#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# class isn't prepared to deal with a persistent connection.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# It will try to read all remaining data from the socket,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# which will block while the server waits for the next request.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# So make sure the connection gets closed after the (only)#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# request.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        headers[#x1B[33m"#x1B[39;49;00m#x1B[33mConnection#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m] = #x1B[33m"#x1B[39;49;00m#x1B[33mclose#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        headers = {name.title(): val #x1B[94mfor#x1B[39;49;00m name, val #x1B[95min#x1B[39;49;00m headers.items()}#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m req._tunnel_host:#x1B[90m#x1B[39;49;00m
            tunnel_headers = {}#x1B[90m#x1B[39;49;00m
            proxy_auth_hdr = #x1B[33m"#x1B[39;49;00m#x1B[33mProxy-Authorization#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[94mif#x1B[39;49;00m proxy_auth_hdr #x1B[95min#x1B[39;49;00m headers:#x1B[90m#x1B[39;49;00m
                tunnel_headers[proxy_auth_hdr] = headers[proxy_auth_hdr]#x1B[90m#x1B[39;49;00m
                #x1B[90m# Proxy-Authorization should not be sent to origin#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[90m# server.#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[94mdel#x1B[39;49;00m headers[proxy_auth_hdr]#x1B[90m#x1B[39;49;00m
            h.set_tunnel(req._tunnel_host, headers=tunnel_headers)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                h.request(req.get_method(), req.selector, req.data, headers,#x1B[90m#x1B[39;49;00m
                          encode_chunked=req.has_header(#x1B[33m'#x1B[39;49;00m#x1B[33mTransfer-encoding#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
            #x1B[94mexcept#x1B[39;49;00m #x1B[96mOSError#x1B[39;49;00m #x1B[94mas#x1B[39;49;00m err: #x1B[90m# timeout error#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>               #x1B[94mraise#x1B[39;49;00m URLError(err)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE               urllib.error.URLError: <urlopen error [Errno 110] Connection timed out>#x1B[0m

#x1B[1m#x1B[31m../../../..../uv/python/cpython-3.13.3-linux-x86_64-gnu/lib/python3.13/urllib/request.py#x1B[0m:1322: URLError

#x1B[33mDuring handling of the above exception, another exception occurred:#x1B[0m

request = <SubRequest 'pbmc3ks_parametrized_session' for <Function test_pearson_residuals_general[csr_matrix-int64-200n-inftheta-noclip-full]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        scope=#x1B[33m"#x1B[39;49;00m#x1B[33msession#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        params=#x1B[96mlist#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
            product([sparse.csr_matrix.toarray, sparse.csr_matrix], [#x1B[33m"#x1B[39;49;00m#x1B[33mfloat32#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33mint64#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m])  #x1B[90m# noqa: TID251#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        ),#x1B[90m#x1B[39;49;00m
        ids=#x1B[94mlambda#x1B[39;49;00m x: #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mx[#x1B[94m0#x1B[39;49;00m].#x1B[91m__name__#x1B[39;49;00m#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mx[#x1B[94m1#x1B[39;49;00m]#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mpbmc3ks_parametrized_session#x1B[39;49;00m(request) -> #x1B[96mdict#x1B[39;49;00m[#x1B[96mbool#x1B[39;49;00m, AnnData]:#x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96m_helpers#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96mdata#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m pbmc3k#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        sparsity_func, dtype = request.param#x1B[90m#x1B[39;49;00m
        #x1B[94mreturn#x1B[39;49;00m {#x1B[90m#x1B[39;49;00m
>           small: _prepare_pbmc_testdata(pbmc3k(), sparsity_func, dtype, small=small)#x1B[90m#x1B[39;49;00m
                                          ^^^^^^^^#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m small #x1B[95min#x1B[39;49;00m [#x1B[94mTrue#x1B[39;49;00m, #x1B[94mFalse#x1B[39;49;00m]#x1B[90m#x1B[39;49;00m
        }#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[.../_pytest/fixtures/data.py#x1B[0m:55: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[.../scanpy/_helpers/data.py#x1B[0m:31: in pbmc3k
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m _pbmc3k().copy()#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../scanpy/datasets/_utils.py#x1B[0m:20: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m f(*args, **kwargs)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../scanpy/datasets/_datasets.py#x1B[0m:414: in pbmc3k
    #x1B[0madata = read(settings.datasetdir / #x1B[33m"#x1B[39;49;00m#x1B[33mpbmc3k_raw.h5ad#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, backup_url=url)#x1B[90m#x1B[39;49;00m
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../../../..../scanpy/B9PcT7QG/hatch-test.stable/lib/python3.13.../site-packages/legacy_api_wrap/__init__.py#x1B[0m:82: in fn_compatible
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m fn(*args_all, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31msrc/scanpy/readwrite.py#x1B[0m:152: in read
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m _read(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31msrc/scanpy/readwrite.py#x1B[0m:836: in _read
    #x1B[0mis_present = _check_datafile_present_and_download(filename, backup_url=backup_url)#x1B[90m#x1B[39;49;00m
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31msrc/scanpy/readwrite.py#x1B[0m:1139: in _check_datafile_present_and_download
    #x1B[0m_download(backup_url, path)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

url = 'https://falexwolf.de/data/pbmc3k_raw.h5ad'
path = PosixPath('data/pbmc3k_raw.h5ad')

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_download#x1B[39;49;00m(url: #x1B[96mstr#x1B[39;49;00m, path: Path):#x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96murllib#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96merror#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m URLError#x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96murllib#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96mrequest#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m Request, urlopen#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96mtqdm#x1B[39;49;00m#x1B[04m#x1B[96m.#x1B[39;49;00m#x1B[04m#x1B[96mauto#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m tqdm#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        blocksize = #x1B[94m1024#x1B[39;49;00m * #x1B[94m8#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        blocknum = #x1B[94m0#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            req = Request(url, headers={#x1B[33m"#x1B[39;49;00m#x1B[33mUser-agent#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m: #x1B[33m"#x1B[39;49;00m#x1B[33mscanpy-user#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m})#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
            #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                open_url = urlopen(req)#x1B[90m#x1B[39;49;00m
            #x1B[94mexcept#x1B[39;49;00m URLError:#x1B[90m#x1B[39;49;00m
                #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m url.startswith(#x1B[33m"#x1B[39;49;00m#x1B[33mhttps://#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
                    #x1B[94mraise#x1B[39;49;00m  #x1B[90m# No need to try using certifi#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
                msg = #x1B[33m"#x1B[39;49;00m#x1B[33mFailed to open the url with default certificates.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>                   #x1B[94mfrom#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[04m#x1B[96mcertifi#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[94mimport#x1B[39;49;00m where#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE                   ModuleNotFoundError: No module named 'certifi'#x1B[0m
#x1B[1m#x1B[31mE                   Failed to open the url with default certificates. Please install `certifi` and try again.#x1B[0m

#x1B[1m#x1B[31msrc/scanpy/readwrite.py#x1B[0m:1087: ModuleNotFoundError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@flying-sheep flying-sheep merged commit 9dceb9e into main Sep 4, 2025
10 of 11 checks passed
@flying-sheep flying-sheep deleted the pa/fix-names branch September 4, 2025 10:46
flying-sheep added a commit that referenced this pull request Sep 4, 2025
@scverse scverse deleted a comment from lumberbot-app bot Sep 4, 2025
Nismamjad1 pushed a commit to Nismamjad1/scanpy-yomix that referenced this pull request Oct 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant