a
    Dfx                     @  sH  d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
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mZmZmZmZ ddlZddlmZmZmZmZmZmZm Z  dd	l!m"Z" dd
l#m$Z$ ddl%m&Z'm(Z( ddl)m*Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m2Z2m3Z4 ddl5m6Z6m7Z7 ddl8m8Z8 erjddl%m9Z9 G dd deZ:e;e<Z=ed Z>e?ee@jAjAd ,ZBeCeBZDeDd Edd ZFW d   n1 s0    Y  dd ZGdd ZHG d d! d!ejIZJeG ZKd"eK_Ld"eK_Md#d$ eKjNd%< eHeKjNd< eOeKjNd&< ejPd'd( ZQd)aRee@jAjAZSeSd* ZTeTd+ ZUeSd, ZVeKWd-ZXeKWd.ZYeKWd/ZZeKWd0Z[eKWd1Z\d2Z]eKWd3Z^d4Z_e_ eF d5Z`e` d6Zad7Zbd8Zcd9Zde
ed:Zfd;d<g d=d>d?d@g dAdBdCd@g dAdBdDd@g dAdBdEZgea dFea dGea dHdIZhea dJea dKea dLdMZiejeTe dN< ekdOdP edQdR ZldSdTdUdVZmddXdYdZd[d\ZndSdTd]d^Zod_d` Zpeddadbdc ZqddedSdfdgdhdiZrdjdk Zsdldm ZtdYdSdndodpZuddYdqdrdsdtZvdudv Zwdwdx Zxddzd{Zydd|d}ZzG d~d dZ{G dd de'Z&G dd deZdS )zk
Patches bokeh resources to make it easy to add external JS and CSS
resources via the panel.config object.
    )annotationsN)contextmanager)	lru_cache)Path)TYPE_CHECKINGDictListLiteral	TypedDict)CSS_RESOURCESURLBundle_bundle_extensions_use_mathjaxbundle_modelsextension_dirs)Model)ImportedStyleSheet)	Resources_get_server_urls)settings)Environment)FileSystemLoader)Markup   )configpanel_extension)isurlurl_path   )state)Urlsc                   @  s.   e Zd ZU ded< ded< ded< ded< dS )ResourcesTypezDict[str, str]cssjs
js_modulesz	List[str]raw_cssN)__name__
__module____qualname____annotations__ r+   r+   _/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/panel/io/resources.pyr"   -   s   
r"   )__css____javascript__zpackage.jsonversion+c                  C  sJ   t tjd d } t tjd d }ttt|  t| gdS )zB Get the correct Jinja2 Environment, also for frozen scripts.
    z..Z
_templatestemplate)loader)pathlibr   __file__parentr   r   strresolve)Zinternal_pathZtemplate_pathr+   r+   r,   get_env;   s
    r8   c                 C  s   t t| ddS )N"')jsondumpsdictreplace)valuer+   r+   r,   
conffilterD   s    r@   c                      s   e Zd Z fddZ  ZS )
json_dumpsc                   s   t |trt|S t |S N)
isinstancer   r6   superdefault)selfobj	__class__r+   r,   rE   H   s    
zjson_dumps.default)r'   r(   r)   rE   __classcell__r+   r+   rH   r,   rA   G   s   rA   Tc                 C  s   t tj| tdS )Ncls)r   r;   r<   rA   )rG   r+   r+   r,   <lambda>P       rM   r;   sortedc                  O  s   t j| i |S rB   )_envZfrom_string)argskwargsr+   r+   r,   parse_templateT   s    rS   serverdistZbundledZassetszconvert_index.htmlz	base.htmlz
error.htmlzlogout.htmlzbasic_login.htmlzPanel Applicationzjs_resources.htmlzhttps://cdn.holoviz.org/panel//zdist/z"https://panel.holoviz.org/_static/zstatic/extensions/panel/zcomponents/z\.bk\.zLhttps://use.fontawesome.com/releases/v5.15.4/fontawesome-free-5.15.4-web.zipzfontawesome-free-5.15.4-web/)z*.svgz*.scssz*.less)zipsrcexcludez:https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.1.tgzzpackage/dist )tarrX   rY   destzAhttps://registry.npmjs.org/bootstrap/-/bootstrap-5.3.0-alpha1.tgzz4https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz)font-awesome
bootstrap4
bootstrap5jQueryz$bundled/font-awesome/css/all.min.cssz(bundled/bootstrap4/css/bootstrap.min.cssz(bundled/bootstrap5/css/bootstrap.min.css)r]   r^   r_   z!bundled/jquery/jquery.slim.min.jsz-bundled/bootstrap4/js/bootstrap.bundle.min.jsz-bundled/bootstrap5/js/bootstrap.bundle.min.js)r`   r^   r_   Zpanelzapplication/javascriptz.jsc              	   c  sH   t jj}t}|  t _azd V  W |at j| n|at j| 0 d S rB   )	_settings	resourcesZ_user_valueRESOURCE_MODE	set_value)modeZold_resourcesZold_moder+   r+   r,   set_resource_mode   s    
rf   boolreturnc                   C  s   t jdddkS )NrT   )rE   )ra   rb   r+   r+   r+   r,   use_cdn   s    rj   autobool | Literal['auto']r6   )cdnri   c                 C  s>   | dkrt  n| } | rt}ntjr4tj dt }nt }|S )Nrk   rV   )rj   CDN_DISTr    rel_path
LOCAL_DIST)rm   	dist_pathr+   r+   r,   get_dist_path   s    rr   c                 C  s   t | o| tS rB   )r   
startswithrn   )urlr+   r+   r,   
is_cdn_url   s    ru   c                 C  s   dd | D S )zN
    Converts old-style Bokeh<3 compatible CSS to Bokeh 3 compatible CSS.
    c                 S  s   g | ]}t d |qS ).)BK_PREFIX_REsub.0r#   r+   r+   r,   
