a
    @Df;                     @  s  U d Z ddlmZ ddlZee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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l"m#Z# ddl$m%Z% erddl&m'Z' d	dlm(Z( dZ)G dd dZ*G dd de*Z+G dd de*Z,G dd de*Z-G dd de*Z.G dd  d Z/d!d"d d#d$d%Z0d&d'd(d)d*d+Z1ed,d-G d.d/ d/Z2ed,d-G d0d1 d1Z3G d2d3 d3eZ4e2d4Z5i Z6d5e7d6< d7d8d9d#d:d;Z8d<d&d=d>d?Z9d&d@d(dAdBdCZ:d&d(dDdEdFZ;d&d(dDdGdHZ<dId(dJdKdLZ=d&d(dDdMdNZ>d&d(dDdOdPZ?d&d(dDdQdRZ@d&d(dDdSdTZAd&d(dDdUdVZBdS )Wz

    )annotationsN)	dataclass)normpath)Path)TYPE_CHECKINGCallableIteratorSequence	TypedDict)urljoin   )HasProps)CSS_RESOURCESJS_RESOURCES)Document)	Resources)settings)bundle_models   )contains_tex_string)NotRequired)Hashes)Bundlebundle_for_objs_and_resourcesc                   @  s   e Zd ZdS )ArtifactN)__name__
__module____qualname__ r   r   _/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/bokeh/embed/bundle.pyr   F   s   r   c                   @  s    e Zd ZdddddddZdS )		ScriptReftext/javascriptstrNone)urltypereturnc                 C  s   t || _|| _d S N)URLr$   r%   )selfr$   r%   r   r   r   __init__J   s    
zScriptRef.__init__N)r!   r   r   r   r*   r   r   r   r   r    I   s   r    c                   @  s    e Zd ZdddddddZdS )	Scriptr!   r"   r#   )contentr%   r&   c                 C  s   || _ || _d S r'   )r-   r%   )r)   r-   r%   r   r   r   r*   P   s    zScript.__init__N)r!   r+   r   r   r   r   r,   O   s   r,   c                   @  s   e Zd ZdddddZdS )StyleRefr"   r#   )r$   r&   c                 C  s   t || _d S r'   )r(   r$   )r)   r$   r   r   r   r*   V   s    zStyleRef.__init__Nr+   r   r   r   r   r.   U   s   r.   c                   @  s   e Zd ZdddddZdS )Styler"   r#   )r-   r&   c                 C  s
   || _ d S r'   )r-   )r)   r-   r   r   r   r*   [   s    zStyle.__init__Nr+   r   r   r   r   r/   Z   s   r/   c                   @  s   e Zd ZU ded< ded< ded< ded< ded< g g g g i fdddddd	d
dZddddZddddZddddZd$dddddZe	ddddZ
e	ddddZddd d!d"Zd#S )%r   z	list[URL]js_filesz	list[str]js_raw	css_filescss_rawr   hashesr0   r1   r2   r3   r4   c                 C  sF   |d d  | _ |d d  | _|d d  | _|d d  | _i || _d S r'   r5   )r)   r0   r1   r2   r3   r4   r   r   r   r*   g   s
    zBundle.__init__zIterator[str]r&   c                 c  s   |   V  |  V  d S r'   )
_render_js_render_cssr)   r   r   r   __iter__o   s    
zBundle.__iter__r"   c                 C  s   t j| j| j| jdS )N)r0   r1   r4   )r   renderr0   r1   r4   r9   r   r   r   r7   s   s    zBundle._render_jsc                 C  s   t j| j| jdS )N)r2   r3   )r   r;   r2   r3   r9   r   r   r   r8   v   s    zBundle._render_cssTbool)tagr&   c                 C  s$   |rt j| jg dS d| jS d S )N)r1   r0   
)r   r;   r1   join)r)   r=   r   r   r   scriptsy   s    zBundle.scriptsc                 C  s   | j S r'   )r0   r9   r   r   r   js_urls   s    zBundle.js_urlsc                 C  s   | j S r'   )r2   r9   r   r   r   css_urls   s    zBundle.css_urlsr   r#   )artifactr&   c                 C  sj   t |tr| j|j nLt |tr4| j|j n2t |trN| j	|j nt |t
rf| j|j d S r'   )
isinstancer    r0   appendr$   r,   r1   r-   r.   r2   r/   r3   )r)   rC   r   r   r   add   s    



z
Bundle.addN)T)r   r   r   __annotations__r*   r:   r7   r8   r@   propertyrA   rB   rF   r   r   r   r   r   _   s"   
r   z$Sequence[HasProps | Document] | NonezResources | None)objs	resourcesr&   c                 C  s  | dur2t | }t|}t|}t|}t|}nd}d}d}d}d}g }g }g }	g }
|durt|j}|sx|d |s|d |s|d |s|d |j|d}|	t
t|j |	|j |		t
t|j |
	|j t| r|nd|}|j}|dkr"|	d	d
 |D  nx|dkrB|	dd
 |D  nX|dkr|D ]2}|jdurn||j n|t|j qPn|	dd
 |D  |rdd
 |D nd}t|}|dur|| t|||	|
