§
    2@Äj(  ã                   ó´   — d dl mZ d dlmZ d dlmZ d dlmZ d dlZd dl	Z	d dl
m
Z
 d dl Z 	 d dlmZ d„ Zn# e$ r d dlmZ d	„ ZY nw xY w G d
„ de¦  «        ZdS )é    )ÚTestCase)Úutils)Úconvert)ÚreadsN)Úcopy)ÚEmptyc                 ó,   — t          | t          ¦  «        S ©N)Ú
isinstanceÚstr©Úss    úGC:\Projects\Historical\venv\Lib\site-packages\numba/testing/notebook.pyÚisstrr      s   € Ý˜!�SÑ!Ô!Ð!ó    c                 ó,   — t          | t          ¦  «        S r
   )r   Ú
basestringr   s    r   r   r      s   € Ý˜!�ZÑ(Ô(Ð(r   c                   óV   — e Zd ZdZg d¢Zg d¢ZdZd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ ZdS )ÚNotebookTestaV  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                 ó†  — t          |¦  «        5 }t          t          |                     ¦   «         ¦  «        | j        ¦  «        }d d d ¦  «         n# 1 swxY w Y   t          j        ¦   «         \  }}t          d„ |j        D ¦   «         ¦  «        D ]0\  }}|  	                    |  
                    |¦  «        |||¦  «         Œ1d S )Nc                 ó(   — g | ]}|j         d k    ¯|‘ŒS )Úcode)Ú	cell_type)Ú.0Úcs     r   ú
<listcomp>z/NotebookTest._test_notebook.<locals>.<listcomp>-   s$   € ÐLÐLÐL Q°a´kÀVÒ6KÐ6K˜qÐ6KÐ6KÐ6Kr   )Úopenr   r   ÚreadÚNBFORMAT_VERSIONr   Ústart_new_kernelÚ	enumerateÚcellsÚ_test_notebook_cellÚsanitize_cell)	ÚselfÚnotebookÚtestÚfÚnbÚ_ÚkernelÚir$   s	            r   Ú_test_notebookzNotebookTest._test_notebook(   s  € å�(‰^Œ^ð 	A˜qÝ�˜qŸvšv™xœx™œ¨$Ô*?Ñ@Ô@ˆBð	Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	AåÔ*Ñ,Ô,‰	ˆˆ6ÝÐLÐL¨"¬(ÐLÑLÔLÑMÔMð 	Mð 	M‰DˆAˆqØ×$Ò$ T×%7Ò%7¸Ñ%:Ô%:¸A¸vÀtÑLÔLÐLÐLð	Mð 	Ms   �5AÁAÁAc                 ó  ‡ — t          |d¦  «        r|j        }n|j        }|j        }|                     |¦  «         g }d }d}	d}
d}‰                      |¦  «        rç	 |                     dd¬¦  «        }n# t          $ r Y Œ:w xY w|d         ‰ j        vrš|d         dk    r-d	|d
         d         z   dz   |d
         d         z   }d}	|
dk    r|}
t          |¦  «        }|t          |j
        ¦  «        k     r|j
        |         pg }‰                      ||¦  «        }|                     |¦  «         ‰                      |¦  «        °ç|dk    r‰                      |	d|
|fz  ¦  «         d S ˆ fd„} ||¦  «        } ||j
        ¦  «        }d S )Nr   TéÿÿÿÿÚ é   )ÚblockÚtimeoutÚmsg_typeÚerrorz  ÚcontentÚenamez
  ÚevalueFÚcheck_errorz*Executing cell %d resulted in an error:
%sc                 ón   •— ‰                      t          ‰                     | ¦  «        ¦  «        ¦  «        S r
   )Údump_canonicalÚlistÚscrub_outputs)Úxr.   s    €r   ú<lambda>z2NotebookTest._test_notebook_cell.<locals>.<lambda>S   s+   ø€ ˜d×1Ò1µ$°t×7IÒ7IÈ!Ñ7LÔ7LÑ2MÔ2MÑNÔN€ r   )Úhasattrr   ÚinputÚiopub_channelÚexecuteÚshould_continueÚget_msgr   ÚIGNORE_TYPESÚlenÚoutputsÚtransform_messageÚappendÚ
assertTrue)r.   Úcellr5   r4   r0   r!   ÚiopubrQ   ÚmsgÚno_errorÚfirst_errorÚ	error_msgÚexpectedÚoÚscrubÚscrubbeds   `               r   r,   z NotebookTest._test_notebook_cell0   sÜ  ø€ å�4˜Ñ"Ô"ð 	Ø”;ˆDˆ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”L�Ø�s 4¤<Ñ0Ô0Ò0ÐD°T´\À!´_ÐJÈ�Ø×*Ò*¨3°Ñ9Ô9�Ø—’˜qÑ!Ô!Ð!ð ×"Ò" 3Ñ'Ô'ð 	"ð  �MÒ!Ð!Ø�OŠO˜HÐ&SÐU`ÐbkÐTlÑ&lÑmÔmÐmÐmÐmð
 OÐNÐNÐNˆEØ�u˜W‘~”~ˆHØ�u˜Tœ\Ñ*Ô*ˆHˆHˆHs   ÁA5 Á5
