aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/httpcore/_api.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/httpcore/_api.py')
-rw-r--r--.venv/lib/python3.12/site-packages/httpcore/_api.py94
1 files changed, 94 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/httpcore/_api.py b/.venv/lib/python3.12/site-packages/httpcore/_api.py
new file mode 100644
index 00000000..38b961d1
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/httpcore/_api.py
@@ -0,0 +1,94 @@
+from __future__ import annotations
+
+import contextlib
+import typing
+
+from ._models import URL, Extensions, HeaderTypes, Response
+from ._sync.connection_pool import ConnectionPool
+
+
+def request(
+ method: bytes | str,
+ url: URL | bytes | str,
+ *,
+ headers: HeaderTypes = None,
+ content: bytes | typing.Iterator[bytes] | None = None,
+ extensions: Extensions | None = None,
+) -> Response:
+ """
+ Sends an HTTP request, returning the response.
+
+ ```
+ response = httpcore.request("GET", "https://www.example.com/")
+ ```
+
+ Arguments:
+ method: The HTTP method for the request. Typically one of `"GET"`,
+ `"OPTIONS"`, `"HEAD"`, `"POST"`, `"PUT"`, `"PATCH"`, or `"DELETE"`.
+ url: The URL of the HTTP request. Either as an instance of `httpcore.URL`,
+ or as str/bytes.
+ headers: The HTTP request headers. Either as a dictionary of str/bytes,
+ or as a list of two-tuples of str/bytes.
+ content: The content of the request body. Either as bytes,
+ or as a bytes iterator.
+ extensions: A dictionary of optional extra information included on the request.
+ Possible keys include `"timeout"`.
+
+ Returns:
+ An instance of `httpcore.Response`.
+ """
+ with ConnectionPool() as pool:
+ return pool.request(
+ method=method,
+ url=url,
+ headers=headers,
+ content=content,
+ extensions=extensions,
+ )
+
+
+@contextlib.contextmanager
+def stream(
+ method: bytes | str,
+ url: URL | bytes | str,
+ *,
+ headers: HeaderTypes = None,
+ content: bytes | typing.Iterator[bytes] | None = None,
+ extensions: Extensions | None = None,
+) -> typing.Iterator[Response]:
+ """
+ Sends an HTTP request, returning the response within a content manager.
+
+ ```
+ with httpcore.stream("GET", "https://www.example.com/") as response:
+ ...
+ ```
+
+ When using the `stream()` function, the body of the response will not be
+ automatically read. If you want to access the response body you should
+ either use `content = response.read()`, or `for chunk in response.iter_content()`.
+
+ Arguments:
+ method: The HTTP method for the request. Typically one of `"GET"`,
+ `"OPTIONS"`, `"HEAD"`, `"POST"`, `"PUT"`, `"PATCH"`, or `"DELETE"`.
+ url: The URL of the HTTP request. Either as an instance of `httpcore.URL`,
+ or as str/bytes.
+ headers: The HTTP request headers. Either as a dictionary of str/bytes,
+ or as a list of two-tuples of str/bytes.
+ content: The content of the request body. Either as bytes,
+ or as a bytes iterator.
+ extensions: A dictionary of optional extra information included on the request.
+ Possible keys include `"timeout"`.
+
+ Returns:
+ An instance of `httpcore.Response`.
+ """
+ with ConnectionPool() as pool:
+ with pool.stream(
+ method=method,
+ url=url,
+ headers=headers,
+ content=content,
+ extensions=extensions,
+ ) as response:
+ yield response