|r|jni S )z Generate rendered CSS and JS resources suitable for the given
    collection of Bokeh objects

    Args:
        objs (seq[HasProps or Document]) :

        resources (Resources)

    Returns:
        Bundle

    NTzbokeh-widgetszbokeh-tableszbokeh-glzbokeh-mathjax)
componentsinlinec                 S  s   g | ]}t |jqS r   )r   _inlineartifact_path.0bundler   r   r   
<listcomp>       z1bundle_for_objs_and_resources.<locals>.<listcomp>serverc                 S  s   g | ]
}|j qS r   )
server_urlrO   r   r   r   rR      rS   Zcdnc                 S  s   g | ]}t t|jqS r   )r(   r"   rN   rO   r   r   r   rR      rS   c                 S  s   g | ]
}|j qS r   )	__class__)rP   objr   r   r   rR      rS   )	_all_objs_use_widgets_use_tables_use_gl_use_mathjaxlistrK   removecloneextendmapr(   r0   r1   r2   r3   _bundle_extensionsmodecdn_urlrE   r   rM   rN   r   r   r4   )rI   rJ   all_objsZuse_widgetsZ
use_tablesZuse_glZuse_mathjaxr0   r1   r2   r3   rK   
extensionsrc   rQ   modelsextr   r   r   r      sV    







r   zset[HasProps]z Callable[[type[HasProps]], bool]r<   )re   queryr&   c                 C  sz   t  }| D ]j}t|drq
|jdd }|dkr4q
||v r>q
|| tj D ] }|j	|rR||rR  dS qRq
dS )N__implementation__.r   bokehTF)
sethasattr__view_module__splitrF   r   model_class_reverse_mapvaluesr   
startswith)re   ri   namesrW   namemodelr   r   r   _query_extensions   s    

rw   T)frozenc                   @  s8   e Zd ZU dZded< dd dddZdddd	Zd
S )r(   z$ Opaque type for representing URLs. r"   r$   )pathr&   c                 C  s6   | j dr| j n
| j  d}tt||tjdS )N/)r$   endswithr(   r   replaceossep)r)   ry   r$   r   r   r   __truediv__   s    zURL.__truediv__r6   c                 C  s   | j S r'   )r$   r9   r   r   r   __str__   s    zURL.__str__N)r   r   r   __doc__rG   r   r   r   r   r   r   r(      s   
r(   c                   @  s*   e Zd ZU ded< ded< dZded< dS )ExtensionEmbedr   rN   r(   rU   Nz
URL | Nonerd   )r   r   r   rG   rd   r   r   r   r   r      s   
r   c                   @  s.   e Zd ZU ded< ded< ded< ded< dS )PkgzNotRequired[str]ru   versionmodulemainN)r   r   r   rG   r   r   r   r   r     s   
r   zhttps://unpkg.comzdict[str, Path]extension_dirszset[HasProps] | Noner   zlist[ExtensionEmbed]c              
   C  s  t  }g }|jrddgndg}| d ur*| ntj }|D ]L}t|drJq8|jdd }|dkrdq8||v rnq8|| t	|}t
|j }	|	j}
|
d }|
d }| sq8t|jd	 d
 }|
d }d }| r(t|8}zt|}W n tjjy   Y n0 W d    n1 s0    Y  d }|d ur
|dd }|d u rTtd|dd}|d|dd }|d urt
t|}t| d|  |  }n|| d }|
| }|j}|j}| d| }tjs\t }||   |! }| d| }nR|D ]<}|| |  }|}| d| | }| r q\qtd| dt
|t"|< || }t#|||}|$| q8|S )Nz.min.jsz.jsrj   rk   r   rl   distzbokeh.ext.jsonZstaticrf   zpackage.jsonru   z*invalid package.json; missing package namer   Zlatestr   r   @rz   z?v=z!can't resolve artifact path for 'z' extension)%rm   Zminifiedr   rq   rr   rn   ro   rp   rF   
__import__r   __file__absoluteparentexistsr(   Zroot_urlopenjsonloaddecoderJSONDecodeErrorget
ValueErrorr   _default_cdn_hostru   r   devhashlibsha256updateencode	hexdigestr   r   rE   )rI   rJ   rt   Zbundlesrf   re   rW   ru   r   Z	this_filebase_dirdist_dirZext_pathZserver_prefixpackage_pathpkgiord   pkg_nameZpkg_versionZpkg_mainrN   Zartifacts_dirZartifact_nameZserver_pathshaZvstringrh   rU   embedr   r   r   rb     sz    




&




