o
    h~                     @   s  d dl Z d dlZd dlZd dlmZ d dl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 ddlmZ ddlmZm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" 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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= ddl>m?Z?m@Z@mAZA G dd dZBG dd deBZCG dd deBZDdejEe6 dedejEe dedejEe ded e	d!eFd"ejGeHef fd#d$ZIdS )%    N)TracebackType   )AsyncioBackend)ConcurrencyBackend)DEFAULT_MAX_REDIRECTSDEFAULT_POOL_LIMITSDEFAULT_TIMEOUT_CONFIG	CertTypesHTTPVersionTypes
PoolLimitsTimeoutTypesVerifyTypes)ASGIDispatch)AsyncDispatcher
Dispatcher)ConnectionPool)	HTTPProxy)ThreadedDispatcher)WSGIDispatch)	HTTPError
InvalidURL)BaseMiddleware)BasicAuthMiddleware)CustomAuthMiddleware)RedirectMiddleware)URLAsyncRequestAsyncRequestDataAsyncResponseAsyncResponseContent	AuthTypesCookiesCookieTypesHeadersHeaderTypesProxiesTypesQueryParamsQueryParamTypesRequestDataRequestFilesResponseResponseContentURLTypes)ElapsedTimerget_environment_proxiesget_netrc_loginc                !   @   s@  e Zd Zddddddddeeedddddddededede	de
d	ed
ededededededejeef dejdedef ddZedefddZejdeddfddZedefddZejde	ddfddZede fddZ!e!jdeddfddZ!deddfd d!Z"d"ede#fd#d$Z$	d=de	dej%e	 fd%d&Z&	d=dedej%e fd'd(Z'	d=dedej%e fd)d*Z(d+ddddddd,d-e)d.eded/ede
d	ededede*fd0d1Z+	d=d-e)dededej%e, fd2d3Z-d-e)dej.e/ef defd4d5Z0ddddddd6d7e/d"ed8e1d9e2d:ej3dedede	de)fd;d<Z4dS )>
BaseClientNT)authparamsheaderscookiesverifycerthttp_versionsproxiestimeoutpool_limitsmax_redirectsbase_urldispatchappbackend	trust_envr1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   c             
   C   sF  |d u rt  }| | |d ur.tt|j}|dv sJ |dkr(t|d}nt||d}|d u r4dn|| _|d u rHt	|||	||
|| jd}nt
|trSt||}n|}|d u ratddd| _nt|| _|d u rli }|| _t|| _t|| _t|| _|| _|| _|| _|d u r|rttt }t||||	||
||d| _d S )	N)      rA   )r>   )r>   r?   T)r5   r6   r9   r7   r:   r?   r@    )Zallow_relative)r   check_concurrency_backendleninspect	signature
parametersr   r   r@   r   
isinstancer   r   r   r<   r1   r&   _paramsr#   _headersr!   _cookiesr;   r=   concurrency_backendtypingcastr%   r.   _proxies_to_dispatchersr8   )selfr1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   Zparam_countZasync_dispatch rR   T/var/www/html/magazine_api/magazine_env/lib/python3.10/site-packages/httpx/client.py__init__7   s^   

	



zBaseClient.__init__returnc                 C      | j S N)rK   rQ   rR   rR   rS   r3         zBaseClient.headersc                 C      t || _d S rW   )r#   rK   )rQ   r3   rR   rR   rS   r3         c                 C   rV   rW   )rL   rX   rR   rR   rS   r4      rY   zBaseClient.cookiesc                 C   rZ   rW   )r!   rL   )rQ   r4   rR   rR   rS   r4      r[   c                 C   rV   rW   )rJ   rX   rR   rR   rS   r2      rY   zBaseClient.paramsc                 C   rZ   rW   )r&   rJ   )rQ   r2   rR   rR   rS   r2      r[   c                 C   s   d S rW   rR   rQ   r?   rR   rR   rS   rD         z$BaseClient.check_concurrency_backendurlc                 C   s4   | j j|d}|jdkrt|jr|jdd}|S )N)Zrelative_urlhttphttps)scheme)r<   joinra   hstspreloadZin_hsts_preloadhost	copy_with)rQ   r^   rR   rR   rS   	merge_url   s   zBaseClient.merge_urlc                 C   &   |s| j rt| j }|| |S |S rW   )r4   r!   update)rQ   r4   merged_cookiesrR   rR   rS   merge_cookies   
   


