§
    ŽŸjM2  ã                  óü   — 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
mZ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  G d	„ d
ej        ¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )zeThis module defines a base Exporter class. For Jinja template-based export,
see templateexporter.py.
é    )ÚannotationsN)ÚNotebookNodeÚ	validator)ÚBoolÚ	HasTraitsÚListÚ
TraitErrorÚUnicode©ÚConfig)ÚLoggingConfigurable)Úimport_itemc                  ó   — e Zd ZdZd„ ZdS )ÚResourcesDictzA default dict for resources.c                ó   — dS )zHandle missing value.Ú © )ÚselfÚkeys     úi/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/nbconvert/exporters/exporter.pyÚ__missing__zResourcesDict.__missing__   s   € àˆró    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r      s)   € € € € € Ø'Ð'ðð ð ð ð r   r   c                  ó*   ‡ — e Zd ZdZdZdZˆ fd„Zˆ xZS )ÚFilenameExtensionz A trait for filename extensions.r   z*a filename extension, beginning with a dotc                óÎ   •— t          ¦   «                              ||¦  «        }|r?|                     d¦  «        s*d}t          |                     | j        |¦  «        ¦  «        ‚|S )zValidate the file name.ú.z8FileExtension trait '{}' does not begin with a dot: {!r})ÚsuperÚvalidateÚ
startswithr	   ÚformatÚname)r   ÚobjÚvalueÚmsgÚ	__class__s       €r   r"   zFilenameExtension.validate&   se   ø€ õ ‘”× Ò   eÑ,Ô,ˆð ð 	;˜×)Ò)¨#Ñ.Ô.ð 	;ØLˆCÝ˜SŸZšZ¨¬	°5Ñ9Ô9Ñ:Ô:Ð:àˆr   )r   r   r   r   Údefault_valueÚ	info_textr"   Ú__classcell__©r)   s   @r   r   r       sH   ø€ € € € € Ø*Ð*à€MØ<€Ið
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r   r   c                  ó  ‡ — e Zd ZU dZ edd¬¦  «                             d¬¦  «        Z ed¬¦  «                             d¬¦  «        Z edd¬¦  «                             d¬¦  «        Z	d	Z
d
Zded<    ed¬¦  «                             d¬¦  «        Zded<    e¦   «         Zded<    eg d¢d¬¦  «                             d¬¦  «        Zded<   d)ˆ fd„	Zed„ ¦   «         Z	 d)d*d„Z	 d)d+d!„Z	 d)d,d#„Zd-d$„Zd%„ Zd&„ Zd'„ Zd(„ Zˆ xZS ).ÚExporterzÃ
    Class containing methods that sequentially run a list of preprocessors on a
    NotebookNode object and then return the modified NotebookNode object and
    accompanying resources dict.
    Tz<Disable this exporter (and any exporters inherited from it).)Úhelp)Úconfigz4Extension of the file that should be written to diskFz^Reduces the number of validation steps so that it only occurs after all preprocesors have run.r   NÚstrÚexport_from_notebookz7List of preprocessors, by name or namespace, to enable.zList[t.Any]ÚpreprocessorsÚ_preprocessors)z-nbconvert.preprocessors.TagRemovePreprocessorz/nbconvert.preprocessors.RegexRemovePreprocessorz/nbconvert.preprocessors.ClearOutputPreprocessorz3nbconvert.preprocessors.CoalesceStreamsPreprocessorz+nbconvert.preprocessors.ExecutePreprocessorz+nbconvert.preprocessors.SVG2PDFPreprocessorz)nbconvert.preprocessors.LatexPreprocessorz3nbconvert.preprocessors.HighlightMagicsPreprocessorz1nbconvert.preprocessors.ExtractOutputPreprocessorz6nbconvert.preprocessors.ExtractAttachmentsPreprocessorz1nbconvert.preprocessors.ClearMetadataPreprocessorzZList of preprocessors available by default, by name, namespace,
        instance, or type.Údefault_preprocessorsc                ó°   •— | j         }|r|                     |¦  «          t          ¦   «         j        dd|i|¤Ž |                      ¦   «          i | _        dS )zô
        Public constructor

        Parameters
        ----------
        config : ``traitlets.config.Config``
            User configuration instance.
        `**kw`
            Additional keyword arguments passed to parent __init__

        r1   Nr   )Údefault_configÚmerger!   Ú__init__Ú_init_preprocessorsÚ_nb_metadata)r   r1   ÚkwÚwith_default_configr)   s       €r   r:   zExporter.__init__i   sm   ø€ ð #Ô1ÐØð 	.Ø×%Ò% fÑ-Ô-Ð-à�‰ŒÔÐ:Ð:Ð 3Ð:°rÐ:Ð:Ð:à× Ò Ñ"Ô"Ð"ØˆÔÐÐr   c                ó   — t          ¦   «         S ©Nr   )r   s    r   r8   zExporter.default_config~   s   € å‰xŒxˆr   Únbr   Ú	resourcesút.Any | Noner=   út.AnyÚreturnú%tuple[NotebookNode, dict[str, t.Any]]c                óö  — t          j        |¦  «        }|                      |¦  «        }d|d         v r#|d         d                              ¦   «         |d<   |                      ||¦  «        \  }}d}|�t|                     di ¦  «                             dd¦  «        }|                     di ¦  «                             dd¦  «        }t          j                             ||¦  «        }|j	        | j
        |<   ||fS )av  
        Convert a notebook from a notebook node instance.

        Parameters
        ----------
        nb : :class:`~nbformat.NotebookNode`
            Notebook node (dict-like with attr-access)
        resources : dict
            Additional resources that can be accessed read/write by
            preprocessors and filters.
        `**kw`
            Ignored

        ÚlanguageÚmetadatar   Nr%   Úpath)ÚcopyÚdeepcopyÚ_init_resourcesÚlowerÚ_preprocessÚgetÚosrJ   ÚjoinrI   r<   )r   rA   rB   r=   Únb_copyÚnotebook_namer%   rJ   s           r   Úfrom_notebook_nodezExporter.from_notebook_node‚   sñ   € õ" ”- Ñ#Ô#ˆØ×(Ò(¨Ñ3Ô3ˆ	à˜˜JœÐ'Ð'Ø$& z¤N°:Ô$>×$DÒ$DÑ$FÔ$FˆI�jÑ!ð "×-Ò-¨g°yÑAÔAÑˆ�ØˆØÐ Ø—=’= ¨RÑ0Ô0×4Ò4°V¸RÑ@Ô@ˆDØ—=’= ¨RÑ0Ô0×4Ò4°V¸RÑ@Ô@ˆDÝœGŸLšL¨¨tÑ4Ô4ˆMØ+2Ô+;ˆÔ˜-Ñ(Ø˜	Ð!Ð!r   Úfilenameúdict[str, t.Any] | Nonec                ó”  — |€t          ¦   «         }d|vs|d         dk    rt          ¦   «         |d<   t          j                             |¦  «        \  }}t          j                             |¦  «        d         }||d         d<   ||d         d<   t
          j                             t          j                             |¦  «        t
          j        j	        ¬¦  «        }t          j        dk    rd	}nd
}|                     |¦  «        |d         d<   t          |d¬¦  «        5 }	 | j        |	fd|i|¤Žcddd¦  «         S # 1 swxY w Y   dS )ad  
        Convert a notebook from a notebook file.

        Parameters
        ----------
        filename : str
            Full filename of the notebook file to open and convert.
        resources : dict
            Additional resources that can be accessed read/write by
            preprocessors and filters.
        `**kw`
            Ignored

        NrI   r   r   r%   rJ   )ÚtzÚwin32z	%B %d, %Yz
