
    hje                    ^   d Z ddlmZ ddlZ ej        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rddlmZ ddlmZ ddlmZ ed         ZdZd#d$dZd%d&dZd'dZd(dZd#d)dZd#d)dZ G d  d!          Z e            Z  e	j!        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   scale_factorfloatreturnr   c                   t          d          }|t          d          t          d          }|t          d          dd l}ddlm} ddlm} ddlm} t          |j
                  t          d	          k    r |            }n |t          
          } |            }|                    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)log_path
--headlesszlayout.css.devPixelsPerPxserviceoptions)r   RuntimeErrorselenium"selenium.webdriver.firefox.optionsr   "selenium.webdriver.firefox.servicer   $selenium.webdriver.firefox.webdriverr   r   __version__r   add_argumentset_preference)	r   r   r   r!   r   r   Firefoxr   r   s	            2lib/python3.11/site-packages/bokeh/io/webdriver.pycreate_firefox_webdriverr*   >   s   IGLMMM&&KPQQQOOO::::::::::::IIIIIIx#$$77 '))'7+++giiG&&&6<8IJJJ77G4444    extra_optionslist[str] | Nonec                "   ddl m} ddlm} ddlm} t          j                    }|'dD ]}t          |          }| nt          d           ||          } |            }|
                    d           |
                    d           |
                    d	|            |
                    d
           | r| D ]}	|
                    |	           t          j        d          dk    r|
                    d            |||          S )Nr   r   r   r
   )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=srgbBOKEH_IN_DOCKER1z--no-sandboxr   )!selenium.webdriver.chrome.optionsr   !selenium.webdriver.chrome.servicer   #selenium.webdriver.chrome.webdriverr   r   chromedriver_pathr   r    r&   osgetenv)
r,   r   r   r   Chromeexecutable_path
executabler   r   ops
             r)   create_chromium_webdriverr<   Y   s{   999999999999GGGGGG022OZ 	n 	nJ#J//O* +   m n n n go&&GgiiG&&&,---FFFGGG5666 % 	% 	%B  $$$$	y"##s**^,,,6'73333r+   
web_driverboolc                ,    t          |          }|| k    S N)!get_web_driver_device_pixel_ratio)r   r=   device_pixel_ratios      r)   4scale_factor_less_than_web_driver_device_pixel_ratiorC   y   s    ::FF--r+   c                4    d}|                      |          }|S )Nz+        return window.devicePixelRatio
    )execute_script)r=   'calculate_web_driver_device_pixel_ratiorB   s      r)   rA   rA   ~   s'    /+ !+ 9 9:a b br+   WebDriver | Nonec                F    	 t          |           S # t          $ r Y d S w xY wNr   )r*   	ExceptionrJ   s    r)   _try_create_firefox_webdriverrL      s:    '\BBBB   tt    
  c                F    	 t          |           S # t          $ r Y d S w xY wrI   )r<   rK   rJ   s    r)   _try_create_chromium_webdriverrO      s:    (lCCCC   ttrM   c                  ~    e Zd ZU ded<   ded<   ded<   ded<   d	d
dddZddZddZdddZdd dZdd dZ	ddZ
d	S )!_WebdriverStater>   reuseDriverKind | NonekindrG   currentzset[WebDriver]_driversNT)rT   rR   r   Nonec               V    || _         || _        d | _        t                      | _        d S r@   )rT   rR   rU   setrV   )selfrT   rR   s      r)   __init__z_WebdriverState.__init__   s&    	
r+   driverr   c                b    | j                             |           |                                 d S r@   )rV   removequitrZ   r\   s     r)   	terminatez_WebdriverState.terminate   s)    V$$$r+   c                Z    | j         #|                     | j                    d | _         d S d S r@   )rU   ra   )rZ   s    r)   resetz_WebdriverState.reset   s1    <#NN4<(((DLLL $#r+   r   r   r   c                    | j         r| j        t          || j                  s/|                                  |                     |          | _        | j        S rI   )rR   rU   rC   rc   create)rZ   r   s     r)   getz_WebdriverState.get   sU    z 	BT\19mdl:, :,1JJLLL;;L;AADL|r+   c                h    |                      ||          }| j                            |           |S rI   )_createrV   add)rZ   rT   r   r\   s       r)   re   z_WebdriverState.create   s2    d>>&!!!r+   c                    |p| j         }|Et          |          }|	d| _         |S t          |          }|	d| _         |S t          d          |dk    rt	          |          S |dk    rt          |          S t          d| d          )NrJ   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)rT   rO   rL   r    r<   r*   
ValueError)rZ   rT   r   driver_kindr\   s        r)   rh   z_WebdriverState._create   s    'di3NNNF!&	2MMMF!%	  Z [ [ [ J&&,,GGGGI%%+FFFFRRRRSSSr+   c                    |                                   t          | j                  D ]}|                     |           d S r@   )rc   listrV   ra   r`   s     r)   cleanupz_WebdriverState.cleanup   sG    

4=)) 	# 	#FNN6""""	# 	#r+   )rT   rS   rR   r>   r   rW   )r\   r   r   rW   )r   rW   r   r   r   r   r   Nr   )rT   rS   r   r   r   r   )__name__
__module____qualname____annotations__r[   ra   rc   rf   re   rh   rp    r+   r)   rQ   rQ      s         KKK48                
        
T T T T T0# # # # # #r+   rQ   c                 4    t                                           S r@   )r   rp   rx   r+   r)   <lambda>rz      s    )1133 r+   rq   rr   rs   )r,   r-   r   r   r   r   )r   r   r=   r   r   r>   )r=   r   r   r   )r   r   r   rG   )"__doc__
__future__r   logging	getLoggerrt   logutil.dependenciesr   atexitr6   os.pathr   shutilr   typingr   r	   #selenium.webdriver.remote.webdriverr   packaging.versionr   r   
DriverKind__all__r*   r<   rC   rA   rL   rO   rQ   r   registerrx   r+   r)   <module>r      s    # " " " " " g!! 0 / / / / / $GH H H
  				             ) ) ) ) ) ) ) ) >====== & % % % % %        *+
5 5 5 5 564 4 4 4 4@. . . .
           ># ># ># ># ># ># ># >#H $O%%  33 4 4 4 4 4r+   