
    ]jy                    d    d Z ddlmZ  G d d      Z G d d      Z G d d      Z G d	 d
      Zy)zThe Proxy implementation.    )annotationsc                       e Zd ZdZed        Zy)ProxyTypeFactoryzFactory for proxy types.c                    | |dS )Nff_valuestring r   s     S/home/ubuntu/.local/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)selfr5   r6   s      r   __init__z_ProxyTypeDescriptor.__init__;   s    	r   c                .    t        || j                        S r4   )r(   r5   )r7   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)r5   r#   bool
ValueErrorr(   r6   setattr)r7   r:   r+   s      r   __set__z_ProxyTypeDescriptor.__set__B   sY    99$Zt-DKLL878E[$++.TYY&r   N)r   r   r   r8   r;   rC   r
   r   r   r2   r2   :   s    ''r   r2   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dZed        Zej@                  dd       Zd Z!d Z"ddZ#y)ProxyzGProxy configuration containing proxy type and necessary proxy settings.F Nr=   	httpProxynoProxyproxyAutoconfigUrlsslProxy
socksProxysocksUsernamesocksPasswordsocksVersionc                   |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?   rG   rH   rI   rJ   r=   rK   rL   rM   rN   )r#   r$   	TypeErrortypegetr   r.   
proxy_type
http_proxyno_proxyproxy_autoconfig_urlrJ   auto_detectsocks_proxysocks_usernamesocks_passwordsocks_version)r7   raws     r   r8   zProxy.__init__t   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?   )r7   s    r   rS   zProxy.proxy_type   s     ~~r   c                4    | j                  |       || _        y)zKSets proxy type.

        Args:
            value: The proxy type.
        N)r>   r?   )r7   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!   rA   )r7   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=   rG   rI   rJ   rH   rK   rL   rM   rN   )r?   lowerr(   )r7   
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?   manualrG   rJ   rK   rN   ,rH   c              3  <   K   | ]  }t        |t                y wr4   )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pacrI   )r?   rc   rG   rJ   rK   rN   rH   r#   r%   splitstriplistallrP   rI   )r7   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r4   )r\   zdict | None)returnNone)rw   r$   )$r   r   r   r   r   r!   r?   r=   rG   rH   rI   rJ   rK   rL   rM   rN   r2   r   rW   r   rT   rU   r   rV   	ssl_proxyrX   rY   rZ   r[   r8   propertyrS   setterr>   rg   rv   r
   r   r   rE   rE   J   s?   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5>    &!r   rE   N)r   
__future__r   r   r   r2   rE   r
   r   r   <module>r}      s7   $   "8 8? ?6' ' R Rr   