a
    @Df{                     @  s6  d Z ddlmZ ddlZeeZddlmZ edd ddl	Z	ddl
Z
ddlmZ dd	lmZ dd
lmZmZ erddlmZ ddlmZ ddlmZ ed ZdZd*dddddZd+ddddddZddddddZddddd Zd,dd!dd"d#Zd-dd!dd$d%ZG d&d' d'Ze Z e	!d(d)  dS ).z

    )annotationsN   )import_requiredzselenium.webdriverzmTo use bokeh.io image export functions you need selenium ('conda install selenium' or 'pip install selenium'))devnull)which)TYPE_CHECKINGLiteral	WebDriver)Version)settings)firefoxchromium)webdriver_control   floatr
   scale_factorreturnc           	      C  s   t d}|d u rtdt d}|d u r0tddd l}ddlm} ddlm} ddlm} t	|j
t	d	krv| }n
|td
}| }|d |d|   |||dS )Nr   z/firefox is not installed or not present on PATHgeckodriverz3geckodriver is not installed or not present on PATHr   OptionsServicer	   z4.11)Zlog_path
--headlesszlayout.css.devPixelsPerPxserviceoptions)r   RuntimeErrorseleniumZ"selenium.webdriver.firefox.optionsr   Z"selenium.webdriver.firefox.servicer   Z$selenium.webdriver.firefox.webdriverr
   r   __version__r   add_argumentZset_preference)	r   r   r   r   r   r   ZFirefoxr   r    r"   _/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/bokeh/io/webdriver.pycreate_firefox_webdriver>   s"    

r$   zlist[str] | None)extra_optionsr   r   c           
      C  s   ddl m} ddlm} ddlm} t }|d u rZdD ]}t|}|d ur8 qZq8t	d||}| }|
d |
d |
d	|  |
d
 | r| D ]}	|
|	 qtddkr|
d |||dS )Nr   r   r   r	   )Zchromedriverzchromium.chromedriverzchromedriver-binaryzchromedriver or its variant is not installed or not present on PATH; use BOKEH_CHROMEDRIVER_PATH to specify a customized chromedriver's locationr   z--hide-scrollbarsz--force-device-scale-factor=z--force-color-profile=srgbZBOKEH_IN_DOCKER1z--no-sandboxr   )Z!selenium.webdriver.chrome.optionsr   Z!selenium.webdriver.chrome.servicer   Z#selenium.webdriver.chrome.webdriverr
   r   Zchromedriver_pathr   r   r!   osgetenv)
r%   r   r   r   ZChromeZexecutable_path
executabler   r   opr"   r"   r#   create_chromium_webdriverY   s,    



r+   bool)r   
web_driverr   c                 C  s   t |}|| kS N)!get_web_driver_device_pixel_ratio)r   r-   device_pixel_ratior"   r"   r#   4scale_factor_less_than_web_driver_device_pixel_ratioy   s    r1   )r-   r   c                 C  s   d}|  |}|S )Nz+        return window.devicePixelRatio
    )Zexecute_script)r-   Z'calculate_web_driver_device_pixel_ratior0   r"   r"   r#   r/   ~   s    
r/   WebDriver | Nonec                 C  s&   zt | dW S  ty    Y d S 0 d S Nr   )r$   	Exceptionr4   r"   r"   r#   _try_create_firefox_webdriver   s    r6   c                 C  s&   zt | dW S  ty    Y d S 0 d S r3   )r+   r5   r4   r"   r"   r#   _try_create_chromium_webdriver   s    r7   c                   @  s   e Zd ZU ded< ded< ded< ded< d	d
dddddddZdddddZddddZd#dddddZd$ddddddZd%dddddd Z	ddd!d"Z
d	S )&_WebdriverStater,   reusezDriverKind | Nonekindr2   currentzset[WebDriver]_driversNT)r:   r9   None)r:   r9   r   c                C  s   || _ || _d | _t | _d S r.   )r:   r9   r;   setr<   )selfr:   r9   r"   r"   r#   __init__   s    z_WebdriverState.__init__r
   )driverr   c                 C  s   | j | |  d S r.   )r<   removequitr?   rA   r"   r"   r#   	terminate   s    z_WebdriverState.terminate)r   c                 C  s    | j d ur| | j  d | _ d S r.   )r;   rE   )r?   r"   r"   r#   reset   s    
z_WebdriverState.resetr   r   r   c                 C  s8   | j r| jd u st|| js2|   | j|d| _| jS r3   )r9   r;   r1   rF   create)r?   r   r"   r"   r#   get   s    z_WebdriverState.get)r:   r   r   c                 C  s   | j ||d}| j| |S r3   )_creater<   add)r?   r:   r   rA   r"   r"   r#   rG      s    z_WebdriverState.createc                 C  s   |p| j }|d u rTt|d}|d ur.d| _ |S t|d}|d urJd| _ |S tdn4|dkrft|dS |dkrxt|dS td| dd S )Nr4   r   r   zNeither firefox and geckodriver nor a variant of chromium browser and chromedriver are available on system PATH. You can install the former with 'conda install -c conda-forge firefox geckodriver'.'z$' is not a recognized webdriver kind)r:   r7   r6   r   r+   r$   
ValueError)r?   r:   r   Zdriver_kindrA   r"   r"   r#   rI      s     





z_WebdriverState._createc                 C  s&   |    t| jD ]}| | qd S r.   )rF   listr<   rE   rD   r"   r"   r#   cleanup   s    z_WebdriverState.cleanup)r   )Nr   )r   )__name__
__module____qualname____annotations__r@   rE   rF   rH   rG   rI   rN   r"   r"   r"   r#   r8      s   
r8   c                   C  s   t  S r.   )r   rN   r"   r"   r"   r#   <lambda>       rS   )r   )Nr   )r   )r   )"__doc__
__future__r   logging	getLoggerrO   logZutil.dependenciesr   atexitr'   os.pathr   shutilr   typingr   r   Z#selenium.webdriver.remote.webdriverr
   Zpackaging.versionr   r   Z
DriverKind__all__r$   r+   r1   r/   r6   r7   r8   r   registerr"   r"   r"   r#   <module>   s6   
 D