
    ^h                        S r SSKJr  SSKrSSKJr  SrSrSS0r " S S	\5      r	S
 r
S rS r              SS jr      SS jrSS jrSS jrSS jrSS jr      SS jrSS jrg)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                      \ rS rSrSrSrg)NotebookNode   zA notebook node object. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r	       L/home/james-whalen/.local/lib/python3.13/site-packages/nbformat/v3/nbbase.pyr   r      s    !r   r   c                   [        U [        5      (       a2  [        5       nU R                  5        H  u  p#[	        U5      X'   M     U$ [        U [
        [        45      (       a  U  Vs/ s H  n[	        U5      PM     sn$ U $ s  snf )z'Create notebook node(s) from an object.)
isinstancedictr   items	from_dicttuplelist)dnewdkvis        r   r   r      sl    !T~GGIDAlDG !eT]##&'(a	!a((H )s   'Bc                <    [        U [        5      (       d  [        eU $ )zQ
Used to be cast_unicode, add this temporarily to make sure no further breakage.
)r   strAssertionErrorobjs    r   str_passthroughr#   +   s     c3Jr   c                    [        U [        5      (       a,  [        R                  " S[        SS9  U R                  SS5      $ [        U [        5      (       d  [        eU $ )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!   s    r   cast_strr-   4   sS    #u 	4		
 zz'9--c3Jr   c                    [        5       n[        U 5      Ul        Uc  0 n[        U[        5      (       d  Sn[        U5      eU S;   a  Xl        U S:w  a  Ub  [        U5      Ul        Ub  [        U5      Ul
        Ub  [        U5      Ul        Ub  [        U5      Ul        Ub  [        U5      Ul        Ub  [        U5      Ul        Ub  [        U5      Ul        Ub  [        U5      Ul        U S:X  a  U	b  [#        U	5      Ul        U S:X  aS  U
b  [        U
5      Ul        Ub  [        U5      Ul        Ub*  [+        U5       Vs/ s H  n[        U5      PM     snUl        U S:X  a  Uc  SO
[        U5      Ul        U$ s  snf )zGCreate a new output, to go in the ``cell.outputs`` list of a code cell.zmetadata must be dict>   pyoutdisplay_datapyerrr/   streamstdout)r   r   output_typer   r   	TypeErrormetadatar#   textr-   pngjpeghtmlsvglatexjson
javascriptintprompt_numberenameevaluer   	tracebackr2   )r4   output_text
output_pngoutput_html
output_svgoutput_latexoutput_jsonoutput_javascriptoutput_jpegr@   rA   rB   rC   r2   r6   outputmsgframes                     r   
new_outputrO   E   sx   $ ^F[)Fh%%%n//"g")+6FK!!*-FJ"";/FK")+6FK!(4FJ#*<8FL")+6FK( /0A BFg-";"=1g*51FL+F3FM DHOTO5 6OTFh$*N8OM  Us   E;c                   [        5       nSUl        Ub  [        U5      Ul        U b  [        U 5      Ul        Ub  [        U5      Ul        Uc  / Ul        OX&l        Ub  [        U5      Ul	        [        U=(       d    0 5      Ul
        U$ )z,Create a new code cell with input and outputcode)r   	cell_typer#   languageinputr?   r@   outputsbool	collapsedr6   )rT   r@   rU   rS   rW   r6   cells          r   new_code_cellrY      s     >DDN'1$U+
  /i R0DMKr   c                    [        5       nU S:X  a  Sn Ub  [        U5      Ul        [        U=(       d    0 5      Ul        Xl        U$ )zCreate a new text cell.	plaintextraw)r   r#   sourcer6   rR   )rR   r]   renderedr6   rX   s        r   new_text_cellr_      sD    >D K	%f- R0DMNKr   c                    [        5       nSUl        U b  [        U 5      Ul        [	        U5      Ul        [        U=(       d    0 5      Ul        U$ )z5Create a new section cell with a given integer level.heading)r   rR   r#   r]   r?   levelr6   )r]   rb   r^   r6   rX   s        r   new_heading_cellrc      sB    >DDN%f-UDJ R0DMKr   c                    [        5       nUc  / Ul        O[        U5      Ul        [        U=(       d    0 5      Ul        U$ )z5Create a worksheet by name with with a list of cells.)r   cellsr   r6   )namere   r6   wss       r   new_worksheetrh      s5    	B};x~2.BKIr   c                    [        5       n[        Ul        [        Ul        Uc  / Ul        O[	        U5      Ul        Uc  [        5       Ul        O[        U5      Ul        U b  [        U 5      UR                  l        U$ )z7Create a notebook by name, id and a list of worksheets.)	r   nbformatnbformat_minor
worksheetsr   new_metadatar6   r#   rf   )rf   r6   rl   nbs       r   new_notebookro      sh    	BBK&BZ("n"8,*40Ir   c                    [        5       nU b  [        U 5      Ul        Ub  [        U5      Ul        Ub  [        U5      Ul        Ub  [        U5      Ul        Ub  [        U5      Ul        Ub  [        U5      Ul        U$ )zCreate a new metadata node.)	r   r#   rf   r   authorscreatedmodifiedlicensegistid)rf   rq   rt   rr   rs   ru   r6   s          r   rm   rm      s     ~H'-=*73+H5*73)&1Or   c                    [        5       nU b  [        U 5      Ul        Ub  [        U5      Ul        Ub  [        U5      Ul        Ub  [        U5      Ul        U$ )zCreate a new author.)r   r#   rf   emailaffiliationurl)rf   rw   rx   ry   authors        r   
new_authorr{      sV    ^F%d+&u-,[9
$S)
Mr   )NNNNNNNNNNNNNN)NNNpythonFN)NNN)N   NN)NNNNNN)NNNN)r   
__future__r   r)   nbformat._structr   rj   rk   nbformat_schemar   r   r#   r-   rO   rY   r_   rc   rh   ro   rm   r{   r	   r   r   <module>r      s    #  # 45"6 "	& 
>D 8& 
2r   