{"id":274,"library":"httpcore","title":"httpcore","description":"httpcore is a minimal, low-level HTTP/1.1 and HTTP/2 client library for Python, intended as a transport layer for higher-level clients such as httpx. It provides synchronous and (optionally) asynchronous connection pooling, SOCKS proxy support, streaming responses, and a 'trace' extension for request lifecycle introspection. Current stable version is 1.0.9 (April 2025). The project follows SEMVER and releases several times per year.","status":"active","version":"1.0.9","language":"python","source_language":"en","source_url":"https://github.com/encode/httpcore","tags":["http","networking","client","low-level","transport","async","http2","socks","proxy","streaming"],"install":[{"cmd":"pip install httpcore","lang":"bash","label":"HTTP/1.1 only (minimal, no async)"},{"cmd":"pip install 'httpcore[asyncio]'","lang":"bash","label":"With asyncio async support"},{"cmd":"pip install 'httpcore[trio]'","lang":"bash","label":"With trio async support"},{"cmd":"pip install 'httpcore[http2]'","lang":"bash","label":"With HTTP/2 support"},{"cmd":"pip install 'httpcore[socks]'","lang":"bash","label":"With SOCKS proxy support"},{"cmd":"pip install 'httpcore[asyncio,http2,socks]'","lang":"bash","label":"Full-featured install"}],"dependencies":[{"reason":"HTTP/1.1 protocol implementation; required by default install","package":"h11","optional":false},{"reason":"Required for asyncio async backend (pip install httpcore[asyncio])","package":"anyio","optional":true},{"reason":"Required for trio async backend (pip install httpcore[trio])","package":"trio","optional":true},{"reason":"Required for HTTP/2 support (pip install httpcore[http2])","package":"h2","optional":true},{"reason":"Required for SOCKS proxy support (pip install httpcore[socks])","package":"socksio","optional":true}],"imports":[{"note":"All public API is exposed at the top-level httpcore namespace","symbol":"httpcore","correct":"import httpcore"},{"note":"SyncConnectionPool was the pre-1.0 name; use ConnectionPool in 1.x","wrong":"http = httpcore.SyncConnectionPool()","symbol":"ConnectionPool","correct":"import httpcore\nhttp = httpcore.ConnectionPool()"},{"note":"Requires httpcore[asyncio] or httpcore[trio] to be installed","symbol":"AsyncConnectionPool","correct":"import httpcore\nhttp = httpcore.AsyncConnectionPool()"},{"note":"Use proxy= kwarg on ConnectionPool() since 1.0.7 instead of wrapping manually","symbol":"HTTPProxy","correct":"import httpcore\nproxy = httpcore.HTTPProxy(proxy_url='http://proxy:8080')"},{"note":"Convenience function only; does not pool connections — use ConnectionPool for production","symbol":"request (top-level function)","correct":"import httpcore\nresponse = httpcore.request('GET', 'https://example.com')"}],"quickstart":{"code":"import httpcore\n\n# One-off request (no connection reuse)\nresponse = httpcore.request('GET', 'https://httpbin.org/get')\nprint(response.status)   # int, e.g. 200\n# Headers are List[Tuple[bytes, bytes]] — decode explicitly\nfor name, value in response.headers:\n    print(name.decode(), value.decode())\nprint(response.content)  # bytes\n\n# Production pattern: reuse a ConnectionPool\nwith httpcore.ConnectionPool() as http:\n    r = http.request('GET', 'https://httpbin.org/get')\n    print(r.status)\n\n# Streaming large response\nwith httpcore.stream('GET', 'https://httpbin.org/stream-bytes/1024') as r:\n    for chunk in r.iter_stream():\n        pass  # process chunk (bytes)\n\n# Async (requires: pip install 'httpcore[asyncio]')\nimport asyncio\n\nasync def main():\n    async with httpcore.AsyncConnectionPool() as http:\n        r = await http.request('GET', 'https://httpbin.org/get')\n        print(r.status)\n\nasyncio.run(main())\n","lang":"python","description":"Demonstrates the one-off request helper, the recommended ConnectionPool pattern, streaming, and async usage."},"warnings":[{"fix":"pip install 'httpcore>=1.0.9' to pull in h11>=0.16.0 which fixes CVE-2025-43859.","message":"CVE-2025-43859 (GHSA-vqfr-h8mv-ghfj): h11 <=0.15.0 accepts malformed Chunked-Encoding bodies enabling HTTP request smuggling (CVSS 9.1). httpcore <1.0.9 pulls in vulnerable h11. Upgrade to httpcore 1.0.9+ which requires h11>=0.16.0.","severity":"breaking","affected_versions":"<1.0.9"},{"fix":"Install the appropriate extra: pip install 'httpcore[asyncio]' or pip install 'httpcore[trio]'.","message":"Async support is NOT included in the default install since 1.0.0. Importing or instantiating AsyncConnectionPool without the async extras raises a RuntimeError at runtime, not at import time.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Decode header names/values explicitly: [(k.decode(), v.decode()) for k, v in response.headers], or use a higher-level client like httpx which handles decoding for you.","message":"Response headers (and request headers) are List[Tuple[bytes, bytes]], not a string-keyed dict. Comparing or accessing headers with plain strings will silently fail or raise a TypeError.","severity":"gotcha","affected_versions":">=0.14.0"},{"fix":"Instantiate httpcore.ConnectionPool() (or AsyncConnectionPool()) and reuse it across requests, ideally as a context manager.","message":"httpcore.request() and httpcore.stream() are top-level convenience helpers that open a new connection on every call. Using them in production code bypasses connection pooling entirely, causing a new TCP+TLS handshake per request.","severity":"gotcha","affected_versions":">=0.14.0"},{"fix":"Replace SyncConnectionPool with ConnectionPool and SyncHTTPProxy with HTTPProxy.","message":"The pre-1.0 class names SyncConnectionPool and SyncHTTPProxy were removed. Any code importing these names directly will raise an ImportError.","severity":"breaking","affected_versions":"<1.0.0"},{"fix":"Always use extensions={'timeout': {'connect': N, 'read': N, 'write': N, 'pool': N}} to configure timeouts.","message":"Timeouts are passed via the request extensions dict, not as top-level kwargs: httpcore.request('GET', url, extensions={'timeout': {'connect': 5.0, 'read': 10.0}}). Passing timeout= as a keyword argument has no effect and is silently ignored.","severity":"gotcha","affected_versions":">=0.14.0"},{"fix":"Call response.read() inside the stream context block before accessing response.content, or use httpcore.request() which reads the body automatically.","message":"response.content is only available after the full body has been read. When using httpcore.stream() or iterating response.iter_stream(), accessing response.content before calling response.read() raises an error.","severity":"gotcha","affected_versions":">=0.14.0"}],"env_vars":null,"last_verified":"2026-05-12T12:44:25.903Z","next_check":"2026-06-26T00:00:00.000Z","problems":[{"fix":"Install the library using pip: `pip install httpcore`.","cause":"The 'httpcore' library is not installed in your current Python environment.","error":"ModuleNotFoundError: No module named 'httpcore'"},{"fix":"Upgrade both `httpx` and `httpcore` to their latest compatible versions: `pip install --upgrade httpx httpcore`. If issues persist, try pinning to a known stable `httpx` version that is compatible with your `httpcore` installation (e.g., `pip install httpx==0.19.0`).","cause":"This error typically occurs due to version incompatibility between `httpx` (which uses `httpcore`) and `httpcore`, where `httpx` expects an attribute that is missing or has been moved in the installed `httpcore` version.","error":"AttributeError: module 'httpcore' has no attribute 'TimeoutException'"},{"fix":"Upgrade your `httpcore` package to version 0.15.0 or higher: `pip install --upgrade httpcore`.","cause":"This `AttributeError` arises from changes in the `httpcore` package, specifically when an older version of the library attempts to access the `NetworkBackend` attribute which was removed or renamed in newer updates.","error":"AttributeError: module 'httpcore' has no attribute 'NetworkBackend'"},{"fix":"Verify that the target server is running, reachable, and listening on the correct IP address and port. Check any firewalls or network configurations that might be blocking the connection.","cause":"This error indicates that the client attempted to establish a connection to a server, but the server actively refused the connection. This can be due to the server being offline, a firewall blocking the connection, or the service not running on the specified host and port.","error":"httpcore.ConnectError: [Errno 111] Connection refused"},{"fix":"Ensure that your proxy configuration includes the correct authentication credentials (username and password). For `httpx` (which uses `httpcore`), this can be done by providing them in the proxy URL, e.g., `proxies = {'all://': 'http://user:password@myproxy.com:8080'}`.","cause":"This error means that the proxy server requires authentication credentials, but they were not provided or were incorrect.","error":"httpcore.ProxyError: 407 Proxy Authentication Required"}],"ecosystem":"pypi","meta_description":null,"install_score":100,"install_tag":"verified","quickstart_score":0,"quickstart_tag":"stale","pypi_latest":null,"install_checks":{"last_tested":"2026-05-12","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"asyncio,http2,socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.31,"mem_mb":9,"disk_size":"22.6M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"asyncio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.25,"mem_mb":7.6,"disk_size":"21.3M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"http2","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.08,"mem_mb":5.9,"disk_size":"20.2M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.14,"mem_mb":4.9,"disk_size":"19.1M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"trio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.42,"mem_mb":9.4,"disk_size":"25.0M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.14,"mem_mb":4.7,"disk_size":"19.0M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"asyncio,http2,socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.85,"mem_mb":9,"disk_size":"23M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"asyncio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.18,"mem_mb":7.6,"disk_size":"22M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"http2","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.76,"mem_mb":5.9,"disk_size":"21M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.1,"mem_mb":4.9,"disk_size":"20M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"trio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.32,"mem_mb":9.4,"disk_size":"25M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.09,"mem_mb":4.7,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"asyncio,http2,socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.94,"mem_mb":10.2,"disk_size":"24.6M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"asyncio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.4,"mem_mb":8.7,"disk_size":"23.3M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"http2","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.74,"mem_mb":6.7,"disk_size":"22.1M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.24,"mem_mb":5.6,"disk_size":"21.1M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"trio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.53,"mem_mb":10,"disk_size":"27.7M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.23,"mem_mb":5.4,"disk_size":"21.0M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"asyncio,http2,socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.76,"mem_mb":10.2,"disk_size":"25M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"asyncio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.32,"mem_mb":8.7,"disk_size":"24M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"http2","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.63,"mem_mb":6.7,"disk_size":"23M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.21,"mem_mb":5.6,"disk_size":"22M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"trio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.46,"mem_mb":10,"disk_size":"28M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.18,"mem_mb":5.4,"disk_size":"21M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"asyncio,http2,socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.02,"mem_mb":10.8,"disk_size":"16.4M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"asyncio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.63,"mem_mb":10.8,"disk_size":"15.1M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"http2","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.62,"mem_mb":6.5,"disk_size":"14.0M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.2,"mem_mb":5.5,"disk_size":"12.9M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"trio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.46,"mem_mb":9.9,"disk_size":"19.2M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.2,"mem_mb":5.3,"disk_size":"12.8M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"asyncio,http2,socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":1.05,"mem_mb":10.8,"disk_size":"17M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"asyncio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.59,"mem_mb":10.8,"disk_size":"16M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"http2","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.67,"mem_mb":6.5,"disk_size":"14M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.23,"mem_mb":5.5,"disk_size":"13M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"trio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.47,"mem_mb":9.9,"disk_size":"20M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.2,"mem_mb":5.3,"disk_size":"13M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"asyncio,http2,socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.72,"mem_mb":8.8,"disk_size":"15.7M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"asyncio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.28,"mem_mb":7.3,"disk_size":"14.4M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"http2","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.55,"mem_mb":7,"disk_size":"13.6M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.2,"mem_mb":6,"disk_size":"12.6M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"trio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.48,"mem_mb":10.3,"disk_size":"18.9M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.18,"mem_mb":5.8,"disk_size":"12.5M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"asyncio,http2,socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.75,"mem_mb":8.8,"disk_size":"16M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"asyncio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.28,"mem_mb":7.3,"disk_size":"15M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"http2","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.59,"mem_mb":7,"disk_size":"14M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.2,"mem_mb":6,"disk_size":"13M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"trio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.47,"mem_mb":10.3,"disk_size":"19M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.18,"mem_mb":5.8,"disk_size":"13M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"asyncio,http2,socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.32,"mem_mb":9.3,"disk_size":"21.7M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"asyncio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.25,"mem_mb":7.8,"disk_size":"20.6M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"http2","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.17,"mem_mb":6.1,"disk_size":"19.4M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.14,"mem_mb":5.1,"disk_size":"18.6M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"trio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.39,"mem_mb":9.6,"disk_size":"24.3M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.13,"mem_mb":4.9,"disk_size":"18.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"asyncio,http2,socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.27,"mem_mb":9.3,"disk_size":"22M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"asyncio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.23,"mem_mb":7.8,"disk_size":"21M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"http2","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.15,"mem_mb":6.1,"disk_size":"20M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"socks","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.14,"mem_mb":5.1,"disk_size":"19M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"trio","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.37,"mem_mb":9.6,"disk_size":"25M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.11,"mem_mb":4.9,"disk_size":"19M"}]},"quickstart_checks":{"last_tested":"2026-04-23","tag":"stale","tag_description":"widespread failures or data too old to trust","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]}}