Ë
    :vžj  ã                  óR  — d Z ddlmZ ddl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j0                  Zej2                  Zej4                  Zej6                  Zej8                  Zy)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y)ÚPyReaderErrorz%An error raised for a pyreader error.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úa/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/nbformat/v3/nbpy.pyr   r   )   s   „ Ú/r   r   c                  ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚPyReaderzA python notebook reader.c                ó(   —  | j                   |fi |¤ŽS )úConvert a string to a notebook)Úto_notebook)ÚselfÚsÚkwargss      r   ÚreadszPyReader.reads0   s   € àˆt×Ñ Ñ, VÑ,Ð,r   c                ó2  — |j                  «       }g }g }i }d}|D �]µ  }|j                  d«      st        j                  |«      rŒ+|j                  d«      r. | j                  ||fi |¤Ž}|�|j                  |«       d}g }i }Œj|j                  d«      r. | j                  ||fi |¤Ž}|�|j                  |«       d}g }i }Œ©|j                  d«      r. | j                  ||fi |¤Ž}|�|j                  |«       d}g }i }Œè|j                  d«      r/ | j                  ||fi |¤Ž}|�|j                  |«       d	}g }i }�Œ(|j                  d
«      rl | j                  ||fi |¤Ž}|�|j                  |«       g }t        j                  d|«      }	|	�#d}i }t        |	j                  d«      «      |d<   �Œ�d}i }g }�Œ¥|j                  |«       �Œ¸ |r*|dk(  r%| j	                  ||«      }|�|j                  |«       t        |¬«      }
t        |
g¬«      S )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   Úlinesr+   Ú
cell_linesÚstateÚlineÚcellÚmÚwss              r   r   zPyReader.to_notebook4   s1  € à—‘“ˆØˆØ "ˆ
ØˆØˆÜˆDØ�‰˜~Ô.Ô2J×2PÑ2PÐQUÔ2VØØ—‘ Ô0Ø$�t—}‘} U¨JÑA¸&ÑA�ØÐ#Ø—L‘L Ô&Ø"�Ø�
Ø‘Ø—‘ Ô0Ø$�t—}‘} U¨JÑA¸&ÑA�ØÐ#Ø—L‘L Ô&Ø"�Ø�
Ø‘Ø—‘Ð!3Ô4Ø$�t—}‘} U¨JÑA¸&ÑA�ØÐ#Ø—L‘L Ô&Ø&�Ø�
Ø‘à—‘Ð!EÔFØ$�t—}‘} U¨JÑA¸&ÑA�ØÐ#Ø—L‘L Ô&Ø!�Ø�
Ø’Ø—‘Ð!1Ô2Ø$�t—}‘} U¨JÑA¸&ÑA�ØÐ#Ø—L‘L Ô&Ø!#�JÜ—H‘HÐCÀTÓJ�Ø�=Ø)�EØ�FÜ&)¨!¯'©'°'Ó*:Ó&;�F˜7“Oà&�EØ�FØ!#’Jà×!Ñ! $Ö'ð_ ñ` ˜% :Ò-Ø—=‘= ¨
Ó3ˆDØÐØ—‘˜TÔ"Ü Ô'ˆÜ¨ tÔ,Ð,r   c                óÄ  — |dk(  r1dj                  |«      }|j                  d«      }|rt        |¬«      S y|dk(  r!| j                  |«      }|rt	        d|¬«      S y|dk(  r!| j                  |«      }|rt	        d|¬«      S y|d	k(  r!| j                  |«      }|rt	        d
|¬«      S y|dk(  r3| j                  |«      }|j                  dd«      }|rt        ||¬«      S yy)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_cellr   s  € à�JÒØ—Y‘Y˜uÓ%ˆFØ—\‘\ $Ó'ˆFÙÜ$¨6Ô2Ð2ð à�jÒ Ø×(Ñ(¨Ó/ˆDÙÜ$ V°DÔ9Ð9ð à�nÒ$Ø×(Ñ(¨Ó/ˆDÙÜ$ Z¸Ô=Ð=ð à�iÒØ×(Ñ(¨Ó/ˆDÙÜ$ U°4Ô8Ð8ð à�mÒ#Ø×(Ñ(¨Ó/ˆDØ—J‘J˜w¨Ó*ˆEÙÜ'¨t¸5ÔAÐAð ð $r   c                óÊ   — g }|D ]9  }|j                  d«      r|j                  |dd  «       Œ)|j                  |«       Œ; dj                  |«      }|j                  d«      }|S )NÚ#é   r>   )r.   r2   rD   rE   )r   r6   Ú	new_linesr9   rI   s        r   rF   zPyReader._remove_comments‹   sb   € Øˆ	ÛˆDØ�‰˜sÔ#Ø× Ñ   a b Õ*à× Ñ  Õ&ð	 ð
 �y‰y˜Ó#ˆØ�z‰z˜$ÓˆØˆr   c              #  óÐ  K  — t        |«      dk(  r|d   –— t        «       ‚dj                  |«      }t        j                  |«      }|j
                  D �cg c]  }|j                  dz
  ‘Œ }}t        t        |«      dz
  «      D ]0  }dj                  |||   ||dz       «      j                  d«      –— Œ2 dj                  ||d   d «      j                  d«      –— yc c}w ­w)zSplit lines into code blocks.r   r   r>   éÿÿÿÿN)	ÚlenÚStopIterationrD   ÚastÚparseÚbodyÚlinenoÚrangerE   )r   r6   rA   ÚcodeÚxÚstartsÚis          r   Úsplit_lines_into_blocksz PyReader.split_lines_into_blocks–   sÌ   è ø€ äˆu‹:˜Š?Ø˜‘(ŠNÜ“/Ð!à—‘˜5Ó!ˆÜ�y‰y˜Ó ˆØ(,¯	ª	Ó2©	 1�!—(‘(˜Q“,¨	ˆÐ2Ü”s˜6“{ Q‘Ö'ˆAØ—)‘)˜E &¨¡)¨f°Q¸±U©mÐ<Ó=×CÑCÀDÓIÓIð (à�i‰i˜˜f R™j˜lÐ+Ó,×2Ñ2°4Ó8Ó8ùò 3ùs   ‚AC&ÁC!Á,A:C&N)	r   r   r   r   r   r   r1   rF   r[   r   r   r   r   r   -   s    „ Ù#ò-ò<-ò|Bò2	ó9r   r   c                  ó   — e Zd ZdZd„ Zy)ÚPyWriterzA Python notebook writer.c           	     óÄ  — dg}|j                  dt        t        fz  dg«       |j                  D �]x  }|j                  D �]e  }|j
                  dk(  rX|j                  d«      }|€Œ'|j                  ddg«       |j                  |j                  «       «       |j                  d«       Œk|j
                  dk(  ri|j                  d«      }|€ŒŽ|j                  d	dg«       |j                  |j                  «       D �cg c]  }d
|z   ‘Œ	 c}«       |j                  d«       Œã|j
                  dk(  rk|j                  d«      }|€�Œ|j                  ddg«       |j                  |j                  «       D �cg c]  }d
