
    h                    h   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZ ddlmZ ddlmZmZmZ ddlmZmZmZmZmZmZ dd	lmZ dd
lmZmZmZmZ ddl m!Z!m"Z"m#Z#m$Z$ ddl%m&Z& ddl'm(Z(m)Z) ddl*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z<m=Z= ddl>m?Z?m@Z@ ejA        rd dlBZBg dZC ejD        dd          ZE ejD        dd          ZFd3dZGd4dZHd5d!ZI G d" d#          ZJ eJ            ZK ejL        d$          ZMd%e ZNd&O                    d'  ejP                    D                       ZQ G d( d)ejR                  ZS G d* d+e9          ZT G d, d-e.          ZUejV        d.ejW        f         ZX G d/ d0          ZY G d1 deY          ZZ G d2 deY          Z[dS )6    )annotationsN)asynccontextmanagercontextmanager)TracebackType   )__version__)Auth	BasicAuthFunctionAuth)DEFAULT_LIMITSDEFAULT_MAX_REDIRECTSDEFAULT_TIMEOUT_CONFIGLimitsProxyTimeout)SUPPORTED_DECODERS)
InvalidURLRemoteProtocolErrorTooManyRedirectsrequest_context)CookiesHeadersRequestResponse)codes)AsyncBaseTransportBaseTransport)AsyncHTTPTransportHTTPTransport)AsyncByteStream	AuthTypes	CertTypesCookieTypesHeaderTypes
ProxyTypesQueryParamTypesRequestContentRequestDataRequestExtensionsRequestFilesSyncByteStreamTimeoutTypes)URLQueryParams)
URLPatternget_environment_proxies)USE_CLIENT_DEFAULTAsyncClientClientTr3   )boundUr2   urlr-   locationreturnboolc                    | j         |j         k    rdS | j        dk    o0t          |           dk    o|j        dk    ot          |          dk    S )zA
    Return 'True' if 'location' is a HTTPS upgrade of 'url'
    FhttpP   https  )hostscheme_port_or_default)r7   r8   s     O/var/www/html/prod/cognitive/venv/lib/python3.11/site-packages/httpx/_client.py_is_https_redirectrD   >   sd     x8=  u 	
f 	.S!!R'	.Ow&	. X&&#-	    
int | Nonec                X    | j         | j         S ddd                    | j                  S )Nr=   r?   )r<   r>   )portgetrA   r7   s    rC   rB   rB   M   s/    
xx%%))#*555rE   otherc                    | j         |j         k    o/| j        |j        k    ot          |           t          |          k    S )z@
    Return 'True' if the given URLs share the same origin.
    )rA   r@   rB   )r7   rK   s     rC   _same_originrM   S   sD    
 	
el" 	=H
"	=S!!%5e%<%<<rE   c                      e Zd ZdZdS )UseClientDefaulta<  
    For some parameters such as `auth=...` and `timeout=...` we need to be able
    to indicate the default "unset" state, in a way that is distinctly different
    to using `None`.

    The default "unset" state indicates that whatever default is set on the
    client should be used. This is different to setting `None`, which
    explicitly disables the parameter, possibly overriding a client default.

    For example we use `timeout=USE_CLIENT_DEFAULT` in the `request()` signature.
    Omitting the `timeout` parameter will send a request using whatever default
    timeout has been configured on the client. Including `timeout=None` will
    ensure no timeout is used.

    Note that user code shouldn't need to use the `USE_CLIENT_DEFAULT` constant,
    but it is used internally when a parameter is not included.
    N)__name__
__module____qualname____doc__ rE   rC   rO   rO   ^   s           rE   rO   httpxzpython-httpx/z, c                    g | ]
}|d k    |S )identityrT   ).0keys     rC   
<listcomp>rZ   y   s"    CCCS
1B1BS1B1B1BrE   c                      e Zd ZdZdZdZdS )ClientStater         N)rP   rQ   rR   UNOPENEDOPENEDCLOSEDrT   rE   rC   r\   r\   }   s#         H F FFFrE   r\   c                  *    e Zd ZdZdd
ZddZddZdS )BoundSyncStreamz
    A byte stream that is bound to a given response instance, and that
    ensures the `response.elapsed` is set once the response is closed.
    streamr+   responser   startfloatr9   Nonec                0    || _         || _        || _        d S N_stream	_response_startselfrd   re   rf   s       rC   __init__zBoundSyncStream.__init__        !rE   typing.Iterator[bytes]c              #  &   K   | j         D ]}|V  d S rj   rl   rp   chunks     rC   __iter__zBoundSyncStream.__iter__   s,      \ 	 	EKKKK	 	rE   c                    t          j                    | j        z
  }t          j        |          | j        _        | j                                         d S N)seconds)	timeperf_counterrn   datetime	timedeltarm   elapsedrl   closerp   r   s     rC   r   zBoundSyncStream.close   sI    #%%3!)!3G!D!D!DrE   N)rd   r+   re   r   rf   rg   r9   rh   )r9   rs   r9   rh   )rP   rQ   rR   rS   rq   rx   r   rT   rE   rC   rc   rc      sZ         
           rE   rc   c                  *    e Zd ZdZdd
ZddZddZdS )BoundAsyncStreamz
    An async byte stream that is bound to a given response instance, and that
    ensures the `response.elapsed` is set once the response is closed.
    rd   r    re   r   rf   rg   r9   rh   c                0    || _         || _        || _        d S rj   rk   ro   s       rC   rq   zBoundAsyncStream.__init__   rr   rE   typing.AsyncIterator[bytes]c               4   K   | j         2 3 d {V }|W V  6 d S rj   ru   rv   s     rC   	__aiter__zBoundAsyncStream.__aiter__   sF      < 	 	 	 	 	 	 	%KKKKK (<<s   c                   K   t          j                    | j        z
  }t          j        |          | j        _        | j                                         d {V  d S rz   )	r|   r}   rn   r~   r   rm   r   rl   acloser   s     rC   r   zBoundAsyncStream.aclose   s_      #%%3!)!3G!D!D!Dl!!###########rE   N)rd   r    re   r   rf   rg   r9   rh   )r9   r   r   )rP   rQ   rR   rS   rq   r   r   rT   rE   rC   r   r      sZ         
      $ $ $ $ $ $rE   r   .c                     e Zd ZddddededdddddcdZeddd            Zeddd             Zded#Z	dfd(Z