zBaseClient.merge_cookiesc                 C   rg   rW   )r3   r#   rh   )rQ   r3   Zmerged_headersrR   rR   rS   merge_headers   rk   zBaseClient.merge_headersc                 C   rg   rW   )r2   r&   rh   )rQ   r2   Zmerged_queryparamsrR   rR   rS   merge_queryparams   rk   zBaseClient.merge_queryparamsFstreamr1   allow_redirectsr5   r6   r9   r@   requestro   rp   c                   s   |j jdvrtd|jdtdtf fdd}	dtjdt	dtjfd	d
}
|
|	t
|jd}	j||d u rCjn||d u rKjn|d}|d urX|
|	|}	|	|I d H S )Nr_   r`   z%URL scheme must be "http" or "https".rq   rU   c              
      s   z%t  }j|  dI d H }W d    n1 sw   Y  |j|_W n ty; } z	|jd u r6| |_ d }~ww j| s^z| I d H  W | I d H  |S | I d H  w |S )N)r5   r6   r9   )	r-   sendelapsedr   rq   r4   extract_cookiesreadclose)rq   Ztimerresponseexcr6   r=   rQ   ro   r9   r5   rR   rS   get_response   s,   
z.BaseClient._get_response.<locals>.get_responser{   
middlewarec                 S   s   t j|| dS )N)r{   )	functoolspartial)r{   r|   rR   rR   rS   wrap   s   z&BaseClient._get_response.<locals>.wrap)rp   r4   )rq   r@   r1   )r^   ra   r   _dispatcher_for_requestr8   r   r   rN   Callabler   r   r4   _get_auth_middlewarer@   r1   )rQ   rq   ro   r1   rp   r5   r6   r9   r@   r{   r   Zauth_middlewarerR   rz   rS   _get_response   s0    

zBaseClient._get_responsec                 C   s   t |trt|d |d dS t |tr|S t|rt|dS |d ur+td|d|jjs3|jj	r=t|jj|jj	dS |rRt
|jj}|rR|\}}}t||dS d S )Nr   r   )usernamepassword)r1   z}When specified, "auth" must be a (username, password) tuple or a callable with signature (AsyncRequest) -> AsyncRequest (got ))rI   tupler   r   callabler   	TypeErrorr^   r   r   r/   	authority)rQ   rq   r@   r1   Znetrc_loginr   _r   rR   rR   rS   r     s,   



zBaseClient._get_auth_middlewarec           	      C   s   |rZ|j }|jdkr|jdkp|jdko|jdk}|j d|j }|j d| |r4|j d|j ndd| |rAd|j nd|jd	f}|D ]}|rY||v rY|| }|  S qI| jS )
zIGets the AsyncDispatcher instance that should be used for a given Requestr_   P   r`   i  :z://Nzall://all)r^   ra   portrd   r=   )	rQ   rq   r8   r^   Zis_default_porthostname
proxy_keys	proxy_key
dispatcherrR   rR   rS   r     s&   z"BaseClient._dispatcher_for_requestdatafilesjsonr2   r3   r4   methodr   r   r   c          
   
   C   sD   |  |}| |}| |}| |}t||||||||d}	|	S )Nr   )rf   rl   rj   rm   r   )
rQ   r   r^   r   r   r   r2   r3   r4   rq   rR   rR   rS   build_request8  s   




zBaseClient.build_requestrW   )5__name__
__module____qualname__r   r   r   r    r'   r$   r"   r   r	   r
   r%   r   r   intr,   rN   Unionr   r   r   r   boolrT   propertyr#   r3   setterr!   r4   r&   r2   rD   r   rf   Optionalrj   rl   rm   r   r   r   r   r   Dictstrr   r   r)   Anyr   rR   rR   rR   rS   r0   6   s,   	

P




	

