Ë
    èÿæif  ã                   ó¬   — d dl Z d dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
 d„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Z G d„ de
«      Zedk(  r ej&                  «        yy)é    N)ÚjitÚnjit)Útypes)ÚTestCasec                 ó   — | rd }|S d}|S ©Ng333333ó?© )ÚxÚrets     ún/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_optional.pyÚreturn_double_or_noner      s   € ÙØˆð €Jð ˆØ€Jó    c                 ó
   — | ry yr   r	   ©r
   s    r   Úreturn_different_statementr      s   € ÙØàr   c                 ó,   — |rd}nd }| dk(  ry| dk(  r|S y )NFé   Té   r	   )r
   ÚyÚzs      r   Úreturn_bool_optional_or_noner      s*   € ÙØ‰àˆØˆA‚vàØ	
ˆaŠàˆð r   c                 ó.   — | rd }n| }|€| dz
  S |�| dz   S y ©Nr   r	   )r
   Úval_or_nones     r   Úis_this_a_noner   *   s2   € ÙØ‰àˆàÐØ�1‰uˆàÐØ�1‰uˆð r   c                 ó
   — | |u S )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                 ó
   — | |uS )z 
    This is `not (a is b)`
    r	   r   s     r   Ú
a_is_not_br"   @   s   € ð �Aˆ:Ðr   c                   ój   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestOptionalFc                 óš   — t         } t        t        j                  f«      |«      }dD ]   }| j	                   ||«       ||«      «       Œ" y ©N)TF)r   r   r   ÚbooleanÚassertPreciseEqual©ÚselfÚpyfuncÚcfuncÚvs       r   Útest_return_double_or_nonez'TestOptional.test_return_double_or_noneK   sA   € Ü&ˆØ&””e—m‘mÐ%Ó& vÓ.ˆãˆAØ×#Ñ#¡F¨1£I©u°Q«xÕ8ñ r   c                 óš   — t         } t        t        j                  f«      |«      }dD ]   }| j	                   ||«       ||«      «       Œ" y r&   )r   r   r   r'   r(   r)   s       r   Útest_return_different_statementz,TestOptional.test_return_different_statementR   sA   € Ü+ˆØ&””e—m‘mÐ%Ó& vÓ.ˆãˆAØ×#Ñ#¡F¨1£I©u°Q«xÕ8ñ r   c                 óê   — t         } t        t        j                  t        j                  f«      |«      }t	        j
                  dd«      D ]%  \  }}| j                   |||«       |||«      «       Œ' y )N)r   r   r   )r   r   )r   r   r   Úint32Ú	itertoolsÚproductr(   )r*   r+   r,   r
   r   s        r   Ú!test_return_bool_optional_or_nonez.TestOptional.test_return_bool_optional_or_noneY   s\   € Ü-ˆØ1””e—k‘k¤5§;¡;Ð0Ó1°&Ó9ˆä×%Ñ% i°Ö8‰DˆAˆqØ×#Ñ#¡F¨1¨a£L±%¸¸1³+Õ>ñ 9r   c                 óš   — t         } t        t        j                  f«      |«      }dD ]   }| j	                   ||«       ||«      «       Œ" y )N©éÿÿÿÿr   r   r   )r   r   r   Úintpr(   r)   s       r   Útest_is_this_a_nonez TestOptional.test_is_this_a_none`   s@   € ÜˆØ#””e—j‘j�]Ó# FÓ+ˆãˆAØ×#Ñ#¡F¨1£I©u°Q«xÕ8ñ r   c                 ó  — t         } t        t        j                  fd¬«      |«      }| j	                  |j
                  |j                  d      j                  «       dD ]   }| j                   ||«       ||«      «       Œ" y )NT)Úforceobjr   r7   )	r   r   r   r9   Ú