<listcomp>   rN   z#process_raw_css.<locals>.<listcomp>r+   )r&   r+   r+   r,   process_raw_css   s    r|   )maxsizec              	   C  s   t d| d| d| dS )NzM
    :host(.pn-loading):before, .pn-loading:before {
      background-color: z&;
      mask-size: auto calc(min(50%, z2px));
      -webkit-mask-size: auto calc(min(50%, zpx));
    })textwrapdedent)loading_spinnercolorZ
max_heightr+   r+   r,   loading_css   s    r   Fzstr | os.PathLikezpathlib.Path | None)pathrelativeri   c                 C  s   |sdS t | tst| } z(t| j}t|jj}| s@J W n t	yV   Y dS 0 t
|}| rp|}n|| }z| sW dS W n ty   Y dS 0 | }|s|S tj||S )al  
    Attempts to resolve a path relative to some component.

    Arguments
    ---------
    obj: type | object
       The component to resolve the path relative to.
    path: str | os.PathLike
        Absolute or relative path to a resource.
    relative: bool
        Whether to return a relative path.

    Returns
    -------
    path: pathlib.Path | None
    N)rC   type	importlibimport_moduler(   r   r4   r5   exists	Exceptionr3   is_absoluteis_fileOSErrorr7   osr   relpath)rG   r   r   modmodule_pathabs_pathr+   r+   r,   resolve_custom_path   s.    


r   c                 C  sl   t | tst| } t}tjr,tj d| }tt| |ddtj	j
d}| | j d| j d| d| S )z
    Generates a canonical URL for a component resource.

    To be used in conjunction with the `panel.io.server.ComponentResourceHandler`
    which allows dynamically resolving resources defined on components.
    rV   T)r   )rC   r   COMPONENT_PATHr    ro   r6   r   r>   r   r   sepr(   r'   )	componentattrr   Zcomponent_pathro   r+   r+   r,   component_resource_path   s    
r   c                 C  s   | j }|t| r.|tkr.|t| |}nL|trN|tkrN|t|}n,|trv|dtrv|t|}nd S dt }||s||7 }z
|| _ W n ty   Y n0 d S )N./?v=)	rt   rs   rn   r>   rp   lstrip
JS_VERSIONendswithr   )
stylesheetdist_urlrt   Zpatched_urlversion_suffixr+   r+   r,   patch_stylesheet   s    


r   )r   ri   c                 C  s   |   dS )N.css)lowerr   )r   r+   r+   r,   _is_file_path  s    r   z
str | None)r   	attributec                 C  s^   t |}|dsZ|rZt|rZt| | }rZtjsNtjrNtjjrNt| ||}n|j	dd}|S )a  
    Resolves a stylesheet definition, e.g. originating on a component
    Reactive._stylesheets or a Design.modifiers attribute. Stylesheets
    may be defined as one of the following:

    - Absolute URL defined with http(s) protocol
    - A path relative to the component
    - A raw css string

    Arguments
    ---------
    cls: type | object
        Object or class defining the stylesheet
    stylesheet: str
        The stylesheet definition
    httputf-8encoding)
