
    ;gm=                        d 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mZ ddlZddl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  ej:                  e      j>                  Z  ej:                  e      j>                  dz  dz  Z!ed        Z"d Z#ddZ$ddZ%d dZ&d!dZ'd"dZ(d Z)d"dZ*d#dZ+d#dZ,d#dZ-d#dZ.d#dZ/d Z0d$dZ1y)%z9
Utilities for building custom models included in panel.
    N)ThreadPoolExecutor)cachepartial)Model   )configpanel_extension)RESOURCE_URLS)ReactiveHTML)BasicTemplate)Designdistbundledc                      	 dd l } ddlm} ddlm} | j                         dz  dz  } |t        j                          ||            S # t        $ r t        j                         cY S w xY w)Nr   )CacheControl)SeparateBodyFileCacheholovizzpanel.compiler)r   )	platformdirscachecontrolr   cachecontrol.cachesr   user_cache_pathrequestsSessionImportError)r   r   r   	cache_dirs       .lib/python3.12/site-packages/panel/compiler.py_sessionr       sc    	"-= 002Y>AQQ	H,,.6KI6VWW "!!"s   AA
 
A*)A*c                     	 t               j                  | d      d }}||fS # t        $ r@ 	 t               j                  | dd      d }}n# t        $ r}d |}}Y d }~nd }~ww xY wY ||fS w xY w)N
   )timeoutF)verifyr    )r   get	Exception)urlresponseerrores       r   	_downloadr(   .   s~    &"*..b.94% U?  &	&&jnnSnKTeH 	&"AeH	&U?&s8   # 	A,AA,	A#AA,A##A,+A,c           	      n    |t        | |||       y |j                  t        t         | |||             y )N)explicit_dirext)_write_bundled_filesappendr   )namefilesr*   r+   download_lists        r   write_bundled_filesr1   <   s4    T5|MW%94Uagjkl    c                    | j                  d      d   j                         }|D ]  }|j                  d      sXt        | j                         z  |z  }|j                  j                  dd       t        j                  t        dz  |z  |       m|j                  d      d   }t        |      \  }}|rd	|  d
| d| d}	t        |	      || d}
t        |
      \  }}|j                  t        j                        rJt        j                  j                  |j!                  t        j                  d      j                  d       }nZt        j                  j                  t        j                  j                  |j                  d      dd   j                  d      dd   }|xs |}t        j#                  ||      }|j                  j                  dd       t%        |      }|r"t%        |      j'                  |      s|d| z  }|j'                  d      r1t)        |d      5 }|j+                  |j,                         d d d        nC|j,                  j/                  d      }t)        |dd      5 }|j+                  |       d d d        |spt)        | ddd      5 }|j+                  |j,                  j/                  d             d d d         y # 1 sw Y   UxY w# 1 sw Y   axY w# 1 sw Y   xY w)N.httpTparentsexist_oktheme?r   zFailed to fetch z dependency: z. Errored with z.map /z//r   ).ttfz.wasmz.pngz.gifwbutf-8wencoding)splitlower
startswith
BUNDLE_DIRparentmkdirshutilcopyfileBASE_DIRr(   ConnectionErrorr   npm_cdnospathjoinreplacejoinpathstrendswithopenwritecontentdecode)r.   r/   r*   r+   
model_namebundle_file	dest_pathr%   r&   msgmap_filemap_response_bundle_pathobj_dirfilenamefrX   s                     r   r,   r,   B   s   C$**,J%%f-"TZZ\1K?I""4$"?OOHw.<iH!'',Q/#K0%%dV=_UZT[[\]C!#&E1!]$'#H-a!!&..1'',,(;(;FNNB(O(U(UVY(Z[K'',,k6G6G6Mab6Q(R(X(XY\(]^_^`(abK,*&&w<dT:x=s8}--c2!C5	!H>?h%(() &% &&--g6Ghg6!  7
$'w?1,,33G<= @?E 6 &% 76 @?s$   )K7K)&+K5K&	)K2	5K?	c                 j    |t        | ||       y |j                  t        t         | ||             y )N)r.   module)_write_bundled_tarballr-   r   )tarballr.   rf   r0   s       r   write_bundled_tarballri   i   s/    wT&AW%;W4X^_`r2   c                    |r"|j                  d      d   j                         nd}t        | d         \  }}|r|t        j                         }|j                  |j                         |j                  d       t        j                  |      }| j                  dg       }|D ]  j                  j                  | d         rj                         s3j                  j                  | d   d      }	t        fd	|D              rgt!        j"                  j$                  |	j                  d
       }
