
    +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mZ ddl	m
Z
mZmZ ddlmZmZ ddlmZ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 dZ ej>                  d      Z ddZ! G d de      Z"y)    )annotationsN   )SyncBackend)SOCKET_OPTIONNetworkBackendNetworkStream)ConnectErrorConnectTimeout)OriginRequestResponse)default_ssl_context)Lock)Trace   )HTTP11Connection)ConnectionInterfaceg      ?zhttpcore.connectionc              #  Z   K   d t        j                         D ]  }| d|z  z    yw)z
    Generate a geometric sequence that has a ratio of 2 and starts with 0.

    For example:
    - `factor = 2`: `0, 2, 4, 8, 16, 32, 64, ...`
    - `factor = 3`: `0, 3, 6, 12, 24, 48, 96, ...`
    r   r   N)	itertoolscount)factorns     L/var/www/html/venv/lib/python3.12/site-packages/httpcore/_sync/connection.pyexponential_backoffr      s1      G__ q!tms   )+c                      e Zd Z	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddZddZddZddZddZddZ	dd	Z
dd
ZddZddZddZ	 	 	 d	 	 	 	 	 	 	 ddZy)HTTPConnectionNc                    || _         || _        || _        || _        || _        || _        || _        || _        |	
t               n|	| _	        d | _
        d| _        t               | _        |
| _        y )NF)_origin_ssl_context_keepalive_expiry_http1_http2_retries_local_address_udsr   _network_backend_connection_connect_failedr   _request_lock_socket_options)selforiginssl_contextkeepalive_expiryhttp1http2retrieslocal_addressudsnetwork_backendsocket_optionss              r   __init__zHTTPConnection.__init__'   sy     '!1+	 -4KM/ 	 8<%*!V-    c                   | j                  |j                  j                        s/t        d|j                  j                   d| j                         	 | j
                  5  | j                  | j                  |      }|j                  d      }|d uxr |j                         dk(  }|s| j                  r7| j                  s+ddlm}  || j                  || j                        | _        n't        | j                  || j                        | _        d d d        | j                  j%                  |      S # 1 sw Y   $xY w# t         $ r}d| _        |d }~ww xY w)	NzAttempted to send request to z on connection to 
ssl_objecth2r   )HTTP2Connection)r,   streamr.   T)can_handle_requesturlr,   RuntimeErrorr   r)   r'   _connectget_extra_infoselected_alpn_protocolr"   r!   r0   r;   r    r   BaseExceptionr(   handle_request)r+   requestr<   r9   http2_negotiatedr;   excs          r   rD   zHTTPConnection.handle_requestE   sI   &&w{{'9'9:/0B0B/CCUVZVbVbUcd 	## ##+!]]73F!'!6!6|!DJ"$. H&==?4G % (DKK:+:#'<<#)-1-C-C,( ,<#'<<#)-1-C-C,(%6 ..w777 .  	#'D I	s1   E "B4D9E 9E>E 	E	EEc                n   |j                   j                  di       }|j                   j                  dd       }|j                  dd       }| j                  }t        t              }	 	 | j
                  | j                  j                  j                  d      | j                  j                  | j                  || j                  d}t        dt        ||      5 } | j                  j                  di |}	|	|_        d d d        nX| j
                  || j                  d}t        d	t        ||      5 } | j                  j"                  di |}	|	|_        d d d        | j                  j$                  d
