o
    ih                     @   s   d 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.
    N   )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/var/www/edux/Edux_v2/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J | S )zY
    Used to be cast_unicode, add this temporarily to make sure no further breakage.
    )r   str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J | 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   cast_str5   s   
r'   c                 C   sX  t  }t| |_|du ri }t|tstd| dv r||_| dkrj|dur+t||_|dur4t	||_
|dur=t	||_|durFt||_|durOt||_|durXt||_|durat||_|durjt||_| dkrw|	durwt|	|_| 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,   r0   outputr
   r
   r   
new_outputF   sL   












rG   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inputr9   r:   outputsbool	collapsedr0   )rL   r:   rM   rK   rO   r0   cellr
   r
   r   new_code_cell   s   	



rQ   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   sourcer0   rJ   )rJ   rT   renderedr0   rP   r
   r
   r   new_text_cell   s   
rV      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   rJ   r   rT   r9   levelr0   )rT   rY   rU   r0   rP   r
   r
   r   new_heading_cell   s   

rZ   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   r0   )namer[   r0   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_metadatar0   r   r\   )r\   r0   ra   nbr
   r
   r   new_notebook   s   


rd   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\   re   rh   rf   rg   ri   r0   r
   r
   r   rb      s   





rb   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\   rj   rk   rl   authorr
   r
   r   
new_author   s   



rn   )NNNNNNNNNNNNNN)NNNrH   FN)NNN)NrW   NN)NNNNNN)NNNN)r	   r#   _structr   r_   r`   nbformat_schemar   r   r   r'   rG   rQ   rV   rZ   r^   rd   rb   rn   r
   r
   r
   r   <module>   sL    
B





