
    Mh%              	          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        S/var/www/html/test/jupyter/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JJ,-Jq\*** 55 ff%:DAA$1$6Q!*=*B' * ! 7e &&r** 	1 	1B7 1 1\$//00001 	###
R(((X&&&	q''I >> + +(***4'*	
	13?	@      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 )zupgrade 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;    	OOJ///DG~R   $)-+)>)>DM+&hhw++#xx>>&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$    ~ XXh++
!XX&7>>**;>>(66	:	%	%(B''v&"3"3C"8"8H^V44E$$$ <<>>LFD&DNDKVDJHHT4HH]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::eeEllAdG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199$BuI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 )zupgrade 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*lnn555- G++$4F=!(.

?D(I(IF$% << 	( 	(CDDD

3DIIDvFO$$$%%'+z$7I2J'K'KD#$. 	6 	6Cd{{z$s)U;;{ I,,W55S		6 
	'	)	) '}		(	*	*Hh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 )zdowngrade 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=!&,jj1BD&I&IF?# zz&"%%%%'+z$7I2J'K'KD#$T""dfjj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12N2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3RR  333r-   r~   r   s    r   rJ   rJ   	  s    337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 )zConvert 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"""+BK)B>>bffWoo>>>E%E2223BMK62&&& R%%%{AAB[__-BNSSB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-   