r6   rs   r   r   r    Z_is_pyodideZcurdocZsession_contextr   	read_text)rL   r   r   Zcustom_pathr+   r+   r,   resolve_stylesheet  s    $r   c                 C  sj   | j }|r&|jj}t|jj}|  | dtiD ]}t|| q4|rf||j_|r^||j_	n|
  dS )z
    Temporary patch for Model.css property used by Panel to provide
    stylesheets for components.

    ALERT: Should find better solution before official Bokeh 3.x compatible release
    r   N)document	callbacksZ
hold_valuelistZ_held_eventsZholdselectr   r   Z_holdZunhold)rootr   docZheldeventsr   r+   r+   r,   patch_model_css,  s    
r   c                 C  s(   t dkrd|  dS t d|  dS d S )NrT   zstatic/extensions/panel/css/r   zcss/)rc   rn   )namer+   r+   r,   
global_cssB  s    r   
javascriptc                 C  sT  | j  }t| }t|dkr tnt }g }t| d| dg D ]
}|t	rf|
t	 dd}n,|tjr|
tjddd  }nt|}|dd }||v r|}	t| }
n<|
d	d| d	s| d	| }	|| }
n|}	t| }
|
 rDtd
kr|d|	  n*||kr8|t	 d|	  n
|| qB|| qB|S )Nr   __Z_raw__bundled/rZ   r   ?r   rV   rT   z static/extensions/panel/bundled/)r'   r   
BUNDLE_DIRr   JS_URLSCSS_URLSvaluesgetattrrs   rn   r>   r   npm_cdnr   splitr   rc   append)model	file_typer   bdirZsharedfilesrt   filepathZtest_filepathprefixedZ	test_pathr+   r+   r,   bundled_filesH  s6    






r   c              
   C  sh  ddl m} t|ts$tj||d}| }}|d ur:|jnd a}g }	g }
g }g }t|trb|}n"| rzt| pvd|j	v }n
d|j	v }|r|
 }|sd|jv r|jd |r|j  |	|j |
|j ||j ||j td |}|rdd |D }g }|dkr*|
d	d |D  n|d
kr|D ]b}|j}t|tsVt|}|jr|js||jdd}tjrtj d| }|	| q8nX|dkr|D ]2}|jd ur||j n|
t|j qn|dd |D  |	||7 }	t d }|d ur |
| |r,|j!ni }t"t#t$|	}	t"t#t$|}t%||||	|
|j&|j'|dS )Nr   )r   )notebookinlineZmathjaxzbokeh-mathjaxc                 S  s*   g | ]"}|j d ur"t|j ds|qS )Nz!https://unpkg.com/@holoviz/panel@)cdn_urlr6   rs   )rz   extr+   r+   r,   r{     s   z$bundle_resources.<locals>.<listcomp>c                 S  s   g | ]}t |jqS r+   )r   _inlineartifact_pathrz   bundler+   r+   r,   r{     rN   rT   rZ   r   rV   rm   c                 S  s   g | ]
}|j qS r+   )r   r   r+   r+   r,   r{     rN   )	css_filescss_rawhashesjs_filesjs_rawjs_module_exportsr%   r   )(r   r   rC   r   
from_bokehre   rc   rg   r   Z_loaded_extensionsclone
componentsremoveclearextendr   r   r   r   r   
server_urlr6   root_urlabsoluter>   r    ro   r   r   r   r   adjust_pathsr   r   r   mapr   r   r   r%   )rootsrb   r   Z	reloadingZenable_mathjaxr   Zjs_resourcesZcss_resourcesre   r   r   r   r   Zuse_mathjax
extensionsZextra_jsr   r   r   r+   r+   r,   bundle_resourcesi  s    









r   c                   @  sL   e Zd ZdZi i i i g dZedddddddZdddddddZd
S )ResourceComponentzb
    Mix-in class for components that define a set of resources
    that have to be resolved.
    )r#   fontr$   r%   r&   Fr6   rg   )resource_typeresourcerm   c           	      C  s   t |d}|tr(|t dd}n<|tjrL|tjddd  }n|dr`t|}n|}|dkrtjs|sd| }n|}t	|dt
jj }z| }W n ty   d	}Y n0 |r| d| S t|r|S t| |rt| d
| |S d S )Nrm   r   rZ   r   zhttp:r%   r   rV   Fz_resources/)rr   rs   rn   r>   r   r   r   r    ro   r   r   r   r   r   r   r   r   r   )	rL   r   r   rm   rq   resource_pathZprefixed_distZ
bundlepathr   r+   r+   r,   _resolve_resource  s0    





