{"id":9041,"library":"hyper-up","title":"Hyper HTTP/2 Client for Python (hyper-up)","description":"hyper-up is a Python HTTP/2 client library, providing an API similar to Python's `http.client` for interacting with HTTP/2 servers. It is a fork of the `hyper` project by Lukasa, which has been explicitly abandoned since 2021. The `hyper-up` package itself has not seen updates since 2017, making it unmaintained and potentially insecure. Users are strongly advised to use modern, actively maintained HTTP clients instead.","status":"abandoned","version":"0.9.0","language":"en","source_language":"en","source_url":"https://github.com/vasanski/hyper","tags":["http","http/2","client","deprecated","abandoned","insecure"],"install":[{"cmd":"pip install hyper-up","lang":"bash","label":"Install `hyper-up`"}],"dependencies":[{"reason":"Core HTTP/2 protocol implementation.","package":"h2"},{"reason":"HPACK compression for HTTP/2 headers.","package":"hpack"},{"reason":"HTTP/2 frame parsing and serialization.","package":"hyperframe"},{"reason":"SSL/TLS functionalities, often required for HTTP/2 over TLS (HTTPS).","package":"pyOpenSSL"},{"reason":"Service identity verification for TLS connections.","package":"service_identity"},{"reason":"Backport of ssl.match_hostname for older Python versions, though often pulled for compatibility.","package":"backports.ssl_match_hostname"}],"imports":[{"note":"Main class for making HTTP/2 requests. Note this is from the `hyper` namespace, not `hyper-up`.","symbol":"HTTPConnection","correct":"from hyper import HTTPConnection"}],"quickstart":{"code":"import ssl\nfrom hyper import HTTPConnection\n\n# Note: http2bin.org is an example; actual HTTP/2 server availability may vary.\n# This library is unmaintained and may have security vulnerabilities.\ntry:\n    # Using HTTPS for HTTP/2. The default port for HTTP/2 over TLS is 443.\n    conn = HTTPConnection('http2bin.org:443')\n    conn.request('GET', '/get')\n    resp = conn.get_response()\n    print(f\"Status: {resp.status}\")\n    print(f\"Headers: {resp.headers}\")\n    print(f\"Body: {resp.read().decode('utf-8')}\")\nexcept ssl.SSLError as e:\n    print(f\"SSL Error: {e}. This often indicates issues with TLS negotiation or outdated cryptography.\")\nexcept Exception as e:\n    print(f\"An unexpected error occurred: {e}\")\n","lang":"python","description":"Establishes an HTTP/2 connection to a server, sends a GET request, and prints the response. This example is based on the original `hyper` library's usage, which `hyper-up` replicates. Due to the library's unmaintained status, connecting to modern HTTPS servers might encounter SSL/TLS errors or security warnings."},"warnings":[{"fix":"Migrate to a modern, actively maintained HTTP client like `httpx` for HTTP/2 support, or `requests` (with `requests-toolbelt` for HTTP/2 if needed, though `httpx` is preferred for native HTTP/2).","message":"The upstream `hyper` project, which `hyper-up` is based on, has been explicitly abandoned since 2021, recommending alternatives. `hyper-up` itself has not been updated since 2017.","severity":"breaking","affected_versions":"0.9.0 and earlier"},{"fix":"Immediately replace `hyper-up` with a secure and actively maintained HTTP client like `httpx` to protect against known and unknown security flaws.","message":"Using `hyper-up` poses significant security risks due to unpatched vulnerabilities in its core HTTP/2 implementation and underlying dependencies, especially regarding TLS/SSL.","severity":"breaking","affected_versions":"0.9.0 and earlier"},{"fix":"Familiarize yourself with the `http.client` pattern or switch to a client like `httpx` which offers a more modern, 'requests-like' API alongside native HTTP/2 support.","message":"The API of `hyper-up` (via `hyper` import) is designed to be similar to Python's `http.client`, which can be less ergonomic than modern `requests`-style APIs.","severity":"gotcha","affected_versions":"0.9.0 and earlier"}],"env_vars":null,"last_verified":"2026-04-16T00:00:00.000Z","next_check":"2026-07-15T00:00:00.000Z","problems":[{"fix":"Ensure `pip install hyper-up` was successful. The import statement `from hyper import HTTPConnection` is correct for this library.","cause":"Despite the package name being `hyper-up` on PyPI, the core classes are imported from the `hyper` namespace.","error":"from hyper import HTTPConnection ModuleNotFoundError: No module named 'hyper'"},{"fix":"This library is not suitable for secure communication with modern HTTPS servers. The fundamental fix is to migrate to a maintained library like `httpx`. Attempting to manually configure SSL contexts with `hyper-up` is highly discouraged and unlikely to be secure.","cause":"This error often occurs when `hyper-up` (or its underlying OpenSSL/Python SSL context) struggles to negotiate TLS with modern servers, likely due to outdated or insecure cipher suites, protocol versions, or SNI issues given the library's age.","error":"ssl.SSLError: [SSL: TLSV1_UNRECOGNIZED_NAME] tlsv1 unrecognized name (_ssl.c:XXXX)"}]}