o
    º¼tfà  ã                   @  s¨   d Z ddlmZ ddlZddlmZmZmZmZ ddl	m
Z
mZ e d¡ZG dd	„ d	eƒZG d
d„ de
ƒZG d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é   )Únew_code_cellÚnew_notebookÚnew_text_cellÚnew_worksheet)ÚNotebookReaderÚNotebookWriterz^#.*coding[:=]\s*([-\w.]+)c                   @  s   e Zd ZdZdS )ÚPyReaderErrorz An error raised by the PyReader.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   úY/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/nbformat/v2/nbpy.pyr
       s    r
   c                   @  s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚPyReaderzA Python notebook reader.c                 K  s   | j |fi |¤ŽS )úConvert a string to a notebook.)Úto_notebook)ÚselfÚsÚkwargsr   r   r   Úreads'   s   zPyReader.readsc           
      K  s  |  ¡ }g }g }d}|D ]]}| d¡st |¡rq| d¡r2|  ||¡}|dur-| |¡ d}g }q| d¡rK|  ||¡}|durF| |¡ d}g }q| d¡rd|  ||¡}|dur_| |¡ d}g }q| |¡ q|r|dkr|  ||¡}|dur| |¡ t|d	}	t|	gd
S )r   Úcodecellz# <nbformat>ú# <codecell>Nú# <htmlcell>Úhtmlcellú# <markdowncell>Úmarkdowncell)Úcells)Ú
worksheets)Ú
splitlinesÚ
startswithÚ_encoding_declaration_reÚmatchÚnew_cellÚappendr   r   )
r   r   r   Úlinesr   Z
cell_linesÚstateÚlineÚcellÚwsr   r   r   r   +   s@   







zPyReader.to_notebookc                 C  s~   |dkrd  |¡}| d¡}|rt|dS d	S |dkr*|  |¡}|r(td|dS d	S |dkr;|  |¡}|r=td|dS d	S d	S )
zCreate a new cell.r   Ú
)Úinputr   Úhtml)Úsourcer   ÚmarkdownN)ÚjoinÚstripr   Ú_remove_commentsr   )r   r'   r&   Úinput_Útextr   r   r   r$   O   s"   


ÿ
ÿ
ýzPyReader.new_cellc                 C  sN   g }|D ]}|  d¡r| |dd … ¡ q| |¡ qd |¡}| d¡}|S )Nú#é   r+   )r!   r%   r0   r1   )r   r&   Ú	new_linesr(   r4   r   r   r   r2   _   s   


zPyReader._remove_commentsc                 c  s¨    t |ƒdkr|d V  tƒ ‚ddl}d |¡}| |¡}dd„ |jD ƒ}tt |ƒd ƒD ]}d ||| ||d  … ¡ d¡V  q-d ||d d… ¡ d¡V  dS )zSplit lines into code blocks.r   r   Nr+   c                 S  s   g | ]}|j d  ‘qS )r   )Úlineno)Ú.0Úxr   r   r   Ú
<listcomp>s   s    z4PyReader.split_lines_into_blocks.<locals>.<listcomp>éÿÿÿÿ)ÚlenÚStopIterationÚastr0   ÚparseÚbodyÚranger1   )r   r&   r?   r.   ÚcodeZstartsÚir   r   r   Úsplit_lines_into_blocksj   s   €


("z PyReader.split_lines_into_blocksN)	r   r   r   r   r   r   r$   r2   rE   r   r   r   r   r   $   s    $r   c                   @  s   e Zd ZdZdd„ ZdS )ÚPyWriterzA Python notebook writer.c                 K  s"  dg}|  ddg¡ |jD ]w}|jD ]q}|jdkr6| d¡}|dur5|  ddg¡ |  | ¡ ¡ | d¡ q|jdkr]| d	¡}|dur\|  d
dg¡ |  dd„ | ¡ D ƒ¡ | d¡ q|jdkrƒ| d	¡}|durƒ|  ddg¡ |  dd„ | ¡ D ƒ¡ | d¡ qq| d¡ td |¡ƒS )z&Convert a notebook object to a string.z# -*- coding: utf-8 -*-z# <nbformat>2</nbformat>Ú rC   r,   Nr   r-   r.   r   c                 S  ó   g | ]}d | ‘qS ©z# r   ©r9   r(   r   r   r   r;   Œ   ó    z#PyWriter.writes.<locals>.<listcomp>r/   r   c                 S  rH   rI   r   rJ   r   r   r   r;   ’   rK   r+   )	Úextendr   r   Z	cell_typeÚgetr    r%   Ústrr0   )r   Únbr   r&   r*   r)   r3   r   r   r   Úwrites|   s8   




€


€


€î
zPyWriter.writesN)r   r   r   r   rP   r   r   r   r   rF   y   s    rF   )r   Ú
__future__r   ÚreZnbbaser   r   r   r   Zrwbaser   r	   Úcompiler"   Ú	Exceptionr
   r   rF   Ú_readerZ_writerr   Úreadr   ÚwriterP   r   r   r   r   Ú<module>   s     
U
