Ë
    :vžjØ  ã                  óF  — 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	 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j0                  Zej2                  Zy)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                  ó   — e Zd ZdZy)ÚPyReaderErrorz An error raised by the PyReader.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úa/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/nbformat/v2/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.reads(   s   € àˆt×Ñ Ñ, VÑ,Ð,r   c                ó˜  — |j                  «       }g }g }d}|D ]ë  }|j                  d«      st        j                  |«      rŒ*|j                  d«      r*| j	                  ||«      }|�|j                  |«       d}g }Œe|j                  d«      r*| j	                  ||«      }|�|j                  |«       d}g }Œ |j                  d«      r*| j	                  ||«      }|�|j                  |«       d}g }ŒÛ|j                  |«       Œí |r*|dk(  r%| j	                  ||«      }|�|j                  |«       t        |¬«      }	t        |	g¬	«      S )
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   zPyReader.to_notebook,   s@  € à—‘“ˆØˆØ "ˆ
ØˆÛˆDØ�‰˜~Ô.Ô2J×2PÑ2PÐQUÔ2VØØ—‘ Ô0Ø—}‘} U¨JÓ7�ØÐ#Ø—L‘L Ô&Ø"�Ø‘
Ø—‘ Ô0Ø—}‘} U¨JÓ7�ØÐ#Ø—L‘L Ô&Ø"�Ø‘
Ø—‘Ð!3Ô4Ø—}‘} U¨JÓ7�ØÐ#Ø—L‘L Ô&Ø&�Ø‘
à×!Ñ! $Õ'ð- ñ. ˜% :Ò-Ø—=‘= ¨
Ó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	y	)
zCreate a new cell.r   Ú
)Úinputr!   Úhtml)Úsourcer#   ÚmarkdownN)ÚjoinÚstripr   Ú_remove_commentsr   )r   r.   r,   Úinput_Útexts        r   r*   zPyReader.new_cellP   s˜   € à�JÒØ—Y‘Y˜uÓ%ˆFØ—\‘\ $Ó'ˆFÙÜ$¨6Ô2Ð2ð à�jÒ Ø×(Ñ(¨Ó/ˆDÙÜ$ V°DÔ9Ð9ð à�nÒ$Ø×(Ñ(¨Ó/ˆDÙÜ$ Z¸Ô=Ð=ð ð %r   c                óÊ   — g }|D ]9  }|j                  d«      r|j                  |dd  «       Œ)|j                  |«       Œ; dj                  |«      }|j                  d«      }|S )NÚ#é   r3   )r'   r+   r8   r9   )r   r,   Ú	new_linesr/   r<   s        r   r:   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   r3   éÿÿÿÿN)	ÚlenÚStopIterationr8   ÚastÚparseÚbodyÚlinenoÚranger9   )r   r,   r6   ÚcodeÚxÚstartsÚis          r   Úsplit_lines_into_blocksz PyReader.split_lines_into_blocksk   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   r*   r:   rN   r   r   r   r   r   %   s   „ Ù#ò-ò"-òH>ò 	ó9r   r   c                  ó   — e Zd ZdZd„ Zy)ÚPyWriterzA Python notebook writer.c           	     ó”  — dg}|j                  ddg«       |j                  D �]n  }|j                  D �][  }|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(  sŒó|j	                  d«      }|€�Œ|j                  ddg«       |j                  |j                  «       D �cg c]  }d
|z   ‘Œ	 c}«       |j                  d«       �Œ^ �Œq |j                  d«       t        dj                  |«      «      S c c}w c c}w )z&Convert a notebook object to a string.z# -*- coding: utf-8 -*-z# <nbformat>2</nbformat>Ú rJ   r4   r   r5   r6   r    z# r7   r"   r3   )	Úextendr%   r$   Ú	cell_typeÚgetr&   r+   Ústrr8   )r   Únbr   r,   r1   r0   r;   r/   s           r   ÚwriteszPyWriter.writes|   s‡  € à*Ð+ˆØ�‰Ð0°"Ð5Ô6Ø—-•-ˆ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Ö(ò% !ð  ð( 	�‰�RÔÜ�4—9‘9˜UÓ#Ó$Ð$ùò &Sùò &Ss   Ã1G Å+GN)r   r   r   r   rX   r   r   r   rP   rP   y   s
   „ Ù#ó%r   rP   )r   Ú
__future__r   rE   ÚreÚnbbaser   r   r   r   Úrwbaser	   r
   Úcompiler(   Ú	Exceptionr   r   rP   Ú_readerÚ_writerr   Úreadr   ÚwriterX   r   r   r   Ú<module>rc      s˜   ðñõ" #ã 
Û 	ç MÓ Mß 2ð &˜2Ÿ:™:Ð&CÓDÐ ô+�Iô +ôQ9ˆ~ô Q9ôh%ˆ~ô %ñ> ‹*€Ù
‹*€à�‰€Ø‡|�|€Ø×!Ñ!€Ø�‰€Ø	�‰�r   