
    nbi                        d Z ddlm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 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  G d de	j                  ZddZ  G d d          Z!dS ) a  
This is hazmat. It can blow up anytime.
Use it with precautions!

Reasoning behind this:

1) python-socks requires another dependency, namely asyncio-timeout, that is one too much for us.
2) it does not support our AsyncSocket wrapper (it has his own internally)
    )annotationsN)_abc)AsyncConnector)Socks4AsyncConnector)Socks5AsyncConnector)
ProxyErrorProxyTimeoutErrorparse_proxy_url)
ReplyError)	ProxyType   )AsyncSocket)timeoutc                  .    e Zd ZddZdej        fddZdS )Resolverloopasyncio.AbstractEventLoopc                    || _         d S N)_loop)selfr   s     v/var/www/html/mdtn/previsions/meteo_cartes/venv/lib/python3.11/site-packages/urllib3_future/contrib/_socks_override.py__init__zResolver.__init__#   s    


    r   hoststrportintfamilysocket.AddressFamilyreturn tuple[socket.AddressFamily, str]c           	        K   | j                             |||t          j                   d {V }|st	          d| d| d| d          t          |d           }|d         \  }}}}}||d         fS )	N)r   r   r    typezCan`t resolve address :z []c                    | d         S )Nr    )infos    r   <lambda>z"Resolver.resolve.<locals>.<lambda>3   s
    tAw r   )keyr   )r   getaddrinfosocketSOCK_STREAMOSErrorsorted)r   r   r   r    infos_addresss          r   resolvezResolver.resolve&   s       j,,#	 - 
 
 
 
 
 
 
 
  	MK4KK$KK&KKKLLLu"6"6777#(8 1awqz!!r   N)r   r   )r   r   r   r   r    r!   r"   r#   )__name__
__module____qualname__r   r.   	AF_UNSPECr5   r)   r   r   r   r   "   sK            &'vGW" " " " " " "r   r   
proxy_typer   username
str | Nonepasswordrdnsboolresolverabc.AsyncResolverr"   r   c                    | t           j        k    rt          |||          S | t           j        k    rt	          ||||          S t          d|            )N)user_idr>   r@   )r;   r=   r>   r@   zInvalid proxy type: )r   SOCKS4r   SOCKS5r   
ValueErrorr:   r;   r=   r>   r@   s        r   create_connectorrH   9   s~     Y%%%#
 
 
 	
 Y%%%#	
 
 
 	
 8J88
9
99r   c                      e Zd Z	 	 	 d!d"dZ	 	 d#d$dZd%dZed&d            Zed'd            Ze	d(d            Z
e	d)d             ZdS )*AsyncioProxyNFr:   r   r   r   r   r   r;   r<   r=   r>   r?   c                    t          j                    | _        || _        || _        || _        || _        || _        || _        t          | j                  | _
        d S )N)r   )asyncioget_event_loopr   _proxy_type_proxy_host_proxy_port	_password	_username_rdnsr   	_resolver)r   r:   r   r   r;   r=   r>   s          r   r   zAsyncioProxy.__init__S   sY     +--
%!!
!tz222r   	dest_host	dest_portr   float | None_socketAsyncSocket | Noner"   r   c                  K   |d}	 t          |          4 d {V  t          j                    5  t          j        dt                     |                     |||           d {V cd d d            cd d d           d {V  S # 1 swxY w Y   	 d d d           d {V  d S # 1 d {V swxY w Y   d S # t          j        $ r}t          d|           |d }~ww xY w)N<   ignore)rU   rV   rX   zProxy connection timed out: )	timeout_warningscatch_warningssimplefilterDeprecationWarning_connectrL   TimeoutErrorr	   )r   rU   rV   r   rX   es         r   connectzAsyncioProxy.connectg   s(      ?G	U((         ,..  )(4FGGG!%"+"+ ' "/ " "                                                               # 	U 	U 	U#$L7$L$LMMSTT	Usc   B: B'8B)B'5B: B	B'B	B'B: '
B11B: 4B15B: :C!	CC!c                  K   	 t          | j        | j        | j        | j        | j                  }|                    |||           d {V  |S # t          j        $ r |	                                  t          $ r/}|	                                 t          ||j                  d }~wt          $ r |	                                  w xY w)NrG   )streamr   r   )
error_code)rH   rN   rR   rQ   rS   rT   re   rL   CancelledErrorcloser   r   rh   	Exception)r   rU   rV   rX   	connectorrd   s         r   rb   zAsyncioProxy._connect   s     	(+Z  I ## $          N% 	 	 	MMOOO 	9 	9 	9MMOOOQ1<8888 	 	 	MMOOO	s   AA -C>*B((#Cc                    | j         S r   )rO   r   s    r   
proxy_hostzAsyncioProxy.proxy_host       r   c                    | j         S r   )rP   rn   s    r   
proxy_portzAsyncioProxy.proxy_port   rp   r   args
typing.Anykwargsc                     | |i |S r   r)   )clsrs   ru   s      r   createzAsyncioProxy.create   s    sD#F###r   urlc                0    t          |          } | |i |S r   r
   )rw   ry   ru   url_argss       r   from_urlzAsyncioProxy.from_url   s$    "3''sH''''r   )NNF)r:   r   r   r   r   r   r;   r<   r=   r<   r>   r?   )NN)
rU   r   rV   r   r   rW   rX   rY   r"   r   )rU   r   rV   r   rX   r   r"   r   )r"   r   )r"   r   )rs   rt   ru   rt   r"   rJ   )ry   r   ru   rt   r"   rJ   )r6   r7   r8   r   re   rb   propertyro   rr   classmethodrx   r|   r)   r   r   rJ   rJ   R   s          $#3 3 3 3 30 !%&*U U U U U6   8       X        X  $ $ $ [$ ( ( ( [( ( (r   rJ   )r:   r   r;   r<   r=   r<   r>   r?   r@   rA   r"   r   )"__doc__
__future__r   rL   r.   typingr^   python_socksr   abcpython_socks._connectors.abcr   %python_socks._connectors.socks4_asyncr   %python_socks._connectors.socks5_asyncr   python_socks._errorsr   r	   python_socks._helpersr   python_socks._protocols.errorsr   python_socks._typesr   ssar   ssa._timeoutr   r]   AsyncResolverr   rH   rJ   r)   r   r   <module>r      s    # " " " " "     $ $ $ $ $ $ 8 7 7 7 7 7 F F F F F F F F F F F F > > > > > > > > 1 1 1 1 1 1 5 5 5 5 5 5 ) ) ) ) ) )       - - - - - -" " " " "s  " " ".: : : :2[( [( [( [( [( [( [( [( [( [(r   