B
    @\G                 @   s   d Z ddlmZmZmZmZ ddlZeeZ	ddl
mZ ddlmZmZmZmZ ddlmZ dZdd	 Zd
d Zdd Zdd Zdd ZdS )z

    )absolute_importdivisionprint_functionunicode_literalsN)getcwd)dirnamebasenamesplitextjoin)NamedTemporaryFile)default_filenamedetect_current_filenametemp_filenamec             C   sn   | dkrt dt }|dkr&t| S t|p2t }t|sDt|rLt| S tt|\}}t	||d |  S )a   Generate a default filename with a given extension, attempting to use
    the filename of the currently running process, if possible.

    If the filename of the current process is not available (or would not be
    writable), then a temporary file with the given extension is returned.

    Args:
        ext (str) : the desired extension for the filename

    Returns:
        str

    Raises:
        RuntimeError
            If the extensions requested is ".py"

    pyz0asked for a default filename with 'py' extensionN.)
RuntimeErrorr   r   r   r   
_no_access_shares_exec_prefixr	   r   r
   )extfilenamebasedirname_ r   ,lib/python3.7/site-packages/bokeh/io/util.pyr   2   s    r   c              C   sP   ddl } d}|  }z2x |jr6|jddkr6|j}qW |jd}W d~X |S )z Attempt to return the filename of the currently running Python process

    Returns None if the filename cannot be detected.
    r   Nr   __main____file__)inspectZcurrentframef_back	f_globalsget)r   r   framer   r   r   r   T   s    
r   c             C   s   t d|  djS )zG Generate a temporary, writable filename with the given extension

    r   )suffix)r   r   )r   r   r   r   r   g   s    r   c             C   s   ddl }|| |j|jB  S )zG Return True if the given base dir is not accessible or writeable

    r   N)osaccessW_OKX_OK)r   r#   r   r   r   r   q   s    r   c             C   s    ddl }|j}|dk	o| |S )zA Whether a give base directory is on the system exex prefix

    r   N)sysexec_prefix
startswith)r   r'   prefixr   r   r   r   x   s    r   )__doc__Z
__future__r   r   r   r   ZloggingZ	getLogger__name__logr#   r   os.pathr   r   r	   r
   Ztempfiler   __all__r   r   r   r   r   r   r   r   r   <module>	   s   
"
