B
    @\h                 @   sZ   d Z ddlmZmZmZmZ ddlZeeZ	ddl
Z
ddlmZ dZG dd deZdS )	a   Provide a Bokeh Application Handler to build up documents by running
the code from Python script (``.py``) files.

This handler is configured with the filename of a Python module. When a
Bokeh application calls ``modify_doc``, the contents of the module are run to
process a new Document for a session. When the script code is executed, the
Document being modified will be available as ``curdoc``, and any optionally
provided ``args`` will be available as ``sys.argv``.

As an example, consider the following Python module ``myapp.py``

.. code-block:: python

    # myapp.py

    import sys

    from bokeh.io import cudoc
    from bokeh.plotting import figure

    p = figure(x_range=(10, 10), y_range=(10, 10), title=sys.argv[1])

    curdoc().add_root(p)

The a ``ScriptHandler`` configured with this script will modify new Bokeh
Documents by adding an empty plot with a title taken from ``args``.

    )absolute_importdivisionprint_functionunicode_literalsN   )CodeHandler)ScriptHandlerc                   s(   e Zd ZdZdZdZ fddZ  ZS )r   zD Modify Bokeh documents by executing code from Python scripts.

    zG%s: call to %s() ignored when running scripts with the 'bokeh' command.ZScriptc          	      s~   d|krt d|d }tjrFt|ddd}| |d< W dQ R X n"t|d}| |d< W dQ R X tt| j|| dS )za

        Keywords:
            filename (str) : a path to a Python source (".py") file

        filenamez%Must pass a filename to ScriptHandlerrzutf-8)encodingsourceN)
ValueErrorsixZPY3openreadsuperr   __init__)selfargskwargsr	   f)	__class__ @lib/python3.7/site-packages/bokeh/application/handlers/script.pyr   Q   s    	zScriptHandler.__init__)__name__
__module____qualname____doc__Z_logger_textZ_originr   __classcell__r   r   )r   r   r   H   s   r   )r   Z
__future__r   r   r   r   ZloggingZ	getLoggerr   logr   coder   __all__r   r   r   r   r   <module>"   s   
	