From 85e1112e1cf0fee46f6bd9419b8e36377a2cb2da Mon Sep 17 00:00:00 2001 From: Vincent Ruello <5345986+vruello@users.noreply.github.com> Date: Thu, 17 Apr 2025 10:40:27 +0200 Subject: [PATCH] Add support for httpx authentication class --- elastic_transport/_node/_http_httpx.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/elastic_transport/_node/_http_httpx.py b/elastic_transport/_node/_http_httpx.py index 04ceb60..0f31904 100644 --- a/elastic_transport/_node/_http_httpx.py +++ b/elastic_transport/_node/_http_httpx.py @@ -101,11 +101,22 @@ def __init__(self, config: NodeConfig): elif config.client_cert: ssl_context.load_cert_chain(config.client_cert) + # Httpx supports setting 'auth' via _extras['requests.session.auth'] = ... + # The naming is weird but it enables compatibility with the existing + # 'requests.session.auth' parameter + try: + httpx_auth: Optional[httpx.Auth] = config._extras.pop( + "requests.session.auth", None + ) + except AttributeError: + httpx_auth = None + self.client = httpx.AsyncClient( base_url=f"{config.scheme}://{config.host}:{config.port}", limits=httpx.Limits(max_connections=config.connections_per_node), verify=ssl_context or False, timeout=config.request_timeout, + auth=httpx_auth, ) async def perform_request( # type: ignore[override]