
    ^h                    J   S r SSKJr  SSKrSSKJrJrJrJrJ	r	J
r
Jr  SSKJrJr  \R                  " S5      r " S S	\5      r " S
 S\5      r " S S\5      r\" 5       r\" 5       r\R.                  r\R0                  r\R2                  r\R4                  r\R6                  rg)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                      \ rS rSrSrSrg)PyReaderError(   z%An error raised for a pyreader error. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       J/home/james-whalen/.local/lib/python3.13/site-packages/nbformat/v3/nbpy.pyr   r   (   s    /r   r   c                  6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
PyReader,   zA python notebook reader.c                (    U R                   " U40 UD6$ )Convert a string to a notebook)to_notebook)selfskwargss      r   readsPyReader.reads/   s    ,V,,r   c                   UR                  5       n/ n/ n0 nSnU GH  nUR                  S5      (       d  [        R                  U5      (       a  M6  UR                  S5      (       a/  U R                  " Xe40 UD6nUb  UR                  U5        Sn/ n0 nM{  UR                  S5      (       a/  U R                  " Xe40 UD6nUb  UR                  U5        Sn/ n0 nM  UR                  S5      (       a0  U R                  " Xe40 UD6nUb  UR                  U5        Sn/ n0 nGM  UR                  S5      (       a0  U R                  " Xe40 UD6nUb  UR                  U5        S	n/ n0 nGML  UR                  S
5      (       ap  U R                  " Xe40 UD6nUb  UR                  U5        / n[        R                  " SU5      n	U	b$  Sn0 n[        U	R                  S5      5      US'   GM  Sn0 n/ nGM  UR                  U5        GM     U(       a+  US:X  a%  U R	                  Xe5      nUb  UR                  U5        [        US9n
[        U
/S9$ )r   codecellz# <nbformat># <codecell># <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"   linesr0   
cell_linesstatelinecellmwss              r   r   PyReader.to_notebook3   s0    "
D~..2J2P2PQU2V2V00}}UA&A#LL&"
00}}UA&A#LL&"
!344}}UA&A#LL&&
!EFF}}UA&A#LL&!
!122}}UA&A#LL&!#JHHCTJ=)EF&)!'''*:&;F7O&EF!#J!!$'_ ` %:-==3DT"'t,,r   c                   US:X  a3  SR                  U5      nUR                  S5      nU(       a	  [        US9$ gUS:X  a#  U R                  U5      nU(       a
  [	        SUS9$ gUS:X  a#  U R                  U5      nU(       a
  [	        SUS9$ gUS	:X  a#  U R                  U5      nU(       a
  [	        S
US9$ gUS:X  a4  U R                  U5      nUR                  SS5      nU(       a	  [        XVS9$ gg)zCreate a new cell.r&   
)inputr)   html)sourcer+   markdownr-   rawr.   r/   r   )rG   r/   N)joinstripr   _remove_commentsr
   getr   )r    r=   r;   r"   input_textr/   s          r   r6   PyReader.new_cellq   s    JYYu%F\\$'F$622 j ((/D$VD99 n$((/D$Z== i((/D$U488 m#((/DJJw*E'tAA  $r   c                    / nU H@  nUR                  S5      (       a  UR                  USS  5        M/  UR                  U5        MB     SR                  U5      nUR                  S5      nU$ )N#   rD   )r3   r7   rJ   rK   )r    r;   	new_linesr>   rO   s        r   rL   PyReader._remove_comments   se    	Ds##  ab*  &	 
 yy#zz$r   c              #    #    [        U5      S:X  a  US   v   [        5       eSSKnSR                  U5      nUR	                  U5      nUR
                   Vs/ s H  oUR                  S-
  PM     nn[        [        U5      S-
  5       H/  nSR                  XU   XgS-       5      R                  S5      v   M1     SR                  XS   S 5      R                  S5      v   gs  snf 7f)zSplit lines into code blocks.r   r   NrD   )	lenStopIterationastrJ   parsebodylinenorangerK   )r    r;   rZ   rG   codexstartsis           r   split_lines_into_blocks PyReader.split_lines_into_blocks   s     u:?(N/!5!yy (,		2	1((Q,	2s6{Q'A))E)fUm<=CCDII (iiRjl+,22488 3s   AC(C#/A9C(r   N)r   r   r   r   r   r#   r   r6   rL   rc   r   r   r   r   r   r   ,   s     #-<-|B2	9r   r   c                      \ rS rSrSrS rSrg)PyWriter   zA Python notebook writer.c           	        S/nUR                  S[        [        4-  S/5        UR                   GH  nUR                   GH  nUR
                  S:X  a[  UR                  S5      nUbE  UR                  SS/5        UR                  UR                  5       5        UR                  S5        Mm  Mo  UR
                  S:X  ao  UR                  S5      nUbY  UR                  S	S/5        UR                  UR                  5        Vs/ s H  nS
U-   PM
     sn5        UR                  S5        M  M  UR
                  S:X  aq  UR                  S5      nUbZ  UR                  SS/5        UR                  UR                  5        Vs/ s H  nS
U-   PM
     sn5        UR                  S5        GMl  GMo  UR
                  S:X  aq  UR                  S5      nUbZ  UR                  SS/5        UR                  UR                  5        Vs/ s H  nS
U-   PM
     sn5        UR                  S5        GM  GM  UR
                  S:X  d  GM  UR                  S5      nUR                  SS5      nUc  GM,  UR                  SU-  S/5        UR                  UR                  5        Vs/ s H  nS
U-   PM
     sn5        UR                  S5        GM     GM     UR                  S5        SR                  U5      $ s  snf s  snf s  snf s  snf )zConvert a notebook to a string.z# -*- coding: utf-8 -*-z# <nbformat>%i.%i</nbformat> r_   rE   r'   rF   rG   r(   z# rH   r*   rI   r,   headingr/   r   z# <headingcell level=%s>rD   )
extendr   r   r1   r0   	cell_typerM   r2   r7   rJ   )	r    nbr"   r;   rA   r?   rN   r>   r/   s	            r   writesPyWriter.writes   s   *+.(N1KK	
 --B>>V+!XXg.F)nb%9:V%6%6%89R( * ^^v-!XXh/F)nb%9:f>O>O>Q%R>QddTk>Q%RSR( * ^^z1!XXh/F)&8"%=>f>O>O>Q%R>QddTk>Q%RSR( * ^^u,!XXh/F)mR%89f>O>O>Q%R>QddTk>Q%RSR( * ^^y0!XXh/F HHWa0E)&@5&H"%MNf>O>O>Q%R>QddTk>Q%RSR(? !  B 	Ryy- &S &S &S &Ss   K2K7K<Lr   N)r   r   r   r   r   rn   r   r   r   r   rf   rf      s
    #+ r   rf   )r   
__future__r   r8   nbbaser   r   r   r   r	   r
   r   rwbaser   r   compiler4   	Exceptionr   r   rf   _reader_writerr#   readr   writern   r   r   r   <module>ry      s   " # 	   3 ::&CD 0I 0u9~ u9p. ~ . b *
*||!!	r   