Metadata-Version: 2.2 Name: requests-unixsocket Version: 0.4.1 Summary: Use requests to talk HTTP via a UNIX domain socket Author-email: Marc Abramowitz Project-URL: Homepage, https://github.com/msabramo/requests-unixsocket Classifier: Development Status :: 3 - Alpha Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Information Technology Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Programming Language :: Python :: Implementation Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: Jython Classifier: Programming Language :: Python :: Implementation :: PyPy Requires-Python: >=3.9 Description-Content-Type: text/x-rst License-File: LICENSE Requires-Dist: requests>=1.1 requests-unixsocket =================== .. image:: https://badge.fury.io/py/requests-unixsocket.svg :target: https://badge.fury.io/py/requests-unixsocket :alt: Latest Version on PyPI .. image:: https://github.com/msabramo/requests-unixsocket/actions/workflows/ci-cd.yml/badge.svg?event=push :target: https://github.com/msabramo/requests-unixsocket/actions/workflows/ci-cd.yml Use `requests `_ to talk HTTP via a UNIX domain socket Usage ----- Explicit ++++++++ You can use it by instantiating a special ``Session`` object: .. code-block:: python import json import requests_unixsocket session = requests_unixsocket.Session() r = session.get('http+unix://%2Fvar%2Frun%2Fdocker.sock/info') registry_config = r.json()['RegistryConfig'] print(json.dumps(registry_config, indent=4)) Implicit (monkeypatching) +++++++++++++++++++++++++ Monkeypatching allows you to use the functionality in this module, while making minimal changes to your code. Note that in the above example we had to instantiate a special ``requests_unixsocket.Session`` object and call the ``get`` method on that object. Calling ``requests.get(url)`` (the easiest way to use requests and probably very common), would not work. But we can make it work by doing monkeypatching. You can monkeypatch globally: .. code-block:: python import requests_unixsocket requests_unixsocket.monkeypatch() r = requests.get('http+unix://%2Fvar%2Frun%2Fdocker.sock/info') assert r.status_code == 200 or you can do it temporarily using a context manager: .. code-block:: python import requests_unixsocket with requests_unixsocket.monkeypatch(): r = requests.get('http+unix://%2Fvar%2Frun%2Fdocker.sock/info') assert r.status_code == 200 Abstract namespace sockets ++++++++++++++++++++++++++ To connect to an `abstract namespace socket `_ (Linux only), prefix the name with a NULL byte (i.e.: `\0`) - e.g.: .. code-block:: python import requests_unixsocket session = requests_unixsocket.Session() res = session.get('http+unix://\0test_socket/get') print(res.text) For an example program that illustrates this, see ``examples/abstract_namespace.py`` in the git repo. Since abstract namespace sockets are specific to Linux, the program will only work on Linux. See also -------- - https://github.com/httpie/httpie-unixsocket - a plugin for `HTTPie `_ that allows you to interact with UNIX domain sockets