o
    ^i                     @  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
   M/home/ubuntu/hpml_nyu/venv/lib/python3.10/site-packages/nbformat/v3/nbbase.pyr      s    r   c                 C  sR   t | trt }|  D ]
\}}t|||< q|S t | ttfr'dd | D S | S )z'Create notebook node(s) from an object.c                 S     g | ]}t |qS r
   )	from_dict).0ir
   r
   r   
<listcomp>'       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st| 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  s\  t  }t| |_|du ri }t|tsd}t|| dv r ||_| dkrl|dur-t||_|dur6t	||_
|dur?t	||_|durHt||_|durQt||_|durZt||_|durct||_|durlt||_| dkry|	duryt|	|_| dkr|
durt|
|_|durt||_|durdd t|D |_| dkr|du rd	nt||_|S )
zGCreate a new output, to go in the ``cell.outputs`` list of a code cell.Nzmetadata must be dict>   pyoutdisplay_datapyerrr)   c                 S  r   r
   )r   )r   framer
   r
   r   r   ~   r   znew_output.<locals>.<listcomp>streamstdout)r   r   output_typer   r   	TypeErrormetadatar   textr(   pngjpeghtmlsvglatexjson
javascriptintprompt_numberenameevaluer   	tracebackr-   )r/   output_text
output_pngoutput_html
output_svgoutput_latexoutput_jsonoutput_javascriptoutput_jpegr;   r<   r=   r>   r-   r1   outputmsgr
   r
   r   
new_outputE   sL   












rI   pythonFc                 C  s|   t  }d|_|durt||_| durt| |_|dur!t||_|du r)g |_n||_|dur5t||_	t |p9i |_
|S )z,Create a new code cell with input and outputcodeN)r   	cell_typer   languageinputr:   r;   outputsbool	collapsedr1   )rN   r;   rO   rM   rQ   r1   cellr
   r
   r   new_code_cell   s   	



rS   c                 C  s<   t  }| dkr	d} |durt||_t |pi |_| |_|S )zCreate a new text cell.	plaintextrawN)r   r   sourcer1   rL   )rL   rV   renderedr1   rR   r
   r
   r   new_text_cell   s   
rX      c                 C  s:   t  }d|_| durt| |_t||_t |pi |_|S )z5Create a new section cell with a given integer level.headingN)r   rL   r   rV   r:   levelr1   )rV   r[   rW   r1   rR   r
   r
   r   new_heading_cell   s   

r\   c                 C  s2   t  }|du rg |_nt||_t |pi |_|S )z5Create a worksheet by name with with a list of cells.N)r   cellsr   r1   )namer]   r1   wsr
   r
   r   new_worksheet   s   
r`   c                 C  s`   t  }t|_t|_|du rg |_nt||_|du rt |_nt ||_| dur.t| |j_|S )z7Create a notebook by name, id and a list of worksheets.N)	r   nbformatnbformat_minor
worksheetsr   new_metadatar1   r   r^   )r^   r1   rc   nbr
   r
   r   new_notebook   s   


rf   c                 C  sv   t  }| durt| |_|durt||_|durt||_|dur't||_|dur0t||_|dur9t||_|S )zCreate a new metadata node.N)	r   r   r^   r   authorscreatedmodifiedlicensegistid)r^   rg   rj   rh   ri   rk   r1   r
   r
   r   rd      s   	





rd   c                 C  sR   t  }| durt| |_|durt||_|durt||_|dur't||_|S )zCreate a new author.N)r   r   r^   emailaffiliationurl)r^   rl   rm   rn   authorr
   r
   r   
new_author   s   



rp   )NNNNNNNNNNNNNN)NNNrJ   FN)NNN)NrY   NN)NNNNNN)NNNN)r	   
__future__r   r$   nbformat._structr   ra   rb   nbformat_schemar   r   r   r(   rI   rS   rX   r\   r`   rf   rd   rp   r
   r
   r
   r   <module>   sZ    
	
B