z#ResourceComponent._resolve_resourcerk   Nrl   z dict[str, dict[str, str]] | Noner"   )rm   extrasri   c                   sj  t |  i }| j D ]`\}}t|ts*q|dkr6d} fdd| D }||v rnt|| fi |||< q|||< qi i i g d}|dkrt n|}|D ]P}||vs|dkrq|| }||  D ]$\}	}
| j||
|d}|r|||	< qqd	t }t|d}|p
i  D ]T\}}|| }| D ]8\}}|sV|	t
|}||sV||7 }|||< q(q|S )
a5  
        Resolves the resources required for this component.

        Arguments
        ---------
        cdn: bool | Literal['auto']
            Whether to load resources from CDN or local server. If set
            to 'auto' value will be automatically determine based on
            global settings.
        extras: dict[str, dict[str, str]] | None
            Additional resources to add to the bundle. Valid resource
            types include js, js_modules and css.

        Returns
        -------
        Dictionary containing JS and CSS resources.
        r   r#   c                   s2   i | ]*\}}|t |r|n j  d | qS )rV   )r   r'   r   )rz   r   rt   rK   r+   r,   
<dictcomp>  s   z7ResourceComponent.resolve_resources.<locals>.<dictcomp>)r$   r%   r#   r&   rk   r&   r   r   )r   
_resourcesitemsrC   r=   rj   r   r   rr   r>   rn   r   )rF   rm   r   rb   rtresZresource_typesr   Zresource_filesrnamer   Zresolved_resourcer   rq   extra_resourcesr   r+   rK   r,   resolve_resources  sP    




z#ResourceComponent.resolve_resources)F)rk   N)r'   r(   r)   __doc__r   classmethodr   r   r+   r+   r+   r,   r     s   !  r   c                      s   e Zd Zddd fdd
Zed(ddZddd	d
dZddddZdd Zdd Z	ddd dddZ
edd Ze fddZe fddZe fddZed d! Zed"d# Ze fd$d%Zed&d' Z  ZS ))r   F)r   r   c                  s"   || _ || _t j|i | d S rB   )r   r   rD   __init__)rF   r   r   rQ   rR   rH   r+   r,   r   3  s    zResources.__init__c                 C  sb   i }|j dr|j|d< t|dr*|jn|j}| f |j |j|j|j||j	||j
|j|d
|S )NrT   r   Zcomponents_for)
re   r/   minified	log_levelr   path_versionerr   base_dirroot_dirr   )re   rs   r   hasattrr   Z_componentsr/   r   r   r   r   r   )rL   Zbkrr   r   rR   r   r+   r+   r,   r   8  s    
zResources.from_bokehResourceAttrz	list[str])resource_attrri   c                 C  s   g }t jdur$dd tj D }nd}ttj dd dD ]|\}}|durj|j|v rj||j t jvrjq>t	||d}t
|tr||vr|| q>t
|tr>|D ]}||vr|| qq>|S )zI Collect external resources set on resource_attr attribute of all models.Nc                 S  s   i | ]\}}||qS r+   r+   )rz   r   moduler+   r+   r,   r   L  s   z9Resources._collect_external_resources.<locals>.<dictcomp>c                 S  s   | d S )Nr   r+   )argr+   r+   r,   rM   R  rN   z7Resources._collect_external_resources.<locals>.<lambda>)key)r    Z_extensions	extensionZ_importsr   rO   r   model_class_reverse_mapr(   r   rC   r6   r   r   )rF   r   Zexternal_resourcesZexternal_modules_rL   Zexternaler+   r+   r,   _collect_external_resourcesG  s&    


z%Resources._collect_external_resourcesr!   rh   c                 C  s&   t | jr| jnd| jrdn| j| jS )NrZ   F)r   r   r   devr   r   rF   r+   r+   r,   _server_urlsb  s
    zResources._server_urlsc                 C  s   ddl m} t| D ]b}t||dr| s4qt||g D ]:}t|sh|d	dsht
|||}||vr@|| q@qdS )z=
        Adds resources for ReactiveHTML components.
        r   ReactiveHTMLNr   static/extensions)reactiver  paramconcrete_descendentsr   r   _loadedr   r   rs   r   r   )rF   rb   r   r  r   r   r+   r+   r,   r   i  s    zResources.extra_resourcesc                 C  s   g }dt  }tj dt  d}|D ]}t|ts:t|}|dtj}||r^||t}| jdkrt|tt	}|t