| d   j                  d
t         j"                  j&                        }|rt(        j+                  |||
      nt(        j+                  ||
      j,                  j/                  dd       |j1                  j                        }t3              |r,j5                  d      rd d j5                  d      rdz  t        fddD              r8|j7                         }t        d      5 }|j                  |       d d d        |j7                         j9                  d      }t        dd      5 }|j                  |       d d d         |j;                          y # 1 sw Y   xY w# 1 sw Y   xY w)Nr4   r5   r<   tarr   )fileobjexcludesrcc              3   ^   K   | ]$  }t        j                   j                  |       & y wN)fnmatchr.   ).0exctarfs     r   	<genexpr>z)_write_bundled_tarball.<locals>.<genexpr>~   s!     B'3wtyy#.'s   *-r=   destTr7   z.jsindexz.mjsc              3   @   K   | ]  }j                  |        y wrp   rU   rr   ftrc   s     r   ru   z)_write_bundled_tarball.<locals>.<genexpr>        S/Rx  $/R   r>   z.eotz.woffz.woff2r?   r@   rA   rB   )rD   rE   r(   ioBytesIOrW   rX   seektarfilerV   r"   r.   rF   isfilerR   anyrO   rP   rQ   seprG   rS   rH   rI   extractfilerT   rU   readrY   close)rh   r.   rf   rZ   r%   r&   rd   tar_objrm   rP   ra   r\   fobjrX   rc   rt   s                 @@r   rg   rg   o   s1   04C$**,"J/OHe


AGGHFF1Ill1%Gkk)R(Gyy##GEN34;;=yy  4B'BBggllDJJsO4FO++C=	!**:y+NH!**9kBHdT:""499-x=h''.}H  )F"S/RSSiikGh%  &% iik((1Ghg6!  763 6 MMO &% 76s   8J/J</J9	<K	c                 b    |t        | |       y |j                  t        t         | |             y rp   )_write_bundled_zipr-   r   )r.   resourcer0   s      r   write_bundled_zipr      s*    4*W%7xHIr2   c                   
 t        |d         \  }}|r|t        j                         }|j                  |j                         |j                  d       t        j                  |      }|j                  dg       }|j                         D ])  j                  |d   d      }t        fd|D              sj                  d      r?|j                  dt        j                  j                        }t         j#                  | |      

j$                  j'                  dd	       |j)                        }	t+        
      
t        
fd
dD              r't-        
d      5 }|j                  |	       d d d        t-        
dd      5 }|j                  |	j/                  d             d d d        , |j1                          y # 1 sw Y   HxY w# 1 sw Y   UxY w)Nzipr   rm   rn   r<   c              3   J   K   | ]  }t        j                   |        y wrp   )rq   )rr   rs   zipfs     r   ru   z%_write_bundled_zip.<locals>.<genexpr>   s     =WcwtS)Ws    #r=   Tr7   c              3   @   K   | ]  }j                  |        y wrp   rz   r{   s     r   ru   z%_write_bundled_zip.<locals>.<genexpr>   r}   r~   r   r?   rA   r@   rB   )r(   r   r   rW   rX   r   zipfileZipFiler"   namelistrR   r   rU   rO   rP   r   rG   rS   rH   rI   r   rT   rV   rY   r   )r.   r   r%   r&   rd   zip_objrm   rP   ra   fdatarc   r   s             @@r   r   r      sv   0OHe


AGGHFF1Iooa Gll9b)G  "||HUOR0=W==sASll34&&t[9dT:T"x=S/RSSh% &% hg6!W-. 76 # MMO &% 76s   'G!GG	G$	c           	      x   t        | t        |j                  j                  di       j	                               t
        d|       t        | t        |j                  j                  di       j	                               t
        d|       g }|j                  j                  di       j                         D ]5  \  }}||j                  j                  di       vs%|j                  |       7 t        | |dd|       |j                  j                  di       j	                         D ]  }t        ||        y )Ncssr0   js