?

	
r0   c                !   @   s  e Zd Zddddddddddd
dedededed	ed
edede	de
dededefddZddddddddddd
dedededed	ed
edede	de
dededefddZddddddddddd
dedededed	ed
edede	de
dededefddZdddddddddddddddedededejdededed	ed
edede	de
dededefddZdddddddddddddddedededejdededed	ed
edede	de
dededefddZdddddddddddddddedededejdededed	ed
edede	de
dededefdd Zdddddddddddddddedededejdededed	ed
edede	de
dededefd!d"Zddddddddddddddd#ededededejdededed	ed
edede	de
dededef d$d%Zdddddddd&d'ed	ed
edede
de	dededefd(d)Zd3d*d+Zd4d,d-Z			d5d.eje d/ed0e ddfd1d2Z!dS )6AsyncClientNFT
r2   r3   r4   ro   r1   rp   r6   r5   r9   r@   r^   r2   r3   r4   ro   r1   rp   r6   r5   r9   r@   rU   c       
            *   | j d||||||||	||
|dI d H S NGET
r2   r3   r4   ro   r1   rp   r5   r6   r9   r@   rq   rQ   r^   r2   r3   r4   ro   r1   rp   r6   r5   r9   r@   rR   rR   rS   getV     zAsyncClient.getc       
            r   NOPTIONSr   r   r   rR   rR   rS   optionst  r   zAsyncClient.optionsc       
            r   NHEADr   r   r   rR   rR   rS   head  r   zAsyncClient.headr   r   r   r2   r3   r4   ro   r1   rp   r6   r5   r9   r@   r   r   r   c                   0   | j d|||||||||	|
||||dI d H S NPOSTr   r   r   r2   r3   r4   ro   r1   rp   r5   r6   r9   r@   r   rQ   r^   r   r   r   r2   r3   r4   ro   r1   rp   r6   r5   r9   r@   rR   rR   rS   post  $   zAsyncClient.postc                   r   NPUTr   r   r   rR   rR   rS   put  r   zAsyncClient.putc                   r   NPATCHr   r   r   rR   rR   rS   patch  r   zAsyncClient.patchc                   r   NDELETEr   r   r   rR   rR   rS   delete  r   zAsyncClient.deleter   c             
      s@   | j ||||||||d}| j||	|
|||||dI d H }|S N)r   r^   r   r   r   r2   r3   r4   rn   )r   rs   rQ   r   r^   r   r   r   r2   r3   r4   ro   r1   rp   r6   r5   r9   r@   rq   rx   rR   rR   rS   rq   @  s,   

zAsyncClient.requestrn   rq   c          	   
      s"   | j ||||||||dI d H S )N)rq   ro   r1   rp   r5   r6   r9   r@   )r   )	rQ   rq   ro   r1   rp   r5   r6   r9   r@   rR   rR   rS   rs   i  s   zAsyncClient.sendc                    s   | j  I d H  d S rW   )r=   rw   rX   rR   rR   rS   rw     s   zAsyncClient.closec                    s   | S rW   rR   rX   rR   rR   rS   
__aenter__  s   zAsyncClient.__aenter__exc_type	exc_value	tracebackc                    s   |   I d H  d S rW   rw   rQ   r   r   r   rR   rR   rS   	__aexit__  s   zAsyncClient.__aexit__rU   N)rU   r   NNN)"r   r   r   r,   r'   r$   r"   r   r    r	   r   r   r   r   r   r   r   r)   rN   r   r   r   r   r   r   rq   r   rs   rw   r   TypeBaseExceptionr   r   rR   rR   rR   rS   r   U  s   	

"	

"	

"	

(	

(	

(	

)	

-	



r   c                !   @   s  e Zd ZdeddfddZ	d:dedeje fddZ	de
defd	d
Zdddddddddddddddededededejdededededededededededef ddZdddddddddededededededededefd d!Zddddddddddd"
dedededededededededededefd#d$Zddddddddddd"
dedededededededededededefd%d&Zddddddddddd"
dedededededededededededefd'd(Zdddddddddddddddedededejdededededededededededefd)d*Z dddddddddddddddedededejdededededededededededefd+d,Z!dddddddddddddddedededejdededededededededededefd-d.Z"dddddddddddddddedededejdededededededededededefd/d0Z#d;d1d2Z$d<d3d4Z%			d=d5ej&e' d6e'd7e(ddfd8d9Z)dS )>Clientr?   rU   Nc                 C   s$   t |trd S t|drd S td)Nloopz9'Client' only supports asyncio-based concurrency backends)rI   r   hasattr
ValueErrorr\   rR   rR   rS   rD     s
   
	
z Client.check_concurrency_backendr   c                 C   s6   |du st |tttfr|S t|dsJ | j|S )z}
        If the request data is an bytes iterator then return an async bytes
        iterator onto the request data.
        N__iter__)rI   r   bytesdictr   rM   Ziterate_in_threadpoolrQ   r   rR   rR   rS   _async_request_data  s   zClient._async_request_datac                 C   s(   t |tr|S t|dsJ | j|S )N	__aiter__)rI   r   r   rM   Ziterater   rR   rR   rS   
