ó
    ýZh}  ã                   ó¬   • S SK Jr  S SKJr  S SKJr  S SKJr  S SKrS SK	r	S SK
J
r
  S SK r  S SKJr  S r " S
 S\5      rg! \ a    S SKJr  S	 r Nf = f)é    )ÚTestCase)Úutils)Úconvert)ÚreadsN)Úcopy)ÚEmptyc                 ó"   • [        U [        5      $ ©N)Ú
isinstanceÚstr©Úss    Úe/home/gothic/public_html/Fooocus/fooocus_env/lib64/python3.13/site-packages/numba/testing/notebook.pyÚisstrr      s   € Ü˜!œSÓ!Ð!ó    c                 ó"   • [        U [        5      $ r
   )r   Ú
basestringr   s    r   r   r      s   € Ü˜!œZÓ(Ð(r   c                   ó\   • \ rS rSrSr/ SQr/ SQrSrS rS r	S r
S	 rS
 rS rS rS rSrg)ÚNotebookTesté   aF  Validate a notebook. All code cells are executed in order. The output is either checked
for errors (if no reference output is present), or is compared against expected output.


Useful references:
http://nbformat.readthedocs.org/en/latest/format_description.html
http://jupyter-client.readthedocs.org/en/latest/messaging.html
)Úexecute_requestÚexecute_inputÚstatusÚpyin)Úexecution_countÚ	tracebackÚprompt_numberÚsourceé   c                 ó¤  • [        U5       n[        [        UR                  5       5      U R                  5      nS S S 5        [
        R                  " 5       u  pV[        WR                   Vs/ s H  owR                  S:X  d  M  UPM     sn5       H'  u  p‡U R                  U R                  U5      X†U5        M)     g ! , (       d  f       Nˆ= fs  snf )NÚcode)Úopenr   r   ÚreadÚNBFORMAT_VERSIONr   Ústart_new_kernelÚ	enumerateÚcellsÚ	cell_typeÚ_test_notebook_cellÚsanitize_cell)	ÚselfÚnotebookÚtestÚfÚnbÚ_ÚkernelÚcÚis	            r   Ú_test_notebookÚNotebookTest._test_notebook(   s”   € ä�(Œ^˜qÜœ˜qŸv™v›x›¨$×*?Ñ*?Ó@ˆB÷ ä×*Ò*Ó,‰	ˆÜ¨"¯(ª(ÓLª( Q·k±kÀVÑ6KŸq©(ÑLÖM‰DˆAØ×$Ñ$ T×%7Ñ%7¸Ó%:¸AÀtÖLò N÷ �^üò Ms   Œ.B<Á,CÂCÂ<
C
c                 ó  ^ • [        US5      (       a  UR                  nOUR                  nUR                  nUR	                  U5        / nS nSn	Sn
SnT R                  U5      (       aÊ   UR                  SSS9nUS   T R                  ;  aŽ  US   S:X  a!  S	US
   S   -   S-   US
   S   -   nSn	U
S:X  a  Un
[        U5      nU[        UR                  5      :  =(       a    UR                  U   =(       d    / nT R                  XŒ5      nUR                  U5        T R                  U5      (       a  MÊ  US:X  a  T R                  U	SX«4-  5        g U 4S jnU" U5      nU" UR                  5      ng ! [         a     GM,  f = f)Nr   TéÿÿÿÿÚ é   )ÚblockÚtimeoutÚmsg_typeÚerrorz  ÚcontentÚenamez
  ÚevalueFÚcheck_errorz*Executing cell %d resulted in an error:
%sc                 óV   >• TR                  [        TR                  U 5      5      5      $ r
   )Údump_canonicalÚlistÚscrub_outputs)Úxr+   s    €r   Ú<lambda>Ú2NotebookTest._test_notebook_cell.<locals>.<lambda>S   s    ø€ ˜d×1Ñ1´$°t×7IÑ7IÈ!Ó7LÓ2MÔNr   )Úhasattrr   ÚinputÚiopub_channelÚexecuteÚshould_continueÚget_msgr   ÚIGNORE_TYPESÚlenÚoutputsÚtransform_messageÚappendÚ
assertTrue)r+   Úcellr3   r1   r-   r!   ÚiopubrQ   ÚmsgÚno_errorÚfirst_errorÚ	error_msgÚexpectedÚoÚscrubÚscrubbeds   `               r   r)   Ú NotebookTest._test_notebook_cell0   s…  ø€ ä�4˜×"Ñ"Ø—;‘;‰Dà—:‘:ˆDØ×$Ñ$ˆØ�‰�tÔØˆØˆØˆØˆØˆ	Ø×"Ñ" 3×'Ñ'ðØ—m‘m¨$¸�mÐ:�ð �:‰ d×&7Ñ&7Ó7Ø�z‘? gÓ-Ø $ s¨9¡~°gÑ'>Ñ >ÀÑ GÈ#ÈiÉ.ÐYaÑJbÑ b�IØ$�HØ" bÓ(Ø&'˜Ü˜“L�Øœs 4§<¡<Ó0Ñ0×D°T·\±\À!±_×JÈ�Ø×*Ñ*¨3Ó9�Ø—‘˜qÔ!ð ×"Ñ" 3×'Ó'ð  �MÓ!Ø�O‰O˜HÐ&SÐU`ÐTlÑ&lÕmô
 OˆEÙ˜W“~ˆHÙ˜TŸ\™\Ó*‰Høô+ ó Ûðús   Á*E1 Å1
F Å?F c                 ó.   • [         R                  " USSS9$ )Né   T)ÚindentÚ	sort_keys)ÚjsonÚdumps)r+   Úobjs     r   rC   ÚNotebookTest.dump_canonicalZ   s   € Ü�zŠz˜# a°4Ñ8Ð8r   c              #   óB  ^^#   • U H“  n[        U5      nS H{  u  mmUU4S jnSU;   a  U" US   5      US'   SU;   d  M)  [        US   [        5      (       a,  US   R                  5        H  u  pVU" U5      US   U'   M     Mm  U" US   5      US'   M}     Uv •  M•     g7f)z-
remove all scrubs from output data and text
© c                 ó°   >• [        U 5      (       a  [        R                  " TTU 5      $ U  Vs/ s H  n[        R                  " TTU5      PM     sn$ s  snf r
   )r   ÚreÚsub)ÚlinesÚliner]   rl   s     €€r   Ú_scrubLinesÚ/NotebookTest.scrub_outputs.<locals>._scrubLinese   sD   ø€ Ü˜U—|‘|Ü!Ÿvšv e¨S°%Ó8Ð8áEJÓKÂU¸T¤§¢ u¨c°4Ö 8ÁUÑKÐKùÒKs   ®"AÚtextÚdataN)r   r   ÚdictÚitems)	r+   rQ   ÚoutputÚoutro   Úmimerr   r]   rl   s	          @@r   rE   ÚNotebookTest.scrub_outputs]   s©   ùé € ó ˆFÜ�v“,ˆCã ‘
��söLð ˜S“=Ù"-¨c°&©kÓ":�C˜‘Kà˜S•=Ü! # f¡+¬t×4Ñ4Ø*-¨f©+×*;Ñ*;Ö*=™J˜DÙ0;¸DÓ0A˜C ™K¨Ó-ó +>ñ '2°#°f±+Ó&>˜˜F›ñ !ð  ŒIò' ùs   „8BÁ ABc                 óP   • U R                    H  nUR                  US5        M     U$ )z5
remove keys from STRIP_KEYS to ensure comparability
N)Ú
STRIP_KEYSÚpop)r+   ÚdÚkeys      r   Ú
strip_keysÚNotebookTest.strip_keysv   s%   € ð —?”?ˆCØ�E‰E�#�tÖñ #àˆr   c                 óN   • UR                    H  nU R                  U5        M     U$ )z 
remove non-reproducible things
)rQ   r~   )r+   rU   ru   s      r   r*   ÚNotebookTest.sanitize_cell~   s#   € ð —l”lˆFØ�O‰O˜FÖ#ñ #àˆr   c                 ó   • SSSS.0nSUS   0nUR                  US   5        U R                  U5      nUR                  5        H  u  pVXT;   d  M  XE   U;   d  M  XdU      XE'   M!     SU;   a  SU;  a  US   US'   US	 U$ )	z6
transform a message into something like the notebook
Úoutput_typeÚexecute_resultr=   )ÚpyoutÚpyerrr<   r>   rr   rq   )Úupdater~   rt   )r+   rW   r[   Ú	SWAP_KEYSru   r}   Úswapss          r   rR   ÚNotebookTest.transform_message†   s¤   € ð
 Ø)Ø ñð
ˆ	ð ˜C 
™Oð
ˆð 	�‰�c˜)‘nÔ%à—‘ Ó(ˆØ#Ÿ/™/Ö+‰JˆCØ�} ¡°Õ!5Ø#¨3¡KÑ0�“ñ ,ð �VÓ ¨hÓ 6Ø# F™^ˆF�6‰NØ�v�àˆr   c                 óH   • Uc  gUS   S:H  =(       a    US   S   S:H  (       + $ )zA
determine whether the current message is the last for this cell
Tr<   r   r>   Úexecution_stateÚidleri   )r+   rW   s     r   rM   ÚNotebookTest.should_continue¡   s<   € ð ‰;Øà˜
‘O xÑ/÷ @Ø˜	‘NÐ#4Ñ5¸Ñ?ôAð 	Ar   ri   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rO   rz   r$   r4   r)   rC   rE   r~   r*   rR   rM   Ú__static_attributes__ri   r   r   r   r      sE   † ñò J€LÚL€JØÐòMò%+òT9òò2òòõ6Ar   r   )Úunittestr   Úipykernel.testsr   Únbformat.converterr   Únbformat.readerr   rk   rd   r   Úqueuer   r   ÚImportErrorÚQueuer   ri   r   r   Ú<module>rœ      sS   ðÝ å !Ý &Ý !ã 	Û Ý Û ð)åò"ôPA�8õ PAøð ó )åô)ð	)ús   ¬	A ÁAÁA