§
    2@Äjp  ã                   óD  — d dl Z d dlmZ d dlZd dlmZ d dlmZmZ d dlm	Z	m
Z
 d dlZ	 d dlZn# e$ r dZY nw xY w	 d dlZn# e$ r dZY nw xY w ej        edu d¦  «         G d„ de
¦  «        ¦   «         Z G d	„ d
ej
        ¦  «        Zedk    r ej        ¦   «          dS dS )é    N)ÚStringIO)Útypes)ÚjitÚnjit)Úoverride_configÚTestCasez#please install the 'jinja2' packagec                   ó¦   — e Zd Zej        d„ ¦   «         Zej        d„ ¦   «         Zej        d„ ¦   «         Z ej	        e
du d¦  «        d„ ¦   «         ZdS )ÚTestAnnotationc                 óh  — d„ } t          t          j        t          j        f¦  «        |¦  «        }|j        |j        d                  }|j        }t          ¦   «         }|                     |¦  «         |                     ¦   «         }| 	                    ¦   «          |  
                    d|¦  «         dS )z4
        Ensures template.html is available
        c                 ó8   — |}t          | ¦  «        D ]}||z  }Œ|S ©N©Úrange)ÚnÚaÚsÚis       úMC:\Projects\Historical\venv\Lib\site-packages\numba/tests/test_annotations.pyÚfooz3TestAnnotation.test_exercise_code_path.<locals>.foo   s,   € ØˆAÝ˜1‘X”Xð ð �Ø�Q‘��ØˆHó    r   r   N)r   r   Úint32Ú	overloadsÚ
signaturesÚtype_annotationr   Úhtml_annotateÚgetvalueÚcloseÚassertIn)Úselfr   ÚcfuncÚcresÚtaÚbufÚoutputs          r   Útest_exercise_code_pathz&TestAnnotation.test_exercise_code_path   s    € ð	ð 	ð 	ð 1••e”k¥5¤;Ð/Ñ0Ô0°Ñ5Ô5ˆØŒ˜uÔ/°Ô2Ô3ˆØÔ!ˆå‰jŒjˆØ
×Ò˜ÑÔÐØ—’‘”ˆØ�	Š	‰ŒˆØ�Š�e˜VÑ$Ô$Ð$Ð$Ð$r   c                 ó¼  ‡— d„ Šˆfd„} t          t          j        fdd¬¦  «        |¦  «        }|j        |j        d                  }|j        }t          ¦   «         }|                     |¦  «         |                     ¦   «         }| 	                    ¦   «          |  
                    d|¦  «         |  
                    d|¦  «         |  
                    d|¦  «         d	S )
zM
        Ensures that lifted loops are handled correctly in obj mode
        c                 ó   — | S r   © )Úxs    r   ÚbarzDTestAnnotation.test_exercise_code_path_with_lifted_loop.<locals>.bar4   s   € ØˆHr   c                 óˆ   •— d}t          | ¦  «        D ]}||z   }Œt          | ¦  «        D ]}||z   }Œ| r| ‰| ¦  «        z
  }|S )Ng        r   )r)   Úhr   Úkr*   s       €r   r   zDTestAnnotation.test_exercise_code_path_with_lifted_loop.<locals>.foo7   sf   ø€ ØˆAÝ˜1‘X”Xð ð �Ø˜‘E��Ý˜1‘X”Xð ð �Ø˜‘E��Øð Ø˜˜˜A™œ‘J�ØˆHr   T)ÚforceobjÚloopliftr   r*   r   Ú
