a
    \DfV                     @  s   U d Z ddlmZ ddlZeeZddlZddlm	Z	 ddl
mZmZmZ ddlmZ ed Zed	 Zdd
ddZded< dZG dd deZG dd dZddddddZd ddddddddZdS )!zD Utility functions for helping with operations involving browsers.

    )annotationsN)abspath)LiteralProtocolcast   )settings)sameZwindowtab)r      r   r   zdict[BrowserTarget, TargetCode]	NEW_PARAM)DummyWebBrowserget_browser_controllerviewc                   @  s&   e Zd ZdZd
dddddddZd	S )BrowserLikez* Interface for browser-like objects.

    .str
TargetCodeboolurlnew	autoraisereturnc                 C  s   d S )N selfr   r   r   r   r   _/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/bokeh/util/browser.pyopen6   s    zBrowserLike.openN)..__name__
__module____qualname____doc__r   r   r   r   r   r   2   s   r   c                   @  s&   e Zd ZdZdddddddd	Zd
S )r   z( A "no-op" web-browser controller.

    r   Tr   r   r   r   c                 C  s   dS )z0 Receive standard arguments and take no action. Tr   r   r   r   r   r   =   s    zDummyWebBrowser.openN)r   Tr   r   r   r   r   r   9   s   r   z
str | None)browserr   c                 C  s<   t | } | du rttt}n| dkr.t }n
t| }|S )a   Return a browser controller.

    Args:
        browser (str or None) : browser name, or ``None`` (default: ``None``)
            If passed the string ``'none'``, a dummy web browser controller
            is returned.

            Otherwise, use the value to select an appropriate controller using
            the :doc:`webbrowser <python:library/webbrowser>` standard library
            module. If the value is ``None``, a system default is used.

    Returns:
        controller : a web browser controller

    Nnone)r   r#   r   r   
webbrowserr   get)r#   
controllerr   r   r   r   A   s    

r   r	   Tr   BrowserTargetr   None)locationr#   r   r   r   c                 C  s   zt | }W n" ty.   td|dY n0 | dr@| }ndt|  }zt|}|j|||d W n tyz   Y n0 dS )a   Open a browser to view the specified location.

    Args:
        location (str) : Location to open
            If location does not begin with "http:" it is assumed
            to be a file path on the local filesystem.
        browser (str or None) : what browser to use (default: None)
            If ``None``, use the system default browser.
        new (str) : How to open the location. Valid values are:

            ``'same'`` - open in the current tab

            ``'tab'`` - open a new tab in the current window

            ``'window'`` - open in a new window
        autoraise (bool) : Whether to automatically raise the location
            in a new browser window (default: True)

    Returns:
        None

    z$invalid 'new' value passed to view: z., valid values are: 'same', 'window', or 'tab'httpzfile://)r   r   N)r   KeyErrorRuntimeError
startswithr   r   r   	Exception)r*   r#   r   r   Znew_idr   r'   r   r   r   r   \   s    
r   )N)Nr	   T)r"   
__future__r   logging	getLoggerr   logr%   os.pathr   typingr   r   r   r   r(   r   r   __annotations____all__r   r   r   r   r   r   r   r   <module>   s   