_sync_data  s   
zClient._sync_dataFTr   r   r^   r   r   r2   r3   r4   ro   r1   rp   r6   r5   r9   r@   c             
   C   s>   | j ||| ||||||d}| j||	|
|||||d}|S r   )r   r   rs   r   rR   rR   rS   rq     s*   

zClient.requestrn   rq   c             
      s   | j | j}	|g}
d||||||d}j|	g|
R i | t dt dd }| |}d	 fdd}t j j j|| j	 j
 jd}|s[z|  W |  |S |  w |S )
NTrn   Z_raw_contentZ_raw_streamrU   c                      s     j d S rW   )runon_closerR   Zasync_responserM   rR   rS   sync_on_close  s   z"Client.send.<locals>.sync_on_close)status_codehttp_versionr3   contentr   rq   historyrt   r   )rM   r   r   getattrr   r*   r   r   r3   rq   r   rt   rv   rw   )rQ   rq   ro   r1   rp   r5   r6   r9   r@   	coroutineargskwargsr   Zsync_contentr   rx   rR   r   rS   rs     sD   	



zClient.sendr   c       
         C   "   | j d||||||||	||
|dS r   r   r   rR   rR   rS   r        z
Client.getc       
         C   r   r   r   r   rR   rR   rS   r   7  r   zClient.optionsc       
         C   r   r   r   r   rR   rR   rS   r   U  r   zClient.headc                C   (   | j d|||||||||	|
||||dS r   r   r   rR   rR   rS   r   s  "   zClient.postc                C   r   r   r   r   rR   rR   rS   r     r   z
Client.putc                C   r   r   r   r   rR   rR   rS   r     r   zClient.patchc                C   r   r   r   r   rR   rR   rS   r     r   zClient.deletec                 C   s   | j j}| j| d S rW   )r=   rw   rM   r   )rQ   r   rR   rR   rS   rw     s   zClient.closec                 C   s   | S rW   rR   rX   rR   rR   rS   	__enter__  r]   zClient.__enter__r   r   r   c                 C   s   |    d S rW   r   r   rR   rR   rS   __exit__
  s   zClient.__exit__rW   r   )rU   r   r   )*r   r   r   r   rD   r(   rN   r   r   r   r   r+   r   r   r,   r)   r   r'   r$   r"   r   r    r	   r   r   r*   rq   r   rs   r   r   r   r   r   r   r   rw   r   r   r   r   r   rR   rR   rR   rS   r     s   
	

-	

:	

"	

"	

"	

(	

(	

(	


$
r   r8   r5   r6   r9   r7   r:   r?   r@   rU   c                    s   dt dtf fdd}| d u ri S t| ttfr$d|| iS t| tr-d| iS i }	|  D ]\}
}t|ttfrG|||	t|
< q3||	t|
< q3|	S )Nr^   rU   c              
      s8   t | } | jdv rt|  dS td| )Nrr   )r5   r6   r9   r:   r?   r@   r7   zUnknown proxy for )r   ra   r   r   )r^   r?   r6   r7   r:   r9   r@   r5   rR   rS   _proxy_from_url  s   

z0_proxies_to_dispatchers.<locals>._proxy_from_urlr   )r,   r   rI   r   r   items)r8   r5   r6   r9   r7   r:   r?   r@   r   new_proxieskeyZdispatcher_or_urlrR   r   rS   rP     s   "

rP   )Jr}   rF   rN   typesr   rc   Zconcurrency.asyncior   Zconcurrency.baser   configr   r   r   r	   r
   r   r   r   Zdispatch.asgir   Zdispatch.baser   r   Zdispatch.connection_poolr   Zdispatch.proxy_httpr   Zdispatch.threadedr   Zdispatch.wsgir   
exceptionsr   r   Zmiddleware.baser   Zmiddleware.basic_authr   Zmiddleware.custom_authr   Zmiddleware.redirectr   modelsr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   utilsr-   r.   r/   r0   r   r   r   r   r   r   rP   rR   rR   rR   rS   <module>   sd    (
P  !  <   	