
    Mh                    4   d Z ddlmZ ddlZddlmZmZmZmZm	Z	m
Z
mZ ddlmZmZ  ej        d          Z G d d	e          Z G d
 de          Z G d de          Z e            Z e            Zej        Zej        Zej        Zej        Zej        ZdS )zJRead and write notebooks as regular .py files.

Authors:

* Brian Granger
    )annotationsN   )nbformatnbformat_minornew_code_cellnew_heading_cellnew_notebooknew_text_cellnew_worksheet)NotebookReaderNotebookWriterz^#.*coding[:=]\s*([-\w.]+)c                      e Zd ZdZdS )PyReaderErrorz%An error raised for a pyreader error.N)__name__
__module____qualname____doc__     P/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/nbformat/v3/nbpy.pyr   r   (   s        ////r   r   c                  0    e Zd ZdZd Zd Zd Zd Zd ZdS )PyReaderzA python notebook reader.c                     | j         |fi |S )Convert a string to a notebook)to_notebook)selfskwargss      r   readszPyReader.reads/   s    t,,V,,,r   c                   |                                 }g }g }i }d}|D ]}|                    d          st                              |          r3|                    d          r- | j        ||fi |}||                    |           d}g }i }u|                    d          r- | j        ||fi |}||                    |           d}g }i }|                    d          r- | j        ||fi |}||                    |           d}g }i }|                    d	          r. | j        ||fi |}||                    |           d
}g }i }<|                    d          rr | j        ||fi |}||                    |           g }t          j        d|          }	|	+d}i }t          |	                    d                    |d<   d}i }g }|                    |           |r3|dk    r-|                     ||          }||                    |           t          |          }
t          |
g          S )r   codecellz# <nbformat># <codecell>N# <htmlcell>htmlcell# <markdowncell>markdowncell)# <rawcell>z# <plaintextcell>rawcellz# <headingcellz## <headingcell level=(?P<level>\d)>headingcelllevel)cells)
worksheets)
splitlines
startswith_encoding_declaration_rematchnew_cellappendreintgroupr   r	   )r   r   r   linesr+   
cell_linesstatelinecellmwss              r   r   zPyReader.to_notebook3   s    "
 /	( /	(D~.. .(2J2P2PQU2V2V .(00 ,($t}UJAA&AA#LL&&&"
00 %($t}UJAA&AA#LL&&&"
!344 ($t}UJAA&AA#LL&&&&
!EFF ($t}UJAA&AA#LL&&&!
!122 ($t}UJAA&AA#LL&&&!#JHCTJJ=)EF&)!'''*:*:&;&;F7OO&EF!#JJ!!$'''' 	#%:--==
33DT"""'''t,,,,r   c                :   |dk    r>d                     |          }|                    d          }|rt          |          S dS |dk    r*|                     |          }|rt	          d|          S dS |dk    r*|                     |          }|rt	          d|          S dS |d	k    r*|                     |          }|rt	          d
|          S dS |dk    r>|                     |          }|                    dd          }|rt          ||          S dS dS )zCreate a new cell.r!   
)inputr$   html)sourcer&   markdownr(   rawr)   r*   r   )rA   r*   N)joinstripr   _remove_commentsr
   getr   )r   r8   r6   r   input_textr*   s          r   r1   zPyReader.new_cellq   s|   JYYu%%F\\$''F 3$622223 3j  ((//D :$VD9999: :n$$((//D >$Z====> >i((//D 9$U488889 9m##((//DJJw**E B't5AAAA	 $#B Br   c                    g }|D ]J}|                     d          r|                    |dd                     5|                    |           Kd                    |          }|                    d          }|S )N#   r>   )r.   r2   rD   rE   )r   r6   	new_linesr9   rI   s        r   rF   zPyReader._remove_comments   s    	 	' 	'Ds## '  abb****  &&&&yy##zz$r   c              #    K   t          |          dk    r|d         V  t                      ddl}d                    |          }|                    |          }d |j        D             }t          t          |          dz
            D ]C}d                    |||         ||dz                                                   d          V  Dd                    ||d         d                                       d          V  dS )zSplit lines into code blocks.r   r   Nr>   c                "    g | ]}|j         d z
  S )r   )lineno).0xs     r   
<listcomp>z4PyReader.split_lines_into_blocks.<locals>.<listcomp>   s    2221!(Q,222r   )lenStopIterationastrD   parsebodyrangerE   )r   r6   rW   rA   codestartsis          r   split_lines_into_blocksz PyReader.split_lines_into_blocks   s     u::??(NNN//!


5!!yy  22	222s6{{Q'' 	J 	JA))E&)fQUm";<==CCDIIIIIIiifRjll+,,2248888888r   N)	r   r   r   r   r   r   r1   rF   r^   r   r   r   r   r   ,   si        ##- - -<- <- <-|B B B2	 	 	9 9 9 9 9r   r   c                      e Zd ZdZd ZdS )PyWriterzA Python notebook writer.c                   dg}|                     dt          t          fz  dg           |j        D ]}|j        D ]}|j        dk    rk|                    d          }|S|                     ddg           |                     |                                           |                    d           y|j        dk    ru|                    d	          }|]|                     d
dg           |                     d |                                D                        |                    d           |j        dk    rv|                    d	          }|]|                     ddg           |                     d |                                D                        |                    d           z|j        dk    rv|                    d	          }|]|                     ddg           |                     d |                                D                        |                    d           |j        dk    r|                    d	          }|                    dd          }|`|                     d|z  dg           |                     d |                                D                        |                    d           |                    d           d	                    |          S )zConvert a notebook to a string.z# -*- coding: utf-8 -*-z# <nbformat>%i.%i</nbformat> r[   r?   Nr"   r@   rA   r#   c                    g | ]}d |z   S z# r   rQ   r9   s     r   rS   z#PyWriter.writes.<locals>.<listcomp>       %R%R%RddTk%R%R%Rr   rB   r%   c                    g | ]}d |z   S rd   r   re   s     r   rS   z#PyWriter.writes.<locals>.<listcomp>   rf   r   rC   r'   c                    g | ]}d |z   S rd   r   re   s     r   rS   z#PyWriter.writes.<locals>.<listcomp>   rf   r   headingr*   r   z# <headingcell level=%s>c                    g | ]}d |z   S rd   r   re   s     r   rS   z#PyWriter.writes.<locals>.<listcomp>   rf   r   r>   )
extendr   r   r,   r+   	cell_typerG   r-   r2   rD   )r   nbr   r6   r<   r:   rH   r*   s           r   writeszPyWriter.writes   s   *+.(N1KK	
 	
 	
 -  	)  	)B ) )>V++!XXg..F)nb%9:::V%6%6%8%8999R(((^v--!XXh//F)nb%9:::%R%Rf>O>O>Q>Q%R%R%RSSSR(((^z11!XXh//F)&8"%=>>>%R%Rf>O>O>Q>Q%R%R%RSSSR(((^u,,!XXh//F)mR%8999%R%Rf>O>O>Q>Q%R%R%RSSSR(((^y00!XXh//F HHWa00E)&@5&H"%MNNN%R%Rf>O>O>Q>Q%R%R%RSSSR(((?)@ 	Ryyr   N)r   r   r   r   rn   r   r   r   r`   r`      s)        ##+  +  +  +  + r   r`   )r   
__future__r   r3   nbbaser   r   r   r   r	   r
   r   rwbaser   r   compiler/   	Exceptionr   r   r`   _reader_writerr   readr   writern   r   r   r   <module>rx      s}   " # " " " " " 				                  3 2 2 2 2 2 2 2 &2:&CDD 0 0 0 0 0I 0 0 0u9 u9 u9 u9 u9~ u9 u9 u9p.  .  .  .  . ~ .  .  . b (**
(**|!	r   