%B %-d, %YÚmodified_datezutf-8)ÚencodingrB   )r   rQ   rJ   ÚsplitÚsplitextÚdatetimeÚfromtimestampÚgetmtimeÚtimezoneÚutcÚsysÚplatformÚstrftimeÚopenÚ	from_file)
r   rV   rB   r=   rJ   ÚbasenamerT   r[   Údate_formatÚfs
             r   Úfrom_filenamezExporter.from_filename£   s�  € ð$ ÐÝ%™œˆIØ˜YÐ&Ð&¨)°JÔ*?À2Ò*EÐ*EÝ$1¡O¤OˆI�jÑ!ÝœŸš xÑ0Ô0‰ˆˆhÝœ×(Ò(¨Ñ2Ô2°1Ô5ˆØ(5ˆ	�*Ô˜fÑ%Ø(,ˆ	�*Ô˜fÑ%å Ô)×7Ò7ÝŒG×Ò˜XÑ&Ô&­8Ô+<Ô+@ð 8ñ 
ô 
ˆõ Œ<˜7Ò"Ð"Ø%ˆKˆKà&ˆKØ1>×1GÒ1GÈÑ1TÔ1Tˆ	�*Ô˜oÑ.å�( WÐ-Ñ-Ô-ð 	@°Ø!�4”> !Ð?Ð?¨yÐ?¸BÐ?Ð?ð	@ð 	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@s   Ä D=Ä=EÅEÚfile_streamc                óJ   —  | j         t          j        |d¬¦  «        fd|i|¤ŽS )ab  
        Convert a notebook from a notebook file.

        Parameters
        ----------
        file_stream : file-like object
            Notebook file-like object to convert.
        resources : dict
            Additional resources that can be accessed read/write by
            preprocessors and filters.
        `**kw`
            Ignored

        é   )Ú
as_versionrB   )rU   ÚnbformatÚread)r   rm   rB   r=   s       r   rh   zExporter.from_fileË   sB   € ð" 'ˆtÔ&ÝŒM˜+°!Ð4Ñ4Ô4ð
ð 
Ø@Ið
ØMOð
ð 
ð 	
r   c                ó  — |€d}t          |¦  «        ‚t          |t          ¦  «        }| }|r:t          |t          ¦  «        r%t	          |¦  «        }|                      ||¦  «        S |r4t          |¦  «        r%|rd|_        | j         	                    |¦  «         |S |r7t          |t          ¦  «        r"|                       || ¬¦  «        |¦  «         dS |r |                       |¦   «         |¦  «         dS t          d|z  ¦  «        ‚)aù  
        Register a preprocessor.
        Preprocessors are classes that act upon the notebook before it is
        passed into the Jinja templating engine. Preprocessors are also
        capable of passing additional information to the Jinja
        templating engine.

        Parameters
        ----------
        preprocessor : `nbconvert.preprocessors.Preprocessor`
            A dotted module name, a type, or an instance
        enabled : bool
            Mark the preprocessor as enabled

        Nzpreprocessor must not be NoneT)ÚparentzBpreprocessor must be callable or an importable constructor, got %r)Ú	TypeErrorÚ
