Files
deepset-ai--haystack/haystack/utils/http_client.py
T
wehub-resource-sync c56bef871b
Sync docs with Docusaurus / sync (push) Waiting to run
Tests / Check if changed (push) Waiting to run
Tests / format (push) Blocked by required conditions
Tests / check-imports (push) Blocked by required conditions
Tests / Unit / macos-latest (push) Blocked by required conditions
Tests / Unit / ubuntu-latest (push) Blocked by required conditions
Tests / Unit / windows-latest (push) Blocked by required conditions
Tests / mypy (push) Blocked by required conditions
Tests / Integration / ubuntu-latest (push) Blocked by required conditions
Tests / Integration / macos-latest (push) Blocked by required conditions
Tests / Integration / windows-latest (push) Blocked by required conditions
Tests / notify-slack-on-failure (push) Blocked by required conditions
Tests / Mark tests as completed (push) Blocked by required conditions
Docker image release / Build base image (push) Waiting to run
CodeQL / Analyze (python) (push) Has been cancelled
Update Platform Components Table / update (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:22:28 +08:00

48 lines
1.6 KiB
Python

# SPDX-FileCopyrightText: 2022-present deepset GmbH <info@deepset.ai>
#
# SPDX-License-Identifier: Apache-2.0
from typing import Any, Literal, overload
import httpx
@overload
def init_http_client(
http_client_kwargs: dict[str, Any] | None = ..., async_client: Literal[False] = ...
) -> httpx.Client | None: ...
@overload
def init_http_client(
http_client_kwargs: dict[str, Any] | None = ..., async_client: Literal[True] = ...
) -> httpx.AsyncClient | None: ...
def init_http_client(
http_client_kwargs: dict[str, Any] | None = None, async_client: bool = False
) -> httpx.Client | httpx.AsyncClient | None:
"""
Initialize an httpx client based on the http_client_kwargs.
:param http_client_kwargs:
The kwargs to pass to the httpx client.
:param async_client:
Whether to initialize an async client.
:returns:
A httpx client or an async httpx client.
"""
if not http_client_kwargs:
return None
if not isinstance(http_client_kwargs, dict):
raise TypeError("The parameter 'http_client_kwargs' must be a dictionary.")
# Create a copy to avoid modifying the original dict
processed_kwargs = http_client_kwargs.copy()
# Handle limits parameter - convert dict to httpx.Limits object if needed
if "limits" in processed_kwargs and isinstance(processed_kwargs["limits"], dict):
limits_dict = processed_kwargs["limits"]
processed_kwargs["limits"] = httpx.Limits(**limits_dict)
if async_client:
return httpx.AsyncClient(**processed_kwargs)
return httpx.Client(**processed_kwargs)