Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/httpx/_api.py: 61%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1from __future__ import annotations
3import typing
4from contextlib import contextmanager
6from ._client import Client
7from ._config import DEFAULT_TIMEOUT_CONFIG
8from ._models import Response
9from ._types import (
10 AuthTypes,
11 CertTypes,
12 CookieTypes,
13 HeaderTypes,
14 ProxiesTypes,
15 ProxyTypes,
16 QueryParamTypes,
17 RequestContent,
18 RequestData,
19 RequestFiles,
20 TimeoutTypes,
21 VerifyTypes,
22)
23from ._urls import URL
25__all__ = [
26 "delete",
27 "get",
28 "head",
29 "options",
30 "patch",
31 "post",
32 "put",
33 "request",
34 "stream",
35]
38def request(
39 method: str,
40 url: URL | str,
41 *,
42 params: QueryParamTypes | None = None,
43 content: RequestContent | None = None,
44 data: RequestData | None = None,
45 files: RequestFiles | None = None,
46 json: typing.Any | None = None,
47 headers: HeaderTypes | None = None,
48 cookies: CookieTypes | None = None,
49 auth: AuthTypes | None = None,
50 proxy: ProxyTypes | None = None,
51 proxies: ProxiesTypes | None = None,
52 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
53 follow_redirects: bool = False,
54 verify: VerifyTypes = True,
55 cert: CertTypes | None = None,
56 trust_env: bool = True,
57) -> Response:
58 """
59 Sends an HTTP request.
61 **Parameters:**
63 * **method** - HTTP method for the new `Request` object: `GET`, `OPTIONS`,
64 `HEAD`, `POST`, `PUT`, `PATCH`, or `DELETE`.
65 * **url** - URL for the new `Request` object.
66 * **params** - *(optional)* Query parameters to include in the URL, as a
67 string, dictionary, or sequence of two-tuples.
68 * **content** - *(optional)* Binary content to include in the body of the
69 request, as bytes or a byte iterator.
70 * **data** - *(optional)* Form data to include in the body of the request,
71 as a dictionary.
72 * **files** - *(optional)* A dictionary of upload files to include in the
73 body of the request.
74 * **json** - *(optional)* A JSON serializable object to include in the body
75 of the request.
76 * **headers** - *(optional)* Dictionary of HTTP headers to include in the
77 request.
78 * **cookies** - *(optional)* Dictionary of Cookie items to include in the
79 request.
80 * **auth** - *(optional)* An authentication class to use when sending the
81 request.
82 * **proxy** - *(optional)* A proxy URL where all the traffic should be routed.
83 * **proxies** - *(optional)* A dictionary mapping proxy keys to proxy URLs.
84 * **timeout** - *(optional)* The timeout configuration to use when sending
85 the request.
86 * **follow_redirects** - *(optional)* Enables or disables HTTP redirects.
87 * **verify** - *(optional)* SSL certificates (a.k.a CA bundle) used to
88 verify the identity of requested hosts. Either `True` (default CA bundle),
89 a path to an SSL certificate file, an `ssl.SSLContext`, or `False`
90 (which will disable verification).
91 * **cert** - *(optional)* An SSL certificate used by the requested host
92 to authenticate the client. Either a path to an SSL certificate file, or
93 two-tuple of (certificate file, key file), or a three-tuple of (certificate
94 file, key file, password).
95 * **trust_env** - *(optional)* Enables or disables usage of environment
96 variables for configuration.
98 **Returns:** `Response`
100 Usage:
102 ```
103 >>> import httpx
104 >>> response = httpx.request('GET', 'https://httpbin.org/get')
105 >>> response
106 <Response [200 OK]>
107 ```
108 """
109 with Client(
110 cookies=cookies,
111 proxy=proxy,
112 proxies=proxies,
113 cert=cert,
114 verify=verify,
115 timeout=timeout,
116 trust_env=trust_env,
117 ) as client:
118 return client.request(
119 method=method,
120 url=url,
121 content=content,
122 data=data,
123 files=files,
124 json=json,
125 params=params,
126 headers=headers,
127 auth=auth,
128 follow_redirects=follow_redirects,
129 )
132@contextmanager
133def stream(
134 method: str,
135 url: URL | str,
136 *,
137 params: QueryParamTypes | None = None,
138 content: RequestContent | None = None,
139 data: RequestData | None = None,
140 files: RequestFiles | None = None,
141 json: typing.Any | None = None,
142 headers: HeaderTypes | None = None,
143 cookies: CookieTypes | None = None,
144 auth: AuthTypes | None = None,
145 proxy: ProxyTypes | None = None,
146 proxies: ProxiesTypes | None = None,
147 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
148 follow_redirects: bool = False,
149 verify: VerifyTypes = True,
150 cert: CertTypes | None = None,
151 trust_env: bool = True,
152) -> typing.Iterator[Response]:
153 """
154 Alternative to `httpx.request()` that streams the response body
155 instead of loading it into memory at once.
157 **Parameters**: See `httpx.request`.
159 See also: [Streaming Responses][0]
161 [0]: /quickstart#streaming-responses
162 """
163 with Client(
164 cookies=cookies,
165 proxy=proxy,
166 proxies=proxies,
167 cert=cert,
168 verify=verify,
169 timeout=timeout,
170 trust_env=trust_env,
171 ) as client:
172 with client.stream(
173 method=method,
174 url=url,
175 content=content,
176 data=data,
177 files=files,
178 json=json,
179 params=params,
180 headers=headers,
181 auth=auth,
182 follow_redirects=follow_redirects,
183 ) as response:
184 yield response
187def get(
188 url: URL | str,
189 *,
190 params: QueryParamTypes | None = None,
191 headers: HeaderTypes | None = None,
192 cookies: CookieTypes | None = None,
193 auth: AuthTypes | None = None,
194 proxy: ProxyTypes | None = None,
195 proxies: ProxiesTypes | None = None,
196 follow_redirects: bool = False,
197 cert: CertTypes | None = None,
198 verify: VerifyTypes = True,
199 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
200 trust_env: bool = True,
201) -> Response:
202 """
203 Sends a `GET` request.
205 **Parameters**: See `httpx.request`.
207 Note that the `data`, `files`, `json` and `content` parameters are not available
208 on this function, as `GET` requests should not include a request body.
209 """
210 return request(
211 "GET",
212 url,
213 params=params,
214 headers=headers,
215 cookies=cookies,
216 auth=auth,
217 proxy=proxy,
218 proxies=proxies,
219 follow_redirects=follow_redirects,
220 cert=cert,
221 verify=verify,
222 timeout=timeout,
223 trust_env=trust_env,
224 )
227def options(
228 url: URL | str,
229 *,
230 params: QueryParamTypes | None = None,
231 headers: HeaderTypes | None = None,
232 cookies: CookieTypes | None = None,
233 auth: AuthTypes | None = None,
234 proxy: ProxyTypes | None = None,
235 proxies: ProxiesTypes | None = None,
236 follow_redirects: bool = False,
237 cert: CertTypes | None = None,
238 verify: VerifyTypes = True,
239 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
240 trust_env: bool = True,
241) -> Response:
242 """
243 Sends an `OPTIONS` request.
245 **Parameters**: See `httpx.request`.
247 Note that the `data`, `files`, `json` and `content` parameters are not available
248 on this function, as `OPTIONS` requests should not include a request body.
249 """
250 return request(
251 "OPTIONS",
252 url,
253 params=params,
254 headers=headers,
255 cookies=cookies,
256 auth=auth,
257 proxy=proxy,
258 proxies=proxies,
259 follow_redirects=follow_redirects,
260 cert=cert,
261 verify=verify,
262 timeout=timeout,
263 trust_env=trust_env,
264 )
267def head(
268 url: URL | str,
269 *,
270 params: QueryParamTypes | None = None,
271 headers: HeaderTypes | None = None,
272 cookies: CookieTypes | None = None,
273 auth: AuthTypes | None = None,
274 proxy: ProxyTypes | None = None,
275 proxies: ProxiesTypes | None = None,
276 follow_redirects: bool = False,
277 cert: CertTypes | None = None,
278 verify: VerifyTypes = True,
279 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
280 trust_env: bool = True,
281) -> Response:
282 """
283 Sends a `HEAD` request.
285 **Parameters**: See `httpx.request`.
287 Note that the `data`, `files`, `json` and `content` parameters are not available
288 on this function, as `HEAD` requests should not include a request body.
289 """
290 return request(
291 "HEAD",
292 url,
293 params=params,
294 headers=headers,
295 cookies=cookies,
296 auth=auth,
297 proxy=proxy,
298 proxies=proxies,
299 follow_redirects=follow_redirects,
300 cert=cert,
301 verify=verify,
302 timeout=timeout,
303 trust_env=trust_env,
304 )
307def post(
308 url: URL | str,
309 *,
310 content: RequestContent | None = None,
311 data: RequestData | None = None,
312 files: RequestFiles | None = None,
313 json: typing.Any | None = None,
314 params: QueryParamTypes | None = None,
315 headers: HeaderTypes | None = None,
316 cookies: CookieTypes | None = None,
317 auth: AuthTypes | None = None,
318 proxy: ProxyTypes | None = None,
319 proxies: ProxiesTypes | None = None,
320 follow_redirects: bool = False,
321 cert: CertTypes | None = None,
322 verify: VerifyTypes = True,
323 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
324 trust_env: bool = True,
325) -> Response:
326 """
327 Sends a `POST` request.
329 **Parameters**: See `httpx.request`.
330 """
331 return request(
332 "POST",
333 url,
334 content=content,
335 data=data,
336 files=files,
337 json=json,
338 params=params,
339 headers=headers,
340 cookies=cookies,
341 auth=auth,
342 proxy=proxy,
343 proxies=proxies,
344 follow_redirects=follow_redirects,
345 cert=cert,
346 verify=verify,
347 timeout=timeout,
348 trust_env=trust_env,
349 )
352def put(
353 url: URL | str,
354 *,
355 content: RequestContent | None = None,
356 data: RequestData | None = None,
357 files: RequestFiles | None = None,
358 json: typing.Any | None = None,
359 params: QueryParamTypes | None = None,
360 headers: HeaderTypes | None = None,
361 cookies: CookieTypes | None = None,
362 auth: AuthTypes | None = None,
363 proxy: ProxyTypes | None = None,
364 proxies: ProxiesTypes | None = None,
365 follow_redirects: bool = False,
366 cert: CertTypes | None = None,
367 verify: VerifyTypes = True,
368 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
369 trust_env: bool = True,
370) -> Response:
371 """
372 Sends a `PUT` request.
374 **Parameters**: See `httpx.request`.
375 """
376 return request(
377 "PUT",
378 url,
379 content=content,
380 data=data,
381 files=files,
382 json=json,
383 params=params,
384 headers=headers,
385 cookies=cookies,
386 auth=auth,
387 proxy=proxy,
388 proxies=proxies,
389 follow_redirects=follow_redirects,
390 cert=cert,
391 verify=verify,
392 timeout=timeout,
393 trust_env=trust_env,
394 )
397def patch(
398 url: URL | str,
399 *,
400 content: RequestContent | None = None,
401 data: RequestData | None = None,
402 files: RequestFiles | None = None,
403 json: typing.Any | None = None,
404 params: QueryParamTypes | None = None,
405 headers: HeaderTypes | None = None,
406 cookies: CookieTypes | None = None,
407 auth: AuthTypes | None = None,
408 proxy: ProxyTypes | None = None,
409 proxies: ProxiesTypes | None = None,
410 follow_redirects: bool = False,
411 cert: CertTypes | None = None,
412 verify: VerifyTypes = True,
413 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
414 trust_env: bool = True,
415) -> Response:
416 """
417 Sends a `PATCH` request.
419 **Parameters**: See `httpx.request`.
420 """
421 return request(
422 "PATCH",
423 url,
424 content=content,
425 data=data,
426 files=files,
427 json=json,
428 params=params,
429 headers=headers,
430 cookies=cookies,
431 auth=auth,
432 proxy=proxy,
433 proxies=proxies,
434 follow_redirects=follow_redirects,
435 cert=cert,
436 verify=verify,
437 timeout=timeout,
438 trust_env=trust_env,
439 )
442def delete(
443 url: URL | str,
444 *,
445 params: QueryParamTypes | None = None,
446 headers: HeaderTypes | None = None,
447 cookies: CookieTypes | None = None,
448 auth: AuthTypes | None = None,
449 proxy: ProxyTypes | None = None,
450 proxies: ProxiesTypes | None = None,
451 follow_redirects: bool = False,
452 cert: CertTypes | None = None,
453 verify: VerifyTypes = True,
454 timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
455 trust_env: bool = True,
456) -> Response:
457 """
458 Sends a `DELETE` request.
460 **Parameters**: See `httpx.request`.
462 Note that the `data`, `files`, `json` and `content` parameters are not available
463 on this function, as `DELETE` requests should not include a request body.
464 """
465 return request(
466 "DELETE",
467 url,
468 params=params,
469 headers=headers,
470 cookies=cookies,
471 auth=auth,
472 proxy=proxy,
473 proxies=proxies,
474 follow_redirects=follow_redirects,
475 cert=cert,
476 verify=verify,
477 timeout=timeout,
478 trust_env=trust_env,
479 )