isinstanceÚtyper2   r   Úregister_preprocessorÚcallableÚenabledr5   ÚappendÚ
issubclassr   )r   Úpreprocessorrz   r(   ÚisclassÚconstructedÚpreprocessor_clss          r   rx   zExporter.register_preprocessorà   sJ  € ð  ÐØ1ˆCÝ˜C‘.”.Ð Ý˜\­4Ñ0Ô0ˆØ!�kˆð ð 	I�:ØÝñ
ô 
ð 	Iõ  +¨<Ñ8Ô8ÐØ×-Ò-Ð.>ÀÑHÔHÐHàð 	 �8 LÑ1Ô1ð 	 ð ð ,Ø'+�Ô$ØÔ×&Ò& |Ñ4Ô4Ð4ØÐàð 	•z ,µ	Ñ:Ô:ð 	ð ×&Ò& | |¸4Ð'@Ñ'@Ô'@À'ÑJÔJÐJØ�4àð 	à×&Ò& | |¡~¤~°wÑ?Ô?Ð?Ø�4õ ØPÐS_Ñ_ñ
ô 
ð 	
r   c                ó”   — g | _         | j        D ]}|                      |¦  «         Œ| j        D ]}|                      |d¬¦  «         ŒdS )z{
        Register all of the preprocessors needed for this exporter, disabled
        unless specified explicitly.
        T)rz   N)r5   r6   rx   r4   )r   r}   s     r   r;   zExporter._init_preprocessors  su   € ð
 !ˆÔð !Ô6ð 	5ð 	5ˆLØ×&Ò& |Ñ4Ô4Ð4Ð4ð !Ô.ð 	Cð 	CˆLØ×&Ò& |¸TÐ&ÑBÔBÐBÐBð	Cð 	Cr   c                óž  — |€t          ¦   «         }t          |t           ¦  «        s%t          ¦   «         }|                     |¦  «         |}d|v rJt          |d         t           ¦  «        s.t          ¦   «         }|                     |d         ¦  «         ||d<   n*t          ¦   «         |d<   |d         d         sd|d         d<   | j        |d<   |S )NrI   r%   ÚNotebookÚoutput_extension)r   rv   ÚupdateÚfile_extension)r   rB   Únew_resourcesÚnew_metadatas       r   rM   zExporter._init_resources(  sÛ   € àÐÝ%™œˆIÝ˜)¥]Ñ3Ô3ð 	&Ý)™OœOˆMØ× Ò  Ñ+Ô+Ð+Ø%ˆIð ˜Ð"Ð"Ý˜i¨
