a
    7ñ»j¹  ã                   @   s<   d dl Z d dlZd dlmZ d dlmZ G dd„ deƒZdS )é    N)Úsuppress)ÚChromiumOptionsc                   @   sZ   e Zd ZdZdZedd„ ƒZejdd„ ƒZedd„ ƒZ	edd„ ƒZ
d	d
„ Zedd„ ƒZdS )ÚChromeOptionsNc                 C   s   | j S ©N)Ú_user_data_dir)Úself© r   úEE:\soccer\ml_env\Lib\site-packages\seleniumbase/undetected/options.pyÚuser_data_dir   s    zChromeOptions.user_data_dirc                 C   s   t j |¡}t j |¡| _dS )z?Sets the browser profile folder to use. Creates one if missing.N)ÚosÚpathÚabspathÚnormpathr   )r   r   Úabs_pathr   r   r	   r
      s    c                 C   s,   d| v r$|   dd¡\} }t ||¡}| |iS )z5Turn a (dotted key, value) into a proper nested dict.Ú.é   )Úsplitr   Ú
_undot_key)ÚkeyÚvalueÚrestr   r   r	   r      s    zChromeOptions._undot_keyc                 C   sT   |D ]J}|| v rBt | | tƒrBt || tƒrBt | | || ¡ q|| | |< q| S )z;Merges b into a, overwriting duplicate leaf values using b.)Ú
isinstanceÚdictr   Ú_merge_nested)ÚaÚbr   r   r   r	   r      s    zChromeOptions._merge_nestedc              	   C   s–  | j  d¡}|�rV|p| j}tj |d¡}tj|dd� i }| ¡ D ]\}}|  ||  	||¡¡}qDtj |d¡}t
tƒ�^ tj |¡rÈt|dddd	��"}|  t |¡|¡}W d   ƒ n1 s¾0    Y  W d   ƒ n1 sÜ0    Y  t
tƒ�N t|dd
dd	��}t ||¡ W d   ƒ n1 �s$0    Y  W d   ƒ n1 �sD0    Y  | jd= | j  d¡}	|	d u�rt| jd= | j  d¡}
|
d u�r’| jd= d S )NÚprefsZDefaultT)Úexist_okZPreferenceszutf-8ÚrÚignore)ÚencodingÚmodeÚerrorsÚwZexcludeSwitchesZuseAutomationExtension)Zexperimental_optionsÚgetr   r   r   ÚjoinÚmakedirsÚitemsr   r   r   Ú	ExceptionÚexistsÚopenÚjsonÚloadÚdumpZ_experimental_options)r   r
   r   Zdefault_pathZundot_prefsr   r   Z
prefs_fileÚfZexclude_switchesZuse_auto_extr   r   r	   Úhandle_prefs(   sB    
ÿ
ÿ
ÿ@
ÿL

zChromeOptions.handle_prefsc                 C   s   | ƒ }|j  |j ¡ |S r   )Ú__dict__Úupdate)ÚclsÚoptionsÚor   r   r	   Úfrom_optionsJ   s    zChromeOptions.from_options)Ú__name__Ú
__module__Ú__qualname__Ú_sessionr   Úpropertyr
   ÚsetterÚstaticmethodr   r   r/   Úclassmethodr5   r   r   r   r	   r      s   




"r   )r+   r   Ú
contextlibr   Z#selenium.webdriver.chromium.optionsr   r   r   r   r   r	   Ú<module>   s   