U
    dd2                     @   s  d dl Z d dlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZmZmZ dddddddddedd	dd	d
eee je e je e je e je e je j e je e je e je
 e je eeee je eedddZedddddddddedd	dd	d
eee je e je e je e je e je j e je e je e je
 e je eeee je ee je dddZdddddddd	ed	d
ee je e je e je e je
 e je ee je eeeedddZdddddddd	ed	d
ee je e je e je e je
 e je ee je eeeedddZdddddddd	ed	d
ee je e je e je e je
 e je ee je eeeedddZdddddddddddd	ed	dee je e je e je e je j e je e je e je e je
 e je ee je eeeedddZ dddddddddddd	ed	dee je e je e je e je j e je e je e je e je
 e je ee je eeeedddZ!dddddddddddd	ed	dee je e je e je e je j e je e je e je e je
 e je ee je eeeedddZ"dddddddd	ed	d
ee je e je e je e je
 e je ee je eeeedd d!Z#dS )"    N)contextmanager   )Client)DEFAULT_TIMEOUT_CONFIG)Response)	AuthTypes	CertTypesCookieTypesHeaderTypesProxiesTypesQueryParamTypesRequestContentRequestDataRequestFilesTimeoutTypesURLTypesVerifyTypesFT)paramscontentdatafilesjsonheaderscookiesauthproxiestimeoutfollow_redirectsverifycert	trust_env)methodurlr   r   r   r   r   r   r   r   r   r   r   r   r   r    returnc                C   sJ   t ||
||||d,}|j| ||||||||	|d
W  5 Q R  S Q R X dS )aV  
    Sends an HTTP request.

    **Parameters:**

    * **method** - HTTP method for the new `Request` object: `GET`, `OPTIONS`,
    `HEAD`, `POST`, `PUT`, `PATCH`, or `DELETE`.
    * **url** - URL for the new `Request` object.
    * **params** - *(optional)* Query parameters to include in the URL, as a
    string, dictionary, or sequence of two-tuples.
    * **content** - *(optional)* Binary content to include in the body of the
    request, as bytes or a byte iterator.
    * **data** - *(optional)* Form data to include in the body of the request,
    as a dictionary.
    * **files** - *(optional)* A dictionary of upload files to include in the
    body of the request.
    * **json** - *(optional)* A JSON serializable object to include in the body
    of the request.
    * **headers** - *(optional)* Dictionary of HTTP headers to include in the
    request.
    * **cookies** - *(optional)* Dictionary of Cookie items to include in the
    request.
    * **auth** - *(optional)* An authentication class to use when sending the
    request.
    * **proxies** - *(optional)* A dictionary mapping proxy keys to proxy URLs.
    * **timeout** - *(optional)* The timeout configuration to use when sending
    the request.
    * **follow_redirects** - *(optional)* Enables or disables HTTP redirects.
    * **verify** - *(optional)* SSL certificates (a.k.a CA bundle) used to
    verify the identity of requested hosts. Either `True` (default CA bundle),
    a path to an SSL certificate file, an `ssl.SSLContext`, or `False`
    (which will disable verification).
    * **cert** - *(optional)* An SSL certificate used by the requested host
    to authenticate the client. Either a path to an SSL certificate file, or
    two-tuple of (certificate file, key file), or a three-tuple of (certificate
    file, key file, password).
    * **trust_env** - *(optional)* Enables or disables usage of environment
    variables for configuration.

    **Returns:** `Response`

    Usage:

    ```
    >>> import httpx
    >>> response = httpx.request('GET', 'https://httpbin.org/get')
    >>> response
    <Response [200 OK]>
    ```
    r   r   r   r   r   r    
r!   r"   r   r   r   r   r   r   r   r   N)r   request)r!   r"   r   r   r   r   r   r   r   r   r   r   r   r   r   r    client r(   ./tmp/pip-unpacked-wheel-fkuvgui5/httpx/_api.pyr&      s*    Er&   c                c   sT   t ||
||||d6}|j| ||||||||	|d
}|V  W 5 Q R X W 5 Q R X dS )z
    Alternative to `httpx.request()` that streams the response body
    instead of loading it into memory at once.

    **Parameters**: See `httpx.request`.

    See also: [Streaming Responses][0]

    [0]: /quickstart#streaming-responses
    r$   r%   N)r   stream)r!   r"   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r'   responser(   r(   r)   r*   r   s.    r*   
r   r   r   r   r   r   r   r   r   r    )r"   r   r   r   r   r   r   r   r   r   r    r#   c       
         C   s    t d| |||||||||	|
dS )z
    Sends a `GET` request.

    **Parameters**: See `httpx.request`.

    Note that the `data`, `files`, `json` and `content` parameters are not available
    on this function, as `GET` requests should not include a request body.
    GETr,   r&   r"   r   r   r   r   r   r   r   r   r   r    r(   r(   r)   get   s    r0   c       
         C   s    t d| |||||||||	|
dS )z
    Sends an `OPTIONS` request.

    **Parameters**: See `httpx.request`.

    Note that the `data`, `files`, `json` and `content` parameters are not available
    on this function, as `OPTIONS` requests should not include a request body.
    OPTIONSr,   r.   r/   r(   r(   r)   options   s    r2   c       
         C   s    t d| |||||||||	|
dS )z
    Sends a `HEAD` request.

    **Parameters**: See `httpx.request`.

    Note that the `data`, `files`, `json` and `content` parameters are not available
    on this function, as `HEAD` requests should not include a request body.
    HEADr,   r.   r/   r(   r(   r)   head   s    r4   r   r   r   r   r   r   r   r   r   r   r   r   r   r    )r"   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r#   c                C   s(   t d| |||||||||	|
||||dS )zK
    Sends a `POST` request.

    **Parameters**: See `httpx.request`.
    POSTr5   r.   r"   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r(   r(   r)   post  s$    r8   c                C   s(   t d| |||||||||	|
||||dS )zJ
    Sends a `PUT` request.

    **Parameters**: See `httpx.request`.
    PUTr5   r.   r7   r(   r(   r)   putD  s$    r:   c                C   s(   t d| |||||||||	|
||||dS )zL
    Sends a `PATCH` request.

    **Parameters**: See `httpx.request`.
    PATCHr5   r.   r7   r(   r(   r)   patcho  s$    r<   c       
         C   s    t d| |||||||||	|
dS )z
    Sends a `DELETE` request.

    **Parameters**: See `httpx.request`.

    Note that the `data`, `files`, `json` and `content` parameters are not available
    on this function, as `DELETE` requests should not include a request body.
    DELETEr,   r.   r/   r(   r(   r)   delete  s    r>   )$typing
contextlibr   Z_clientr   _configr   Z_modelsr   _typesr   r   r	   r
   r   r   r   r   r   r   r   r   strOptionalAnyboolr&   Iteratorr*   r0   r2   r4   r8   r:   r<   r>   r(   r(   r(   r)   <module>   s  8
[
7)))
.
.
.