Ô3µ]ÑCÔCð 5Ý,™œ�Ø×#Ò# I¨jÔ$9Ñ:Ô:Ð:Ø(4�	˜*Ñ%øå$1¡O¤OˆI�jÑ!Ø˜ZÔ(¨Ô0ð ;Ø0:�	˜*Ô% fÑ-ð )-Ô(;ˆ	Ð$Ñ%ØÐr   c                ó’   — 	 t          j        |d¬¦  «         d S # t           j        $ r | j                             d|¦  «         ‚ w xY w)NT)Úrelax_add_propsz)Notebook is invalid after preprocessor %s)rq   r"   ÚValidationErrorÚlogÚerror)r   Únbcr}   s      r   Ú_validate_preprocessorzExporter._validate_preprocessor@  s[   € ð	ÝÔ˜c°4Ð8Ñ8Ô8Ð8Ð8Ð8øÝÔ'ð 	ð 	ð 	ØŒH�NŠNÐFÈÑUÔUÐUØð	øøøs	   ‚ š,Ac                óX  — t          j        |¦  «        }t          j        |¦  «        }t          t          d¦  «        rt          j        |¦  «        \  }}| j        D ].} |||¦  «        \  }}| j        s|                      ||¦  «         Œ/| j        r|                      ||¦  «         ||fS )aÛ  
        Preprocess the notebook before passing it into the Jinja engine.
        To preprocess the notebook is to successively apply all the
        enabled preprocessors. Output from each preprocessor is passed
        along to the next one.

        Parameters
        ----------
        nb : notebook node
            notebook that is being exported.
        resources : a dict of additional resources that
            can be accessed read/write by preprocessors
        Ú	normalize)rK   rL   Úhasattrr   r‘   r5   Úoptimistic_validationr�   )r   rA   rB   rŽ   ÚrescÚ_r}   s          r   rO   zExporter._preprocessG  s¾   € õ" Œm˜BÑÔˆÝŒ}˜YÑ'Ô'ˆå•9˜kÑ*Ô*ð 	.ÝÔ(¨Ñ-Ô-‰FˆAˆsð !Ô/ð 	?ð 	?ˆLØ$˜ S¨$Ñ/Ô/‰IˆC�ØÔ-ð ?Ø×+Ò+¨C°Ñ>Ô>Ð>øàÔ%ð 	;Ø×'Ò'¨¨\Ñ:Ô:Ð:à�DˆyÐr   r@   )rA   r   rB   rC   r=   rD   rE   rF   )rV   r2   rB   rW   r=   rD   rE   rF   )rm   rD   rB   rW   r=   rD   rE   rF   )F)r   r   r   r   r   Útagrz   r   r†   r“   Úoutput_mimetyper3   Ú__annotations__r   r4   r5   r6   r:   Úpropertyr8   rU   rl   rh   rx   r;   rM   r�   rO   r,   r-   s   @r   r/   r/   3   st  ø€ € € € € € ðð ð ˆd�4Ð\Ð]Ñ]Ô]×aÒaØð bñ ô €Gð 'Ð&ØCðñ ô ç	‚c�€cÑÔð ð !˜DØØmðñ ô ÷ 
‚c�€cÑÔð ð €Oð !%ÐÐ$Ð$Ð$Ñ$ð "& ØJð"ñ "ô "ç	‚c�€cÑÔð ð ð ð ñ ð #' $¡&¤&€NÐ(Ð(Ð(Ñ(à)-¨ð	
ð 	
ð 	
ðð*ñ *ô *÷  
‚c�€cÑÔð! ð ð ð ñ ð$ð ð ð ð ð ð* ðð ñ „Xðð ;?ð"ð "ð "ð "ð "ðD CGð&@ð &@ð &@ð &@ð &@ðR HLð
ð 
ð 
ð 
ð 
ð*7
ð 7
ð 7
ð 7
ðrCð Cð Cðð ð ð0ð ð ð!ð !ð !ð !ð !ð !ð !r   r/   )r   Ú
__future__r   ÚcollectionsrK   r_   rQ   rd   ÚtypingÚtrq   r   r   Ú	traitletsr   r   r   r	   r
   Útraitlets.configr   Útraitlets.config.configurabler   Útraitlets.utils.importstringr   Údefaultdictr   r   r/   r   r   r   ú<module>r£      sv  ððð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð à €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø #Ð #Ð #Ð #Ð #Ð #Ø =Ð =Ð =Ð =Ð =Ð =Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð �KÔ+ñ ô ð ðð ð ð ð ˜ñ ô ð ð&uð uð uð uð uÐ"ñ uô uð uð uð ur   