|z   ‘Œ	 c}«       |j                  d«       �Œ]|j
                  dk(  rk|j                  d«      }|€�Œ�|j                  ddg«       |j                  |j                  «       D �cg c]  }d
|z   ‘Œ	 c}«       |j                  d«       �Œ×|j
                  dk(  s�Œè|j                  d«      }|j                  dd«      }|€�Œ|j                  d|z  dg«       |j                  |j                  «       D �cg c]  }d
|z   ‘Œ	 c}«       |j                  d«       �Œh �Œ{ |j                  d«       dj                  |«      S c c}w c c}w c c}w c c}w )zConvert a notebook to a string.z# -*- coding: utf-8 -*-z# <nbformat>%i.%i</nbformat>Ú rW   r?   r"   r@   rA   r#   z# rB   r%   rC   r'   Úheadingr*   r   z# <headingcell level=%s>r>   )
Úextendr   r   r,   r+   Ú	cell_typerG   r-   r2   rD   )	r   Únbr   r6   r<   r:   rH   r9   r*   s	            r   ÚwriteszPyWriter.writes§   s„  € à*Ð+ˆØ�‰à.´(¼NÐ1KÑKØðô	
ð —-•-ˆBØŸ��Ø—>‘> VÒ+Ø!ŸX™X gÓ.�FØÑ)ØŸ™ n°bÐ%9Ô:ØŸ™ V×%6Ñ%6Ó%8Ô9ØŸ™ RÕ(Ø—^‘^ vÒ-Ø!ŸX™X hÓ/�FØÑ)ØŸ™ n°bÐ%9Ô:ØŸ™¸f×>OÑ>OÔ>QÓ%RÑ>Q°d d¨T£kÐ>QÑ%RÔSØŸ™ RÕ(Ø—^‘^ zÒ1Ø!ŸX™X hÓ/�FØÒ)ØŸ™Ð&8¸"Ð%=Ô>ØŸ™¸f×>OÑ>OÔ>QÓ%RÑ>Q°d d¨T£kÐ>QÑ%RÔSØŸ™ RÖ(Ø—^‘^ uÒ,Ø!ŸX™X hÓ/�FØÒ)ØŸ™ m°RÐ%8Ô9ØŸ™¸f×>OÑ>OÔ>QÓ%RÑ>Q°d d¨T£kÐ>QÑ%RÔSØŸ™ RÖ(Ø—^‘^ yÔ0Ø!ŸX™X hÓ/�FØ ŸH™H W¨aÓ0�EØÒ)ØŸ™Ð&@À5Ñ&HÈ"Ð%MÔNØŸ™¸f×>OÑ>OÔ>QÓ%RÑ>Q°d d¨T£kÐ>QÑ%RÔSØŸ™ RÖ(ò? !ð  ðB 	�‰�RÔØ�y‰y˜ÓÐùò- &Sùò &Sùò &Sùò &Ss   Ã>KÅ7KÇ1KÊKN)r   r   r   r   rd   r   r   r   r]   r]   ¤   s
   „ Ù#ó+ r   r]   )r   Ú
__future__r   rR   r3   Únbbaser   r   r   r   r	   r
   r   Úrwbaser   r   Úcompiler/   Ú	Exceptionr   r   r]   Ú_readerÚ_writerr   Úreadr   Úwriterd   r   r   r   Ú<module>rn      s¤   ðñõ" #ã 
Û 	÷÷ ñ ÷ 3ð &˜2Ÿ:™:Ð&CÓDÐ ô0�Iô 0ôt9ˆ~ô t9ôn. ˆ~ô . ñb ‹*€Ù
‹*€à�‰€Ø‡|�|€Ø×!Ñ!€Ø�‰€Ø	�‰�r   