js_modulesrh   mjs)r+   r0   )	r1   list
_resourcesr"   valuesrG   itemsr-   ri   )r.   	componentr0   r   tar_name	js_modulerh   s          r   write_component_resourcesr      s   d9#7#7#;#;E2#F#M#M#OPR\^c  tA  Bd9#7#7#;#;D"#E#L#L#NOQ[]aq~J(3377bIOOQ)9//33IrBBi(  R j$EW''++Ir:AACg]C Dr2   c                     t        j                         D ]<  \  }}| rt        d| d       d|v rt        |||       *d|v s/t	        |||       > y )NzBundling shared resource r4   r   r   rk   r.   r0   )r
   r   printr   ri   )verboseexternalr0   r.   r   s        r   bundle_resource_urlsr      sV    '--/h-dV156HdHMJh!(]S 0r2   c           	      6   t        j                  t              j                         D ]  \  }}| rt	        d| d       |j
                  j                  dd      r|rt        |||       t        j                  t        j                  |            j                  }t        |j                         z  }|j                  dd       t!        j                   t#        |dz              D ]8  }t%        j&                  ||t(        j*                  j-                  |      z         : |j.                  }t1        |t2              s|r|gng }|D ]  }|j                         }	|j4                  dd  D ]e  }
t7        |
t              st1        |
j.                  t2              r|
j.                  n|
j.                  g}||v sL|
j8                  j                         }	g t        |	z  }|j                  dd       t%        j&                  ||t(        j*                  j-                  |      z          |j:                  }t1        |t2              s|r|gng }|D ]  }|j                         }	|j4                  dd  D ]e  }
t7        |
t              st1        |
j:                  t2              r|
j:                  n|
j:                  g}||v sL|
j8                  j                         }	g t        |	z  }t%        j&                  ||t(        j*                  j-                  |      z           y )	N	Bundling 
 resourcesbundleTr   r7   *.cssr   )paramconcrete_descendentsr   r   r   r   r"   r   pathlibPathinspectgetfilerH   rG   rE   rI   globrT   rJ   rK   rO   rP   basename_css
isinstancer   __mro__
issubclass__name___js)r   r   r0   r.   templatetemplate_dirdest_dirr   template_css	tmpl_nameclstmpl_csstmpl_dest_dirtemplate_jsr   tmpl_jss                   r   bundle_templatesr      sm   44]CIIKhIdV:./ ""8T2x%dHMR ||GOOH$=>EE

,td399S!789COOCBGG,<,<S,A!AB :  }},--9L>rLC

I''+!#}5'1#((D'A388z(? # 2 2 4I , '2Mt<OOC1A1A#1F!FG   ll+t,+6;-BKB

I''+!#}5%/%>#''SWWI= # 2 2 4I , '2MOOB0@0@0D DE G Lr2   c                    t        j                  t              j                         D ]D  \  }}| rt	        d| d       |j
                  j                  dd      s4|s7t        |||       F t        dz  }|j                  dd       t        j                  t        t        dz  dz  d	z              D ]8  }t        j                  ||t        j                   j#                  |      z         : y )
Nr   z design resourcesr   Tr   r:   r7   r   r   )r   r   r   r   r   r   r"   r   rG   rI   r   rT   rL   rJ   rK   rO   rP   r   )r   r   r0   r.   designtheme_bundle_dir
design_csss          r   bundle_themesr      s    226:@@BfIdV#456   40X%dF-P C "G+4$7iiHw$6$>$H IJ

$4rww7G7G
7S$ST Kr2   c                    t         j                  j                         D ]  }|j                  d      st	        |       ! |sy i i i }}}t        j                  t              j                         }t        t        j                  j                               |D cg c]  }|j                   d|j                   |f! c}z   }	|	D ]W  \  }
}|
j                  d      s| rt        d|
 d       t        |dg       t        |dg       z   xs d }t        |dd       }|}|j                   d	d  D ]Q  }t        |dg       t        |dg       z   xs d }|||(||k7  r#|r|||j                  <   n|||j                  <    n|}S t        |d
d       }|}|j                   d	d  D ]-  }t        |d
d       }|||||k7  r|||j                  <    n|}/ t        |dd       }|}|j                   d	d  D ].  }t        |dd       }|||||k7  r|||j                  <    T|}0 Z |j                         D ]C  \  }
}| rt        d|
 d       t#        |t$              rt'        ||
