§
    �Ÿj%  ã            	      óÄ   — d Z ddl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mZ d
„ Zdd„Zd„ Zd„ ZdddddddddœZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )z-Code for converting notebooks to and from v3.é    )ÚannotationsN)Ú
get_logger)Úv3Ú	validator)Úgenerate_corpus_id)ÚNotebookNodeé   )ÚnbformatÚnbformat_minorc                óž   — ddl m}m} 	  || |¬¦  «         dS # |$ r.}t          ¦   «                              d||¦  «         Y d}~dS d}~ww xY w)z(Log validation errors, if there are any.r   )ÚValidationErrorÚvalidate)Úversionz"Notebook JSON is not valid v%i: %sN)r
   r   r   r   Úerror)Únbr   r   r   Úes        ú`/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/nbformat/v4/convert.pyÚ_warn_if_invalidr      s�   € à2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ðMØˆ�˜WÐ%Ñ%Ô%Ð%Ð%Ð%øØð Mð Mð MÝ‰Œ×ÒÐ?ÀÈ!ÑLÔLÐLÐLÐLÐLÐLÐLÐLøøøøðMøøøs   Š ™Až#AÁAc                óV  — |s| d         }|s+d| vr|dk    rd}t          j        |¦  «        ‚d}n| d         }|dk    �r
t          | |¦  «         |                      dd¦  «        }|                      d	d¦  «        }|pd| j        _        |pd| j        _        t          | _        t          | _        g x| d
<   }|                      dg ¦  «        D ]/}|d
         D ]$}| 	                    t          |¦  «        ¦  «         Œ%Œ0| j                             dd¦  «         | j                             dd¦  «         t          | t          ¦  «         | S |dk    rJ|t          k    r| S |dk     r| j        D ]}t          ¦   «         |_        Œ|| j        _        t          | _        | S t          d|z  ¦  «        ‚)aW  Convert a notebook to latest v4.

    Parameters
    ----------
    nb : NotebookNode
        The Python representation of the notebook to convert.
    from_version : int
        The original version of the notebook to convert.
    from_minor : int
        The original minor version of the notebook to convert (only relevant for v >= 3).
    r
   r   é   zEThe v4 notebook does not include the nbformat minor, which is needed.r   é   Úorig_nbformatNÚorig_nbformat_minorÚcellsÚ
worksheetsÚnameÚ Ú	signatureé   zZCannot convert a notebook directly from v%s to v4.  Try using the nbformat.convert module.)r   r   r   ÚpopÚmetadatar   r   r
   r   ÚappendÚupgrade_cellr   Úrandom_cell_idÚidÚ
ValueError)	r   Úfrom_versionÚ
from_minorÚmsgr   r   r   ÚwsÚcells	            r   Úupgrader,      só  € ð ð &Ø˜*”~ˆØð .Ø 2Ð%Ð%Ø˜qÒ Ð Ø]�ÝÔ/°Ñ4Ô4Ð4ØˆJˆJàÐ,Ô-ˆJà�qÒÑå˜˜\Ñ*Ô*Ð*ð Ÿš˜°Ñ5Ô5ˆØ ŸfšfÐ%:¸DÑAÔAÐØ$1Ð$6°QˆŒÔ!Ø*=Ð*BÀˆŒÔ'õ ˆŒÝ*ˆÔð !Ð ˆˆ7‰�eð —&’&˜ rÑ*Ô*ð 	1ð 	1ˆBà˜7œð 1ð 1�Ø—’�\¨$Ñ/Ô/Ñ0Ô0Ð0Ð0ð1ð 	Œ�Š˜ Ñ#Ô#Ð#Ø
Œ�Š˜ RÑ(Ô(Ð(å˜�XÑ&Ô&Ð&Øˆ	Ø�qÒÐØ�Ò'Ð'ØˆIð ˜Š>ˆ>Øœð +ð +�Ý(Ñ*Ô*�”�à*4ˆŒÔ'Ý*ˆÔàˆ	Ý
ð	1Ø3?ñ	@ñô ð ó    c           	     óº  — |                       dt          ¦   «         ¦  «         t          ¦   «         | _        | j        dk    r‡|                      dd¦  «         d| v r|                      d¦  «        | j        d<   |                      dd¦  «        | _        |                      dd¦  «        | _        t          | j
        ¦  «        | _
        n“| j        d	k    rvd
| _        |                      dd¦  «        }d                     d|z  d                     |                      dd¦  «                             ¦   «         ¦  «        ¬¦  «        | _        n| j        dk    rd
| _        | S )zöupgrade a cell from v3 to v4

    heading cell:
        - -> markdown heading
    code cell:
        - remove language metadata
        - cell.input -> cell.source
        - cell.prompt_number -> cell.execution_count
        - update outputs
    r!   ÚcodeÚlanguager   Ú	collapsedÚinputÚprompt_numberNÚheadingÚmarkdownÚlevelr	   z{hashes} {single_line}ú#ú Úsource)ÚhashesÚsingle_lineÚhtml)Ú
setdefaultr   r$   r%   Ú	cell_typer    r!   r9   Úexecution_countÚupgrade_outputsÚoutputsÚformatÚjoinÚgetÚ
splitlines)r+   r6   s     r   r#   r#   f   s;  € ð 	‡O‚O�J¥¡¤Ñ/Ô/Ð/ÝÑÔ€D„GØ„~˜ÒÐØ�Š�˜RÑ Ô Ð Ø˜$ÐÐØ)-¯ª°+Ñ)>Ô)>ˆDŒM˜+Ñ&Ø—h’h˜w¨Ñ+Ô+ˆŒØ#Ÿxšx¨¸Ñ>Ô>ˆÔÝ& t¤|Ñ4Ô4ˆŒˆØ	Œ˜9Ò	$Ð	$Ø#ˆŒØ—’˜ !Ñ$Ô$ˆØ.×5Ò5Ø˜‘;ØŸš §¢¨(°BÑ!7Ô!7×!BÒ!BÑ!DÔ!DÑEÔEð 6ñ 
ô 
ˆŒˆð 
Œ˜6Ò	!Ð	!à#ˆŒØ€Kr-   c                óz  — | j         dk    rwd| _        |                      dd¦  «        | _        |                      dd¦  «        | _        | j                             dd¦  «        | _        t          | j        ¦  «        | _        nŒ| j         d	k    r�|  	                    dd¦  «        }d
|vrg| 
                    d¦  «        rRt          j        d|¦  «        }|€J ‚|                     ¦   «         \  }}d| _         || _        t          |¦  «        | _        |                      dd¦  «         |                      dd¦  «         | S )a  downgrade a cell from v4 to v3

    code cell:
        - set cell.language
        - cell.input <- cell.source
        - cell.prompt_number <- cell.execution_count
        - update outputs
    markdown cell:
        - single-line heading -> heading cell
    r/   Úpythonr9   r   r?   Nr1   Fr5   ú
r7   z(#+)\s*(.*)r4   r%   Úattachments)r>   r0   r    r2   r3   r!   r1   Údowngrade_outputsrA   rD   Ú
startswithÚreÚmatchÚgroupsr9   Úlenr6   )r+   r9   rM   ÚprefixÚtexts        r   Údowngrade_cellrR   ‡   s$  € ð „~˜ÒÐØ ˆŒØ—X’X˜h¨Ñ+Ô+ˆŒ
Ø!ŸXšXÐ&7¸Ñ>Ô>ˆÔØœ×*Ò*¨;¸Ñ>Ô>ˆŒÝ(¨¬Ñ6Ô6ˆŒˆØ	Œ˜:Ò	%Ð	%Ø—’˜( BÑ'Ô'ˆØ�vÐÐ &×"3Ò"3°CÑ"8Ô"8ÐÝ”H˜^¨VÑ4Ô4ˆEØÐ$Ð$Ð$Ø Ÿ<š<™>œ>‰LˆF�DØ&ˆDŒNØˆDŒKÝ˜V™œˆDŒJØ‡H‚HˆT�4ÑÔÐØ‡H‚Hˆ]˜DÑ!Ô!Ð!Ø€Kr-   z
text/plainz	text/htmlzimage/svg+xmlú	image/pngú
image/jpegz
text/latexúapplication/jsonzapplication/javascript)rQ   r<   ÚsvgÚpngÚjpegÚlatexÚjsonÚ
javascriptc                ó|   — t                                ¦   «         D ]!\  }}|| v r|                      |¦  «        | |<   Œ"| S )z4convert dict with v3 aliases to plain mime-type keys)Ú	_mime_mapÚitemsr    )ÚdÚaliasÚmimes      r   Úto_mime_keyrb   ²   sA   € å —’Ñ(Ô(ð #ð #‰ˆˆtØ�Aˆ:ˆ:Ø—e’e˜E‘l”lˆAˆd‰GøØ€Hr-   c                óf   — i }t                                ¦   «         D ]\  }}|| v r| |         ||<   Œ|S )z.convert dict with mime-type keys to v3 aliases)r]   r^   )r_   Úd2r`   ra   s       r   Úfrom_mime_keyre   º   s@   € à	€BÝ —’Ñ(Ô(ð  ð  ‰ˆˆtØ�1ˆ9ˆ9Ø˜$œˆBˆu‰IøØ€Ir-   c                óœ  — | d         dv �r	|                       dt          ¦   «         ¦  «         | d         dk    rd| d<   |                      dd¦  «        | d<   i }t          | ¦  «        D ]}|d	v rŒ|                      |¦  «        ||<   Œ t	          |¦  «         || d
<   t	          | j        ¦  «         d|v rt          j        |d         ¦  «        |d<   dD ]?}||v r9t          ||         t          ¦  «        r||          
                    d¦  «        ||<   Œ@n7| d         dk    rd| d<   n%| d         dk    r|                      dd¦  «        | d<   | S )zËupgrade a single code cell output from v3 to v4

    - pyout -> execute_result
    - pyerr -> error
    - output.type -> output.data.mime/type
    - mime-type keys
    - stream.stream -> stream.name
    Úoutput_type>   ÚpyoutÚdisplay_datar!   rh   Úexecute_resultr3   Nr?   >   r!   rg   r?   ÚdatarU   )rS   rT   ÚasciiÚpyerrr   ÚstreamÚstdoutr   )r=   r   r    Úlistrb   r!   rZ   ÚloadsÚ
