o
    i                     @   s   d 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mZ ddlmZmZ ddl
mZ ejZdd	lmZ d
d ZG dd deeeZde eefgZdS )zWTornado handlers for the live notebook view.

This is a fork from jupyter/notebook#6.x
    )
namedtuple)webgen)_i18n)ensure_async)
path_regexFilesRedirectHandler)ExtensionHandlerMixinExtensionHandlerJinjaMixin)JupyterHandler)nbclassic_pathc                  C   sT  ddl m} m} tdddg}|ddd|d	d
d|ddd|ddd|ddd|ddd|ddd|dddg}g }|  D ]1}||}| }t|dd }tt||dd }	|d uro||	krotd||j}
|	|||
 q>t
dd |D }|D ]}|j|vr|	| q{|ddd}||v r|| |ddd}||v r|| t|S )Nr   )get_export_namesget_exporterExporterInfonamedisplayhtmlzHTML (.html))r   r   latexzLaTeX (.tex)markdownzMarkdown (.md)notebookzNotebook (.ipynb)pdfzPDF via LaTeX (.pdf)rstzreST (.rst)scriptzScript (.txt)slideszReveal.js slides (.slides.html)export_from_notebookz{} ({})c                 s   s    | ]}|j  V  qd S )N)r   lower).0exporter r   V/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/nbclassic/notebook/handlers.py	<genexpr>=   s    z)get_frontend_exporters.<locals>.<genexpr>pythonzpython (.py)customzcustom (.txt))nbconvert.exporters.baser   r   r   getattrsuperr   formatfile_extensionappendsetr   removesorted)r   r   r   default_exportersfrontend_exportersr   exporter_classexporter_instanceux_namesuper_uxnamer   namesr   python_exportertemplate_exporterr   r   r   get_frontend_exporters   sJ   













r5   c                   @   s    e Zd Zejejdd ZdS )NotebookHandlerc                 c   s    | d}| j}zt|j|ddV }W n( tjy= } z|jdkr2d|dv r2t	| |V  n W Y d}~nd}~ww |d dkrKt	| |V  |
dd	d
 }| | jd||d| j| jtd dS )z}get renders the notebook template if a name is given, or
        redirects to the '/files/' handler if the name is not given./F)contenti  filesNtyper      znotebook.html)notebook_pathnotebook_namekill_kernelmathjax_urlmathjax_configr5   )stripcontents_managerr   getr   	HTTPErrorstatus_codesplitr   redirect_to_filesrsplitwriterender_templater@   rA   r5   )selfpathcmmodeler   r   r   r   rD   P   s.   

zNotebookHandler.getN)__name__
__module____qualname__r   authenticatedr   	coroutinerD   r   r   r   r   r6   N   s    r6   z{}/notebooks{}N)__doc__collectionsr   tornador   r   jupyter_server.transutilsr   jupyter_server.utilsr   jupyter_server.base.handlersr   r    jupyter_server.extension.handlerr	   r
   r   rE   	nbclassicr   r5   r6   r&   default_handlersr   r   r   r   <module>   s    2'