{"library":"requests-unixsocket","title":"requests-unixsocket","description":"requests-unixsocket is a Python library that allows the popular `requests` HTTP library to communicate over UNIX domain sockets. It extends `requests`' functionality to support `http+unix://` URLs. The current stable version is 0.4.1. Releases appear to be infrequent, focusing on maintenance and compatibility with newer `requests` versions.","language":"python","status":"active","last_verified":"Thu May 21","install":{"commands":["pip install requests-unixsocket"],"cli":null},"imports":["from requests_unixsocket import Session","import requests_unixsocket; requests_unixsocket.monkeypatch()"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import requests_unixsocket\nimport os\n\n# Example for Docker daemon socket (adjust path if needed)\ndocker_socket_path = '/var/run/docker.sock' # or os.environ.get('DOCKER_SOCKET', '/var/run/docker.sock')\n\n# Ensure the socket path exists for a runnable example\n# In a real scenario, Docker or another service would create this.\n# For this quickstart, we'll just check if it exists or use a dummy.\nif not os.path.exists(docker_socket_path):\n    print(f\"Warning: Docker socket not found at {docker_socket_path}. Quickstart might not connect.\")\n    # Fallback to a non-existent path for structure, but it will fail.\n    docker_socket_path = '/tmp/nonexistent_socket.sock'\n\n# Explicit Session usage\nsession = requests_unixsocket.Session()\n# The socket path must be percent-encoded in the URL host part\nencoded_socket_path = requests_unixsocket.requests.compat.quote_plus(docker_socket_path)\nurl = f'http+unix://{encoded_socket_path}/info'\n\ntry:\n    response = session.get(url, timeout=5)\n    response.raise_for_status() # Raise an exception for HTTP errors\n    print(\"Explicit Session usage successful!\")\n    print(f\"Status Code: {response.status_code}\")\n    print(f\"JSON Response Keys: {list(response.json().keys())[:5]}...\")\nexcept requests_unixsocket.requests.exceptions.ConnectionError as e:\n    print(f\"Connection Error: Could not connect to UNIX socket at {docker_socket_path}. Is a service listening there? (Error: {e})\")\nexcept Exception as e:\n    print(f\"An unexpected error occurred: {e}\")\n\n# --- Alternative: Monkeypatching (affects global requests behavior) ---\n# This is generally discouraged for libraries, but shown for completeness.\n# with requests_unixsocket.monkeypatch():\n#     try:\n#         response_mp = requests_unixsocket.requests.get(url, timeout=5)\n#         response_mp.raise_for_status()\n#         print(\"\\nMonkeypatching usage successful!\")\n#         print(f\"Status Code: {response_mp.status_code}\")\n#         print(f\"JSON Response Keys: {list(response_mp.json().keys())[:5]}...\")\n#     except requests_unixsocket.requests.exceptions.ConnectionError as e:\n#         print(f\"\\nMonkeypatching Connection Error: Could not connect to UNIX socket at {docker_socket_path}. (Error: {e})\")\n#     except Exception as e:\n#         print(f\"\\nAn unexpected error occurred with monkeypatching: {e}\")","lang":"python","description":"This quickstart demonstrates how to use `requests-unixsocket` in two ways: explicitly via `requests_unixsocket.Session` (recommended) and implicitly via `requests_unixsocket.monkeypatch()`. It attempts to connect to a common Docker UNIX domain socket to retrieve system information, handling potential connection errors. The socket path must be URL-percent-encoded.","tag":null,"tag_description":null,"last_tested":"2026-04-25","results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-21","installed_version":"0.4.1","pypi_latest":"0.4.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.1,"avg_import_s":0.61,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"requests-unixsocket","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.53,"mem_mb":9.8,"disk_size":"21.2M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"requests-unixsocket","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.62,"mem_mb":9.7,"disk_size":"21.1M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"requests-unixsocket","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.1,"import_time_s":0.39,"mem_mb":9.8,"disk_size":"22M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"requests-unixsocket","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.39,"mem_mb":9.7,"disk_size":"22M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"requests-unixsocket","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.7,"mem_mb":10.8,"disk_size":"23.3M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"requests-unixsocket","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.91,"mem_mb":10.7,"disk_size":"23.2M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"requests-unixsocket","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.1,"import_time_s":0.61,"mem_mb":10.8,"disk_size":"24M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"requests-unixsocket","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.61,"mem_mb":10.7,"disk_size":"24M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"requests-unixsocket","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.62,"mem_mb":11.3,"disk_size":"15.1M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"requests-unixsocket","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.84,"mem_mb":11.2,"disk_size":"15.0M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"requests-unixsocket","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.9,"import_time_s":0.65,"mem_mb":11.3,"disk_size":"16M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"requests-unixsocket","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.74,"mem_mb":11.2,"disk_size":"15M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"requests-unixsocket","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.61,"mem_mb":11.6,"disk_size":"14.8M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"requests-unixsocket","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.71,"mem_mb":11.5,"disk_size":"14.6M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"requests-unixsocket","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.9,"import_time_s":0.6,"mem_mb":11.6,"disk_size":"15M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"requests-unixsocket","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.68,"mem_mb":11.5,"disk_size":"15M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"requests-unixsocket","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.48,"mem_mb":9.4,"disk_size":"20.5M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"requests-unixsocket","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.59,"mem_mb":9.4,"disk_size":"20.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"requests-unixsocket","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.5,"import_time_s":0.41,"mem_mb":9.4,"disk_size":"21M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"requests-unixsocket","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.48,"mem_mb":9.4,"disk_size":"21M"}]}}