ó
    „ñ:if  ã                   ó®   • S SK r S SKrS SKrS SKJrJr  S SKJr  S SK	J
r
  S rS rS rS rS	 rS
 r " S S\
5      r\S:X  a  \R&                  " 5         gg)é    N)ÚjitÚnjit)Útypes)ÚTestCasec                 ó    • U (       a  S nU$ SnU$ ©Ng333333ó?© )ÚxÚrets     Ú\/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/tests/test_optional.pyÚreturn_double_or_noner      s   € ÞØˆð €Jð ˆØ€Jó    c                 ó   • U (       a  g gr   r	   ©r
   s    r   Úreturn_different_statementr      s   € ÞØàr   c                 ó:   • U(       a  SnOS nU S:X  a  gU S:X  a  U$ g )NFé   Té   r	   )r
   ÚyÚzs      r   Úreturn_bool_optional_or_noner      s*   € ÞØ‰àˆØˆAƒvàØ	
ˆa‹àˆð r   c                 ó<   • U (       a  S nOU nUc  U S-
  $ Ub  U S-   $ g ©Nr   r	   )r
   Úval_or_nones     r   Úis_this_a_noner   *   s2   € ÞØ‰àˆàÑØ�1‰uˆàÑØ�1‰uˆð r   c                 ó   • XL $ )z¬
Note in nopython mode, this operation does not make much sense.
Because we don't have objects anymore.
`a is b` is always False if not operating on None and Optional type
r	   ©ÚaÚbs     r   Úa_is_br    7   s   € ð ˆ6€Mr   c                 ó   • XL$ )z
This is `not (a is b)`
r	   r   s     r   Ú
a_is_not_br"   @   s   € ð ˆ:Ðr   c                   ór   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rSrg)ÚTestOptionaléG   Fc                 óž   • [         n[        [        R                  45      " U5      nS H!  nU R	                  U" U5      U" U5      5        M#     g ©N)TF)r   r   r   ÚbooleanÚassertPreciseEqual©ÚselfÚpyfuncÚcfuncÚvs       r   Útest_return_double_or_noneÚ'TestOptional.test_return_double_or_noneK   s?   € Ü&ˆÜ”e—m‘mÐ%Ô& vÓ.ˆãˆAØ×#Ñ#¡F¨1£I©u°Q«xÖ8ò r   c                 óž   • [         n[        [        R                  45      " U5      nS H!  nU R	                  U" U5      U" U5      5        M#     g r'   )r   r   r   r(   r)   r*   s       r   Útest_return_different_statementÚ,TestOptional.test_return_different_statementR   s?   € Ü+ˆÜ”e—m‘mÐ%Ô& vÓ.ˆãˆAØ×#Ñ#¡F¨1£I©u°Q«xÖ8ò r   c                 óê   • [         n[        [        R                  [        R                  45      " U5      n[        R
                  " SS5       H#  u  p4U R                  U" X45      U" X45      5        M%     g )N)r   r   r   )r   r   )r   r   r   Úint32Ú	itertoolsÚproductr)   )r+   r,   r-   r
   r   s        r   Ú!test_return_bool_optional_or_noneÚ.TestOptional.test_return_bool_optional_or_noneY   sT   € Ü-ˆÜ”e—k‘k¤5§;¡;Ð0Ô1°&Ó9ˆä×%Ò% i°Ö8‰DˆAØ×#Ñ#¡F¨1£L±%¸³+Ö>ò 9r   c                 óž   • [         n[        [        R                  45      " U5      nS H!  nU R	                  U" U5      U" U5      5        M#     g )N©éÿÿÿÿr   r   r   )r   r   r   Úintpr)   r*   s       r   Útest_is_this_a_noneÚ TestOptional.test_is_this_a_none`   s>   € ÜˆÜ”e—j‘j�]Ô# FÓ+ˆãˆAØ×#Ñ#¡F¨1£I©u°Q«xÖ8ò r   c                 ó  • [         n[        [        R                  4SS9" U5      nU R	                  UR
                  UR                  S      R                  5        S H!  nU R                  U" U5      U" U5      5        M#     g )NT)Úforceobjr   r;   )	r   r   r   r=   Ú