edgd*            Zej        dhd+            Zedid-            Zej        djd.            Zedkd0            Zej        dld2            Zedmd3            Zej        dnd4            Zedod6            Zej        dpd8            Zedqd:            Zej        drd<            Zedsd>            Zej        dtd@            ZdddddddeddA	dudPZdvdQZdwdxdRZdwdydSZ	 dwdzdTZd{dUZefd|dYZd}d\Zd~d]Zdd^Zdd_ZddaZddbZ dS )
BaseClientNF Tutf-8authparamsheaderscookiestimeoutfollow_redirectsmax_redirectsevent_hooksbase_url	trust_envdefault_encodingr   AuthTypes | Noner   QueryParamTypes | Noner   HeaderTypes | Noner   CookieTypes | Noner   r,   r   r:   r   intr   +None | typing.Mapping[str, list[EventHook]]r   	URL | strr   r   #str | typing.Callable[[bytes], str]r9   rh   c               &   |i n|}|                      t          |	                    | _        |                     |          | _        t          |          | _        t          |          | _        t          |          | _
        t          |          | _        || _        || _        t          |                    dg                     t          |                    dg                     d| _        |
| _        || _        t(          j        | _        d S Nrequestre   )r   re   )_enforce_trailing_slashr-   	_base_url_build_auth_authr.   _paramsr   r   r   _cookiesr   _timeoutr   r   listrI   _event_hooks
_trust_env_default_encodingr\   r_   _state)rp   r   r   r   r   r   r   r   r   r   r   r   s               rC   rq   zBaseClient.__init__   s     (/bb[55c(mmDD%%d++
"6**w''(((( 0*KOOIr::;;[__Z<<==
 
 $!1!*rE   c                ,    | j         t          j        k    S )z2
        Check if the client being closed
        )r   r\   ra   rp   s    rC   	is_closedzBaseClient.is_closed   s    
 {k000rE   c                    | j         S rj   )r   r   s    rC   r   zBaseClient.trust_env   s
    rE   r7   r-   c                v    |j                             d          r|S |                    |j         dz             S )N   /raw_path)r   endswith	copy_withrp   r7   s     rC   r   z"BaseClient._enforce_trailing_slash   s:    <  && 	J}}clT&9}:::rE   proxyProxyTypes | Noneallow_env_proxiesdict[str, Proxy | None]c                    |.|r*d t                                                      D             S i S t          |t          t          f          rt          |          n|}d|iS )Nc                >    i | ]\  }}||d nt          |          S )NrJ   )r   )rX   rY   r7   s      rC   
<dictcomp>z-BaseClient._get_proxy_map.<locals>.<dictcomp>   s>        S %C...  rE   rJ   zall://)r0   items
isinstancestrr-   r   )rp   r   r   s      rC   _get_proxy_mapzBaseClient._get_proxy_map   s~     =   $;$=$=$C$C$E$E    I(253*(E(EPEe$$$$5Ee$$rE   r   c                    | j         S rj   )r   r   s    rC   r   zBaseClient.timeout   s
    }rE   c                .    t          |          | _        d S rj   )r   r   )rp   r   s     rC   r   zBaseClient.timeout      ((rE   dict[str, list[EventHook]]c                    | j         S rj   )r   r   s    rC   r   zBaseClient.event_hooks  s      rE   c                    t          |                    dg                     t          |                    dg                     d| _        d S r   )r   rI   r   )rp   r   s     rC   r   zBaseClient.event_hooks	  sK     KOOIr::;;[__Z<<==
 
rE   Auth | Nonec                    | j         S )z
        Authentication class used when none is passed at the request-level.

        See also [Authentication][0].

        [0]: /quickstart/#authentication
        )r   r   s    rC   r   zBaseClient.auth  s     zrE   r!   c                :    |                      |          | _        d S rj   )r   r   rp   r   s     rC   r   zBaseClient.auth  s    %%d++