isinstanceÚbytesÚdecode)Úoutputrk   Úkeys      r   Úupgrade_outputrw   Ã   s…  € ð ˆmÔÐ 9Ð9Ñ9Ø×Ò˜*¥l¡n¤nÑ5Ô5Ð5Ø�-Ô  GÒ+Ð+Ø$4ˆF�=Ñ!Ø(.¯
ª
°?ÀDÑ(IÔ(IˆFÐ$Ñ%ð ˆÝ˜‘<”<ð 	(ð 	(ˆCØÐDÐDÐDØØŸ
š
 3™œˆD�‰IˆIÝ�DÑÔÐØˆˆv‰Ý�F”OÑ$Ô$Ð$Ø Ð%Ð%Ý'+¤z°$Ð7IÔ2JÑ'KÔ'KˆDÐ#Ñ$à.ð 	6ð 	6ˆCØ�dˆ{ˆ{�z¨$¨s¬)µUÑ;Ô;ˆ{Ø  œI×,Ò,¨WÑ5Ô5��S‘	øð	6ð 
�Ô	 'Ò	)Ð	)Ø 'ˆˆ}ÑÐØ	�Ô	 (Ò	*Ð	*ØŸš H¨hÑ7Ô7ˆˆv‰Ø€Mr-   c                óØ  — | d         dv r©| d         dk    rd| d<   |                       dd¦  «        | d<   |                       di ¦  «        }d	|v rt          j        |d	         ¦  «        |d	<   t          |¦  «        }|                      |¦  «         t          |                      d
i ¦  «        ¦  «         n6| d         dk    rd| d<   n$| d         dk    r|                       d¦  «        | d<   | S )zÐdowngrade a single code cell output to v3 from v4

    - pyout <- execute_result
    - pyerr <- error
    - output.data.mime/type -> output.type
    - un-mime-type keys
    - stream.stream <- stream.name
    rg   >   ri   rj   rj   rh   r?   Nr3   rk   rU   r!   r   rm   rn   r   )r    rZ   Údumpsre   ÚupdaterD   )ru   rk   s     r   Údowngrade_outputr{   è   s
  € ð ˆmÔÐ BÐBÐBØ�-Ô Ð$4Ò4Ð4Ø$+ˆF�=Ñ!Ø&,§j¢jÐ1BÀDÑ&IÔ&IˆF�?Ñ#ð �zŠz˜& "Ñ%Ô%ˆØ Ð%Ð%Ý'+¤z°$Ð7IÔ2JÑ'KÔ'KˆDÐ#Ñ$Ý˜TÑ"Ô"ˆØ�Š�dÑÔÐÝ�f—j’j ¨RÑ0Ô0Ñ1Ô1Ð1Ð1Ø	�Ô	 'Ò	)Ð	)Ø 'ˆˆ}ÑÐØ	�Ô	 (Ò	*Ð	*Ø!Ÿ:š: fÑ-Ô-ˆˆxÑØ€Mr-   c                ó   — d„ | D ¦   «         S )z,upgrade outputs of a code cell from v3 to v4c                ó,   — g | ]}t          |¦  «        ‘ŒS © )rw   ©Ú.0Úops     r   ú
<listcomp>z#upgrade_outputs.<locals>.<listcomp>  s    € Ð1Ð1Ð1 2�N˜2ÑÔÐ1Ð1Ð1r-   r~   ©rA   s    r   r@   r@     s   € à1Ð1¨Ð1Ñ1Ô1Ð1r-   c                ó   — d„ | D ¦   «         S )z.downgrade outputs of a code cell to v3 from v4c                ó,   — g | ]}t          |¦  «        ‘ŒS r~   )r{   r   s     r   r‚   z%downgrade_outputs.<locals>.<listcomp>  s!   € Ð3Ð3Ð3 RÕ˜RÑ Ô Ð3Ð3Ð3r-   r~   rƒ   s    r   rJ   rJ   	  s   € à3Ð3¨7Ð3Ñ3Ô3Ð3r-   c                ó
  — | j         t           k    r| S t          | t           ¦  «         t          j         | _         t          j        | _        d„ |                      d¦  «        D ¦   «         }t          j        |¬¦  «        g| _        | j                             dd¦  «         t          | t          j         ¦  «         | j                             dt           ¦  «        | _	        | j                             dt          ¦  «        | _
        | S )z”Convert a v4 notebook to v3.

    Parameters
    ----------
    nb : NotebookNode
        The Python representation of the notebook to convert.
    c                ó,   — g | ]}t          |¦  «        ‘ŒS r~   )rR   )r€   r+   s     r   r‚   zdowngrade.<locals>.<listcomp>  s    € Ð>Ð>Ð> d�^˜DÑ!Ô!Ð>Ð>Ð>r-   r   )r   r   r   r   r   )r
   r   r   r   r    Únew_worksheetr   r!   r=   r   r   )r   r   s     r   Ú	downgrader‰     sÓ   € ð 
