pypa/pip · error · ConnectionFailedError
connection-failed
connection-failed
Error message
Failed to connect to {host} while fetching {url} What it means
Error "Failed to connect to {host} while fetching {url}" thrown in pypa/pip.
Source
Thrown at src/pip/_internal/network/utils.py:184
url = redact_auth_from_url(url)
raw_hostname = urlsplit(url).hostname or urlsplit(url).netloc
reason = error.args[0] if error.args else error
# NewConnectionError is a subclass of TimeoutError for some reason...
if isinstance(reason, urllib3.exceptions.TimeoutError) and not isinstance(
reason, urllib3.exceptions.NewConnectionError
):
# A bare timeout error can occur during non-streamed responses. Don't
# ask me how.
_raise_timeout_error(reason, url, raw_hostname, timeout)
if isinstance(reason, urllib3.exceptions.SSLError):
# A bare SSL error can occur during non-streamed responses, after the
# initial connection and TLS handshake have completed.
raise SSLVerificationError(url, raw_hostname, reason)
# At this point, all errors should be wrapped in MaxRetryError.
if not isinstance(reason, urllib3.exceptions.MaxRetryError):
raise ConnectionFailedError(url, raw_hostname, reason)
max_retry_error = reason
assert isinstance(max_retry_error.pool, urllib3.connectionpool.HTTPConnectionPool)
host = max_retry_error.pool.host
proxy = max_retry_error.pool.proxy
# Narrow the reason further to the specific error from the last retry.
reason = max_retry_error.reason
if isinstance(reason, urllib3.exceptions.SSLError):
raise SSLVerificationError(url, host, reason)
if isinstance(reason, urllib3.exceptions.TimeoutError) and not isinstance(
reason, urllib3.exceptions.NewConnectionError
):
_raise_timeout_error(reason, url, host, timeout)
if isinstance(reason, urllib3.exceptions.ProxyError):
assert proxy is not None
raise ProxyConnectionError(url, redact_auth_from_url(str(proxy)), reason)
View on GitHub (pinned to d7d0d0a394)
When it happens
Trigger: Thrown at src/pip/_internal/network/utils.py:184 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of pypa/pip@d7d0d0a394 (2026-08-04).
Data as JSON: /data/errors/b2f6fe3ba5390da5.json.
Report an issue: GitHub.