o
    tf                     @  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
   [/var/www/html/software/conda/envs/catlas/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)dZ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>   Zdisplay_datapyoutZ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'   ZpngZjpeghtmlsvglatexjson
javascriptintprompt_numberenameevaluer   	tracebackr*   )r,   Zoutput_textZ
output_pngoutput_htmlZ
output_svgZoutput_latexZoutput_jsonZoutput_javascriptZoutput_jpegr6   r7   r8   r9   r*   r.   outputmsgr
   r
   r   
new_outputE   sL   












r=   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inputr5   r6   outputsbool	collapsedr.   )rB   r6   rC   rA   rE   r.   cellr
   r
   r   new_code_cell   s   	



rG   c                 C  s<   t  }| dkr	d} |durt||_t |pi |_| |_|S )zCreate a new text cell.Z	plaintextrawN)r   r   sourcer.   r@   )r@   rI   renderedr.   rF   r
   r
   r   new_text_cell   s   
rK      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   r@   r   rI   r5   levelr.   )rI   rN   rJ   r.   rF   r
   r
   r   new_heading_cell   s   

rO   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   r.   )namerP   r.   wsr
   r
   r   new_worksheet   s   
rS   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_metadatar.   r   rQ   )rQ   r.   rV   nbr
   r
   r   new_notebook   s   


rY   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   rQ   r   authorscreatedmodifiedlicensegistid)rQ   rZ   r]   r[   r\   r^   r.   r
   r
   r   rW      s   	





rW   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   rQ   emailaffiliationurl)rQ   r_   r`   ra   Zauthorr
   r
   r   
new_author   s   



rb   )NNNNNNNNNNNNNN)NNNr>   FN)NNN)NrL   NN)NNNNNN)NNNN)r	   
__future__r   r#   Znbformat._structr   rT   rU   Znbformat_schemar   r   r   r'   r=   rG   rK   rO   rS   rY   rW   rb   r
   r
   r
   r   <module>   sZ    
	
B

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