
    i                         d dl Z d dlmZmZ d dl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	dlmZ d	dlmZ dZ G d d      Zy)    N)OptionalAny   )ProxyConnectionErrorProxyTimeoutError
ProxyError)	ProxyTypeparse_proxy_url)
ReplyError)create_connector   )SyncSocketStream)SyncResolver)connect_tcp<   c                       e Zd Z	 	 	 ddedededee   dee   dee   fdZ	 dd	ed
edee	   de
dej                  f
dZed        Zed        Zed        Zededd fd       Zy)	SyncProxyN
proxy_typehostportusernamepasswordrdnsc                 v    || _         || _        || _        || _        || _        || _        t               | _        y N)_proxy_type_proxy_host_proxy_port	_password	_username_rdnsr   	_resolver)selfr   r   r   r   r   r   s          K/root/searxng-venv/lib/python3.12/site-packages/python_socks/sync/_proxy.py__init__zSyncProxy.__init__   s:     &!!
%    	dest_host	dest_porttimeoutkwargsreturnc                 |   |t         }|j                  d      }|t        j                  dt        d       |5|j                  d      }	 t        | j                  | j                  ||      }t        |      }		 t        | j                  | j                   | j"                  | j$                  | j&                        }
|
j)                  |	||	       |S # t        $ rM}dj                  | j                  | j                  |j                        }t        |j                  |      |d }~ww xY w# t*        j,                  $ r0}|	j/                          t1        d
j                  |            |d }~wt2        $ r,}|	j/                          t5        ||j6                        d }~wt8        $ r |	j/                           w xY w)N_socketzFThe '_socket' argument is deprecated and will be removed in the futurer   )
stacklevel
local_addr)r   r   r*   r0   z%Could not connect to proxy {}:{} [{}])r   r   r   r   resolver)streamr   r   zProxy connection timed out: {})
error_code)DEFAULT_TIMEOUTgetwarningswarnDeprecationWarningr   r   r   OSErrorformatstrerrorr   errnor   r   r   r!   r    r"   r#   connectsocketr*   closer   r   r   r3   	Exception)r$   r(   r)   r*   r+   r.   r0   emsgr2   	connectors              r%   r=   zSyncProxy.connect'   s    ?%G**Y'MMX" ?L1J@%))))#)	 "'*	(++ZZI    N1  @=DD$$$$JJ
 +177C8a?@2 ~~ 	]LLN#$D$K$KG$TU[\\ 	9LLNQ1<<88 	LLN	s>   #C ;AD, 	D)AD$$D),F;?+E**F;6'FF;c                     | j                   S r   )r   r$   s    r%   
proxy_hostzSyncProxy.proxy_hoste       r'   c                     | j                   S r   )r   rE   s    r%   
proxy_portzSyncProxy.proxy_porti   rG   r'   c                      | |i |S r    )clsargsr+   s      r%   createzSyncProxy.createm   s    D#F##r'   urlc                 (    t        |      } | |i |S r   r
   )rL   rO   r+   url_argss       r%   from_urlzSyncProxy.from_urlq   s    "3'H'''r'   )NNNr   )__name__
__module____qualname__r	   strintr   boolr&   floatr   r>   r=   propertyrF   rI   classmethodrN   rR   rK   r'   r%   r   r      s     #'"&#(( ( 	(
 3-( 3-( tn(, $(	<< < %	<
 < 
<|         $ $ (3 ([ ( (r'   r   )r>   typingr   r   r6   _errorsr   r   r   _typesr	   _helpersr   _protocols.errorsr   _connectors.factory_syncr   _streamr   r#   r   _connectr   r4   r   rK   r'   r%   <module>rd      s<        I I  & * 7 % # ! `( `(r'   