a
    Df^                     @  s  d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	Z
ddlmZ ddlmZ ddlmZ d	d
lmZ ddlmZ ddlmZmZmZ ddlmZmZ ddlmZmZ erddlmZ ddlm Z  e!dZ"dddddZ#G dd deZee
j$j%_dddZ&e&e
j$j%_&dS )z,
Extensions for Bokeh application handling.
    )annotationsN)partial)TYPE_CHECKING)Application)DirectoryHandler)DocumentLifecycleHandler   )config   )_destroy_document)MarkdownHandlerNotebookHandlerScriptHandler)LOG_SESSION_DESTROYEDLOG_SESSION_LAUNCHING)
set_curdocstate)SessionContext)Handlerzpanel.io.applicationr   None)session_contextreturnc                 C  sh   | j j}t | j _|D ]L}z||  W q ty` } z"td| d|  W Y d}~qd}~0 0 qdS )zJ
    Calls any on_session_destroyed callbacks defined on the Document
    z7DocumentLifecycleHandler on_session_destroyed callback z failed with following error: N)	_documentZsession_destroyed_callbacksset	Exceptionlogwarning)r   	callbackscallbacke r    a/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/panel/io/application.py_on_session_destroyed!   s    
r"   c                      sL   e Zd ZdZ fddZ fddZddd fd	d
Z fddZ  ZS )r   z
    Extends Bokeh Application with ability to add global session
    creation callbacks, support for the admin dashboard and the
    ability to globally define a template.
    c                   s$   | dd | _t j|i | d S )NZadmin)pop_adminsuper__init__)selfargskwargs	__class__r    r!   r&   6   s    zApplication.__init__c                   sl   t |j< | jd ur| jt_tjtj D ]}|| q*W d    n1 sL0    Y  t |I d H  d S N)	r   r   r$   r	   r   Z_on_session_created_internalZ_on_session_createdr%   on_session_created)r'   r   cbr*   r    r!   r-   :   s    
(zApplication.on_session_createdr   r   )handlerr   c                   s"   t |tu rt|_t | dS )z;
        Override default DocumentLifeCycleHandler
        N)typer   r"   r%   add)r'   r/   r*   r    r!   r1   B   s    zApplication.addc                   s   t tt  t    tjv rz tj  jvrztj  }t	 " |j
|jd d W d    n1 sp0    Y   fdd}tt  _ dttj   | d S )NT)titlelocationdocc                   s   t tt  d S r,   )r   infor   id)r   r4   r    r!   _log_session_destroyedQ   s    z?Application.initialize_document.<locals>._log_session_destroyedZdocument_ready)r   r5   r   r6   r%   initialize_documentr   Z
_templatesZ
_documentsr   Z
server_docr2   r   r   destroyZon_eventZ_schedule_on_loadZon_session_destroyed)r'   r4   templater8   r*   r7   r!   r9   J   s    

0zApplication.initialize_document)	__name__
__module____qualname____doc__r&   r-   r1   r9   __classcell__r    r    r*   r!   r   /   s
   r   c                 C  s   |pg }t jt j| } t j| r6t| |d}nvt j| r| drZt| |d}q| drrt	| |d}q| drt
| |d}qtd| |  ntd|  |jrtd|  d|j d	|j d
t|}|S )N)filenameargvz.ipynbz.mdz.pyz3Expected a '.py' script or '.ipynb' notebook, got: z2Path for Bokeh server application does not exist: zError loading z:


 )ospathabspath
expanduserisdirr   isfileendswithr   r   r   
ValueErrorfailedRuntimeErrorerrorZerror_detailr   )rF   rB   r/   Zapplicationr    r    r!    build_single_handler_applicationZ   s"    


 rP   )N)'r?   
__future__r   loggingrE   	functoolsr   typingr   Zbokeh.command.utilZbokehZbokeh.applicationr   ZBkApplicationZ$bokeh.application.handlers.directoryr   Z-bokeh.application.handlers.document_lifecycler   r	   documentr   handlersr   r   r   r   r   r   r   Zbokeh.application.applicationr   Z"bokeh.application.handlers.handlerr   	getLoggerr   r"   commandutilrP   r    r    r    r!   <module>   s.   
(