assertTrueÚ	overloadsÚ
signaturesÚ
objectmoder(   r)   s       r   Útest_is_this_a_none_objmodez(TestOptional.test_is_this_a_none_objmodeg   sh   € ÜˆØ1””U—Z‘Z�M¨DÔ1°&Ó9ˆØ�‰˜Ÿ™¨×(8Ñ(8¸Ñ(;Ñ<×GÑGÔHÛˆAØ×#Ñ#¡F¨1£I©u°Q«xÕ8ñ r   c                 óÎ   — t         } t        t        j                  t        j                  f«      |«      }| j	                   |dd«      «       | j                   |dd«      «       y ©Nr   r   )r    r   r   r9   r=   ÚassertFalse©r*   r+   r,   s      r   Útest_a_is_b_intpzTestOptional.test_a_is_b_intpn   sK   € ÜˆØ.””e—j‘j¤%§*¡*Ð-Ó.¨vÓ6ˆà�‰™˜a ›Ô$Ø×Ñ™˜q !›Õ%r   c                 óÎ   — t         } t        t        j                  t        j                  f«      |«      }| j	                   |dd«      «       | j                   |dd«      «       y rC   )r"   r   r   r9   rD   r=   rE   s      r   Útest_a_is_not_b_intpz!TestOptional.test_a_is_not_b_intpu   sK   € ÜˆØ.””e—j‘j¤%§*¡*Ð-Ó.¨vÓ6ˆà×Ñ™˜q !›Ô%Ø�‰™˜a ›Õ$r   c                 ó¬   — d„ } t        d«      |«      }| j                   |dd«       |dd«      «       | j                   |dd «       |dd «      «       y )Nc                 ó   — |€| S | |z   S ©Nr	   ©r
   r   s     r   r+   z0TestOptional.test_optional_float.<locals>.pyfunc}   s   € ØˆyØ�à˜1‘u�r   z(float64, optional(float64))ç      ð?çš™™™™™(@)r   ÚassertAlmostEqualrE   s      r   Útest_optional_floatz TestOptional.test_optional_float|   sU   € ò	ð 5”Ð3Ó4°VÓ<ˆØ×Ñ™v b¨$Ó/±°r¸4³ÔAØ×Ñ™v b¨$Ó/±°r¸4³ÕAr   c                 óX  — d„ } t        d«      |«      }t        j                  dgt        j                  ¬«      }|j	                  «       }| j                   |d|«       |d|«      «       t        j                  j                  ||«       | j                   |dd «       |dd «      «       y )Nc                 ó.   — |€| S |dxx   | z  cc<   |d   S ©Nr   r	   rL   s     r   r+   z0TestOptional.test_optional_array.<locals>.pyfuncˆ   s"   € ØˆyØ�à�!“˜‘	“Ø˜‘t�r   z(float32, optional(float32[:]))rN   ©ÚdtyperM   )r   ÚnpÚarrayÚfloat32ÚcopyrO   ÚtestingÚassert_almost_equal)r*   r+   r,   ÚcyÚpys        r   Útest_optional_arrayz TestOptional.test_optional_array‡   s‰   € ò	ð 8”Ð6Ó7¸Ó?ˆÜ�X‰X�t�f¤B§J¡JÔ/ˆØ�W‰W‹YˆØ×Ñ™v b¨"›~©u°R¸«}Ô=Ü
�
‰
×&Ñ& r¨2Ô.Ø×Ñ™v b¨$Ó/±°r¸4³ÕAr   c                 ób  — d„ } t        d«      |«      }| j                  t        «      5 } |d «       d d d «       | j                  dt	        j
                  «      «       t        j                  dgt        j                  ¬«      }| j                   ||«       ||«      «       y # 1 sw Y   ŒsxY w)Nc                 ó   — | d   S rS   r	   )r   s    r   r+   z6TestOptional.test_optional_array_error.<locals>.pyfunc—   s   € Ø�Q‘4ˆKr   z(optional(int32[:]),)z&expected array(int32, 1d, A), got NoneiÍ«  rT   )
r   ÚassertRaisesÚ	TypeErrorÚassertInÚstrÚ	exceptionrV   rW   r2   ÚassertEqual)r*   r+   r,   Úraisedr   s        r   Útest_optional_array_errorz&TestOptional.test_optional_array_error–   s�   € ò	ð .”Ð,Ó-¨fÓ5ˆØ×ÑœyÔ)¨VÙ�$ŒK÷ *à�‰Ð>Ü˜&×*Ñ*Ó+ô	-ô �H‰H�f�X¤R§X¡XÔ.ˆØ×Ñ™˜q›¡6¨!£9Õ-÷ *Ð)ús   ª	B%Â%B.c                 óŠ   — d„ }t        |«      }t        j                  d«      }| j                   ||d«       ||d«      «       y)zC
        Check that we can access attribute of an optional
        c                 ó,   — d }|r| }|j                   d   S rS   )Úshape)ÚarrÚdo_itÚopts      r   r+   z:TestOptional.test_optional_array_attribute.<locals>.pyfunc§   s   € ØˆCÙØ�Ø—9‘9˜Q‘<Ðr   é   TN)r   rV   Úarangerf   )r*   r+   r,   rl   s       r   Útest_optional_array_attributez*TestOptional.test_optional_array_attribute£   s=   € ò	 ô �V“ˆÜ�i‰i˜‹lˆØ×Ñ™  TÓ*©E°#°tÓ,<Õ=r   c                 óœ   ‡— t         d„ «       Št         ˆfd„«       }| j                   |dd«      «       | j                   |dd«      d«       y)zI
        Check that we can assign to a variable of optional type
        c                 ó   — |rd }|S | }|S rK   r	   )ÚvalÚget_noner   s      r   Úmake_optionalz;TestOptional.test_assign_to_optional.<locals>.make_optionalµ   s   € áØ�ð ˆJð �ØˆJr   c                 ó0   •—  ‰| d«      }|r	 ‰| d«      }|S )NTFr	   )rt   Ú
