U
    /eH                     @  sj   d Z ddlmZ ddlZeeZddlmZ ddl	m
Z
 ddlm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``.

    )annotationsN)
ModuleType)List   )PathLike   )CodeHandler)ScriptHandlerc                      s<   e Zd ZdZdZdZg dddddd	d
 fddZ  ZS )r	   z[ Modify Bokeh documents by executing code from Python scripts.

    .. autoclasstoc::

    zG%s: call to %s() ignored when running scripts with the 'bokeh' command.ZScriptN)argvpackager   z	List[str]zModuleType | NoneNone)filenamer
   r   returnc             	     s:   t |ddd}| }W 5 Q R X t j||||d dS )za

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

        rzutf-8)encoding)sourcer   r
   r   N)openreadsuper__init__)selfr   r
   r   fr   	__class__ E/tmp/pip-unpacked-wheel-f5fndrjf/bokeh/application/handlers/script.pyr   S   s    zScriptHandler.__init__)__name__
__module____qualname____doc__Z_logger_textZ_originr   __classcell__r   r   r   r   r	   H   s   r	   )r   
__future__r   logging	getLoggerr   logtypesr   typingr   Z
core.typesr   coder   __all__r	   r   r   r   r   <module>   s    
