
    iU                     X    d Z  G d d      Z G d d      Z G d d      Z G d d      Zy	)
zThe Proxy implementation.c                        e Zd ZdZed        Zy)ProxyTypeFactoryzFactory for proxy types.c                     | |dS )Nff_valuestring r   s     [/var/www/html/BatchJob/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.
        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__9   s    	r   c                 .    t        || j                        S r3   )r'   r4   )r6   objr)   s      r	   __get__z_ProxyTypeDescriptor.__get__=   s    sDII&&r   c                     | j                   dk(  rt        |t              st        d       t	        |d      | j
                         t        |d| j
                         t        || j                   |       y )N
autodetectz,Autodetect proxy value needs to be a boolean _verify_proxy_type_compatibility	proxyType)r4   r"   bool
ValueErrorr'   r5   setattr)r6   r9   r*   s      r	   __set__z_ProxyTypeDescriptor.__set__@   sY    99$Zt-DKLL878E[$++.TYY&r   N)r   r   r   r7   r:   rB   r   r   r	   r1   r1   8   s    ''r   r1   c                      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 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	  ed
ej&                        Z	  edej&                        Z	  edej&                        Z	  edej&                        Z	 ddedz  fdZed        Z e jB                  dd       Z d Z"d Z#defdZ$y)ProxyzGProxy configuration containing proxy type and necessary proxy settings.F Nr<   	httpProxynoProxyproxyAutoconfigUrlsslProxy
socksProxysocksUsernamesocksPasswordsocksVersionrawc                    |yt        |t              st        dt        |             |j	                  d      rt
        j                  |d         | _        |j	                  d      r
|d   | _        |j	                  d      r
|d   | _	        |j	                  d      r
|d   | _
        |j	                  d      r
|d   | _        |j	                  d      r
|d   | _        |j	                  d	      r
|d	   | _        |j	                  d
      r
|d
   | _        |j	                  d      r
|d   | _        |j	                  d      r|d   | _        yy)zuCreates a new Proxy.

        Args:
            raw: Raw proxy data. If None, default class values are used.
        Nz`raw` must be a dict, got r>   rF   rG   rH   rI   r<   rJ   rK   rL   rM   )r"   r#   	TypeErrortypegetr   r-   
proxy_type
http_proxyno_proxyproxy_autoconfig_urlrI   auto_detectsocks_proxysocks_usernamesocks_passwordsocks_version)r6   rN   s     r	   r7   zProxy.__init__r   s1    ;#t$8cDEE77;'nnS-=>DO77;!+.DO779	NDM77'((+,@(AD%77:
ODM77< "<0D77< "<0D77?#"%o"6D77?#"%o"6D77>"!$^!4D #r   c                     | j                   S )z"Returns proxy type as `ProxyType`.)r>   )r6   s    r	   rS   zProxy.proxy_type   s     ~~r   returnc                 4    | j                  |       || _        y)zKSets proxy type.

        Args:
            value: The proxy type.
        N)r=   r>   )r6   r*   s     r	   rS   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 ())r>   r   r    r@   )r6   compatible_proxys     r	   r=   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 )Nr>   r   )	r<   rF   rH   rI   rG   rJ   rK   rL   rM   )r>   lowerr'   )r6   
proxy_capsproxiesproxyr,   s        r	   to_capabilitieszProxy.to_capabilities   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 )zqConvert proxy settings to BiDi format.

        Returns:
            Proxy configuration in BiDi format.
        r   r>   manualrF   rI   rJ   rM   ,rG   c              3   <   K   | ]  }t        |t                y wr3   )r"   r$   ).0hs     r	   	<genexpr>z%Proxy.to_bidi_dict.<locals>.<genexpr>   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pacrH   )r>   rc   rF   rI   rJ   rM   rG   r"   r$   splitstriplistallrP   rH   )r6   rS   resulthosts       r	   to_bidi_dictzProxy.to_bidi_dict   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   )r]   N)%r   r   r   r   r   r    r>   r<   rF   rG   rH   rI   rJ   rK   rL   rM   r1   r   rW   r   rT   rU   r   rV   	ssl_proxyrX   rY   rZ   r[   r#   r7   propertyrS   setterr=   rg   rv   r   r   r	   rD   rD   H   sQ   Q%%IJIGHJMML '|Y5I5IJK0%k93C3CDJ#Iy/?/?@H$/0DimmT&$Z1A1ABI&|Y5E5EFK)/9;K;KLN)/9;K;KLN(9I9IJM5D4K 5>    &!d !r   rD   N)r   r   r   r1   rD   r   r   r	   <module>rz      s4   $  8 8? ?6' ' R Rr   