
    nbi                        d dl mZ d dlZd dlZd dlZddlmZ ddlmZ ej	        rd dl
mZ ddlmZmZ  ej        dd	
          Zej        eef         Z ej        d          Z G d d	          ZdS )    )annotationsN   )DEFAULT_BLOCKSIZE)ProxySchemeUnsupported)Literal)_TYPE_PEER_CERT_RET_TYPE_PEER_CERT_RET_DICT_SelfTSSLTransport)bound_ReturnValuec                  .   e Zd ZdZed\d            Z	 	 d]d^dZd_dZd`dZdadZ	e
dbd            ZdcdddZdedfd#Z	 	 dgdhd(Zdidjd+Zdidkd,Zdld-Zdld.Zej        	 dmdnd3            Zej        dod6            Zdpdqd9Zdrd:Zdsd<Ze
dtd=            Zdrd>Zdrd?ZdudAZdrdBZdvdEZdwdFZej        dxdI            Zej        dydJ            Z	 dzd{dKZdldLZ dzd|dNZ!ej        d}dQ            Z"ej        d~dT            Z"ej        ddW            Z"	 	 ddd[Z"dS )r   aL  
    The SSLTransport wraps an existing socket and establishes an SSL connection.

    Contrary to Python's implementation of SSLSocket, it allows you to chain
    multiple TLS connections together. It's particularly useful if you need to
    implement TLS within TLS.

    The class supports most of the socket API operations.
    ssl_contextssl.SSLContextreturnNonec                D    t          | d          st          d          dS )z
        Raises a ProxySchemeUnsupported if the provided ssl_context can't be used
        for TLS in TLS.

        The only requirement is that the ssl_context provides the 'wrap_bio'
        methods.
        wrap_biozXTLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContextN)hasattrr   )r   s    p/var/www/html/mdtn/previsions/meteo_cartes/venv/lib/python3.11/site-packages/urllib3_future/util/ssltransport.py$_validate_ssl_context_for_tls_in_tlsz1SSLTransport._validate_ssl_context_for_tls_in_tls    s7     {J// 	(5  	 	    NTsocketsocket.socketserver_hostname
str | Nonesuppress_ragged_eofsboolc                   t          j                    | _        t          j                    | _        || _        || _        |                    | j        | j        |          | _        |                     | j        j	                   dS )zV
        Create an SSLTransport around socket using the provided ssl_context.
        )r   N)
ssl	MemoryBIOincomingoutgoingr   r   r   sslobj_ssl_io_loopdo_handshake)selfr   r   r   r   s        r   __init__zSSLTransport.__init__0   su     $8!!**M4=/ + 
 

 	$+233333r   r'   r
   c                    | S N r'   s    r   	__enter__zSSLTransport.__enter__G   s    r   _
typing.Anyc                .    |                                   d S r*   )close)r'   r.   s     r   __exit__zSSLTransport.__exit__J   s    

r   intc                4    | j                                         S r*   )r   filenor,   s    r   r5   zSSLTransport.filenoM       {!!###r   socket.SocketKindc                    | j         j        S r*   )r   typer,   s    r   r9   zSSLTransport.typeP   s    {r      lenbuffertyping.Any | Noneint | bytesc                .    |                      ||          S r*   )_wrap_ssl_read)r'   r;   r<   s      r   readzSSLTransport.readT   s    ""3///r   r   buflenflagsc                V    |dk    rt          d          |                     |          S )Nr   z+non-zero flags not allowed in calls to recv)
ValueErrorr@   )r'   rB   rC   s      r   recvzSSLTransport.recvW   s.    A::JKKK""6***r   _WriteBuffernbytes
int | NoneNone | int | bytesc                z    |dk    rt          d          |t          |          }|                     ||          S )Nr   z0non-zero flags not allowed in calls to recv_into)rE   r;   rA   )r'   r<   rH   rC   s       r   	recv_intozSSLTransport.recv_into\   s@     A::OPPP>[[Fyy(((r   databytesc                X   |dk    rt          d          d}t          |          5 }|                    d          5 }t          |          }||k     r(|                     ||d                    }||z  }||k     (d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   z.non-zero flags not allowed in calls to sendallB)rE   
memoryviewcastr;   send)r'   rM   rC   countview	byte_viewamountvs           r   sendallzSSLTransport.sendallh   s1   A::MNNN 	tyy~~ 	^^F&..IIi/00
 &..	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s4   B>B;BB	BB	BB#&B#c                l    |dk    rt          d          |                     | j        j        |          S )Nr   z+non-zero flags not allowed in calls to send)rE   r%   r$   write)r'   rM   rC   s      r   rS   zSSLTransport.sendr   s5    A::JKKK  !2D999r   c                D    |                      | j        j                   d S r*   )r%   r$   unwrapr,   s    r   r]   zSSLTransport.unwrapw   s!    $+,-----r   c                8    | j                                          d S r*   )r   r1   r,   s    r   r1   zSSLTransport.closez   s    r   .binary_formLiteral[False]_TYPE_PEER_CERT_RET_DICT | Nonec                    d S r*   r+   r'   r_   s     r   getpeercertzSSLTransport.getpeercert}   s	     +.#r   Literal[True]bytes | Nonec                    d S r*   r+   rc   s     r   rd   zSSLTransport.getpeercert   s    GJsr   Fr   c                6    | j                             |          S r*   )r$   rd   rc   s     r   rd   zSSLTransport.getpeercert   s    {&&{333r   c                4    | j                                         S r*   )r$   versionr,   s    r   rj   zSSLTransport.version   s    {""$$$r   tuple[str, str, int] | Nonec                4    | j                                         S r*   )r$   cipherr,   s    r   rm   zSSLTransport.cipher   r6   r   c                    | j         j        S r*   )r$   contextr,   s    r   ro   zSSLTransport.context   s    {""r   c                4    | j                                         S r*   )r$   selected_alpn_protocolr,   s    r   rq   z#SSLTransport.selected_alpn_protocol   s    {11333r   c                4    | j                                         S r*   )r$   selected_npn_protocolr,   s    r   rs   z"SSLTransport.selected_npn_protocol   s    {00222r   !list[tuple[str, str, int]] | Nonec                4    | j                                         S r*   )r$   shared_ciphersr,   s    r   rv   zSSLTransport.shared_ciphers   s    {))+++r   c                4    | j                                         S r*   )r$   compressionr,   s    r   rx   zSSLTransport.compression   s    {&&(((r   valuefloat | Nonec                :    | j                             |           d S r*   )r   
settimeout)r'   ry   s     r   r|   zSSLTransport.settimeout   s    u%%%%%r   c                4    | j                                         S r*   )r   
gettimeoutr,   s    r   r~   zSSLTransport.gettimeout   s    {%%'''r   _SSLTransport__level_SSLTransport__optnamec                    d S r*   r+   )r'   r   r   s      r   
getsockoptzSSLTransport.getsockopt   s    ?Bsr   c                    d S r*   r+   r'   r   r   rB   s       r   r   zSSLTransport.getsockopt   s    NQcr   c                t    || j                             ||          S | j                             |||          S r*   )r   r   r   s       r   r   zSSLTransport.getsockopt   s;     >;))'9==={%%gy&AAAr   c                8    | j                                          d S r*   )r   _decref_socketiosr,   s    r   r   zSSLTransport._decref_socketios   s    %%'''''r   bytearray | Nonec                    	 |                      | j        j        ||          S # t          j        $ r(}|j        t          j        k    r| j        rY d }~dS  d }~ww xY wNr   )r%   r$   rA   r    SSLErrorerrnoSSL_ERROR_EOFr   )r'   r;   r<   es       r   r@   zSSLTransport._wrap_ssl_read   sm    	$$T[%5sFCCC| 	 	 	w#+++0I+qqqqq		s    # AAAAfunctyping.Callable[[], None]c                    d S r*   r+   )r'   r   s     r   r%   zSSLTransport._ssl_io_loop   s    EHSr   typing.Callable[[bytes], int]arg1c                    d S r*   r+   )r'   r   r   s      r   r%   zSSLTransport._ssl_io_loop   s    UXUXr   /typing.Callable[[int, bytearray | None], bytes]arg2c                    d S r*   r+   )r'   r   r   r   s       r   r%   zSSLTransport._ssl_io_loop   s	     r   "typing.Callable[..., _ReturnValue]None | bytes | intr   c                f   d}d}|rd}	 || |            }n| ||          }n |||          }nD# t           j        $ r2}|j        t           j        t           j        fvr||j        }Y d}~nd}~ww xY w| j                                        }| j                            |           |d}ne|t           j        k    rU| j        	                    t                    }|r| j                            |           n| j                                         |t          j        t           |          S )z>Performs an I/O loop between incoming/outgoing and the socket.TNF)r    r   r   SSL_ERROR_WANT_READSSL_ERROR_WANT_WRITEr#   rA   r   rY   rF   r   r"   r[   	write_eoftypingrR   r   )	r'   r   r   r   should_loopretr   r   bufs	            r   r%   zSSLTransport._ssl_io_loop   sY     	.E <DL$&&CC\$t**CC$tT**C<      73#:C<T"UUUG	  -$$&&CK$$$}##111k&&'899 .M'',,,,M++---3  	.4 {<---s   )5 A6(A11A6)r   r   r   r   )NT)
r   r   r   r   r   r   r   r   r   r   )r'   r
   r   r
   )r.   r/   r   r   )r   r3   )r   r7   )r:   N)r;   r3   r<   r=   r   r>   )r:   r   )rB   r3   rC   r3   r   r>   r   )r<   rG   rH   rI   rC   r3   r   rJ   )r   )rM   rN   rC   r3   r   r   )rM   rN   rC   r3   r   r3   )r   r   ).)r_   r`   r   ra   )r_   re   r   rf   )F)r_   r   r   r   )r   r   )r   rk   )r   r   )r   rt   )ry   rz   r   r   )r   rz   )r   r3   r   r3   r   r3   )r   r3   r   r3   rB   r3   r   rN   r*   )r   r3   r   r3   rB   rI   r   r>   )r;   r3   r<   r   r   r>   )r   r   r   r   )r   r   r   rN   r   r3   )r   r   r   r3   r   r   r   rN   )NN)r   r   r   r   r   r   r   r   )#__name__
__module____qualname____doc__staticmethodr   r(   r-   r2   r5   propertyr9   rA   rF   rL   rY   rS   r]   r1   r   overloadrd   rj   rm   ro   rq   rs   rv   rx   r|   r~   r   r   r@   r%   r+   r   r   r   r      s            \& '+%)4 4 4 4 4.      $ $ $ $       X 0 0 0 0 0+ + + + + "	
) 
) 
) 
) 
)    : : : : :
. . . .    _,/. . . . _. _JJJ _J4 4 4 4 4% % % %$ $ $ $ # # # X#4 4 4 43 3 3 3, , , ,) ) ) )& & & &( ( ( ( _BBB _B_QQQ _Q BFB B B B B( ( ( (     _HHH _H _XXX _X _   _ $(!%	$. $. $. $. $. $. $.r   )
__future__r   r   r    r   	_constantr   
exceptionsr   TYPE_CHECKINGtyping_extensionsr   _typingr   r	   TypeVarr
   Union	bytearrayrQ   rG   r   r   r+   r   r   <module>r      s   " " " " " "  



  ) ) ) ) ) ) / / / / / /	 H))))))GGGGGGGG 
	7	7	7|Iz12v~n--]. ]. ]. ]. ]. ]. ]. ]. ]. ].r   