B
    '=[o                 @   s   d Z ddlZddlZddlmZ ddlmZ G dd deZdd Zdd	d
Z	dddZ
dddZdddZdddZdddZdddZdS ) a3  The basic dict based notebook format.

The Python representation of a notebook is a nested structure of
dictionary subclasses that support attribute access
(ipython_genutils.ipstruct.Struct). The functions in this module are merely
helpers to build the structs in the right form.

Authors:

* Brian Granger
    N)Struct)unicode_typec               @   s   e Zd ZdS )NotebookNodeN)__name__
__module____qualname__ r   r   1lib/python3.7/site-packages/nbformat/v2/nbbase.pyr   "   s   r   c             C   sZ   t | tr6t }x |  D ]\}}t|||< qW |S t | ttfrRdd | D S | S d S )Nc             S   s   g | ]}t |qS r   )	from_dict).0ir   r   r	   
<listcomp>-   s    zfrom_dict.<locals>.<listcomp>)
isinstancedictr   itemsr
   tuplelist)dZnewdkvr   r   r	   r
   &   s    
r
   c             C   s  t  }| dk	rt| |_| dkr|dk	r2t||_|dk	rDt||_|dk	rVt||_|dk	rht||_|dk	rzt||_|dk	rt||_	|dk	rt||_
|dk	rt||_| dkr|	dk	rt|	|_| dkr|
dk	rt|
|_|dk	rt||_|dk	rdd t|D |_|S )z,Create a new code cell with input and outputNZpyerrZpyoutc             S   s   g | ]}t |qS r   )r   )r   framer   r   r	   r   W   s    znew_output.<locals>.<listcomp>)r   r   output_typetextbytesZpngZjpegZhtmlZsvgZlatexZjsonZ
javascriptintprompt_numberetypeevaluer   	traceback)r   Zoutput_textZ
output_pngZoutput_htmlZ
output_svgZoutput_latexZoutput_jsonZoutput_javascriptZoutput_jpegr   r   r   r   outputr   r   r	   
new_output2   s>    













r    pythonFc             C   sn   t  }d|_|dk	rt||_| dk	r0t| |_|dk	rBt||_|dkrRg |_n||_|dk	rjt||_	|S )z,Create a new code cell with input and outputcodeN)
r   	cell_typer   languageinputr   r   outputsbool	collapsed)r%   r   r&   r$   r(   cellr   r   r	   new_code_cell\   s    



r*   c             C   s4   t  }|dk	rt||_|dk	r*t||_| |_|S )zCreate a new text cell.N)r   r   sourcerenderedr#   )r#   r+   r,   r)   r   r   r	   new_text_cellp   s    

r-   c             C   s6   t  }| dk	rt| |_|dkr(g |_n
t||_|S )z5Create a worksheet by name with with a list of cells.N)r   r   namecellsr   )r.   r/   Zwsr   r   r	   new_worksheet{   s    

r0   c             C   sF   t  }d|_|dkrg |_n
t||_| dkr8t |_n
t | |_|S )z7Create a notebook by name, id and a list of worksheets.   N)r   Znbformat
worksheetsr   new_metadatametadata)r4   r2   Znbr   r   r	   new_notebook   s    


r5   c             C   sv   t  }| dk	rt| |_|dk	r*t||_|dk	r<t||_|dk	rNt||_|dk	r`t||_|dk	rrt||_|S )zCreate a new metadata node.N)	r   r   r.   r   authorscreatedmodifiedlicensegistid)r.   r6   r9   r7   r8   r:   r4   r   r   r	   r3      s    





r3   c             C   sR   t  }| dk	rt| |_|dk	r*t||_|dk	r<t||_|dk	rNt||_|S )zCreate a new author.N)r   r   r.   emailaffiliationurl)r.   r;   r<   r=   Zauthorr   r   r	   
new_author   s    



r>   )NNNNNNNNNNNNN)NNNr!   F)NN)NN)NN)NNNNNN)NNNN)__doc__ZpprintZuuidZipython_genutils.ipstructr   Zipython_genutils.py3compatr   r   r
   r    r*   r-   r0   r5   r3   r>   r   r   r   r	   <module>   s$      
' 



 