„{•hÒÐØˆ	õ �R�Ñ"Ô"Ð"å”+€B„KÝÔ)€BÔØ>Ð>¨b¯fªf°W©o¬oÐ>Ñ>Ô>€EÝÔ%¨EÐ2Ñ2Ô2Ð3€B„MØ„K×Ò˜6 2Ñ&Ô&Ð&õ �R�œÑ%Ô%Ð%à”{—’ ½ÑAÔA€BÔØœ[Ÿ_š_Ð-BÅNÑSÔS€BÔà€Ir-   )NN)Ú__doc__Ú
__future__r   rZ   rL   Útraitlets.logr   r
   r   r   Únbformat.corpus.wordsr   r$   Únbformat.notebooknoder   Únbbaser   r   r,   r#   rR   r]   rb   re   rw   r{   r@   rJ   r‰   r~   r-   r   ú<module>r�      s|  ðØ 3Ð 3ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	à $Ð $Ð $Ð $Ð $Ð $à "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø FÐ FÐ FÐ FÐ FÐ FØ .Ð .Ð .Ð .Ð .Ð .à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,ðMð Mð MðFð Fð Fð FðRð ð ðBð ð ð@ ØØØØØØØ*ð	ð 	€	ðð ð ðð ð ð"ð "ð "ðJð ð ð82ð 2ð 2ð
4ð 4ð 4ð
ð ð ð ð r-   