rb   zSequence[HasProps | Document])rI   r&   c                 C  sD   t  }| D ]4}t|tr2|jD ]}|| O }qq
|| O }q
|S r'   )rm   rD   r   rootsZ
references)rI   re   rW   rootr   r   r   rX   Y  s    

rX   zCallable[[HasProps], bool])rI   ri   r&   c                   s   t  fdd| D S )z Whether any of a collection of objects satisfies a given query predicate

    Args:
        objs (set[HasProps]) :

        query (callable)

    Returns:
        True, if ``query(obj)`` is True for some object in ``objs``, else False

    c                 3  s   | ]} |V  qd S r'   r   )rP   xri   r   r   	<genexpr>q  rS   z_any.<locals>.<genexpr>)any)rI   ri   r   r   r   _anye  s    r   )re   r&   c                   s&   ddl m  t|  fddp$t| S )z Whether a collection of Bokeh objects contains a TableWidget

    Args:
        objs (seq[HasProps or Document]) :

    Returns:
        bool

    r   TableWidgetc                   s
   t |  S r'   rD   rW   r   r   r   <lambda>~  rS   z_use_tables.<locals>.<lambda>)models.widgetsr   r   _ext_use_tablesre   r   r   r   rZ   s  s    
rZ   c                   s&   ddl m  t|  fddp$t| S )z Whether a collection of Bokeh objects contains a any Widget

    Args:
        objs (seq[HasProps or Document]) :

    Returns:
        bool

    r   Widgetc                   s
   t |  S r'   r   r   r   r   r   r     rS   z_use_widgets.<locals>.<lambda>)r   r   r   _ext_use_widgetsr   r   r   r   rY     s    
rY   r   )rv   r&   c                 C  s  ddl m} ddlm} ddlm}m} ddlm} t	| |rXt	| j
trXt| j
rXdS t	| |r|t	| jtr|t| jr|dS t	| |rt	| jtrt| jrdS | j D ]}t	|trt|r dS qt	| |r| js| jst| j
rdS t	| |r| jst| j
rdS dS )zWhether a model requires MathJax to be loaded
    Args:
        model (HasProps): HasProps to check
    Returns:
        bool: True if MathJax required, False if not
    r   )TextAnnotation)Axis)Div	Paragraph)AbstractSliderTF)Zmodels.annotationsr   Zmodels.axesr   Zmodels.widgets.markupsr   r   Zmodels.widgets.slidersr   rD   textr"   r   titleZ
axis_labelZmajor_label_overridesrr   Zdisable_mathZrender_as_text)rv   r   r   r   r   r   valr   r   r   _model_requires_mathjax  s.    




r   c                   s4   ddl m ddlm  t|  fddp2t| S )z Whether a collection of Bokeh objects contains a model requesting MathJax
    Args:
        objs (seq[HasProps or Document]) :
    Returns:
        bool
    r   )MathTextGlyphMathTextc                   s   t |  fpt| S r'   )rD   r   r   r   r   r   r   r     rS   z_use_mathjax.<locals>.<lambda>)Zmodels.glyphsr   models.textr   r   _ext_use_mathjaxr   r   r   r   r\     s    r\   c                   s   ddl m  t|  fddS )z Whether a collection of Bokeh objects contains a plot requesting WebGL

    Args:
        objs (seq[HasProps or Document]) :

    Returns:
        bool

    r   Plotc                   s   t |  o| jdkS )NZwebgl)rD   Zoutput_backendr   r   r   r   r     rS   z_use_gl.<locals>.<lambda>)Zmodels.plotsr   r   r   r   r   r   r[     s    
r[   c                   s   ddl m  t|  fddS )Nr   r   c                   s
   t |  S r'   
issubclassclsr   r   r   r     rS   z!_ext_use_tables.<locals>.<lambda>)r   r   rw   r   r   r   r   r     s    r   c                   s   ddl m  t|  fddS )Nr   r   c                   s
   t |  S r'   r   r   r   r   r   r     rS   z"_ext_use_widgets.<locals>.<lambda>)r   r   rw   r   r   r   r   r     s    r   c                   s   ddl m  t|  fddS )Nr   r   c                   s
   t |  S r'   r   r   r   r   r   r     rS   z"_ext_use_mathjax.<locals>.<lambda>)r   r   rw   r   r   r   r   r     s    r   )Cr   
__future__r   logging	getLoggerr   logr   r   r}   Zdataclassesr   os.pathr   pathlibr   typingr   r   r   r	   r
   urllib.parser   Zcore.has_propsr   Zcore.templatesr   r   Zdocument.documentr   rJ   r   r   Zutil.compilerr   utilr   Ztyping_extensionsr   r   __all__r   r    r,   r.   r/   r   r   rw   r(   r   r   r   r   rG   rb   rX   r   rZ   rY   r   r\   r[   r   r   r   r   r   r   r   <module>   s`   
2IN)