run_secondr   rv   s      €r   Úfooz1TestOptional.test_assign_to_optional.<locals>.foo½   s#   ø€ á˜c 4Ó(ˆAÙÙ! # uÓ-�ØˆHr   é{   Féç   TN)r   ÚassertIsNonerf   )r*   ry   rv   s     @r   Útest_assign_to_optionalz$TestOptional.test_assign_to_optional±   sW   ø€ ô 
ñ	ó 
ð	ô 
ó	ó 
ð	ð 	×Ñ™#˜c 5›/Ô*Ø×Ñ™˜S $›¨Õ-r   c                 ó–   — dd„}t        |«      }| j                   |«        |«       «       | j                   |d«       |d«      «       y)z
        Issue 1868
        Nc                 ó   — | €d} | S r   r	   r   s    r   r+   z;TestOptional.test_optional_thru_omitted_arg.<locals>.pyfuncÌ   s   € ØˆyØ�ØˆHr   é   rK   )r   rf   rE   s      r   Útest_optional_thru_omitted_argz+TestOptional.test_optional_thru_omitted_argÇ   s>   € ó
	ô
 �V“ˆØ×Ñ™›¡5£7Ô+Ø×Ñ™ ›¡E¨!£HÕ-r   c                 ó"  — d„ }t        j                  t         j                  gdz  «      }t        j                  |«      }|f} t	        |«      |«      }| j                   |d«       |d«      «       | j                   |d«       |d«      «       y)z
        Issue 2171
        c                 ó   — | €y | \  }}||fS rK   r	   )r
   r   r   s      r   r+   z1TestOptional.test_optional_unpack.<locals>.pyfuncÙ   s   € ØˆyØà‘��1Ø˜!�t�r   r   N)r   r   )r   ÚTupler9   ÚOptionalr   rf   )r*   r+   ÚtupÚopt_tupÚsigr,   s         r   Útest_optional_unpackz!TestOptional.test_optional_unpackÕ   sw   € ò	ô �k‰kœ5Ÿ:™:˜,¨Ñ*Ó+ˆÜ—.‘. Ó%ˆØˆjˆØ”�S“	˜&Ó!ˆØ×Ñ™ ›¡u¨T£{Ô3Ø×Ñ™ ›©¨v«Õ7r   c                 ó6   ‡— t         d„ «       Šˆfd„} |«        y)z
        Issue #4058
        c                 ó   — d }| rd}d|fS )Né
   r   r	   )ÚmaybeÚlxs     r   ry   z9TestOptional.test_many_optional_none_returns.<locals>.fooë   s   € àˆBÙØ�Ø�b�5ˆLr   c                  ó>   •— g } t        d«      D ]  }d} ‰|«      }Œ y )Ni N  F)Úrange)ÚtmpÚ_r�   ry   s      €r   Úworkz:TestOptional.test_many_optional_none_returns.<locals>.workò   s$   ø€ ØˆCÜ˜5–\�Ø�Ù˜“J‘ñ "r   N)r   )r*   r“   ry   s     @r   Útest_many_optional_none_returnsz,TestOptional.test_many_optional_none_returnsç   s#   ø€ ô 
ñ	ó 
ð	ô	ñ 	�r   N)Ú__name__Ú
__module__Ú__qualname__Ú_numba_parallel_test_r.   r0   r5   r:   rA   rF   rH   rP   r^   rh   rq   r}   r�   r‰   r”   r	   r   r   r$   r$   G   sU   „ à!Ðò9ò9ò?ò9ò9ò&ò%ò	BòBò.ò>ò.ò,.ò8ó$r   r$   Ú__main__)r3   ÚnumpyrV   Ú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ÒØ€H‡M�M…Oð r   