LiftedLoopN)r   r   Úintpr   r   r   r   r   r   r   r   )r   r   r    r!   r"   r#   r$   r*   s          @r   Ú(test_exercise_code_path_with_lifted_loopz7TestAnnotation.test_exercise_code_path_with_lifted_loop.   så   ø€ ð	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð A••U”Z�M¨D¸4Ð@Ñ@Ô@ÀÑEÔEˆØŒ˜uÔ/°Ô2Ô3ˆàÔ!ˆå‰jŒjˆØ
×Ò˜ÑÔÐØ—’‘”ˆØ�	Š	‰ŒˆØ�Š�e˜VÑ$Ô$Ð$Ø�Š�e˜VÑ$Ô$Ð$Ø�Š�l FÑ+Ô+Ð+Ð+Ð+r   c                 ór  — t          j        d¬¦  «        d„ ¦   «         }t          j        dt          j        ¦  «        }t
          j        f}|                     |¦  «         |j        |         }t          ¦   «         }|j	         
                    |¦  «         |                     ¦   «         }|                     ¦   «          |                      |                     d¦  «        d¦  «         d}|                      |                     |                     |¦  «        ¦  «        d¦  «         |                      t!          t          j        ||¦  «        ¦  «        d|›d|›�¬	¦  «         t
          j        f}|                     |¦  «         |j        |         }t          ¦   «         }|j	         
                    |¦  «         |                     ¦   «         }|                     ¦   «          |                      |                     d¦  «        d
¦  «         |                      |                     |                     |¦  «        ¦  «        d¦  «         |                      |                     |                     |¦  «        ¦  «        d¦  «         |                      t!          t          j        ||¦  «        ¦  «        d
¦  «         dS )zW
        Test some format and behavior of the html annotation with lifted loop
        T)r.   c                 óT   — t          ¦   «          d}t          | ¦  «        D ]}||z  }Œ|S )Nr   )Úobjectr   )r)   Úzr   s      r   Úudtz=TestAnnotation.test_html_output_with_lifted_loop.<locals>.udtT   s5   € å‰HŒHˆHØˆAÝ˜1‘X”Xð ð �Ø�Q‘��ØˆHr   z<td class="lifted_tag">\s*\s*<details>\s*<summary>\s*<code>\s*[0-9]+:\s*[&nbsp;]+for i in range\(x\):  # this line is tagged\s*zFunction name: udté   z!with signature: {} -&gt; pyobjectz not found in )Úmsgé   N)Únumbar   ÚreÚcompileÚ	MULTILINEr   Úint64r   r   r   r   r   r   ÚassertEqualÚcountÚformatÚlenÚfindallÚfloat64)	r   r7   Úre_lifted_tagÚsig_i64r!   r#   r$   ÚsigfmtÚsig_f64s	            r   Ú!test_html_output_with_lifted_loopz0TestAnnotation.test_html_output_with_lifted_loopO   se  € õ
 
Œ˜DÐ	!Ñ	!Ô	!ð	ð 	ñ 
"Ô	!ð	õ œ
ðJõ ŒLñô ˆõ ”;�.ˆØ�Š�GÑÔÐØŒ}˜WÔ%ˆõ ‰jŒjˆØÔ×*Ò*¨3Ñ/Ô/Ð/Ø—’‘”ˆØ�	Š	‰Œˆð 	×Ò˜ŸšÐ&:Ñ;Ô;¸QÑ?Ô?Ð?à4ˆØ×Ò˜Ÿš f§m¢m°GÑ&<Ô&<Ñ=Ô=¸qÑAÔAÐAà×Ò��RœZ¨°vÑ>Ô>Ñ?Ô?ÀØ5B°]°]ÀFÀFÐKð 	ñ 	Mô 	Mð 	Mõ ”=Ð"ˆØ�Š�GÑÔÐØŒ}˜WÔ%ˆõ ‰jŒjˆØÔ×*Ò*¨3Ñ/Ô/Ð/Ø—’‘”ˆØ�	Š	‰Œˆð 	×Ò˜ŸšÐ&:Ñ;Ô;¸QÑ?Ô?Ð?Ø×Ò˜Ÿš f§m¢m°GÑ&<Ô&<Ñ=Ô=¸qÑAÔAÐAØ×Ò˜Ÿš f§m¢m°GÑ&<Ô&<Ñ=Ô=¸qÑAÔAÐAà×Ò��RœZ¨°vÑ>Ô>Ñ?Ô?ÀÑCÔCÐCÐCÐCr   Nz%please install the 'pygments' packagec                 óV  — t           j        d„ ¦   «         } |dd¦  «         |                     d¬¦  «         |                      t          ¦  «        5 }|                     dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )	Nc                 ó
   — | |fS r   r(   )r)   Úys     r   r   z-TestAnnotation.test_pretty_print.<locals>.foo�   s   € à�a�4ˆKr   r8   r:   T)Úprettyzshould be None)rN   Úfilez$`file` must be None if `pretty=True`)r;   r   Úinspect_typesÚassertRaisesÚ