jdfr|t
jr|tt
jd }t
jrt
j d| }n| jr| jdkr| j | }|d	r||7 }|| q$|S )
zE
        Computes relative and absolute paths for resources.
        r   z/@holoviz/panel@z/dist/zhttps://unpkg.comrT   zstatic/NrV   r   )r   r   r   rC   r6   r>   rs   rn   re   rp   r    base_urllenro   r   r   r   r   )rF   rb   Znew_resourcesr   Zcdn_baser   r+   r+   r,   r   w  s,    




zResources.adjust_pathsN)r   c                C  sH   t | j| j| j| j| j| j| j| j|dur.|nt	| j
| j| j| jdS )z[
        Make a clone of a resources instance allowing to override its components.
        N)re   r/   r   r  r   r   r   r   r   r   r   r   )r   re   r/   r   r  r   r   Z	_root_urlr   r   r   r   r   r   )rF   r   r+   r+   r,   r     s    zResources.clonec                 C  sZ   | j r| jdkrd}n@| jdkrRtjr8tj dt }nt}| jrV| j | }nt}|S )NrT   z'/panel-preview/static/extensions/panel/rV   )r   re   r    ro   rp   r   r   rn   )rF   dist_dirr+   r+   r,   r    s    
zResources.dist_dirc                   s   ddl m } tt j} |d   fdd|D }|jr^|t|jj	di 
 7 }|jD ]$}tj|sd||v r~qd|| qd|S )Nr   r   r-   c                   s"   g | ]} j d kst|s|qS r   re   ru   ry   r  r+   r,   r{     s   z'Resources.css_files.<locals>.<listcomp>r   )r   rD   r   r   r   r   designr   r   getr   r   r   isfiler   )rF   r   r   r   cssfrH   r  r,   r     s    
zResources.css_filesc                   s   ddl m } tt| j}| d}| |d | j dvrN|dd |D 7 }|jD ]>}t	j
|sfqTtt|jddgd	 }||vrT|| qT|jrtd
 d jdd}||t|j|j|jg |t|j t|j S )Nr   r  r-   )rT   rm   c                 S  s,   g | ]$}t |rt|td  jddqS rZ   r   r   ru   DIST_DIRr>   rn   r   ry   r+   r+   r,   r{     s   
z%Resources.css_raw.<locals>.<listcomp>r   r   r   r#   zloading.css)r   rD   r   r   r  r   re   r   r   r   r   r  r|   r   r   r   Zglobal_loading_spinnerr  r   r   r   Zloading_colorZloading_max_heightr&   r   )rF   r   rawr   r  Zcss_txtZloading_baserH   r+   r,   r     s(    

zResources.css_rawc                   s  ddl m } ttj  d  dd |j D 7  |jrx| jjpRdddd	  }  fd
d|D 7  	fdd D }j
}dd t|D }|r||d }tdd |D r||d  || tdd |D r||d  |S )Nr   r  r.   c                 S  s   g | ]}|qS r+   r+   rz   r$   r+   r+   r,   r{     rN   z&Resources.js_files.<locals>.<listcomp>rk   Frm   Zinclude_themer$   c                   s   g | ]}| vr|qS r+   r+   rz   r   )r   r+   r,   r{     rN   c                   s"   g | ]} j d kst|s|qS r  r  r  r  r+   r,   r{     s   c                 S  s   g | ]\}}d |v r|qS )requirer+   )rz   ijsfr+   r+   r,   r{     rN   r   c                 s  s   | ]}d |v V  qdS ZaceNr+   rz   r$  r+   r+   r,   	<genexpr>  rN   z%Resources.js_files.<locals>.<genexpr>zpre_require.jsc                 s  s   | ]}d |v V  qdS r%  r+   r&  r+   r+   r,   r'    rN   zpost_require.js)r   rD   r   r   r   r   r  r   r   r   r  	enumeratepopanyr   )rF   r   	design_jsr   r  Zrequire_indexZ	requirejsrH   )r   rF   r,   r     s0    

zResources.js_filesc                   s  ddl m } ddlm} t|j  tj D ]}t|dr0 	|j
 q0|  d |jr| j| jpnddd}  fdd	|d
  D 7  t| D ]V}t|dd r| sq|j
