
    >fh+                     `    d Z ddlZ G d d      Z G d d      Z G d d      Z G d	 d
      Zy)zThe Proxy implementation.    Nc                        e Zd ZdZed        Zy)ProxyTypeFactoryzFactory for proxy types.c                     | |dS )Nff_valuestring r   s     R/var/www/zara/venv/lib/python3.12/site-packages/selenium/webdriver/common/proxy.pymakezProxyTypeFactory.make   s    $77    N)__name__
__module____qualname____doc__staticmethodr   r	   r   r
   r   r      s    "8 8r   r   c                      e Zd ZdZej                  dd      Zej                  dd      Zej                  dd      Zej                  dd	      Z	ej                  d
d      Z
ej                  dd      Zej                  dd      Zed        Zy)	ProxyTypezSet of possible types of proxy.

    Each proxy type has 2 properties: 'ff_value' is value of Firefox
    profile preference, 'string' is id of proxy type.
    r   DIRECT   MANUAL   PAC   	RESERVED1   
AUTODETECT   SYSTEM   UNSPECIFIEDc                     t        |t              r	d|v r|d   }t        |      j                         }t	        |       D ]0  }t        | |      }t        |t              s d|v s%|d   |k(  s.|c S  t        d|       )Nr   zNo proxy type is found for )
isinstancedictstrupperdirgetattr	Exception)clsvalueattr
attr_values       r
   loadzProxyType.load.   s    eT"x5'8(OEE
  "H 	"D d+J*d+J0F:V^K_chKh!!	" 5eW=>>r   N)r   r   r   r   r   r   r   r   r   
RESERVED_1r   r   r    classmethodr-   r	   r   r
   r   r      s     ""1h/F""1h/F


5
)C!&&q+6J!&&q,7J""1h/F"''=9K? ?r   r   c                       e Zd Zd Zd Zd Zy)_ProxyTypeDescriptorc                      || _         || _        y N)namep_type)selfr4   r5   s      r
   __init__z_ProxyTypeDescriptor.__init__;   s    	r   c                 .    t        || j                        S r3   )r'   r4   )r6   objr)   s      r
   __get__z_ProxyTypeDescriptor.__get__?   s    sDII&&r   c                 B   | j                   dk(  rt        |t              st        d      | j                   dk(  rt	        j
                  dt        d        t        |d      | j                         t        |d| j                         t        || j                   |       y )	N
autodetectz,Autodetect proxy value needs to be a booleanftpProxy8ftpProxy is deprecated and will be removed in the futurer   
stacklevel _verify_proxy_type_compatibility	proxyType)
r4   r"   bool
ValueErrorwarningswarnDeprecationWarningr'   r5   setattr)r6   r9   r*   s      r
   __set__z_ProxyTypeDescriptor.__set__B   s~    99$Zt-DKLL99
" MMJ"
 	978E[$++.TYY&r   N)r   r   r   r7   r:   rI   r	   r   r
   r1   r1   :   s    ''r   r1   c                   0   e Zd ZdZej
                  ZdZdZdZ	dZ
dZdZdZdZdZdZ edej$                        Z	  edej(                        Z	  edej(                        Z	  edej(                        Z	  ed	ej0                        Z	  ed
ej(                        Z	  edej(                        Z	  edej(                        Z	  edej(                        Z	  edej(                        Z	 ddZe d        Z!e!jD                  dd       Z!d Z#d Z$d Z%y)ProxyzMProxy contains information about proxy type and necessary proxy
    settings.F Nr<   r=   	httpProxynoProxyproxyAutoconfigUrlsslProxy
socksProxysocksUsernamesocksPasswordsocksVersionc                    |rd|v r"|d   rt         j                  |d         | _        d|v r+|d   r&t        j                  dt
        d       |d   | _        d|v r|d   r
|d   | _        d|v r|d   r
|d   | _        d|v r|d   r
|d   | _	        d	|v r|d	   r
|d	   | _
        d
|v r|d
   r
|d
   | _        d|v r|d   r
|d   | _        d|v r|d   r
|d   | _        d|v r|d   r
|d   | _        d|v r|d   r|d   | _        yyyy)zuCreates a new Proxy.

        :Args:
         - raw: raw proxy data. If None, default class values are used.
        rB   r=   r>   r   r?   rM   rN   rO   rP   r<   rQ   rR   rS   rT   N)r   r-   
proxy_typerE   rF   rG   	ftp_proxy
http_proxyno_proxyproxy_autoconfig_urlrP   auto_detectsocks_proxysocks_usernamesocks_passwordsocks_version)r6   raws     r
   r7   zProxy.__init__   sa    c!c+&6"+..[1A"B S S_N& 
 "%Zc!c+&6"%k"2CC	N #I#s*s3G/H,/0D,E)S S_ #Js"s<'8#&|#4 s"s<'8#&|#4 #%#o*>&)/&:##%#o*>&)/&:#$^)<%(%8" *=$9 r   c                     | j                   S )z"Returns proxy type as `ProxyType`.)rB   )r6   s    r
   rV   zProxy.proxy_type  s     ~~r   c                 4    | j                  |       || _        y)zKSets proxy type.

        :Args:
         - value: The proxy type.
        N)rA   rB   )r6   r*   s     r
   rV   zProxy.proxy_type$  s     	--e4r   c                 x    | j                   t        j                  |fvrt        d| d| j                    d      y )NzSpecified proxy type (z') not compatible with current setting ())rB   r   r    rD   )r6   compatible_proxys     r
   rA   z&Proxy._verify_proxy_type_compatibility.  sK    >>)"7"79I!JJ()9(::abfbpbpaqqrs  Kr   c                     d| j                   d   j                         i}g d}|D ]  }t        | |      }|s|||<    |S )NrB   r   )
r<   r=   rM   rO   rP   rN   rQ   rR   rS   rT   )rB   lowerr'   )r6   
proxy_capsproxiesproxyr,   s        r
   to_capabilitieszProxy.to_capabilities4  sW    !4>>(#;#A#A#CD

  	/E u-J$.
5!	/ r   c                    | j                   d   j                         }d|i}|dk(  r>| j                  r| j                  |d<   | j                  r| j                  |d<   | j                  r| j                  |d<   | j
                  | j
                  |d<   | j                  rt        | j                  t              rM| j                  j                  d      D cg c]#  }|j                         s|j                         % c}|d	<   |S t        | j                  t              r8t        d
 | j                  D              st        d      | j                  |d	<   |S t        d      |S |dk(  r| j                  r| j                  |d<   |S c c}w )zConvert proxy settings to BiDi format.

        Returns:
        -------
            dict: Proxy configuration in BiDi format.
        r   rB   manualrM   rP   rQ   rT   ,rN   c              3   <   K   | ]  }t        |t                y wr3   )r"   r$   ).0hs     r
   	<genexpr>z%Proxy.to_bidi_dict.<locals>.<genexpr>a  s     Haz!S1Hs   z'no_proxy list must contain only stringsz>no_proxy must be a comma-separated string or a list of stringspacrO   )rB   rg   rM   rP   rQ   rT   rN   r"   r$   splitstriplistall	TypeErrorrO   )r6   rV   resulthosts       r
   to_bidi_dictzProxy.to_bidi_dictI  sb    ^^H-335
z*!~~&*nn{#}}%)]]z"'+|$  ,)-):):~&||dllC0BF,,BTBTUXBY(j$]a]g]g]i(jF9%   d3H4<<HH'(QRR(,F9%  $$dee 	 5 &&/3/F/F+, )ks   F-Fr3   )returnN)&r   r   r   r   r   r    rB   r<   r=   rM   rN   rO   rP   rQ   rR   rS   rT   r1   r   r[   r   rW   rX   rY   r   rZ   	ssl_proxyr\   r]   r^   r_   r7   propertyrV   setterrA   rk   r{   r	   r   r
   rK   rK   R   s    %%IJHIGHJMML '|Y5I5IJK %Z1A1ABI &k93C3CDJ $Iy/?/?@H 00DimmT %Z1A1ABI '|Y5E5EFK */9;K;KLN */9;K;KLN )9I9IJM#9J    *"r   rK   )r   rE   r   r   r1   rK   r	   r   r
   <module>r      s7   $   8 8? ?6' '0Y Yr   