ValueErrorr   ÚstrÚ	exception)r   r   Úraisess      r   Útest_pretty_printz TestAnnotation.test_pretty_printŒ   s
  € õ 
Œð	ð 	ñ 
Œð	ð 	ˆˆAˆq‰	Œ	ˆ	à×Ò ÐÑ&Ô&Ð&ð ×Ò�zÑ*Ô*ð 	B¨fØ×Ò TÐ0@ÐÑAÔAÐAð	Bð 	Bð 	Bñ 	Bô 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bøøøð 	Bð 	Bð 	Bð 	Bà�ŠÐ<Ý˜&Ô*Ñ+Ô+ñ	-ô 	-ð 	-ð 	-ð 	-s   ÁA6Á6A:Á=A:)Ú__name__Ú
__module__Ú__qualname__r   Úrun_test_in_subprocessr%   r2   rJ   ÚunittestÚskipIfÚpygmentsrV   r(   r   r   r
   r
      s§   € € € € € ð Ô$ð%ð %ñ %Ô$ð%ð* Ô$ð,ð ,ñ %Ô$ð,ð@ Ô$ð:Dð :Dñ %Ô$ð:Dðx €X„_�X Ð%Ð'NÑOÔOð-ð -ñ PÔOð-ð -ð -r   r
   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestTypeAnnotationc                 ó€   — t          |¦  «        D ]\  }}||v r|c S Œt          d                     |¦  «        ¦  «        ‚)Nzcan't find {!r})Ú	enumeraterR   rB   )r   ÚlinesÚpatr   Úlns        r   Ú