BÂBc                 ó0   — t          j        |dd¬¦  «        S )Né   T)ÚindentÚ	sort_keys)ÚjsonÚdumps)r.   Úobjs     r   rD   zNotebookTest.dump_canonicalZ   s   € ÝŒz˜# a°4Ð8Ñ8Ô8Ð8r   c              #   óZ  ‡‡K  — |D ]£}t          |¦  «        }dD ]‹\  ŠŠˆˆfd„}d|v r ||d         ¦  «        |d<   d|v rdt          |d         t          ¦  «        r5|d                              ¦   «         D ]\  }} ||¦  «        |d         |<   ŒŒw ||d         ¦  «        |d<   ŒŒ|V — Œ¤dS )z=
        remove all scrubs from output data and text
        © c                 ól   •— t          | ¦  «        rt          j        ‰‰| ¦  «        S ˆˆfd„| D ¦   «         S )Nc                 ó<   •— g | ]}t          j        ‰‰|¦  «        ‘ŒS rg   )ÚreÚsub)r#   Úliner]   rk   s     €€r   r%   zCNotebookTest.scrub_outputs.<locals>._scrubLines.<locals>.<listcomp>i   s'   ø€ ÐKÐKÐK¸T¥¤ u¨c°4Ñ 8Ô 8ÐKÐKÐKr   )r   rj   rk   )Úlinesr]   rk   s    €€r   Ú_scrubLinesz/NotebookTest.scrub_outputs.<locals>._scrubLinese   sC   ø€ Ý˜U‘|”|ð LÝ!œv e¨S°%Ñ8Ô8Ð8àKÐKÐKÐKÐKÀUÐKÑKÔKÐKr   ÚtextÚdataN)r   r   ÚdictÚitems)	r.   rQ   ÚoutputÚoutrn   Úmimerp   r]   rk   s	          @@r   rF   zNotebookTest.scrub_outputs]   s  øøè è € ð ð 	ð 	ˆFÝ�v‘,”,ˆCà ð ?ð ?‘
��sðLð Lð Lð Lð Lð Lð ˜S�=�=Ø"- +¨c°&¬kÑ":Ô":�C˜‘Kà˜S�=�=Ý! # f¤+­tÑ4Ô4ð ?Ø*-¨f¬+×*;Ò*;Ñ*=Ô*=ð Bð B™J˜D $Ø0;°¸DÑ0AÔ0A˜C œK¨Ñ-Ð-ðBð '2 k°#°f´+Ñ&>Ô&>˜˜F™øØˆIˆIˆIˆIð'	ð 	r   c                 óF   — | j         D ]}|                     |d¦  «         Œ|S )zE
        remove keys from STRIP_KEYS to ensure comparability
        N)Ú
STRIP_KEYSÚpop)r.   ÚdÚkeys      r   Ú
strip_keyszNotebookTest.strip_keysv   s1   € ð ”?ð 	ð 	ˆCØ�EŠE�#�tÑÔÐÐØˆr   c                 óD   — |j         D ]}|                      |¦  «         Œ|S )z0
        remove non-reproducible things
        )rQ   r{   )r.   rU   rs   s      r   r-   zNotebookTest.sanitize_cell~   s/   € ð ”lð 	$ð 	$ˆFØ�OŠO˜FÑ#Ô#Ð#Ð#Øˆr   c                 ó&  — ddddœi}d|d         i}|                      |d         ¦  «         |                      |¦  «        }|                     ¦   «         D ]$\  }}||v r||         |v r|||                  ||<   Œ%d|v rd|vr|d         |d<   |d= |S )	zF
        transform a message into something like the notebook
        Úoutput_typeÚexecute_resultr>   )ÚpyoutÚpyerrr=   r?   rp   ro   )Úupdater{   rr   )r.   rW   r[   Ú	SWAP_KEYSrs   rz   Úswapss          r   rR   zNotebookTest.transform_message†   sÎ   € ð
 Ø)Ø ðð ð
ˆ	ð ˜C 
œOð
ˆð 	�Š�c˜)”nÑ%Ô%Ð%à—’ Ñ(Ô(ˆØ#Ÿ/š/Ñ+Ô+ð 	1ð 	1‰JˆC�Ø�fˆ}ˆ} ¨¤°Ð!5Ð!5Ø# F¨3¤KÔ0��s‘øà�VÐÐ ¨hÐ 6Ð 6Ø# Fœ^ˆF�6‰NØ�v�àˆr   c                 óH   — |€dS |d         dk    o|d         d         dk     S )zQ
        determine whether the current message is the last for this cell
        NTr=   r   r?   Úexecution_stateÚidlerg   )r.   rW   s     r   rM   zNotebookTest.should_continue¡   s>   € ð ˆ;Ø�4à˜
”O xÒ/ð @Ø˜	”NÐ#4Ô5¸Ò?ðAð 	Ar   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rO   rw   r(   r6   r,   rD   rF   r{   r-   rR   rM   rg   r   r   r   r      s¾   € € € € € ðð ð JÐIÐI€LØLÐLÐL€JØÐðMð Mð Mð%+ð %+ð %+ðT9ð 9ð 9ðð ð ð2ð ð ðð ð ðð ð ð6Að Að Að Að Ar   r   )Úunittestr   Úipykernel.testsr   Únbformat.converterr   Únbformat.readerr   rj   rc   r   Úqueuer   r   ÚImportErrorÚQueuer   rg   r   r   ú<module>r“      s3  ðØ Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !Ø &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !à 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€ð)àÐÐÐÐÐð"ð "ð "ð "øàð )ð )ð )àÐÐÐÐÐð)ð )ð )ð )ð )ð	)øøøðPAð PAð PAð PAð PA�8ñ PAô PAð PAð PAð PAs   ¬	6 ¶AÁA