rE   c                    | j         S )zK
        Base URL to use when sending requests with relative URLs.
        )r   r   s    rC   r   zBaseClient.base_url  s    
 ~rE   c                T    |                      t          |                    | _        d S rj   )r   r-   r   r   s     rC   r   zBaseClient.base_url&  s!    55c#hh??rE   r   c                    | j         S )z@
        HTTP headers to include when sending requests.
        )_headersr   s    rC   r   zBaseClient.headers*      
 }rE   r$   c                    t          dt                              d          dt                              d          d          }|                    |           || _        d S )Ns   */*asciis
   keep-alive)s   Accepts   Accept-Encodings
   Connections
   User-Agent)r   ACCEPT_ENCODINGencode
USER_AGENTupdater   )rp   r   client_headerss      rC   r   zBaseClient.headers1  sd     !$3$:$:7$C$C,)0099	 
 
 	g&&&&rE   r   c                    | j         S )zA
        Cookie values to include when sending requests.
        )r   r   s    rC   r   zBaseClient.cookies>  r   rE   r#   c                .    t          |          | _        d S rj   )r   r   )rp   r   s     rC   r   zBaseClient.cookiesE  r   rE   r.   c                    | j         S )zO
        Query parameters to include in the URL when sending requests.
        )r   r   s    rC   r   zBaseClient.paramsI  s    
 |rE   r&   c                .    t          |          | _        d S rj   )r.   r   )rp   r   s     rC   r   zBaseClient.paramsP  s    "6**rE   )	contentdatafilesjsonr   r   r   r   
extensionsmethodr   r   RequestContent | Noner   RequestData | Noner   RequestFiles | Noner   typing.Any | NoneTimeoutTypes | UseClientDefaultr   RequestExtensions | Noner   c       	           |                      |          }|                     |          }|                     |	          }	|                     |          }|i n|}d|vrMt	          |
t
                    r| j        nt          |
          }
t          di |d|
	                                i}t          |||||||||	|
  
        S )aR  
        Build and return a request instance.

        * The `params`, `headers` and `cookies` arguments
        are merged with any values set on the client.
        * The `url` argument is merged with any `base_url` set on the client.

        See also: [Request instances][0]

        [0]: /advanced/clients/#request-instances
        Nr   )r   r   r   r   r   r   r   r   rT   )
_merge_url_merge_headers_merge_cookies_merge_queryparamsr   rO   r   r   dictas_dictr   )rp   r   r7   r   r   r   r   r   r   r   r   r   s               rC   build_requestzBaseClient.build_requestT  s    4 ooc""%%g..%%g..((00%-RR:
J&& g'788&W%% 
 FF
FFGOO4E4EFFFJ!
 
 
 	
rE   c                    t          |          }|j        rB| j        j        |j                            d          z   }| j                            |          S |S )z
        Merge a URL argument together with any 'base_url' on the client,
        to create the URL used for the outgoing request.
        r   r   )r-   is_relative_urlr   r   lstripr   )rp   r7   	merge_urlmerge_raw_paths       rC   r   zBaseClient._merge_url  s]    
 HH	$ 	D "]3i6H6O6OPT6U6UUN=**N*CCCrE   c                n    |s| j         r+t          | j                   }|                    |           |S |S )z
        Merge a cookies argument together with any cookies on the client,
        to create the cookies used for the outgoing request.
        )r   r   r   )rp   r   merged_cookiess      rC   r   zBaseClient._merge_cookies  sC    
  	"dl 	"$T\22N!!'***!!rE   c                X    t          | j                  }|                    |           |S )z
        Merge a headers argument together with any headers on the client,
        to create the headers used for the outgoing request.
        )r   r   r   )rp   r   merged_headerss      rC   r   zBaseClient._merge_headers  s-    
 !..g&&&rE   c                j    |s| j         r)t          | j                   }|                    |          S |S )z
        Merge a queryparams argument together with any queryparams on the client,
        to create the queryparams used for the outgoing request.
        )r   r.   merge)rp   r   merged_queryparamss      rC   r   zBaseClient._merge_queryparams  s>      	4T[ 	4!,T[!9!9%++F333rE   c                    |d S t          |t                    rt          |d         |d                   S t          |t                    r|S t	          |          rt          |          S t          d|          )Nr   r   usernamepassword)funczInvalid "auth" argument: )r   tupler
   r	   callabler   	TypeErrorr   s     rC   r   zBaseClient._build_auth  s    <4e$$ 	Bd1gQ@@@@d## 	BKd^^ 	BT****@@@AAArE   r   #AuthTypes | UseClientDefault | Noner	   c                    t          |t                    r| j        n|                     |          }||S |j        j        |j        j        }}|s|rt          ||          S t                      S )Nr  )	r   rO   r   r   r7   r  r  r
   r	   )rp   r   r   r  r  s        rC   _build_request_authzBaseClient._build_request_auth  s~     %T+;<<XDJJ$BRBRSWBXBX 	 K$[17;3G( 	Cx 	ChBBBBvvrE   re   r   c                   |                      ||          }|                     ||          }|                     |||          }|                     ||          }t	          | j                  }t          ||||||j                  S )z
        Given a request and a redirect response, return a new request that
        should be used to effect the redirect.
        )r   r7   r   r   rd   r   )_redirect_method_redirect_url_redirect_headers_redirect_streamr   r   r   r   )rp   r   re   r   r7   r   rd   r   s           rC   _build_redirect_requestz"BaseClient._build_redirect_request  s    
 &&w99  (33((#v>>&&w77$,'')
 
 
 	
rE   c                    |j         }|j        t          j        k    r|dk    rd}|j        t          j        k    r|dk    rd}|j        t          j        k    r|dk    rd}|S )z
        When being redirected we may want to change the method of the request
        based on certain specs or browser behavior.
        HEADGETPOST)r   status_coder   	SEE_OTHERFOUNDMOVED_PERMANENTLY)rp   r   re   r   s       rC   r  zBaseClient._redirect_method  st    
  5?22v7G7GF 5;..6V3C3CF 5#:::v?O?OFrE   c                   |j         d         }	 t          |          }n(# t          $ r}t          d| d|          dd}~ww xY w|j        r'|j        s |                    |j        j                  }|j        r|j        	                    |          }|j        j
        r'|j
        s |                    |j        j
                  }|S )z<
        Return the URL for the redirect to follow.
        Locationz Invalid URL in location header: .r   N)r@   )fragment)r   r-   r   r   rA   r@   r   r7   r   joinr   )rp   r   re   r8   r7   excs         rC   r  zBaseClient._redirect_url  s     #J/	h--CC 	 	 	%939997  	 : 	7ch 	7--W[%5-66C  	(+""3''C ; 	? 	?--)=->>C
s    
A?Ac                   t          |j                  }t          ||j                  sHt	          |j        |          s|                    dd           |j                            d          |d<   ||j        k    r2|dk    r,|                    dd           |                    dd           |                    dd           |S )	zR
        Return the headers that should be used for the redirect request.
        AuthorizationNr   Hostr  zContent-LengthzTransfer-EncodingCookie)	r   r   rM   r7   rD   popnetlocdecoder   )rp   r   r7   r   r   s        rC   r  zBaseClient._redirect_headers"  s     '/**C-- 	9%gk377 3 OT222 "j//88GFOW^##% KK($///KK+T222 	Hd###rE   'SyncByteStream | AsyncByteStream | Nonec                6    ||j         k    r|dk    rdS |j        S )zO
        Return the body that should be used for the redirect request.
        r  N)r   rd   )rp   r   r   s      rC   r  zBaseClient._redirect_stream=  s&     W^##%4~rE   c                    d|j         vrct          | j        t                    r| j        nt	          | j                  }t          di |j         d|                                i|_         d S d S )Nr   rT   )r   r   r   rO   r   r   r   )rp   r   r   s      rC   _set_timeoutzBaseClient._set_timeoutH  s}    G... dl,<==+T\** 
 "&!V!V(:!V!VGOODUDU!V!V!VG /.rE   )r   r   r   r   r   r   r   r   r   r,   r   r:   r   r   r   r   r   r   r   r:   r   r   r9   rh   )r9   r:   )r7   r-   r9   r-   )r   r   r   r:   r9   r   )r9   r   )r   r,   r9   rh   )r9   r   )r   r   r9   rh   )r9   r   )r   r!   r9   rh   )r9   r-   )r7   r   r9   rh   )r9   r   )r   r$   r9   rh   )r9   r   )r   r#   r9   rh   )r9   r.   )r   r&   r9   rh   )r   r   r7   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   r   )r7   r   r9   r-   rj   )r   r   r9   r   )r   r   r9   r   )r   r   r9   r   )r   r   r9   r   )r   r   r   r  r9   r	   )r   r   re   r   r9   r   )r   r   re   r   r9   r   )r   r   re   r   r9   r-   )r   r   r7   r-   r   r   r9   r   )r   r   r   r   r9   r*  )r   r   r9   rh   )!rP   rQ   rR   r   r   rq   propertyr   r   r   r   r   setterr   r   r   r   r   r   r1   r   r   r   r   r   r   r  r  r  r  r  r  r-  rT   rE   rC   r   r      s        "&)-&*&* 6!&2EI @G +  +  +  +  +  +D 1 1 1 X1    X; ; ; ;
% % % %    X ^) ) ) ^) ! ! ! X! 
 
 
 
    X 
[, , , [,    X _@ @ @ _@    X ^
' 
' 
' ^
'    X ^) ) ) ^)    X ]+ + + ]+ *.#'%)"&)-&*&*3E/31
 1
 1
 1
 1
 1
f   ,	 	 	 	 	     04
 
 
 
 

B 
B 
B 
B 5G    $
 
 
 
&   .   :   6	 	 	 	W W W W W WrE   r   c                      e Zd ZdZdddddddddddedeeddddddh fd-Zdddddedfdid/Zdddddefdjd1Z	dkd4Z
dddddddeeedd5dldFZedddddddeeedd5dmdH            ZdeedIdndMZdodQZdpdRZdqdSZdddeeeddTdrdUZdddeeeddTdsdWZdddeeeddTdsdXZdddddddeeedd5dtdYZdddddddeeedd5dtdZZdddddddeeedd5dtd[ZdddeeeddTdsd\Zdud]Zdvd`Z	 	 	 dwdxdgZ xZS )yr3   av  
    An HTTP client, with connection pooling, HTTP/2, redirects, cookie persistence, etc.

    It can be shared between threads.

    Usage:

    ```python
    >>> client = httpx.Client()
    >>> response = client.get('https://example.org')
    ```

    **Parameters:**

    * **auth** - *(optional)* An authentication class to use when sending
    requests.
    * **params** - *(optional)* Query parameters to include in request URLs, as
    a string, dictionary, or sequence of two-tuples.
    * **headers** - *(optional)* Dictionary of HTTP headers to include when
    sending requests.
    * **cookies** - *(optional)* Dictionary of Cookie items to include when
    sending requests.
    * **verify** - *(optional)* Either `True` to use an SSL context with the
    default CA bundle, `False` to disable verification, or an instance of
    `ssl.SSLContext` to use a custom context.
    * **http2** - *(optional)* A boolean indicating if HTTP/2 support should be
    enabled. Defaults to `False`.
    * **proxy** - *(optional)* A proxy URL where all the traffic should be routed.
    * **timeout** - *(optional)* The timeout configuration to use when sending
    requests.
    * **limits** - *(optional)* The limits configuration to use.
    * **max_redirects** - *(optional)* The maximum number of redirect responses
    that should be followed.
    * **base_url** - *(optional)* A URL to use as the base when building
    request URLs.
    * **transport** - *(optional)* A transport class to use for sending requests
    over the network.
    * **trust_env** - *(optional)* Enables or disables usage of environment
    variables for configuration.
    * **default_encoding** - *(optional)* The default encoding to use for decoding
    response text, if no charset information is included in a response Content-Type
    header. Set to a callable for automatic character set detection. Default: "utf-8".
    NTFr   r   )r   r   r   r   verifycertr   http1http2r   mountsr   r   limitsr   r   r   	transportr   r   r   r   r   r   r   r   r   r1  ssl.SSLContext | str | boolr2  CertTypes | Noner   r:   r3  r4  r   r   r5  0None | typing.Mapping[str, BaseTransport | None]r   r,   r   r6  r   r   r   r   r   r   r   r7  BaseTransport | Noner   r   r9   rh   c               j   	 t                                          ||||||||||           	r$	 dd l}n# t          $ r t          d          d w xY wo|d u }                     |
|          }                     	|           _        	 fd|                                D              _        |6 j        	                    d |                                D                        t          t           j                                                             _        d S )Nr   r   uUsing http2=True, but the 'h2' package is not installed. Make sure to install httpx using `pip install httpx[http2]`.r1  r2  r   r3  r4  r6  r7  c                r    i | ]3\  }}t          |          |d n                    |	          4S N)r1  r2  r   r3  r4  r6  r/   _init_proxy_transport
rX   rY   r   r2  r3  r4  r6  rp   r   r1  s
      rC   r   z#Client.__init__.<locals>.<dictcomp>  st     @
 @
 @
 U sOO} "T++# ,  @
 @
 @
rE   c                4    i | ]\  }}t          |          |S rT   r/   rX   rY   r7  s      rC   r   z#Client.__init__.<locals>.<dictcomp>  $    QQQYC)QQQrE   superrq   h2ImportErrorr   _init_transport
_transportr   _mountsr   r   sorted)rp   r   r   r   r   r1  r2  r   r3  r4  r   r5  r   r   r6  r   r   r   r7  r   rJ  r   	proxy_map	__class__s   `    `````    `        rC   rq   zClient.__init__  s   . 	-'#- 	 	
 	
 	
  					   !S   &;)t*;''/@AA	.. / 
 
@
 @
 @
 @
 @
 @
 @
 @
 @
 @
 (oo//@
 @
 @
 LQQ&,,..QQQ   F4<#5#5#7#78899	   = Ar   c                4    ||S t          ||||||          S r@  r   rp   r1  r2  r   r3  r4  r6  r7  s           rC   rL  zClient._init_transport  s9      
 
 
 	
rE   r   c           	     .    t          |||||||          S N)r1  r2  r   r3  r4  r6  r   rT  rp   r   r1  r2  r   r3  r4  r6  s           rC   rB  zClient._init_proxy_transport  s0     
 
 
 	
rE   r7   r-   c                    | j                                         D ]'\  }}|                    |          r|| j        n|c S (| j        S z
        Returns the transport instance that should be used for a given URL.
        This will either be the standard connection pool, or a proxy.
        rN  r   matchesrM  rp   r7   patternr7  s       rC   _transport_for_urlzClient._transport_for_url  d    
 #',"4"4"6"6 	K 	KGYs## K*3*;tJJJK rE   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  bool | UseClientDefaultr   r   r   r   c                   |	d}t          j        |t          d           |                     |||||||||	||          }|                     ||
|          S )a  
        Build and send a request.

        Equivalent to:

        ```python
        request = client.build_request(...)
        response = client.send(request, ...)
        ```

        See `Client.build_request()`, `Client.send()` and
        [Merging of configuration][0] for how the various parameters
        are merged with client-level configuration.

        [0]: /advanced/clients/#merging-of-configuration
        NSetting per-request cookies=<...> is being deprecated, because the expected behaviour on cookie persistence is ambiguous. Set cookies directly on the client instance instead.r]   
stacklevelr   r7   r   r   r   r   r   r   r   r   r   r   r   warningswarnDeprecationWarningr   sendrp   r   r7   r   r   r   r   r   r   r   r   r   r   r   messager   s                   rC   r   zClient.request  s    B C 
 M'#5!DDDD$$! % 
 
 yyt>NyOOOrE   typing.Iterator[Response]c             #     K   |                      |||||||||	||          }|                     ||
|d          }	 |V  |                                 dS # |                                 w xY wa  
        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
        rg  T)r   r   r   rd   N)r   rm  r   rp   r   r7   r   r   r   r   r   r   r   r   r   r   r   r   re   s                   rC   rd   zClient.stream;  s      8 $$! % 
 
 99-	  
 
	NNNNNHNNs   A A-rd   r   r   r   r   rd   c                  | j         t          j        k    rt          d          t          j        | _         t          |t                    r| j        n|}|                     |           | 	                    ||          }| 
                    |||g           }	 |s|                                 |S # t          $ r}|                                 |d}~ww xY w)a  
        Send a request.

        The request is sent as-is, unmodified.

        Typically you'll want to build one with `Client.build_request()`
        so that any client-level configuration is merged into the request,
        but passing an explicit `httpx.Request()` is supported as well.

        See also: [Request instances][0]

        [0]: /advanced/clients/#request-instances
        5Cannot send a request, as the client has been closed.r   r   historyN)r   r\   ra   RuntimeErrorr`   r   rO   r   r-  r  _send_handling_authreadBaseExceptionr   rp   r   rd   r   r   re   r"  s          rC   rm  zClient.sendo  s    * ;+,,,VWWW!( *,<=="D!!! 	 	'"""''66++-	 , 
 
	  O 	 	 	NNI	s   B1 1
C;CCr	   rx  list[Response]c                   |                     |          }	 t          |          }	 |                     |||          }	 	 |                    |          }n&# t          $ r |cY |                                 S w xY wt          |          |_        |                                 |}|	                    |           n(# t          $ r}|                                 |d }~ww xY w# |                                 w xY wNT)r   rx  )sync_auth_flownext_send_handling_redirectsrm  StopIterationr   r   rx  r{  appendr|  	rp   r   r   r   rx  	auth_flowre   next_requestr"  s	            rC   rz  zClient._send_handling_auth  s,    ''00		9ooG88%5# 9  
('0~~h'?'?( ( ( (' OO( (,G}}H$MMOOO*GNN8,,,,$   NN$$$I#* OOsN   (C& A B= A:#B= 9A::AB= <C& =
C"CC""C& &C<c                   	 t          |          | j        k    rt          d|          | j        d         D ]} ||           |                     |          }	 | j        d         D ]} ||           t          |          |_        |j        s|S |                     ||          }||gz   }|r|	                                 n	||_
        |S n(# t          $ r}|                                 |d }~ww xY wNTz#Exceeded maximum allowed redirects.r  r   re   )lenr   r   r   _send_single_requestr   rx  has_redirect_locationr  r{  r  r|  r   rp   r   r   rx  hookre   r"  s          rC   r  zClient._send_handling_redirects  s@   	7||d000&97    ))4  W0099H -j9 # #DDNNNN#'== 5 $#O66wII!XJ.# $MMOOOO,3H)#O $
 !      	7	s   7C ;C 
C6C11C6c                f   |                      |j                  }t          j                    }t	          |j        t                    st          d          t          |          5  |	                    |          }ddd           n# 1 swxY w Y   t	          |j        t                    sJ ||_
        t          |j        ||          |_        | j                            |           | j        |_        t                               d|j        |j        |j        |j        |j                   |S )L
        Sends a single request, without handling any redirections.
        z?Attempted to send an async request with a sync Client instance.r  Nre   rf   HTTP Request: %s %s "%s %d %s")r_  r7   r|   r}   r   rd   r+   ry  r   handle_requestr   rc   r   extract_cookiesr   r   loggerinfor   http_versionr  reason_phraserp   r   r7  rf   re   s        rC   r  zClient._send_single_request  sk    ++GK88	!##'..99 	Q   W--- 	9 	9 //88H	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 (/>:::::")Ohe
 
 
 	$$X...$($:!,NK! "	
 	
 	
 s   'B		BBr   r   r   r   r   r   r   c               >    |                      d||||||||	  	        S )U
        Send a `GET` request.

        **Parameters**: See `httpx.request`.
        r  r  r  	rp   r7   r   r   r   r   r   r   r   s	            rC   rI   z
Client.get  s:    " ||-!  

 

 
	
rE   AuthTypes | UseClientDefaultc               >    |                      d||||||||	  	        S )Z
        Send an `OPTIONS` request.

        **Parameters**: See `httpx.request`.
        OPTIONSr  r  r  s	            rC   optionszClient.options)  s:    " ||-!  

 

 
	
rE   c               >    |                      d||||||||	  	        S )V
        Send a `HEAD` request.

        **Parameters**: See `httpx.request`.
        r  r  r  r  s	            rC   headzClient.headF  s:    " ||-!  

 

 
	
rE   c               F    |                      d|||||||||	|
||          S )V
        Send a `POST` request.

        **Parameters**: See `httpx.request`.
        r  ra  r  rp   r7   r   r   r   r   r   r   r   r   r   r   r   s                rC   postzClient.postc  sF    * ||-!  
 
 	
rE   c               F    |                      d|||||||||	|
||          S )U
        Send a `PUT` request.

        **Parameters**: See `httpx.request`.
        PUTra  r  r  s                rC   putz
Client.put  sF    * ||-!  
 
 	
rE   c               F    |                      d|||||||||	|
||          S )W
        Send a `PATCH` request.

        **Parameters**: See `httpx.request`.
        PATCHra  r  r  s                rC   patchzClient.patch  sF    * ||-!  
 
 	
rE   c               >    |                      d||||||||	  	        S )X
        Send a `DELETE` request.

        **Parameters**: See `httpx.request`.
        DELETEr  r  r  s	            rC   deletezClient.delete  s:    " ||-!  

 

 
	
rE   c                    | j         t          j        k    r\t          j        | _         | j                                         | j                                        D ]}||                                 dS dS z.
        Close transport and proxies.
        N)r   r\   ra   rM  r   rN  values)rp   r7  s     rC   r   zClient.close  sx     ;+,,,%,DKO!!###!\0022 & &	(OO%%% -,& &rE   rp   r4   c                P   | j         t          j        k    r4t          j        dt          j        di| j                  }t          |          t          j        | _         | j                                         | j        	                                D ]}||                                 | S Nz-Cannot open a client instance more than once.z9Cannot reopen a client instance, once it has been closed.)
r   r\   r_   r`   ra   ry  rM  	__enter__rN  r  )rp   msgr7  s      rC   r  zClient.__enter__  s    ;+..."$S"O
 kC s###!(!!###,,.. 	& 	&I$##%%%rE   exc_typetype[BaseException] | None	exc_valueBaseException | None	tracebackTracebackType | Nonec                    t           j        | _        | j                            |||           | j                                        D ]}||                    |||           d S rj   )r\   ra   r   rM  __exit__rN  r  )rp   r  r  r  r7  s        rC   r  zClient.__exit__  sr     "(  9i@@@,,.. 	C 	CI$""8Y	BBB	C 	CrE   )(r   r   r   r   r   r   r   r   r1  r8  r2  r9  r   r:   r3  r:   r4  r:   r   r   r5  r:  r   r,   r   r:   r6  r   r   r   r   r   r   r   r7  r;  r   r   r9   rh   )r1  r8  r2  r9  r   r:   r3  r:   r4  r:   r6  r   r7  r;  r9   r   )r   r   r1  r8  r2  r9  r   r:   r3  r:   r4  r:   r6  r   r9   r   )r7   r-   r9   r   r   r   r7   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   rb  r   r   r   r   r9   r   )r   r   r7   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   rb  r   r   r   r   r9   rp  
r   r   rd   r:   r   r  r   rb  r9   r   
r   r   r   r	   r   r:   rx  r~  r9   r   r   r   r   r:   rx  r~  r9   r   r   r   r9   r   r7   r   r   r   r   r   r   r   r   r  r   rb  r   r   r   r   r9   r   r7   r   r   r   r   r   r   r   r   r  r   rb  r   r   r   r   r9   r   r7   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   rb  r   r   r   r   r9   r   r   )rp   r4   r9   r4   NNNr  r  r  r  r  r  r9   rh   )rP   rQ   rR   rS   r   r   r   rq   rL  rB  r_  r1   r   r   rd   rm  rz  r  r  rI   r  r  r  r  r  r  r   r  r  __classcell__rQ  s   @rC   r3   r3   R  s       * *^ "&)-&*&*.2!%#'EI 6!&'2EI *.@G+M: M: M: M: M: M: M: M:b /3!%'*.
 
 
 
 
2 /3!%'
 
 
 
 
(	 	 	 	  *.#'%)"&)-&*&*4F4F3E/36P 6P 6P 6P 6P 6Pp  *.#'%)"&)-&*&*4F4F3E/31 1 1 1 1 ^1n 4F4F1 1 1 1 1 1f       D# # # #J! ! ! !N *.&*&*4F4F3E/3
 
 
 
 
 
B *.&*&*-?4F3E/3
 
 
 
 
 
B *.&*&*-?4F3E/3
 
 
 
 
 
B *.#'%)"&)-&*&*-?4F3E/3#
 #
 #
 #
 #
 #
R *.#'%)"&)-&*&*-?4F3E/3#
 #
 #
 #
 #
 #
R *.#'%)"&)-&*&*-?4F3E/3#
 #
 #
 #
 #
 #
R *.&*&*-?4F3E/3
 
 
 
 
 
:
& 
& 
& 
&   ( 04*.*.	C C C C C C C C CrE   c                      e Zd ZdZddddddddddedeedddddddh fd-Zdddddedfdid/Zdddddefdjd1Z	dkd4Z
dddddddeeedd5dldFZedddddddeeedd5dmdH            ZdeedIdndMZdodQZdpdRZdqdSZdddeeeddTdrdUZdddeeeddTdsdWZdddeeeddTdsdXZdddddddeeedd5dtdYZdddddddeeedd5dtdZZdddddddeeedd5dtd[ZdddeeeddTdsd\Zdud]Zdvd`Z	 	 	 dwdxdgZ xZS )yr2   a  
    An asynchronous HTTP client, with connection pooling, HTTP/2, redirects,
    cookie persistence, etc.

    It can be shared between tasks.

    Usage:

    ```python
    >>> async with httpx.AsyncClient() as client:
    >>>     response = await client.get('https://example.org')
    ```

    **Parameters:**

    * **auth** - *(optional)* An authentication class to use when sending
    requests.
    * **params** - *(optional)* Query parameters to include in request URLs, as
    a string, dictionary, or sequence of two-tuples.
    * **headers** - *(optional)* Dictionary of HTTP headers to include when
    sending requests.
    * **cookies** - *(optional)* Dictionary of Cookie items to include when
    sending requests.
    * **verify** - *(optional)* Either `True` to use an SSL context with the
    default CA bundle, `False` to disable verification, or an instance of
    `ssl.SSLContext` to use a custom context.
    * **http2** - *(optional)* A boolean indicating if HTTP/2 support should be
    enabled. Defaults to `False`.
    * **proxy** - *(optional)* A proxy URL where all the traffic should be routed.
    * **timeout** - *(optional)* The timeout configuration to use when sending
    requests.
    * **limits** - *(optional)* The limits configuration to use.
    * **max_redirects** - *(optional)* The maximum number of redirect responses
    that should be followed.
    * **base_url** - *(optional)* A URL to use as the base when building
    request URLs.
    * **transport** - *(optional)* A transport class to use for sending requests
    over the network.
    * **trust_env** - *(optional)* Enables or disables usage of environment
    variables for configuration.
    * **default_encoding** - *(optional)* The default encoding to use for decoding
    response text, if no charset information is included in a response Content-Type
    header. Set to a callable for automatic character set detection. Default: "utf-8".
    NTFr   r   )r   r   r   r   r1  r2  r3  r4  r   r5  r   r   r6  r   r   r   r7  r   r   r   r   r   r   r   r   r   r   r1  r8  r2  r9  r3  r:   r4  r   r   r5  5None | typing.Mapping[str, AsyncBaseTransport | None]r   r,   r   r6  r   r   r   r   r   r   r   r7  AsyncBaseTransport | Noner   r   r   r9   rh   c               j    t                                          ||||||||||           r$	 dd l}n# t          $ r t          d          d w xY wo|d u }                     |	|          }                     |           _         fd|                                D              _        |
6 j        	                    d |
                                D                        t          t           j                                                             _        d S )Nr   r   r=  r>  c                r    i | ]3\  }}t          |          |d n                    |	          4S r@  rA  rC  s
      rC   r   z(AsyncClient.__init__.<locals>.<dictcomp>  st     E
 E
 E
 U sOO} "T++# ,  E
 E
 E
rE   c                4    i | ]\  }}t          |          |S rT   rE  rF  s      rC   r   z(AsyncClient.__init__.<locals>.<dictcomp>  rG  rE   rH  )rp   r   r   r   r   r1  r2  r3  r4  r   r5  r   r   r6  r   r   r   r7  r   r   rJ  r   rP  rQ  s   `    ````    `    `    rC   rq   zAsyncClient.__init__I  s   . 	-'#- 	 	
 	
 	
  					   !S   &;)t*;''/@AA	.. / 
 
E
 E
 E
 E
 E
 E
 E
 E
 E
 E
 (oo//E
 E
 E
 LQQ&,,..QQQ   F4<#5#5#7#78899rR  r   c                4    ||S t          ||||||          S r@  r   rU  s           rC   rL  zAsyncClient._init_transport  s9      !
 
 
 	
rE   r   c           	     .    t          |||||||          S rW  r  rX  s           rC   rB  z!AsyncClient._init_proxy_transport  s0     "
 
 
 	
rE   r7   r-   c                    | j                                         D ]'\  }}|                    |          r|| j        n|c S (| j        S rZ  r[  r]  s       rC   r_  zAsyncClient._transport_for_url  r`  rE   ra  r   r   r   r   r   r   r   r   r   r   r  rb  r   r   r   r   c                  K   |	d}t          j        |t          d           |                     |||||||||	||          }|                     ||
|           d{V S )a  
        Build and send a request.

        Equivalent to:

        ```python
        request = client.build_request(...)
        response = await client.send(request, ...)
        ```

        See `AsyncClient.build_request()`, `AsyncClient.send()`
        and [Merging of configuration][0] for how the various parameters
        are merged with client-level configuration.

        [0]: /advanced/clients/#merging-of-configuration
        Nrd  r]   re  rg  rh  ri  rn  s                   rC   r   zAsyncClient.request  s      D C 
 M'#5!DDDD$$! % 
 
 YYwTDTYUUUUUUUUUrE   typing.AsyncIterator[Response]c                K   |                      |||||||||	||          }|                     ||
|d           d{V }	 |W V  |                                 d{V  dS # |                                 d{V  w xY wrr  )r   rm  r   rs  s                   rC   rd   zAsyncClient.stream  s      8 $$! % 
 
 -	 # 
 
 
 
 
 
 
 
	$NNNN//###########(//##########s   A$ $B rt  r   r   rd   c                 K   | j         t          j        k    rt          d          t          j        | _         t          |t                    r| j        n|}|                     |           | 	                    ||          }| 
                    |||g            d{V }	 |s|                                 d{V  |S # t          $ r!}|                                 d{V  |d}~ww xY w)a  
        Send a request.

        The request is sent as-is, unmodified.

        Typically you'll want to build one with `AsyncClient.build_request()`
        so that any client-level configuration is merged into the request,
        but passing an explicit `httpx.Request()` is supported as well.

        See also: [Request instances][0]

        [0]: /advanced/clients/#request-instances
        rv  rw  N)r   r\   ra   ry  r`   r   rO   r   r-  r  rz  areadr|  r   r}  s          rC   rm  zAsyncClient.send:  s@     * ;+,,,VWWW!( *,<=="D!!! 	 	'"""''6611-	 2 
 
 
 
 
 
 
 
	 'nn&&&&&&&&&O 	 	 	//#########I	s   !B? ?
C*	C%%C*r	   rx  r~  c                `  K   |                     |          }	 |                                 d {V }	 |                     |||           d {V }	 	 |                    |           d {V }n,# t          $ r |cY |                                 d {V  S w xY wt          |          |_        |                                 d {V  |}|	                    |           n.# t          $ r!}|                                 d {V  |d }~ww xY w# |                                 d {V  w xY wr  )async_auth_flow	__anext__r  asendStopAsyncIterationr   r   rx  r  r  r|  r  s	            rC   rz  zAsyncClient._send_handling_authm  s      ((11		%%//11111111G!%!>!>%5# "? " "      
(-6__X-F-F'F'F'F'F'F'F- ( ( (' ""$$$$$$$$$$( (,G}}H$"..**********GNN8,,,,$   "//+++++++++I#* ""$$$$$$$$$$sN   9D A0 /C" 0B<C" BAC" !D "
D,DDD D-c                6  K   	 t          |          | j        k    rt          d|          | j        d         D ]} ||           d {V  |                     |           d {V }	 | j        d         D ]} ||           d {V  t          |          |_        |j        s|S |                     ||          }||gz   }|r|	                                 d {V  n	||_
        |S n.# t          $ r!}|                                 d {V  |d }~ww xY wr  )r  r   r   r   r  r   rx  r  r  r  r  r|  r   r  s          rC   r  z$AsyncClient._send_handling_redirects  s     	7||d000&97    ))4 $ $d7mm########!66w????????H -j9 ) )D$x..((((((((#'== 5 $#O66wII!XJ.# $"..**********,3H)#O +
 !   oo'''''''''	9	s   *=C+ (AC+ +
D5DDc                v  K   |                      |j                  }t          j                    }t	          |j        t                    st          d          t          |          5  |	                    |           d{V }ddd           n# 1 swxY w Y   t	          |j        t                    sJ ||_
        t          |j        ||          |_        | j                            |           | j        |_        t                               d|j        |j        |j        |j        |j                   |S )r  z?Attempted to send an sync request with an AsyncClient instance.r  Nr  r  )r_  r7   r|   r}   r   rd   r    ry  r   handle_async_requestr   r   r   r  r   r   r  r  r   r  r  r  r  s        rC   r  z AsyncClient._send_single_request  s      ++GK88	!##'./:: 	Q   W--- 	E 	E&;;GDDDDDDDDH	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E (/?;;;;;"*Ohe
 
 
 	$$X...$($:!,NK! "	
 	
 	
 s   )BBBr  c               N   K   |                      d||||||||	  	         d{V S )r  r  r  Nr  r  s	            rC   rI   zAsyncClient.get  s\      " \\-! " 

 

 

 

 

 

 

 

 
	
rE   r  c               N   K   |                      d||||||||	  	         d{V S )r  r  r  Nr  r  s	            rC   r  zAsyncClient.options  s\      " \\-! " 

 

 

 

 

 

 

 

 
	
rE   c               N   K   |                      d||||||||	  	         d{V S )r  r  r  Nr  r  s	            rC   r  zAsyncClient.head  s\      " \\-! " 

 

 

 

 

 

 

 

 
	
rE   c               V   K   |                      d|||||||||	|
||           d{V S )r  r  ra  Nr  r  s                rC   r  zAsyncClient.post.  sh      * \\-! " 
 
 
 
 
 
 
 
 	
rE   c               V   K   |                      d|||||||||	|
||           d{V S )r  r  ra  Nr  r  s                rC   r  zAsyncClient.putS  sh      * \\-! " 
 
 
 
 
 
 
 
 	
rE   c               V   K   |                      d|||||||||	|
||           d{V S )r  r  ra  Nr  r  s                rC   r  zAsyncClient.patchx  sh      * \\-! " 
 
 
 
 
 
 
 
 	
rE   c               N   K   |                      d||||||||	  	         d{V S )r  r  r  Nr  r  s	            rC   r  zAsyncClient.delete  s\      " \\-! " 

 

 

 

 

 

 

 

 
	
rE   c                  K   | j         t          j        k    rht          j        | _         | j                                         d{V  | j                                        D ] }||                                 d{V  dS dS r  )r   r\   ra   rM  r   rN  r  )rp   r   s     rC   r   zAsyncClient.aclose  s       ;+,,,%,DK/((*********,,.. ) )$,,..((((((( -,) )rE   rp   r6   c                l  K   | j         t          j        k    r4t          j        dt          j        di| j                  }t          |          t          j        | _         | j                                         d {V  | j        	                                D ]}||                                 d {V  | S r  )
r   r\   r_   r`   ra   ry  rM  
__aenter__rN  r  )rp   r  r   s      rC   r  zAsyncClient.__aenter__  s      ;+..."$S"O
 kC s###!(o((*********\((** 	) 	)E &&(((((((((rE   r  r  r  r  r  r  c                   K   t           j        | _        | j                            |||           d {V  | j                                        D ]!}||                    |||           d {V  "d S rj   )r\   ra   r   rM  	__aexit__rN  r  )rp   r  r  r  r   s        rC   r  zAsyncClient.__aexit__  s       "(o'')YGGGGGGGGG\((** 	F 	FE ooh	9EEEEEEEEE	F 	FrE   )(r   r   r   r   r   r   r   r   r1  r8  r2  r9  r3  r:   r4  r:   r   r   r5  r  r   r,   r   r:   r6  r   r   r   r   r   r   r   r7  r  r   r:   r   r   r9   rh   )r1  r8  r2  r9  r   r:   r3  r:   r4  r:   r6  r   r7  r  r9   r   )r   r   r1  r8  r2  r9  r   r:   r3  r:   r4  r:   r6  r   r9   r   )r7   r-   r9   r   r  )r   r   r7   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   rb  r   r   r   r   r9   r  r  r  r  r  r  r  r  r   )rp   r6   r9   r6   r  r  )rP   rQ   rR   rS   r   r   r   rq   rL  rB  r_  r1   r   r   rd   rm  rz  r  r  rI   r  r  r  r  r  r  r   r  r  r  r  s   @rC   r2   r2     s       + +` "&)-&*&*.2!%#'JN 6!&'2EI /3@G+M: M: M: M: M: M: M: M:b /3!%'/3
 
 
 
 
2 /3!%'
 
 
 
 
(	 	 	 	  *.#'%)"&)-&*&*4F4F3E/37V 7V 7V 7V 7V 7Vr  *.#'%)"&)-&*&*4F4F3E/31$ 1$ 1$ 1$ 1$ 1$n 4F4F1 1 1 1 1 1f %  %  %  %D$ $ $ $L       L *.&*&*4F4F3E/3
 
 
 
 
 
B *.&*&*-?4F3E/3
 
 
 
 
 
B *.&*&*-?4F3E/3
 
 
 
 
 
B *.#'%)"&)-&*&*-?4F3E/3#
 #
 #
 #
 #
 #
R *.#'%)"&)-&*&*-?4F3E/3#
 #
 #
 #
 #
 #
R *.#'%)"&)-&*&*-?4F3E/3#
 #
 #
 #
 #
 #
R *.&*&*-?4F3E/3
 
 
 
 
 
:
) 
) 
) 
)   ( 04*.*.	F F F F F F F F FrE   )r7   r-   r8   r-   r9   r:   )r7   r-   r9   rF   )r7   r-   rK   r-   r9   r:   )\
__future__r   r~   enumloggingr|   typingrj  
contextlibr   r   typesr   r   r   r	   r
   r   _configr   r   r   r   r   r   	_decodersr   _exceptionsr   r   r   r   _modelsr   r   r   r   _status_codesr   _transports.baser   r   _transports.defaultr   r   _typesr    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   _urlsr-   r.   _utilsr/   r0   TYPE_CHECKINGssl__all__TypeVarr4   r6   rD   rB   rM   rO   r1   	getLoggerr  r   r!  keysr   Enumr\   rc   r   CallableAny	EventHookr   r3   r2   rT   rE   rC   <module>r     s   " " " " " "       : : : : : : : :       $ $ $ $ $ $ 0 0 0 0 0 0 0 0 0 0                * ) ) ) ) )            9 8 8 8 8 8 8 8 8 8 8 8             ? ? ? ? ? ? ? ? B B B B B B B B                              $ # # # # # # # 7 7 7 7 7 7 7 7	 JJJ
9
9
9 FN3h'''FN3m,,,   6 6 6 6          ( &%''  
	7	#	#*[**
))CC+&+--CCC 
    $)       n   .$ $ $ $ $ $ $ $. OCO,	SW SW SW SW SW SW SW SWlFC FC FC FC FCZ FC FC FCRHF HF HF HF HF* HF HF HF HF HFrE   