
    Mh                    v    d Z ddlmZ d Zd Zd ZddhZd Zd	 Zd
 Z	 G d d          Z
 G d d          ZdS )z3Base classes and utilities for readers and writers.    )annotationsc                b    | dk    p)|                      d          o|                     d          S )z4Is a key a JSON mime-type that should be left alone?zapplication/jsonzapplication/z+json)
startswithendswith)mimes    R/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/nbformat/v4/rwbase.py_is_json_mimer	      s5    %% ''BDMM',B,B    c                    t          |                                           D ]Z\  }}t          |          sFt          |t                     r1t	          d |D                       rd                    |          | |<   [| S )z>Rejoin the multi-line string fields in a mimebundle (in-place)c              3  @   K   | ]}t          |t                    V  d S )N)
isinstancestr).0lines     r   	<genexpr>z%_rejoin_mimebundle.<locals>.<genexpr>   s,      <<dJtS))<<<<<<r
    )listitemsr	   r   alljoindatakeyvalues      r   _rejoin_mimebundler      s    4::<<(( ' '
Uc""	'5$''	' <<e<<<<<	'
 DIKr
   c                   | j         D ]:}d|v r9t          |j        t                    rd                    |j                  |_        |                    di           }|                                D ]\  }}t          |           |                    dd          dk    r|                    dg           D ]}|                    dd          }|d	v r$t          |                    d
i                      @|rHt          |                    dd          t                    rd                    |j                  |_        <| S )a&  rejoin multiline text into strings

    For reversing effects of ``split_lines(nb)``.

    This only rejoins lines that have been split, so if text objects were not split
    they will pass through unchanged.

    Used when reading JSON files that may have been passed through split_lines.
    sourcer   attachments	cell_typeNcodeoutputsoutput_type   display_dataexecute_resultr   text)	cellsr   r   r   r   getr   r   r&   )nbcellr   _
attachmentoutputr"   s          r   rejoin_linesr.      s@     7 7t
4; = =''$+..DKhh}b11(..00 	+ 	+MAzz****88K&&&00((9b11 7 7$jj;;"DDD&vzz&"'='=>>>>  7Z

620F0F%M%M 7"$''&+"6"6FKIr
   zapplication/javascriptzimage/svg+xmlc                    t          |                                           D ]P\  }}t          |t                    r6|                    d          s	|t
          v r|                    d          | |<   Q| S )z9Split multi-line string fields in a mimebundle (in-place)ztext/T)r   r   r   r   r   _non_text_split_mimes
splitlinesr   s      r   _split_mimebundler2   =   sr    4::<<(( / /
UeS!! 	/s~~g'>'> 	/#I^B^B^((..DIKr
   c                .   | j         D ]}|                    dd          }t          |t                    r|                    d          |d<   |                    di           }|                                D ]\  }}t          |           |j        dk    r{|j        D ]s}|j	        dv r$t          |                    di                      /|j	        dk    r9t          |j
        t                    r|j
                            d          |_
        t| S )	zsplit likely multiline text into lists of strings

    For file output more friendly to line-based VCS. ``rejoin_lines(nb)`` will
    reverse the effects of ``split_lines(nb)``.

    Used when writing JSON files.
    r   NTr   r    r#   r   stream)r'   r(   r   r   r1   r   r2   r   r!   r"   r&   )r)   r*   r   r   r+   r,   r-   s          r   split_linesr5   E   s     ? ?(D))fc"" 	5#..t44DNhh}b11(..00 	* 	*MAzj))))>V##, ? ?%)KKK%fjj&<&<===='833
6;PS8T8T3"(+"8"8">">FKIr
   c                    | j                             dd           | j                             dd           | j                             dd           | j        D ]}|j                             dd           | S )zsStrip transient values that shouldn't be stored in files.

    This should be called in *both* read and write.
    orig_nbformatNorig_nbformat_minor	signaturetrusted)metadatapopr'   )r)   r*   s     r   strip_transientr=   _   sx    
 KOOOT***KOO)4000KOOK&&& + +)T****Ir
   c                      e Zd ZdZd Zd ZdS )NotebookReaderzA class for reading notebooks.c                $    d}t          |          )zRead a notebook from a string.z'reads must be implemented in a subclassNotImplementedError)selfskwargsmsgs       r   readszNotebookReader.readso   s    7!#&&&r
   c                F    |                                 } | j        |fi |S )z'Read a notebook from a file like object)readrG   )rC   fprE   nbss       r   rI   zNotebookReader.readt   s)    ggiitz#(((((r
   N)__name__
__module____qualname____doc__rG   rI    r
   r   r?   r?   l   s8        ((' ' '
) ) ) ) )r
   r?   c                      e Zd ZdZd Zd ZdS )NotebookWriterzA class for writing notebooks.c                $    d}t          |          )zWrite a notebook to a string.z(writes must be implemented in a subclassrA   )rC   r)   rE   rF   s       r   writeszNotebookWriter.writes}   s    8!#&&&r
   c                H     | j         |fi |}|                    |          S )z&Write a notebook to a file like object)rT   write)rC   r)   rJ   rE   rK   s        r   rV   zNotebookWriter.write   s+    dk"''''xx}}r
   N)rL   rM   rN   rO   rT   rV   rP   r
   r   rR   rR   z   s8        ((' ' '
    r
   rR   N)rO   
__future__r   r	   r   r.   r0   r2   r5   r=   r?   rR   rP   r
   r   <module>rX      s    9 9 # " " " " "  	 	 	  :      4
 
 
) ) ) ) ) ) ) )         r
   