U
    kuf                     @  s   d Z ddlmZ ddlZddlmZ dZdZddiZG dd	 d	eZ	d
d Z
dd 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*d!d"ZdS )+zThe basic dict based notebook format.

The Python representation of a notebook is a nested structure of
dictionary subclasses that support attribute access.
The functions in this module are merely
helpers to build the structs in the right form.
    )annotationsN)Struct   )r   r   znbformat.v3.schema.jsonc                   @  s   e Zd ZdZdS )NotebookNodezA notebook node object.N)__name__
__module____qualname____doc__ r
   r
   6/tmp/pip-unpacked-wheel-zj9qk9v2/nbformat/v3/nbbase.pyr      s   r   c                 C  sR   t | tr2t }|  D ]\}}t|||< q|S t | ttfrNdd | D S | S )z'Create notebook node(s) from an object.c                 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)dnewdkvr
   r
   r   r      s    
r   c                 C  s   t | tst| S )zY
    Used to be cast_unicode, add this temporarily to make sure no further breakage.
    )r   strAssertionErrorobjr
   r
   r   str_passthrough+   s    
r   c                 C  s8   t | tr&tjdtdd | ddS t | ts4t| S )zCast an object as a string.zbA notebook got bytes instead of likely base64 encoded values.The content will likely be corrupted.r   )
stacklevelasciireplace)r   byteswarningswarnUserWarningdecoder   r   r   r
   r
   r   cast_str4   s    

r&   c                 C  sh  t  }t| |_|dkri }t|ts2d}t|| dkr@||_| dkr|dk	rZt||_|dk	rlt	||_
|dk	r~t	||_|dk	rt||_|dk	rt||_|dk	rt||_|dk	rt||_|dk	rt||_| dkr|	dk	rt|	|_| dkrB|
dk	rt|
|_|dk	r$t||_|dk	rBdd t|D |_| dkrd|dkrZd	nt||_|S )
zGCreate a new output, to go in the ``cell.outputs`` list of a code cell.Nzmetadata must be dict>   display_datapyoutZpyerrr(   c                 S  s   g | ]}t |qS r
   )r   )r   framer
   r
   r   r   ~   s     znew_output.<locals>.<listcomp>streamstdout)r   r   output_typer   r   	TypeErrormetadatar   textr&   ZpngZjpeghtmlsvgZlatexjsonZ
javascriptintprompt_numberenameevaluer   	tracebackr*   )r,   Zoutput_textZ
output_pngZoutput_htmlZ
output_svgZoutput_latexZoutput_jsonZoutput_javascriptZoutput_jpegr4   r5   r6   r7   r*   r.   outputmsgr
   r
   r   
new_outputE   sL    

















r:   pythonFc                 C  s|   t  }d|_|dk	rt||_| dk	r0t| |_|dk	rBt||_|dkrRg |_n||_|dk	rjt||_	t |pri |_
|S )z,Create a new code cell with input and outputcodeN)r   	cell_typer   languageinputr3   r4   outputsbool	collapsedr.   )r?   r4   r@   r>   rB   r.   cellr
   r
   r   new_code_cell   s    	



rD   c                 C  s<   t  }| dkrd} |dk	r$t||_t |p,i |_| |_|S )zCreate a new text cell.	plaintextrawN)r   r   sourcer.   r=   )r=   rG   renderedr.   rC   r
   r
   r   new_text_cell   s    
rI      c                 C  s:   t  }d|_| dk	rt| |_t||_t |p0i |_|S )z5Create a new section cell with a given integer level.headingN)r   r=   r   rG   r3   levelr.   )rG   rL   rH   r.   rC   r
   r
   r   new_heading_cell   s    

rM   c                 C  s2   t  }|dkrg |_n
t||_t |p(i |_|S )z5Create a worksheet by name with with a list of cells.N)r   cellsr   r.   )namerN   r.   wsr
   r
   r   new_worksheet   s    
rQ   c                 C  s`   t  }t|_t|_|dkr"g |_n
t||_|dkr>t |_n
t ||_| dk	r\t| |j_|S )z7Create a notebook by name, id and a list of worksheets.N)	r   nbformatnbformat_minor
worksheetsr   new_metadatar.   r   rO   )rO   r.   rT   nbr
   r
   r   new_notebook   s    


rW   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   rO   r   authorscreatedmodifiedlicensegistid)rO   rX   r[   rY   rZ   r\   r.   r
   r
   r   rU      s    	





rU   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   rO   emailaffiliationurl)rO   r]   r^   r_   authorr
   r
   r   
new_author   s    



ra   )NNNNNNNNNNNNNN)NNNr;   FN)NNN)NrJ   NN)NNN)NNN)NNNNNN)NNNN)r	   
__future__r   r"   Znbformat._structr   rR   rS   Znbformat_schemar   r   r   r&   r:   rD   rI   rM   rQ   rW   rU   ra   r
   r
   r
   r   <module>   sX   
	              
B      




      