assertTrueÚ	overloadsÚ
signaturesÚ
objectmoder)   r*   s       r   Útest_is_this_a_none_objmodeÚ(TestOptional.test_is_this_a_none_objmodeg   sf   € ÜˆÜ”U—Z‘Z�M¨DÒ1°&Ó9ˆØ�‰˜Ÿ™¨×(8Ñ(8¸Ñ(;Ñ<×GÑGÔHÛˆAØ×#Ñ#¡F¨1£I©u°Q«xÖ8ò r   c                 óÎ   • [         n[        [        R                  [        R                  45      " U5      nU R	                  U" SS5      5        U R                  U" SS5      5        g ©Nr   r   )r    r   r   r=   rB   ÚassertFalse©r+   r,   r-   s      r   Útest_a_is_b_intpÚTestOptional.test_a_is_b_intpn   sI   € ÜˆÜ”e—j‘j¤%§*¡*Ð-Ô.¨vÓ6ˆà�‰™˜a ›Ô$Ø×Ñ™˜q !›Õ%r   c                 óÎ   • [         n[        [        R                  [        R                  45      " U5      nU R	                  U" SS5      5        U R                  U" SS5      5        g rI   )r"   r   r   r=   rJ   rB   rK   s      r   Útest_a_is_not_b_intpÚ!TestOptional.test_a_is_not_b_intpu   sI   € ÜˆÜ”e—j‘j¤%§*¡*Ð-Ô.¨vÓ6ˆà×Ñ™˜q !›Ô%Ø�‰™˜a ›Õ$r   c                 ó¬   • S n[        S5      " U5      nU R                  U" SS5      U" SS5      5        U R                  U" SS 5      U" SS 5      5        g )Nc                 ó   • Uc  U $ X-   $ ©Nr	   ©r
   r   s     r   r,   Ú0TestOptional.test_optional_float.<locals>.pyfunc}   s   € Ø‰yØ�à‘u�r   z(float64, optional(float64))ç      ð?çš™™™™™(@)r   ÚassertAlmostEqualrK   s      r   Útest_optional_floatÚ TestOptional.test_optional_float|   sS   € ò	ô Ð3Ô4°VÓ<ˆØ×Ñ™v b¨$Ó/±°r¸4³ÔAØ×Ñ™v b¨$Ó/±°r¸4³ÕAr   c                 óR  • S n[        S5      " U5      n[        R                  " S/[        R                  S9nUR	                  5       nU R                  U" SU5      U" SU5      5        [        R                  R                  XC5        U R                  U" SS 5      U" SS 5      5        g )Nc                 ó0   • Uc  U $ US==   U -  ss'   US   $ ©Nr   r	   rT   s     r   r,   Ú0TestOptional.test_optional_array.<locals>.pyfuncˆ   s"   € Ø‰yØ�à�!“˜‘	“Ø˜‘t�r   z(float32, optional(float32[:]))rW   ©ÚdtyperV   )r   ÚnpÚarrayÚfloat32ÚcopyrX   ÚtestingÚassert_almost_equal)r+   r,   r-   ÚcyÚpys        r   Útest_optional_arrayÚ TestOptional.test_optional_array‡   s…   € ò	ô Ð6Ô7¸Ó?ˆÜ�XŠX�t�f¤B§J¡JÑ/ˆØ�W‰W‹YˆØ×Ñ™v b¨"›~©u°R¸«}Ô=Ü
�
‰
×&Ñ& rÔ.Ø×Ñ™v b¨$Ó/±°r¸4³ÕAr   c                 óh  • S n[        S5      " U5      nU R                  [        5       nU" S 5        S S S 5        U R                  S[	        WR
                  5      5        [        R                  " S/[        R                  S9nU R                  U" U5      U" U5      5        g ! , (       d  f       Nv= f)Nc                 ó   • U S   $ r]   r	   )r   s    r   r,   Ú6TestOptional.test_optional_array_error.<locals>.pyfunc—   s   € Ø�Q‘4ˆKr   z(optional(int32[:]),)z&expected array(int32, 1d, A), got NoneiÍ«  r_   )
r   ÚassertRaisesÚ	TypeErrorÚassertInÚstrÚ	exceptionra   rb   r5   ÚassertEqual)r+   r,   r-   Úraisedr   s        r   Útest_optional_array_errorÚ&TestOptional.test_optional_array_error–   s‹   € ò	ô Ð,Ô-¨fÓ5ˆØ×ÑœyÔ)¨VÙ�$ŒK÷ *à�‰Ð>Ü˜&×*Ñ*Ó+ô	-ô �HŠH�f�X¤R§X¡XÑ.ˆØ×Ñ™˜q›¡6¨!£9Õ-÷ *Õ)ús   ª	B#Â#
B1c                 óŒ   • S n[        U5      n[        R                  " S5      nU R                  U" US5      U" US5      5        g)z3
Check that we can access attribute of an optional
c                 ó6   • S nU(       a  U nUR                   S   $ r]   )Úshape)ÚarrÚdo_itÚopts      r   r,   Ú:TestOptional.test_optional_array_attribute.<locals>.pyfunc§   s   € ØˆCÞØ�Ø—9‘9˜Q‘<Ðr   é   TN)r   ra   Úarangers   )r+   r,   r-   rz   s       r   Útest_optional_array_attributeÚ*TestOptional.test_optional_array_attribute£   s=   € ò	 ô �V“ˆÜ�iŠi˜‹lˆØ×Ñ™  TÓ*©E°#°tÓ,<Õ=r   c                 óž   ^• [         S 5       m[         U4S j5       nU R                  U" SS5      5        U R                  U" SS5      S5        g)z9
Check that we can assign to a variable of optional type
c                 ó    • U(       a  S nU$ U nU$ rS   r	   )ÚvalÚget_noner   s      r   Úmake_optionalÚ;TestOptional.test_assign_to_optional.<locals>.make_optionalµ   s   € æØ�ð ˆJð �ØˆJr   c                 ó:   >• T" U S5      nU(       a	  T" U S5      nU$ )NTFr	   )r„   Ú
run_secondr   r†   s      €r   ÚfooÚ1TestOptional.test_assign_to_optional.<locals>.foo½   s#   ø€ á˜c 4Ó(ˆAÞÙ! # uÓ-�ØˆHr   é{   Féç   TN)r   ÚassertIsNoners   )r+   rŠ   r†   s     @r   Útest_assign_to_optionalÚ$TestOptional.test_assign_to_optional±   sW   ø€ ô 
ñ	ó 
ð	ô 
ô	ó 
ð	ð 	×Ñ™#˜c 5›/Ô*Ø×Ñ™˜S $›¨Õ-r   c                 ó˜   • SS jn[        U5      nU R                  U" 5       U" 5       5        U R                  U" S5      U" S5      5        g)z
Issue 1868
Nc                 ó   • U c  Sn U $ r   r	   r   s    r   r,   Ú;TestOptional.test_optional_thru_omitted_arg.<locals>.pyfuncÌ   s   € Ø‰yØ�ØˆHr   é   rS   )r   rs   rK   s      r   Útest_optional_thru_omitted_argÚ+TestOptional.test_optional_thru_omitted_argÇ   s>   € ô
	ô
 �V“ˆØ×Ñ™›¡5£7Ô+Ø×Ñ™ ›¡E¨!£HÕ-r   c                 ó&  • S n[         R                  " [         R                  /S-  5      n[         R                  " U5      nU4n[	        U5      " U5      nU R                  U" S5      U" S5      5        U R                  U" S5      U" S5      5        g)z
Issue 2171
c                 ó   • U c  g U u  pX4$ rS   r	   )r
   r   r   s      r   r,   Ú1TestOptional.test_optional_unpack.<locals>.pyfuncÙ   s   € Ø‰yØà‘�Ø�t�r   r   N)r   r   )r   ÚTupler=   ÚOptionalr   rs   )r+   r,   ÚtupÚopt_tupÚsigr-   s         r   Útest_optional_unpackÚ!TestOptional.test_optional_unpackÕ   su   € ò	ô �kŠkœ5Ÿ:™:˜,¨Ñ*Ó+ˆÜ—.’. Ó%ˆØˆjˆÜ�S”	˜&Ó!ˆØ×Ñ™ ›¡u¨T£{Ô3Ø×Ñ™ ›©¨v«Õ7r   c                 ó8   ^• [         S 5       mU4S jnU" 5         g)z
Issue #4058
c                 ó    • S nU (       a  SnSU4$ )Né
   r   r	   )ÚmaybeÚlxs     r   rŠ   Ú9TestOptional.test_many_optional_none_returns.<locals>.fooë   s   € àˆBÞØ�Ø�b�5ˆLr   c                  óB   >• / n [        S5       H  nSnT" U5      nM     g )Ni N  F)Úrange)ÚtmpÚ_r¤   rŠ   s      €r   ÚworkÚ:TestOptional.test_many_optional_none_returns.<locals>.workò   s$   ø€ ØˆCÜ˜5–\�Ø�Ù˜“J’ò "r   N)r   )r+   r«   rŠ   s     @r   Útest_many_optional_none_returnsÚ,TestOptional.test_many_optional_none_returnsç   s#   ø€ ô 
ñ	ó 
ð	õ	ñ 	�r   r	   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú_numba_parallel_test_r/   r2   r8   r>   rF   rL   rO   rY   ri   ru   r€   r�   r•   rŸ   r­   Ú__static_attributes__r	   r   r   r$   r$   G   sU   † à!Ðò9ò9ò?ò9ò9ò&ò%ò	BòBò.ò>ò.ò,.ò8õ$r   r$   Ú__main__)r6   Únumpyra   ÚunittestÚnumbar   r   Ú
numba.corer   Únumba.tests.supportr   r   r   r   r   r    r"   r$   r¯   Úmainr	   r   r   Ú<module>r¼      s\   ðÛ ã ã ß Ý Ý (òòòò 
òòôs�8ô sðl ˆzÓØ‡M‚M…Oð r   