
    ^h                    >   S r SSKJr  SSKrSSK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\R*                  r\R,                  r\R.                  r\R0                  rg)zJRead and write notebooks as regular .py files.

Authors:

* Brian Granger
    )annotationsN   )new_code_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 by the PyReader. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       J/home/james-whalen/.local/lib/python3.13/site-packages/nbformat/v2/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SnU GH
  nUR                  S5      (       d  [        R                  U5      (       a  M6  UR                  S5      (       a+  U R	                  Xe5      nUb  UR                  U5        Sn/ nMw  UR                  S5      (       a+  U R	                  Xe5      nUb  UR                  U5        Sn/ nM  UR                  S5      (       a+  U R	                  Xe5      nUb  UR                  U5        Sn/ n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)cells)
worksheets)
splitlines
startswith_encoding_declaration_rematchnew_cellappendr   r   )
r   r   r   linesr)   
cell_linesstatelinecellwss
             r   r   PyReader.to_notebook+   sG    "
D~..2J2P2PQU2V2V00}}U7#LL&"
00}}U7#LL&"
!344}}U7#LL&&
!!$'- . %:-==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	g	)
zCreate a new cell.r#   
)inputr&   html)sourcer(   markdownN)joinstripr   _remove_commentsr   )r   r3   r1   input_texts        r   r/   PyReader.new_cellO   s    JYYu%F\\$'F$622 j ((/D$VD99 n$((/D$Z==  %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#   r9   )r,   r0   r>   r?   )r   r1   	new_linesr4   rB   s        r   r@   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   Nr9   )	lenStopIterationastr>   parsebodylinenoranger?   )r   r1   rM   r<   codexstartsis           r   split_lines_into_blocks PyReader.split_lines_into_blocksj   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   r/   r@   rV   r   r   r   r   r   r   $   s    #-"-H> 	9r   r   c                      \ rS rSrSrS rSrg)PyWritery   zA Python notebook writer.c           	        S/nUR                  SS/5        UR                   GH  nUR                   GHo  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  d  GM  UR	                  S5      nUc  GM  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Mr     GM     UR                  S5        [        SR                  U5      5      $ s  snf s  snf )z&Convert a notebook object to a string.z# -*- coding: utf-8 -*-z# <nbformat>2</nbformat> rR   r:   r$   r;   r<   r%   z# r=   r'   r9   )	extendr*   r)   	cell_typegetr+   r0   strr>   )r   nbr   r1   r6   r5   rA   r4   s           r   writesPyWriter.writes|   s   *+0"56--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(% !  ( 	R499U#$$ &S &Ss   6G;Gr   N)r   r   r   r   r   rb   r   r   r   r   rY   rY   y   s
    #%r   rY   )r   
__future__r   renbbaser   r   r   r   rwbaser	   r
   compiler-   	Exceptionr   r   rY   _reader_writerr    readr   writerb   r   r   r   <module>rn      s   " # 	 M M 2 ::&CD +I +R9~ R9j%~ %> *
*||!!	r   