|       6t)        |
||       E |j                         D ]$  \  }
}| rt        d|
 d       t)        |
||       & |j                         D ]  \  }
}t)        |
||        y c c}w )Nzpanel.modelsr4   zpanel.zCollecting r   __javascript_raw____javascript_modules_raw____tarball__r   __css_raw____resources__r   z model JS resourcesr   r   z model CSS resources)r	   _importsr   rF   
__import__r   r   r   r   r   model_class_reverse_mapr   
__module__r   r   getattrr   r   dictri   r1   )r   r   r0   impjs_files	css_filesresource_filesreactivemmodelsr.   modelprev_jsfilesprev_jsbundleprev_clsr   jsfilesprev_cssfilescssfilesprev_resources	resources	res_filess                         r   bundle_modelsr     s+   ''..0>>.)sO 1  +-b"iH)),7>>@HU**00236>?hQ\\N!AJJ<
(!	,h?	@  ex(KvZ01E/4E7<=  	  }d;==$C12692>?   \%=$L)@ 2?HX../2>HX../H %  }d;==$CsM48H!m&?%(m*C/<	(++,H % !>==$C_d;I"~'A&9+F4Bx001H %G X ")gIdV#678gt$!'MRg]K * $//+hIdV#789D(-H ,
 *//1iD)=I 2w 	@s   $Kc                 `   t         dz  }|j                  dd       t        j                  t              j
                  j
                  dz  dz  dz  }t        j                  t        |dz              D ]8  }t        j                  ||t        j                  j                  |      z         : y )NimagesTr7   doc_staticicons*)rG   rI   r   r   __file__rH   r   rT   rJ   rK   rO   rP   r   )r   r   r0   r   icon_diricons         r   bundle_iconsr   W  s    H$HNN4$N/||H%,,33e;iG'QH		#hn-.h)9)9$)??@ /r2   c                      t         dz  dz  dz  dz  dz  } | j                         }d}d}|j                  |      dk(  sJ |j                  ||      }d	}d
}|j                  |      dk(  sJ |j                  ||      }| j	                  |       y )Ndatatabulatorztabulator-tables@6.3.1r   r   ztabulator.min.jszV"focus"!==this.options("editTriggerEvent")&&"click"!==this.options("editTriggerEvent")z*"click"!==this.options("editTriggerEvent")r   zR(i=!0,this.subscribed("table-resize")?this.dispatch("table-resize"):this.redraw())z(i=!0,this.redrawing||(this.redrawing=!0,this.subscribed("table-resize")?this.dispatch("table-resize"):this.redraw(),this.redrawing=!1)))rG   	read_textcountrR   
write_text)rP   textoldnews       r   patch_tabulatorr  _  s    '*BBVKdRUggD>>D
bC
6C::c?a<<S!D
^C UC::c?a<<S!DOODr2   c                 @   g }t        | ||       t        | ||       t        | ||       t        | ||       t	        | ||       t               5 }|j                  d |      }d d d        D ]  }|s|j                           t                y # 1 sw Y   .xY w)N)r   r   r0   c                      |        S rp    )xs    r   <lambda>z"bundle_resources.<locals>.<lambda>w  s    r2   )	r   r   r   r   r   r   mapresultr  )r   r   r0   executorfuturesfutures         r   bundle_resourcesr  n  s    M8=Y'HMRWx}U'HMR8=Q		,,}m< 
 MMO   
	s   BB)NNN)NN)NFN)NFrp   )FTN)FT)2__doc__rq   r   r   r   rO   r   rJ   r   r   concurrent.futuresr   	functoolsr   r   r   r   bokeh.modelr   r   r	   io.resourcesr
   r   r   template.baser   r:   r   r   r   rH   rL   rG   r   r(   r1   r,   ri   rg   r   r   r   r   r   r   r   r   r  r  r  r2   r   <module>r     s       	 	     1 $    + ' " ( 7<<!((W\\(#**V3i?
 
" 
"m%>Na&PJ6	DT.F`UIJVAr2   