D ]4}t|s|dst|d|}| vr | qq|  S )Nr   r  r
  __javascript_modules__rk   Fr   c                   s   g | ]}| vr|qS r+   r+   r!  modulesr+   r,   r{     s   z(Resources.js_modules.<locals>.<listcomp>r%   r  )r   r  r  r   r%   r   r   r  r   r   r,  r   r  r   r   r  r  r   r  r   rs   r   r   r   )rF   r   r  r   Zdesign_resourcesZ	js_moduler+   r-  r,   r%     s.    



zResources.js_modulesc                 C  sN   i }t j D ]&}t|dr|tt|j|j qtt|| 	| S )N__javascript_module_exports__)
r   r  r   r   updater=   rW   r/  r,  r   )rF   r.  r   r+   r+   r,   r   !  s
    
zResources.js_module_exportsc                   s   t t| j}| jdks|S | d}| |d |dd |D 7 }ddlm} |dd |j D 7 }|j	r|	 j
dd	d
d  }|dd |D 7 }|S )Nr   r.   c                 S  s,   g | ]$}t |rt|td  jddqS r  r  r  r+   r+   r,   r{   2  s   
z$Resources.js_raw.<locals>.<listcomp>r   r  c                 S  s(   g | ] }t j|rt|jd dqS )r   r   )r   r   r  r   r   r  r+   r+   r,   r{   9  s   TFr   r$   c                 S  s,   g | ]$}t |rt|td  jddqS r  r  r  r+   r+   r,   r{   C  s   
)rD   r   r   re   r  r   r   r   r   r  r   )rF   Zraw_jsr   r   r+  rH   r+   r,   r   )  s,    

zResources.js_rawc                 C  s   t j| j| j| j| j| jdS )N)r   r   r%   r   r   )JS_RESOURCESrenderr   r   r%   r   r   r  r+   r+   r,   	render_jsI  s
    zResources.render_js)FF)r'   r(   r)   r   r   r   r  r	  r   r   r   propertyr  r   r   r   r%   r   r   r3  rJ   r+   r+   rH   r,   r   1  s0   


r   c                      sB   e Zd Zd fdd	ZedddZdddd	Zd
d Z  ZS )r   Fc                   s8   | dg | _| di | _|| _t jf i | d S )Nr%   r   )r)  r%   r   r   rD   r   )rF   r   rR   rH   r+   r,   r   T  s    zBundle.__init__c                 C  s   | ||j |j|j|j|jdS )N)r   r   r   r   r   r   )r   r   r   r   r   )rL   Z	bk_bundler   r+   r+   r,   r   Z  s    zBundle.from_bokehr6   rh   c                 C  s   t j| j| jdS )N)r   r   )BkCSS_RESOURCESr2  r   r   r  r+   r+   r,   _render_csse  s    zBundle._render_cssc                 C  s   t j| j| j| j| j| jdS )N)r   r   r%   r   r   )r1  r2  r   r   r%   r   r   r  r+   r+   r,   
_render_jsk  s    zBundle._render_js)F)F)	r'   r(   r)   r   r   r   r6  r7  rJ   r+   r+   rH   r,   r   R  s
   
r   )rk   )F)N)r   )FFrk   )|r   
__future__r   	functoolsr   r;   logging	mimetypesr   r3   rer~   
contextlibr   r   r   typingr   r   r   r	   r
   r  Zbokeh.embed.bundler   r5  r   r   ZBkBundler   r   r   r   Zbokeh.modelr   Zbokeh.modelsr   Zbokeh.resourcesr   ZBkResourcesr   Zbokeh.settingsr   ra   Zjinja2.environmentr   Zjinja2.loadersr   Z
markupsafer   r   r   r  utilr   r   r    r!   r"   	getLoggerr'   loggerr   openr4   r5   floadZpackage_jsonr   r   r8   r@   JSONEncoderrA   rP   Ztrim_blocksZlstrip_blocksfiltersrO   cacherS   rc   Z	PANEL_DIRr  r   Z
ASSETS_DIRZget_templateZINDEX_TEMPLATEZBASE_TEMPLATEZERROR_TEMPLATEZLOGOUT_TEMPLATEZBASIC_LOGIN_TEMPLATEZDEFAULT_TITLEr1  ZCDN_ROOTZCDN_URLrn   ZDOC_DISTrp   r   compilerw   ZRESOURCE_URLSr   r   r6   add_typerf   rj   rr   ru   r|   r   r   r   r   r   r   r   r   r   r   r   r+   r+   r+   r,   <module>   s   $

2	













	 ,
!
Su  #