Format: application/x-python-code
⬇ Download File (6.9 KB)
   1  o
   2  
   3  7'h)�@s�ddlmZddlZddlZddlZddlZddlZddlmZm	Z	m
   4  Z
   5  mZmZm
   6  Z
   7  mZmZddlmZddlmZmZmZGdd	�d	e�ZGd
   8  d�de�ZGdd
   9  �d
  10  e�ZdS)�)�annotationsN�)�ConnectError�ConnectTimeout�ExceptionMapping�	ReadError�ReadTimeout�
  11  WriteError�WriteTimeout�map_exceptions)�is_socket_readable�)�
  12  SOCKET_OPTION�NetworkBackend�
  13  NetworkStreamc@sjeZdZdZdZ		d&d'dd
  14  �Zd(dd�Zd)d*dd�Zd)d+dd�Zd,dd�Z			d&d-d d!�Z
  15  d.d$d%�ZdS)/�TLSinTLSStreamz�
  16      Because the standard `SSLContext.wrap_socket` method does
  17      not work for `SSLSocket` objects, we need this class
  18      to implement TLS stream using an underlying `SSLObject`
  19      instance in order to support TLS on top of TLS.
  20      i@N�sock�
  21  socket.socket�ssl_context�ssl.SSLContext�server_hostname�
  22  str | None�timeout�float | NonecCsN||_t��|_t��|_|j|j|j|d�|_|j�|�|�|jj	�dS)N)�incoming�outgoingr)
  23  �_sock�ssl�	MemoryBIO�	_incoming�	_outgoing�wrap_bio�ssl_obj�
  24  settimeout�_perform_io�do_handshake)�selfrrrr�r'�MC:\Users\shubh\Videos\agent\nova\Lib\site-packages\httpcore/_backends/sync.py�__init__"s
  25  
  26  �zTLSinTLSStream.__init__�func� typing.Callable[..., typing.Any]�return�
  27  typing.Anyc
  28  Cs�d}	d}z|�}Wntjtjfy#}z	|j}WYd}~nd}~ww|j�|j���|tjkrG|j�	|j
  29  �}|rB|j�|�n|j�
  30  �|durM|Sq�N)r�SSLWantReadError�SSLWantWriteError�errnor�sendallr �read�SSL_ERROR_WANT_READ�recv�TLS_RECORD_SIZEr�write�	write_eof)r&r*�retr1�e�bufr'r'r(r$6s$
  31  ��
  32  
  33  �zTLSinTLSStream._perform_io�	max_bytes�int�bytesc
  34  Csdtjttti}t|��|j�|�t�	t
  35  |�t�
  36  |jj|���Wd�S1s+wYdSr.)�socketrr�OSErrorrrrr#�typing�castr>r$�	functools�partialr"r3�r&r<r�exc_mapr'r'r(r3Os
  37  �$�zTLSinTLSStream.read�buffer�NonecCs�tjttti}t|��,|j�|�|r/|�t	�
  38  |jj|��}||d�}|sWd�dSWd�dS1s:wYdSr.)
  39  r?rr
  40  r@r	rrr#r$rCrDr"r7)r&rGrrFZnsentr'r'r(r7Ws
  41  ��"�zTLSinTLSStream.writecC�|j��dSr.�r�close�r&r'r'r(rK_�zTLSinTLSStream.closercCst��r.)�NotImplementedError)r&rrrr'r'r(�	start_tlsbszTLSinTLSStream.start_tls�info�strcCsV|dkr|jS|dkr|j��S|dkr|j��S|dkr |jS|dkr)t|j�SdS�N�
  42  ssl_object�client_addrZserver_addrr?Zis_readable)r"r�getsockname�getpeernamer�r&rPr'r'r(�get_extra_infojs
  43  
  44  
  45  zTLSinTLSStream.get_extra_info�NN)rrrrrrrr)r*r+r,r-r.�r<r=rrr,r>�rGr>rrr,rH�r,rH�rrrrrrr,r�rPrQr,r-)�__name__�
  46  __module__�__qualname__�__doc__r6r)r$r3r7rKrOrXr'r'r'r(rs�
  47  
  48  �rc@sReZdZd dd�Zd!d"d
  49  d�Zd!d#dd�Zd$dd�Z		d%d&dd�Zd'dd�ZdS)(�
  50  SyncStreamrrr,rHcCs
  51  ||_dSr.)r)r&rr'r'r(r)ys
  52  zSyncStream.__init__Nr<r=rrr>cCsRtjttti}t|��|j�|�|j�|�Wd�S1s"wYdSr.)	r?rrr@rrrr#r5rEr'r'r(r3|s
  53  
  54  
  55  $�zSyncStream.readrGcCs�|sdStjttti}t|��'|r.|j�|�|j�|�}||d�}|sWd�dSWd�dS1s9wYdSr.)	r?rr
  56  r@r	rrr#�send)r&rGrrF�nr'r'r(r7�s
  57  ��"�zSyncStream.writecCrIr.rJrLr'r'r(rK�rMzSyncStream.closerrrrrcCs�tjttti}t|��Ez't|jtj	�r$t
  58  |j|||�WWd�S|j�|�|j|j|d�}Wnt
  59  yE}z|��|�d}~wwWd�t|�S1sSwYt|�S)N)r)r?rrr@rr�
  60  isinstancerr�	SSLSocketrr#�wrap_socket�	ExceptionrKrc)r&rrrrFr�excr'r'r(rO�s0�
  61  
  62  ��
  63  
  64  ����
  65  ��zSyncStream.start_tlsrPrQr-cCsf|dkrt|jtj�r|jjS|dkr|j��S|dkr!|j��S|dkr(|jS|dkr1t|j�SdSrR)rfrrrg�_sslobjrUrVrrWr'r'r(rX�s
  66  
  67  
  68  zSyncStream.get_extra_info)rrr,rHr.rZr[r\rYr]r^)	r_r`rar)r3r7rKrOrXr'r'r'r(rcxs
  69  
  70  �rcc@s.eZdZ			dddd�Z		dddd�ZdS)�SyncBackendN�hostrQ�portr=rr�
  71  local_addressr�socket_options�%typing.Iterable[SOCKET_OPTION] | Noner,rcCs�|durg}||f}|durdn|df}tjttti}t|��&tj|||d�}	|D]}
  72  |	j|
  73  �q*|	�tjtj	d�Wd�t
  74  |	�S1sHwYt
  75  |	�S)Nr)�source_addressr
  76  )r?rrr@rr�create_connection�
  77  setsockopt�IPPROTO_TCP�TCP_NODELAYrc)r&rmrnrrorp�addressrrrFr�optionr'r'r(�connect_tcp�s(
  78  �
  79  �
  80  �	�	zSyncBackend.connect_tcp�pathcCs�tjdkr	td��|durg}tjttti}t|��'t�tj	tj
  81  �}|D]}|j|�q%|�|�|�
  82  |�Wd�t|�S1sDwYt|�S)N�win32z:Attempted to connect to a UNIX socket on a Windows system.)�sys�platform�RuntimeErrorr?rrr@rr�AF_UNIX�SOCK_STREAMrtr#�connectrc)r&rzrrprFrrxr'r'r(�connect_unix_socket�s&
  83  ��
  84  
  85  
  86  ��zSyncBackend.connect_unix_socket)NNN)rmrQrnr=rrrorrprqr,rrY)rzrQrrrprqr,r)r_r`raryr�r'r'r'r(rl�s�!�rl)�
  87  __future__rrCr?rr|rA�_exceptionsrrrrrr	r
  88  r�_utilsr�baserrrrrcrlr'r'r'r(�<module>s(
  89  aC