Ë
    :vž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y)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} 	  || |¬«       y# |$ r%}t        «       j	                  d||«       Y d}~y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        úd/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/nbformat/v4/convert.pyÚ_warn_if_invalidr      s?   € ç2ðMÙ�˜WÖ%øØò MÜ‹×ÑÐ?ÀÈ!×LÑLûðMús   Š
 •?š:º?c                ó(  — |s| d   }|s(d| vr|dk(  rd}t        j                  |«      ‚d}n| d   }|dk(  rüt        | |«       | j                  dd«      }| j                  d	d«      }|xs d| j                  _        |xs d| j                  _        t        | _        t        | _        g x| d
<   }| j                  dg «      D ]&  }|d
   D ]  }|j                  t        |«      «       Œ Œ( | j                  j                  dd«       | j                  j                  dd«       t        | t        «       | S |dk(  rN|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Ø‰JàÐ,Ñ-ˆJà�qÒä˜˜\Ô*ð Ÿ™˜°Ó5ˆØ Ÿf™fÐ%:¸DÓAÐØ$1Ò$6°Qˆ�‰Ô!Ø*=Ò*BÀˆ�‰Ô'ô ˆŒÜ*ˆÔð !Ð ˆˆ7‰�eð —&‘&˜ rÖ*ˆBà˜7œ�Ø—‘œ\¨$Ó/Õ0ñ $ð +ð
 	�‰�‰˜ Ô#Ø
�‰�‰˜ RÔ(ä˜œXÔ&Øˆ	Ø�qÒØœÒ'ØˆIð ˜Š>ØŸœ�Ü(Ó*�•ð !ð +5ˆ�‰Ô'Ü*ˆÔàˆ	Ü
ð	1Ø3?ñ	@óð ó    c           	     ó‚  — | j                  dt        «       «       t        «       | _        | j                  dk(  r~| j                  dd«       d| v r| j                  d«      | j                  d<   | j                  dd«      | _        | j                  dd«      | _        t        | j                  «      | _
        | S | j                  d	k(  rcd
| _        | j                  dd«      }dj                  d|z  dj                  | j                  dd«      j                  «       «      ¬«      | _        | S | 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‰M˜+Ñ&Ø—h‘h˜w¨Ó+ˆŒØ#Ÿx™x¨¸Ó>ˆÔÜ& t§|¡|Ó4ˆŒð €Kð 
�‰˜9Ò	$Ø#ˆŒØ—‘˜ !Ó$ˆØ.×5Ñ5Ø˜‘;ØŸ™ §¡¨(°BÓ!7×!BÑ!BÓ!DÓEð 6ó 
ˆŒð €Kð 
�‰˜6Ò	!à#ˆŒØ€Kr-   c                óP  — | j                   dk(  rqd| _        | j                  dd«      | _        | j                  dd«      | _        | j
                  j                  dd«      | _        t        | j                  «      | _        n�| j                   d	k(  rr| j                  dd«      }d
|vr\|j                  d«      rKt        j                  d|«      }|€J ‚|j                  «       \  }}d| _         || _        t        |«      | _        | j                  dd«       | j                  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ˆ�Ø	�‰˜:Ò	%Ø—‘˜( BÓ'ˆØ�vÑ &×"3Ñ"3°CÔ"8Ü—H‘H˜^¨VÓ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                óp   — t         j                  «       D ]  \  }}|| v sŒ| j                  |«      | |<   Œ  | S )z4convert dict with v3 aliases to plain mime-type keys)Ú	_mime_mapÚitemsr    )ÚdÚaliasÚmimes      r   Úto_mime_keyrb   ²   s6   € ä —‘Ö(‰ˆˆtØ�AŠ:Ø—e‘e˜E“lˆAˆdŠGð )ð €Hr-   c                ó\   — i }t         j                  «       D ]  \  }}|| v sŒ| |   ||<   Œ |S )z.convert dict with mime-type keys to v3 aliases)r]   r^   )r_   Úd2r`   ra   s       r   Úfrom_mime_keyre   º   s7   € à	€BÜ —‘Ö(‰ˆˆtØ�1Š9Ø˜$™ˆBˆuŠIð )ð €Ir-   c                ó4  — | d   dv rä| j                  dt        «       «       | d   dk(  rd| d<   | j                  dd«      | d<   i }t        | «      D ]  }|d	v rŒ| j                  |«      ||<   Œ t	        |«       || d
<   t	        | j
                  «       d|v rt        j                  |d   «      |d<   dD ]2  }||v sŒt        ||   t        «      sŒ||   j                  d«      ||<   Œ4 | S | d   dk(  rd| d<   | S | d   dk(  r| j                  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   Ã   sI  € ð ˆmÑÐ 9Ñ9Ø×Ñ˜*¤l£nÔ5Ø�-Ñ  GÒ+Ø$4ˆF�=Ñ!Ø(.¯
©
°?ÀDÓ(IˆFÐ$Ñ%ð ˆÜ˜–<ˆCØÐDÑDØØŸ
™
 3›ˆD�ŠIð  ô 	�DÔØˆˆv‰Ü�F—O‘OÔ$Ø Ñ%Ü'+§z¡z°$Ð7IÑ2JÓ'KˆDÐ#Ñ$ã.ˆCØ�dŠ{œz¨$¨s©)´UÕ;Ø  ™I×,Ñ,¨WÓ5��S’	ð /ð €Mð	 
�Ñ	 'Ò	)Ø 'ˆˆ}Ñð €Mð 
�Ñ	 (Ò	*ØŸ™ H¨hÓ7ˆˆv‰Ø€Mr-   c                ó‚  — | d   dv rŒ| d   dk(  rd| d<   | j                  dd«      | d<   | j                  di «      }d	|v rt        j                  |d	   «      |d	<   t        |«      }| j	                  |«       t        | j                  d
i «      «       | S | d   dk(  rd| d<   | S | d   dk(  r| j                  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Ø�-Ñ Ð$4Ò4Ø$+ˆF�=Ñ!Ø&,§j¡jÐ1BÀDÓ&IˆF�?Ñ#ð �z‰z˜& "Ó%ˆØ Ñ%Ü'+§z¡z°$Ð7IÑ2JÓ'KˆDÐ#Ñ$Ü˜TÓ"ˆØ�‰�dÔÜ�f—j‘j ¨RÓ0Ô1ð
 €Mð	 
�Ñ	 'Ò	)Ø 'ˆˆ}Ñð €Mð 
�Ñ	 (Ò	*Ø!Ÿ:™: fÓ-ˆˆxÑØ€Mr-   c                ó>   — | D �cg c]  }t        |«      ‘Œ c}S c c}w )z,upgrade outputs of a code cell from v3 to v4)rw   ©rA   Úops     r   r@   r@     s   € á)0Ó1© 2ŒN˜2Õ¨Ñ1Ð1ùÒ1ó   …c                ó>   — | D �cg c]  }t        |«      ‘Œ c}S c c}w )z.downgrade outputs of a code cell to v3 from v4)r{   r}   s     r   rJ   rJ   	  s    € á+2Ó3©7 RÔ˜RÕ ¨7Ñ3Ð3ùÒ3r   c                ó4  — | j                   t         k7  r| S t        | t         «       t        j                   | _         t        j                  | _        | j	                  d«      D �cg c]  }t        |«      ‘Œ }}t        j                  |¬«      g| _        | j                  j                  dd«       t        | t        j                   «       | j                  j	                  dt         «      | _
        | j                  j	                  dt        «      | _        | S c c}w )z”Convert a v4 notebook to v3.

    Parameters
    ----------
    nb : NotebookNode
        The Python representation of the notebook to convert.
    r   )r   r   r   r   r   )r
   r   r   r   r    rR   Únew_worksheetr   r!   r=   r   r   )r   r+   r   s      r   Ú	downgraderƒ     sÍ   € ð 
‡{�{”hÒØˆ	ô �RœÔ"ä—+‘+€B„KÜ×)Ñ)€BÔØ.0¯f©f°W¬oÓ>©o dŒ^˜DÕ!¨o€EÐ>Ü×%Ñ%¨EÔ2Ð3€B„MØ‡K�K×Ñ˜6 2Ô&ô �RœŸ™Ô%à—{‘{—‘ ¼ÓA€BÔØŸ[™[Ÿ_™_Ð-BÄNÓS€BÔà€Iùò ?s   Á#D)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   Ú<module>r‹      s€   ðÙ 3õ #ã Û 	å $ç "Ý FÝ .ç ,òMóFòRòBð@ ØØØØØØØ*ñ	€	òòò"òJò82ò
4ó
r-   