v r| j&                  
t)               n| j&                  }
| j*                  rddgndg}|
j-                  |       |
|xs% | j                  j                  j                  d      |d}t        dt        ||      5 } 	j.                  di |}	|	|_        d d d        |	S 	S # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   	S xY w# t0        t2        f$ r\ |dk  r |dz  }t5        |      }t        dt        |      5 }| j                  j7                  |       d d d        n# 1 sw Y   nxY wY nw xY wO)Ntimeoutsni_hostnameconnect)r   ascii)hostportr2   rI   r5   connect_tcp)pathrI   r5   connect_unix_socket)   httpss   wsszhttp/1.1r:   )r-   server_hostnamerI   	start_tlsr   r   retry )
extensionsgetr#   r   RETRIES_BACKOFF_FACTORr%   r   rM   decoderN   r$   r*   r   loggerr&   rO   return_valuerQ   schemer   r   r"   set_alpn_protocolsrT   r	   r
   nextsleep)r+   rE   timeoutsrJ   rI   retries_leftdelayskwargstracer<   r-   alpn_protocolsdelays                r   r@   zHTTPConnection._connecti   s   %%)))R8))--ndC,,y$/}}$,BC3799$ $ 1 1 8 8 A $ 1 1)-)<)<#**.*>*>F }fgvF 4%!B!6!6!B!B!LV!L-3*4 4
 !%		#**.*>*>F
 -vw 4!J!6!6!J!J "$" .4*4 <<&&*<<  ,,4 ,-!..  
 <@;;j$%7ZLN22>B (3+7 ,=<<,,33G<#*	F {FGVD 4!1!1!1!;F!;-3*4 vG4 44 4.4  .1 71$!V7FGV< 7))//67 7 77] s   )A1I $H">5I 3$H.B%I <H:	I  I "H+'I .H73I :I?I I 7J2>J#	J2#J,	(J21J2c                     || j                   k(  S N)r   )r+   r,   s     r   r=   z!HTTPConnection.can_handle_request   s    %%r7   c                    | j                   6t        dt        d i       5  | j                   j                          d d d        y y # 1 sw Y   y xY w)Nclose)r'   r   r[   rk   r+   s    r   rk   zHTTPConnection.close   sM    'wb1 )  &&() ) () )s   AAc                    | j                   E| j                  xr7 | j                  j                  dk(  xs | j                   xr | j
                   S | j                   j                         S )NrR   )r'   r"   r   r]   r!   r(   is_availablerl   s    r   rn   zHTTPConnection.is_available   sf    #
  -\\((H4GDKK-,,,
 ,,..r7   c                f    | j                   | j                  S | j                   j                         S ri   )r'   r(   has_expiredrl   s    r   rp   zHTTPConnection.has_expired   s/    #'''++--r7   c                f    | j                   | j                  S | j                   j                         S ri   )r'   r(   is_idlerl   s    r   rr   zHTTPConnection.is_idle   s/    #'''''))r7   c                f    | j                   | j                  S | j                   j                         S ri   )r'   r(   	is_closedrl   s    r   rt   zHTTPConnection.is_closed   s/    #'''))++r7   c                n    | j                   | j                  rdS dS | j                   j                         S )NzCONNECTION FAILED
CONNECTING)r'   r(   inforl   s    r   rw   zHTTPConnection.info   s7    #*.*>*>&PLP$$&&r7   c                X    d| j                   j                   d| j                          dS )N<z [z]>)	__class____name__rw   rl   s    r   __repr__zHTTPConnection.__repr__   s(    4>>**+2diik]"==r7   c                    | S ri   rV   rl   s    r   	__enter__zHTTPConnection.__enter__   s    r7   c                $    | j                          y ri   )rk   )r+   exc_type	exc_value	tracebacks       r   __exit__zHTTPConnection.__exit__   s     	

r7   )	NNTFr   NNNN)r,   r   r-   zssl.SSLContext | Noner.   zfloat | Noner/   boolr0   r   r1   intr2   
str | Noner3   r   r4   zNetworkBackend | Noner5   z%typing.Iterable[SOCKET_OPTION] | NonereturnNone)rE   r   r   r   )rE   r   r   r   )r,   r   r   r   )r   r   )r   r   )r   str)r   r   )NNN)r   ztype[BaseException] | Noner   zBaseException | Noner   ztypes.TracebackType | Noner   r   )r{   
__module____qualname__r6   rD   r@   r=   rk   rn   rp   rr   rt   rw   r|   r~   r   rV   r7   r   r   r   &   s     .2)-$(15@D.. +. '	.
 . . . ". . /. >. 
.<"8H<7|&)

/.
*
,
'
>
 04*.04	, ( .	
 
r7   r   )r   floatr   ztyping.Iterator[float])#
__future__r   r   loggingssltypestyping_backends.syncr   _backends.baser   r   r   _exceptionsr	   r
   _modelsr   r   r   _sslr   _synchronizationr   _tracer   http11r   
interfacesr   rY   	getLoggerr[   r   r   rV   r7   r   <module>r      sg    "   
   ( I I 6 / / & #  $ +  
		0	1
x( xr7   