
    oi.                         d dl 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 d
dlmZ d
dlmZ 	 d dlmZ dZ G d de      Z G d de      Zy# e$ r	 d dlm	Z Y Sw xY w# e$ r dZY 1w xY w)    N)Optional)Config)pass_context)contextfilter)HTMLExporter)TemplateExporter)Highlight2HTML)IPythonRendererMarkdownWithMath   )TemplateStaticFileHandler)create_include_assets_functions)
MISTUNE_V3TFc                   B     e Zd ZdZ fdZddededee   f fdZ xZS )VoilaMarkdownRendererz,Custom markdown renderer that inlines imagesc                 2    || _         t        |   |i | y N)contents_managersuper__init__)selfr   argskwargs	__class__s       V/home/ubuntu/docker-apps/notebooks/venv/lib/python3.12/site-packages/voila/exporter.pyr   zVoilaMarkdownRenderer.__init__*   s     0$)&)    texturltitlec                 2   | j                   }t        r|n|}|j                  |      rH|j                  |d      }|d   j	                  dd      }t        j                  |      \  }}	d| d| }t        rt        
| !  |||      S t        
| !  |||      S )Nbase64)formatcontent
 zdata:z;base64,)	r   NB_CONVERT_760file_existsgetreplace	mimetypes
guess_typer   image)r   r   r   r   r   srcr#   data	mime_typeencodingr   s             r   r,   zVoilaMarkdownRenderer.image.   s    00#c'',&**3x*@G9%--dB7D"+"6"6s";Ix)HTF3C7=sE227=c511r   r   )	__name__
__module____qualname____doc__r   strr   r,   __classcell__r   s   @r   r   r   '   s.    6*2# 2C 2 2 2r   r   c                       e Zd ZdZ ej
                  d      j                  d      Z ej                  e	      j                  d      Z
 ej                         Z ej                  dd      j                  d      Z ej                  d      d        Zed	        Ze fd
       Z ej*                  d      d        Zdi i f fd	Ze fd       Zd Zd Z fdZ xZS )VoilaExporterzGCustom HTMLExporter that inlines the images using VoilaMarkdownRendererzBase url for resources)helpT)configzXshow left and right margins for the "lab" template, this gives a "classic" template looktemplate_namec                 n    |j                   dk(  r| j                  j                  d       |j                   S )Nclassicz"classic" template support will be removed in Voila 1.0.0, please use the "lab" template instead with the "--show-margins" option for a similar look)valuelogwarning)r   r<   s     r   _validate_template_namez%VoilaExporter._validate_template_nameM   s5    )+HH,
 """r   c                     |d   }|j                  di       }| j                  } |d|| j                  | j                        }t	        |      j                  |      S )NcellattachmentsF)escaperE   r   anchor_link_text)renderer)r(   markdown_renderer_classr   rG   r   render)r   contextsourcerD   rE   clsrH   s          r   markdown2htmlzVoilaExporter.markdown2htmlW   sb     vhh}b1**#!22!22	
  299&AAr   c                 X    t        dddii      }|j                  t        |          |S )Nr9   rI   z$voila.exporter.VoilaMarkdownRenderer)r   merger   default_config)r   cr   s     r   rQ   zVoilaExporter.default_configh   s8    -/U"
 	
&'r   template_filec                      y)Nzindex.html.j2 r   s    r   default_template_filez#VoilaExporter.default_template_filev   s    r   Nc           
       K   |j                   j                  di       }|j                  d|j                  dd             }| j                  j                  dt        ||             }| j	                  d|       d }	| j	                  d|	       t        t        |   ||fi |\  }
}|j                  d| j                         | j                   | j                   | j                   | j                   | j                   | j                   | j                    | j"                   | j                   xr | j"                  d		|d
<    | j$                  j&                  d|
|d|| j(                  |d2 3 d {   }||f 7 6 y w)Nlanguage_infopygments_lexernamehighlight_code)rZ   parentc                     d| d<   | S )NTtrustedrU   )outputs    r   trusted_outputzAVoilaExporter.generate_from_notebook_node.<locals>.trusted_output   s     $F9Mr   r_   raw_mimetypes)	include_codeinclude_markdowninclude_rawinclude_unknowninclude_inputinclude_outputinclude_input_promptinclude_output_prompt	no_promptglobal_content_filter)nb	resources)
static_urlpage_configrU   )metadatar(   filtersr	   register_filterr   r   from_notebook_node
setdefaultrb   exclude_code_cellexclude_markdownexclude_rawexclude_unknownexclude_inputexclude_outputexclude_input_promptexclude_output_prompttemplategenerate_asyncro   )r   rm   rn   extra_contextrp   kwlanginfolexerr\   ra   nb_copyr`   r   s               r   generate_from_notebook_nodez)VoilaExporter.generate_from_notebook_nodez   s     ;;???B7-x||FD/IJ))nE$O
 	-~>	 	Y7 ##3TM	

 	_d.@.@A $ 6 66$($9$9 9#///#'#7#77!%!3!33"&"5"55(,(A(A$A)-)C)C%C22Qt7Q7Q
.
	)* 9DMM88 

 
 #
 	& 	&& 9%%	& 
s*   E.F1F5F6F9	FFFc                 h    d| _         t        |   }d|j                  vr|j	                  d       |S )NTzjinja2.ext.do)enable_asyncr   environment
extensionsadd_extension)r   envr   s     r   r   zVoilaExporter.environment   s6     !g!#..0o.
r   c                     | j                   S r   )template_pathrV   s    r   get_template_pathsz VoilaExporter.get_template_paths   s    !!!r   c                 p    | j                    ddd}t        j                  || j                   d|       S )z,Mimics tornado.web.RequestHandler.static_urlzvoila/templates/N)static_url_prefixstatic_pathz/static/)base_urlr   make_static_urlr<   )r   pathsettingss      r   ro   zVoilaExporter.static_url   sI     %)MM?2B!C
 )88++,HTF;
 	
r   c                     t         |   |      }t        | j                  | j                        }|j                  |       | j                  |d<   |S )Nshow_margins)r   _init_resourcesr   r<   r   updater   )r   rn   include_assets_functionsr   s      r   r   zVoilaExporter._init_resources   sS    G+I6	#B$
  	12$($5$5	.!r   )r1   r2   r3   r4   	traitletsUnicodetagr   Typer   rI   Anyr   Boolr   validaterB   r   rN   propertyrQ   defaultrW   r   r   r   ro   r   r6   r7   s   @r   r9   r9   >   s!   Q y  &>?CC4CPH,inn-BCGGtGT %y}}!9>>g 
cc 
 Y(# )# B B  	 	 Y' ( !)&V  "
 r   r9   )r*   typingr   r   traitlets.configr   jinja2r   ImportErrorr   nbconvert.exporters.htmlr   $nbconvert.exporters.templateexporterr   nbconvert.filters.highlightr	   "nbconvert.filters.markdown_mistuner
   r   static_file_handlerr   utilsr   r   r&   r   r9   rU   r   r   <module>r      s       #5# 2 A 6 ; 2=N
2O 2.HL HY  545"  Ns#   A" A3 "A0/A03A=<A=