findpatloczTestTypeAnnotation.findpatloc    sQ   € Ý˜uÑ%Ô%ð 	ð 	‰EˆAˆrØ�bˆyˆyØ���ð åÐ*×1Ò1°#Ñ6Ô6Ñ7Ô7Ð7r   c                 ó”   — t          ¦   «         }|                     |¦  «         |                     ¦   «                              ¦   «         S r   )r   rP   r   Ú
splitlines)r   ÚfuncÚstrbufs      r   ÚgetlineszTestTypeAnnotation.getlines¦   s;   € Ý‘”ˆØ×Ò˜6Ñ"Ô"Ð"Ø�ŠÑ Ô ×+Ò+Ñ-Ô-Ð-r   c                 óz  — t           j        d„ ¦   «         } |dd¦  «         |                      |¦  «        }|                      |d¦  «        }|                      |d¦  «        }|                      |d¦  «        }|                      |d¦  «        }|                      ||¦  «         |                      ||¦  «         d S )Nc                 ó   — | |z   S r   r(   )ÚappleorangeÚberrycherrys     r   r   z+TestTypeAnnotation.test_delete.<locals>.foo¬   s   € à Ñ,Ð,r   r8   r:   z&appleorange = arg(0, name=appleorange)z&berrycherry = arg(1, name=berrycherry)zdel appleorangezdel berrycherry)r;   r   rj   re   Ú
assertLess)r   r   rb   ÚsaÚsbÚeaÚebs          r   Útest_deletezTestTypeAnnotation.test_delete«   s¿   € Ý	Œð	-ð 	-ñ 
Œð	-ð 	ˆˆAˆq‰	Œ	ˆ	à—’˜cÑ"Ô"ˆð �_Š_˜UÐ$LÑMÔMˆØ�_Š_˜UÐ$LÑMÔMˆà�_Š_˜UÐ$5Ñ6Ô6ˆØ�_Š_˜UÐ$5Ñ6Ô6ˆà�Š˜˜BÑÔÐØ�Š˜˜BÑÔÐÐÐr   c                 óÌ  — t          d|¦  «        5  t          d„ ¦   «         }d} ||¦  «        }|                      ||¦  «         d d d ¦  «         n# 1 swxY w Y   |                      |¦  «        }|                      |d¦  «        }|                      |d¦  «        }|                      |d¦  «        }|                      |d¦  «        }	|                      |d¦  «        }
||||	|
fS )	NÚEXTEND_VARIABLE_LIFETIMESc                 ó
   — | }|S r   r(   )r   Úbs     r   r   z/TestTypeAnnotation._lifetimes_impl.<locals>.fooÀ   s   € à�Ø�r   é
   za = arg(0, name=a)zb = azcast(value=b)zdel azdel b)r   r   r@   rj   re   )r   Úextendr   r)   rx   rb   rp   rq   Úcast_retÚdelaÚdelbs              r   Ú_lifetimes_implz"TestTypeAnnotation._lifetimes_impl¾   s/  € ÝÐ8¸&ÑAÔAð 	#ð 	#Ýðð ñ ŒTðð ˆAØ��A‘”ˆAØ×Ò˜Q Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð —’˜cÑ"Ô"ˆà�_Š_˜UÐ$8Ñ9Ô9ˆØ�_Š_˜U GÑ,Ô,ˆà—?’? 5¨/Ñ:Ô:ˆà�Š˜u gÑ.Ô.ˆØ�Š˜u gÑ.Ô.ˆà�2�x  tÐ+Ð+s   ‘4AÁAÁAc                 óî   — |                       d¬¦  «        \  }}}}}|                      ||¦  «         |                      ||¦  «         |                      ||¦  «         |                      ||¦  «         d S )Nr   ©rz   ©r~   ro   ÚassertGreater©r   rp   rq   r{   r|   r}   s         r   Útest_delete_standard_lifetimesz1TestTypeAnnotation.test_delete_standard_lifetimesÔ   s}   € ð (,×';Ò';À1Ð';Ñ'EÔ'EÑ$ˆˆB�˜$ à�Š˜˜DÑ!Ô!Ð!Ø�Š˜˜DÑ!Ô!Ð!à�Š˜˜hÑ'Ô'Ð'Ø×Ò˜4 Ñ*Ô*Ð*Ð*Ð*r   c                 óî   — |                       d¬¦  «        \  }}}}}|                      ||¦  «         |                      ||¦  «         |                      ||¦  «         |                      ||¦  «         d S )Nr8   r€   r�   rƒ   s         r   Útest_delete_extended_lifetimesz1TestTypeAnnotation.test_delete_extended_lifetimesç   s   € ð (,×';Ò';À1Ð';Ñ'EÔ'EÑ$ˆˆB�˜$ à�Š˜˜DÑ!Ô!Ð!Ø�Š˜˜DÑ!Ô!Ð!à×Ò˜4 Ñ*Ô*Ð*Ø×Ò˜4 Ñ*Ô*Ð*Ð*Ð*r   N)	rW   rX   rY   re   rj   rt   r~   r„   r†   r(   r   r   r_   r_   ž   sn   € € € € € ð8ð 8ð 8ð.ð .ð .ð
 ð  ð  ð&,ð ,ð ,ð,+ð +ð +ð&+ð +ð +ð +ð +r   r_   Ú__main__)r<   Úior   r;   Ú
numba.corer   r   r   Únumba.tests.supportr   r   r[   Újinja2ÚImportErrorr]   r\   r
   r_   rW   Úmainr(   r   r   ú<module>rŽ      sŒ  ðØ 	€	€	€	Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø €€€ðØ€M€M€M€MøØð ð ð Ø€F€F€FðøøøðØ€O€O€O€OøØð ð ð Ø€H€H€Hðøøøð €„�˜4�Ð!FÑGÔGðE-ð E-ð E-ð E-ð E-�Xñ E-ô E-ñ HÔGðE-ðPZ+ð Z+ð Z+ð Z+ð Z+˜Ô*ñ Z+ô Z+ð Z+ðz ˆzÒÐØ€H„M�O„O€O€O€Oð Ðs   ª/ ¯9¸9½A ÁAÁA