
    i                         d dl Z d dlZd dlZd dlmZ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 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 ej2                  dk\  rd dl Znd dlZdZ G d d      Zy)    N)AnyOptional   )	ProxyTypeparse_proxy_url)ProxyConnectionErrorProxyTimeoutError
ProxyError   )AsyncioSocketStream)Resolver)
ReplyError)create_connector)connect_tcp)r      <   c                      e Zd Z	 	 	 	 ddedededee   dee   dee   deej                     fd	Z
	 dd
ededee   dedej                  f
dZ	 	 ddej                  fdZed        Zed        Zed        Zededd fd       Zy)AsyncioProxyN
proxy_typehostportusernamepasswordrdnsloopc                     |t        j                         }|| _        || _        || _        || _        || _        || _        || _        t        |      | _
        y )N)r   )asyncioget_event_loop_loop_proxy_type_proxy_host_proxy_port	_password	_username_rdnsr   	_resolver)selfr   r   r   r   r   r   r   s           U/root/searxng-venv/lib/python3.12/site-packages/python_socks/async_/asyncio/_proxy.py__init__zAsyncioProxy.__init__   sW     <))+D
%!!
!t,    	dest_host	dest_porttimeoutkwargsreturnc                   K   |t         }|j                  d      }|t        j                  dt        d       |j                  d      }	 t        j                  |      4 d {    | j                  ||||       d {   cd d d       d {    S 7 27 7 	# 1 d {  7  sw Y   y xY w# t        j                  $ r}t        d|       |d }~ww xY ww)N_socketzFThe '_socket' argument is deprecated and will be removed in the future   )
stacklevel
local_addr)r,   r-   r2   r5   zProxy connection timed out: )DEFAULT_TIMEOUTgetwarningswarnDeprecationWarningasync_timeoutr.   _connectr   TimeoutErrorr
   )r(   r,   r-   r.   r/   r2   r5   es           r)   connectzAsyncioProxy.connect3   s      ?%G**Y'MMX" ZZ-
		U$,,W5  !]]''#)	 +        ## 	U#&B7)$LMSTT	Us   A	CB3 %B&B3 )BBBB3 BB3 CB3 BB3 B0$B'%B0,B3 /C0B3 3CCCCc                 
  K   |6	 t        | j                  | j                  | j                  |       d {   }t        || j                        }	 t        | j                  | j                  | j                  | j                  | j                        }|j!                  |||       d {    |S 7 |# t        $ rM}dj                  | j                  | j                  |j                        }t        |j                  |      |d }~ww xY w7 a# t"        $ r5}|j%                          d {  7   t'        ||j(                        d }~wt*        j,                  t.        f$ r |j%                          d {  7    w xY ww)N)r   r   r   r5   z%Could not connect to proxy {}:{} [{}])sockr   )r   r   r   r   resolver)streamr   r   )
error_code)r   r"   r#   r    OSErrorformatstrerrorr	   errnor   r   r!   r%   r$   r&   r'   r?   r   closer   rD   r   CancelledError	Exception)	r(   r,   r-   r2   r5   r>   msgrC   	connectors	            r)   r<   zAsyncioProxy._connectQ   se     ?@ +)))))	!  %'

C	(++ZZI ## $    N=  @=DD$$$$JJ
 +177C8a?@$  	9,,.  Q1<<88&&	2 	,,.  	s   F0B5 B3B5 FAD ,D-D 2F3B5 5	D>ADDFD 	F E	,D/-E		/F 8E;9F  Fc                     | j                   S N)r"   r(   s    r)   
proxy_hostzAsyncioProxy.proxy_host       r+   c                     | j                   S rO   )r#   rP   s    r)   
proxy_portzAsyncioProxy.proxy_port   rR   r+   c                      | |i |S rO    )clsargsr/   s      r)   createzAsyncioProxy.create   s    D#F##r+   urlc                 (    t        |      } | |i |S rO   r   )rW   rZ   r/   url_argss       r)   from_urlzAsyncioProxy.from_url   s    "3'H'''r+   )NNNNrO   )NN)__name__
__module____qualname__r   strintr   boolr   AbstractEventLoopr*   floatr   socketr?   r<   propertyrQ   rT   classmethodrY   r]   rV   r+   r)   r   r      s3    #'"&#48-- - 	-
 3-- 3-- tn- w001-8 $(	UU U %	U
 U 
UD - 
-^         $ $ (3 (^ ( (r+   r   )r   rf   systypingr   r   r8   _typesr   _helpersr   _errorsr	   r
   r   _streamr   r'   r   _protocols.errorsr   _connectors.factory_asyncr   r<   r   version_infor;   r6   r   rV   r+   r)   <module>rr      sT      
     ' J J (  + 9 !w#u( u(r+   