Ë
    èÿæiÔ-  ã                   óâ   — d dl Zd dlZd dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZmZmZmZ d dlmZ  G d	„ d
e«      Z G d„ de«      Zedk(  r ej4                  «        yy)é    N)ÚTestCase©Únjit)ÚtypesÚerrorsÚcgutils©Ú	signature)Úmodels)ÚoverloadÚSentryLiteralArgsÚoverload_methodÚregister_modelÚ	intrinsic©Ú	literallyc                   ó´   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zej                  d
„ «       Zej                  d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestLiteralDispatchc                 óÔ   — t         d„ «       }|D ]  }| j                   ||«      |«       Œ t        ||j                  «      D ]$  \  }}| j                  |d   j                  |«       Œ& y )Nc                 ó   — t        | «      S ©Nr   ©Úxs    úv/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_literal_dispatch.pyÚfooz4TestLiteralDispatch.check_literal_basic.<locals>.foo   s   € ä˜Q“<Ðó    r   )r   ÚassertEqualÚzipÚ
signaturesÚliteral_value)ÚselfÚliteral_argsr   ÚlitÚsigs        r   Úcheck_literal_basicz'TestLiteralDispatch.check_literal_basic   si   € Ü	ñ	 ó 
ð	 ó  ˆCØ×Ñ™S ›X sÕ+ð  ô ˜L¨#¯.©.Ö9‰HˆC�Ø×Ñ˜S ™V×1Ñ1°3Õ7ñ :r   c                 óP   — | j                  ddg«       | j                  ddg«       y )Né{   éA  ÚabcÚcb123)r%   )r!   s    r   Útest_literal_basicz&TestLiteralDispatch.test_literal_basic   s'   € Ø× Ñ  # s Ô,Ø× Ñ  %¨Ð!1Õ2r   c                 ó   ‡— t         d„ «       Št         ˆfd„«       }d\  }}| j                   |||«      |dz  |z   «       ‰j                  \  }| j                  |d   t        j                  |«      «       |j                  \  }| j                  |d   t        j                  |«      «       | j                  |d   t        j                  «       y )Nc                 ó   — t        | «      dz  S )Né   r   r   s    r   r   z4TestLiteralDispatch.test_literal_nested.<locals>.foo"   ó   € ä˜Q“< !Ñ#Ð#r   c                 ó   •—  ‰| «      |z   S r   © )Úyr   r   s     €r   Úbarz4TestLiteralDispatch.test_literal_nested.<locals>.bar&   ó   ø€ á�q“6˜A‘:Ðr   )é   é   r.   r   é   )r   r   r   r   ÚliteralÚassertNotIsInstanceÚLiteral)r!   r3   r2   r   Úfoo_sigÚbar_sigr   s         @r   Útest_literal_nestedz'TestLiteralDispatch.test_literal_nested!   sº   ø€ Ü	ñ	$ó 
ð	$ô 
ó	ó 
ð	ð ‰ˆˆ1Ø×Ñ™˜Q › A¨¡E¨A¡IÔ.Ø—N‘N‰	ˆØ×Ñ˜ ™¤U§]¡]°1Ó%5Ô6Ø—N‘N‰	ˆØ×Ñ˜ ™¤U§]¡]°1Ó%5Ô6Ø× Ñ  ¨¡¬U¯]©]Õ;r   c                 óÄ   ‡— dd l Št        ˆfd„«       }| j                   |d«      d«       | j                  |j                  d   d   t	        j
                  d«      «       y )Nr   c                 ó(   •—  ‰j                   | «      S r   r   )r   Únumbas    €r   r   z7TestLiteralDispatch.test_literally_freevar.<locals>.foo6   s   ø€ à"�5—?‘? 1Ó%Ð%r   r'   )r@   r   r   r   r   r8   )r!   r   r@   s     @r   Útest_literally_freevarz*TestLiteralDispatch.test_literally_freevar2   sU   ø€ ãä	ó	&ó 
ð	&ð 	×Ñ™˜S› 3Ô'Ø×Ñ˜Ÿ™¨Ñ*¨1Ñ-¬u¯}©}¸SÓ/AÕBr   c                 ó   — d„ } |d„ «      \  }} |t         «      \  }}| j                   |dd«       |dd«      «       | j                  |j                  d   d   j                  d«       | j                  |j                  d   d   j                  d«       | j                   |dd«       |dd«      «       | j                  |j                  d   d   j                  d«       | j                  |j                  d   d   j                  d«       y )	Nc                 ó6   ‡‡— | ˆfd„«       Š| ˆfd„«       Š‰‰fS )Nc                 ó0   •— | dk  r|S |  ‰| dz
  |«      z  S ©Nr7   r1   )ÚnÚvalueÚ	inner_facs     €r   Ú	outer_facz[TestLiteralDispatch.test_mutual_recursion_literal.<locals>.get_functions.<locals>.outer_fac?   s%   ø€ à�q’5Ø �LØ™9 Q¨¡U¨EÓ2Ñ2Ð2r   c                 óB   •— | dk  rt        |«      S |  ‰| dz
  |«      z  S rE   r   )rF   rG   rI   s     €r   rH   z[TestLiteralDispatch.test_mutual_recursion_literal.<locals>.get_functions.<locals>.inner_facE   s+   ø€ à�q’5Ü$ UÓ+Ð+Ø™9 Q¨¡U¨EÓ2Ñ2Ð2r   r1   )ÚdecorrH   rI   s    @@r   Úget_functionszHTestLiteralDispatch.test_mutual_recursion_literal.<locals>.get_functions>   s6   ù€ Øó3ó ð3ð
 ó3ó ð3ð
 ˜iÐ'Ð'r   c                 ó   — | S r   r1   r   s    r   Ú<lambda>zCTestLiteralDispatch.test_mutual_recursion_literal.<locals>.<lambda>M   s   € ¹qr   é
   é   r   r7   é   é   )r   r   r   r    )r!   rL   Úref_outer_facÚref_inner_facrI   rH   s         r   Útest_mutual_recursion_literalz1TestLiteralDispatch.test_mutual_recursion_literal=   sû   € ò	(ñ (5±[Ó'AÑ$ˆ�}Ù,¬TÓ2Ñˆ	�9à×Ñ™ 2 rÓ*©M¸"¸bÓ,AÔBØ×Ñ˜×-Ñ-¨aÑ0°Ñ3×AÑAÀ2ÔFØ×Ñ˜×-Ñ-¨aÑ0°Ñ3×AÑAÀ2ÔFà×Ñ™ 2 rÓ*©M¸"¸bÓ,AÔBØ×Ñ˜×-Ñ-¨aÑ0°Ñ3×AÑAÀ2ÔFØ×Ñ˜×-Ñ-¨aÑ0°Ñ3×AÑAÀ2ÕFr   c                 ó  ‡— t         ˆfd„«       }t         d„ «       Št        ddd¬«      } |di |¤Ž} d„ di |¤Ž}| j                  ||«       |j                  \  }| j                  |d   t	        j
                  d«      «       y )	Nc                 ó   •—  ‰| |«      S r   r1   ©ÚaÚbÚcÚinners      €r   r   z>TestLiteralDispatch.test_literal_nested_multi_arg.<locals>.fooY   ó   ø€ á˜˜A“;Ðr   c                 ó   — | t        |«      z   S r   r   ©r   r2   s     r   r\   z@TestLiteralDispatch.test_literal_nested_multi_arg.<locals>.inner]   ó   € à”y “|Ñ#Ð#r   r7   r.   r5   ©rY   rZ   r[   c                 ó   — | |z   S r   r1   ra   s      r   rN   zCTestLiteralDispatch.test_literal_nested_multi_arg.<locals>.<lambda>c   s   €  ! a¢%r   r1   )r   Údictr   r   r   r8   )r!   r   ÚkwargsÚgotÚexpectr;   r\   s         @r   Útest_literal_nested_multi_argz1TestLiteralDispatch.test_literal_nested_multi_argX   s‰   ø€ Ü	ó	ó 
ð	ô 
ñ	$ó 
ð	$ô ˜˜Q !Ô$ˆÙ‰m�F‰mˆÚ'Ñ2¨6Ñ2ˆØ×Ñ˜˜fÔ%Ø—N‘N‰	ˆØ×Ñ˜ ™¤U§]¡]°1Ó%5Õ6r   c                 ó,  ‡— t         ˆfd„«       }t         d„ «       Št        j                  d«      }| j                  t        j
                  «      5 } |dd|¬«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nc                 ó   •—  ‰| |«      S r   r1   rX   s      €r   r   z>TestLiteralDispatch.test_unsupported_literal_type.<locals>.fooi   r]   r   c                 ó   — | t        |«      z   S r   r   r_   s     r   r\   z@TestLiteralDispatch.test_unsupported_literal_type.<locals>.innerm   r`   r   rO   r7   r.   ra   znumpy.ndarray)	r   ÚnpÚarangeÚassertRaisesr   ÚLiteralTypingErrorÚassertInÚstrÚ	exception)r!   r   ÚarrÚraisesr\   s       @r   Útest_unsupported_literal_typez1TestLiteralDispatch.test_unsupported_literal_typeh   s�   ø€ Ü	ó	ó 
ð	ô 
ñ	$ó 
ð	$ô �i‰i˜‹mˆØ×Ñœv×8Ñ8Ô9¸VÙ�!�q˜CÕ ÷ :à�‰�o¤s¨6×+;Ñ+;Ó'<Õ=÷ :Ð9ús   ÁB
Â
Bc                 óð  ‡— t         ˆfd„«       }t         d„ «       Št        ddd¬«      } |di |¤Ž} d„ di |¤Ž}| j                  ||«       |j                  \  \  }}}| j	                  |t
        j                  «       | j                  |t
        j                  «       | j                  |j                  d«       | j                  |t
        j                  «       | j                  |j                  d«       y )	Nc                 ó*   •—  ‰| |«       ‰||«      z   S r   r1   rX   s      €r   r   z/TestLiteralDispatch.test_biliteral.<locals>.foox   s   ø€ á˜˜A“;¡ q¨!£Ñ,Ð,r   c                 ó   — | t        |«      z   S r   r   r_   s     r   r\   z1TestLiteralDispatch.test_biliteral.<locals>.inner|   r`   r   r7   r.   r5   ra   c                 ó   — | |z   |z   |z   S r   r1   ra   s      r   rN   z4TestLiteralDispatch.test_biliteral.<locals>.<lambda>‚   s   €  ! a¡%¨!¡)¨a¢-r   r1   ©	r   rc   r   r   r9   r   r:   ÚassertIsInstancer    ©	r!   r   rd   re   rf   Útype_aÚtype_bÚtype_cr\   s	           @r   Útest_biliteralz"TestLiteralDispatch.test_biliteralv   sÜ   ø€ ä	ó	-ó 
ð	-ô 
ñ	$ó 
ð	$ô ˜˜Q !Ô$ˆÙ‰m�F‰mˆÚ/Ñ:°6Ñ:ˆØ×Ñ˜˜fÔ%Ø%(§^¡^Ñ"Ñ	!ˆ&�&˜&Ø× Ñ  ¬¯©Ô7Ø×Ñ˜f¤e§m¡mÔ4Ø×Ñ˜×-Ñ-¨qÔ1Ø×Ñ˜f¤e§m¡mÔ4Ø×Ñ˜×-Ñ-¨qÕ1r   c                 óz  ‡— t         d„ «       Š| j                  t        j                  «      5   ‰ddd«       d d d «       t         ˆfd„«       }| j                  t        j                  «      5 } |dd«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   ŒnxY w# 1 sw Y   Œ;xY w)Nc                 ó   — t        |«      S r   r   )rY   Úargss     r   r   z7TestLiteralDispatch.test_literally_varargs.<locals>.fooŒ   s   € ä˜T“?Ð"r   r7   r.   r5   c                 ó   •—  ‰| |«       y r   r1   ©rY   rZ   r   s     €r   r3   z7TestLiteralDispatch.test_literally_varargs.<locals>.bar“   s   ø€ á��1�Ir   zCannot request literal type)r   rm   r   rn   ÚTypingErrorro   rp   rq   )r!   r3   rs   r   s      @r   Útest_literally_varargsz*TestLiteralDispatch.test_literally_varargs‹   s¤   ø€ Ü	ñ	#ó 
ð	#ð ×Ñœv×8Ñ8Õ9Ù��1�aŒL÷ :ô 
ó	ó 
ð	ð ×Ñœv×1Ñ1Ô2°fÙ��1ŒI÷ 3à�‰Ø)Ü�× Ñ Ó!õ	
÷ :Ð9ú÷ 3Ð2ús   ­B%Á-
B1Â%B.Â1B:c                 ó0   — t         dd„«       } |d¬«       y )Nr7   c                 ó   — | t        |«      fS r   r   ©rY   rZ   s     r   r   z8TestLiteralDispatch.test_literally_defaults.<locals>.foo¡   ó   € à”y “|Ð$Ð$r   )rY   ©r7   r   )r!   r   s     r   Útest_literally_defaultsz+TestLiteralDispatch.test_literally_defaultsž   s   € ô 
ò	%ó 
ð	%áˆaŽr   c                 óL   ‡— t         dd„«       Št         ˆfd„«       } |d«       y )Nr7   c                 ó   — | t        |«      fS r   r   r‰   s     r   r   z>TestLiteralDispatch.test_literally_defaults_inner.<locals>.foo©   rŠ   r   c                 ó   •—  ‰| «      dz   S rE   r1   )rY   r   s    €r   r3   z>TestLiteralDispatch.test_literally_defaults_inner.<locals>.bar­   r4   r   r‹   r   )r!   r3   r   s     @r   Útest_literally_defaults_innerz1TestLiteralDispatch.test_literally_defaults_inner¦   s4   ø€ ô 
ò	%ó 
ð	%ô 
ó	ó 
ð	ñ 	ˆA�r   c                 óÎ   — t         d„ «       } |d«      }| j                  ||j                  d«      «       | j                  |j                  d   d   t
        j                  «       y )Nc                 ó,   — t        j                  | «      S r   )r@   r   r   s    r   r   z;TestLiteralDispatch.test_literally_from_module.<locals>.fooµ   s   € ä—?‘? 1Ó%Ð%r   r'   r   )r   r   Úpy_funcrz   r   r   r:   )r!   r   re   s      r   Útest_literally_from_modulez.TestLiteralDispatch.test_literally_from_module³   sZ   € ä	ñ	&ó 
ð	&ñ �#‹hˆØ×Ñ˜˜cŸk™k¨#Ó.Ô/Ø×Ñ˜cŸn™n¨QÑ/°Ñ2´E·M±MÕBr   c                 óà   — t         d„ «       }| j                  t        j                  «      5 } |dd«       d d d «       | j	                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nc                 ó   — t        d| z   «      S rE   r   r‰   s     r   r   z1TestLiteralDispatch.test_non_literal.<locals>.foo¾   s   € ä˜Q ™UÓ#Ð#r   r7   r.   zInvalid use of non-Literal type)r   rm   r   r…   ro   rp   rq   )r!   r   rs   s      r   Útest_non_literalz$TestLiteralDispatch.test_non_literal½   s`   € Ü	ñ	$ó 
ð	$ð ×Ñœv×1Ñ1Ô2°fÙ��1ŒI÷ 3à�‰Ø-Ü�× Ñ Ó!õ	
÷ 3Ð2ús   ¬
A$Á$A-c                 óÞ   ‡— t         d„ «       Š ‰dd«      }| j                  |‰j                  dd«      «       t         ˆfd„«       } |«       }| j                  ||j                  «       «       y )Nc                 ó:   — d}| t        |«      z   t        |«      z   S )Niè  r   )rY   rZ   Úvs      r   r   z5TestLiteralDispatch.test_inlined_literal.<locals>.fooË   s   € àˆAØ”y “|Ñ#¤i°£lÑ2Ð2r   r7   r.   c                  ó    •— d} d} ‰|| ¬«      S )Néd   é	   r‰   r1   r„   s     €r   r3   z5TestLiteralDispatch.test_inlined_literal.<locals>.barÓ   s   ø€ àˆAØˆAÙ˜˜a”=Ð r   )r   r   r“   )r!   re   r3   r   s      @r   Útest_inlined_literalz(TestLiteralDispatch.test_inlined_literalÉ   sn   ø€ ä	ñ	3ó 
ð	3ñ �!�Q‹iˆØ×Ñ˜˜cŸk™k¨!¨QÓ/Ô0ä	ó	!ó 
ð	!ñ
 ‹eˆØ×Ñ˜˜cŸk™k›mÕ,r   c                 óð  ‡— t         ˆfd„«       }t         d„ «       Št        ddd¬«      } |di |¤Ž} d„ di |¤Ž}| j                  ||«       |j                  \  \  }}}| j	                  |t
        j                  «       | j                  |t
        j                  «       | j                  |j                  d«       | j                  |t
        j                  «       | j                  |j                  d«       y )	Nc                 ó&   •‡ ‡— ˆ ˆˆfd„} ||«      S )Nc                 ó4   •— t        | «      d ‰‰‰«      z  z   S ©NrO   r   )ÚdrY   rZ   r\   s    €€€r   ÚclosurezGTestLiteralDispatch.test_aliased_variable.<locals>.foo.<locals>.closureß   s   ø€ Ü  “| b©5°°A«;Ñ&6Ñ6Ð6r   r1   )rY   rZ   r[   r¤   r\   s   ``  €r   r   z6TestLiteralDispatch.test_aliased_variable.<locals>.fooÝ   s   ú€ ö7ñ ˜1“:Ðr   c                 ó   — | t        |«      z   S r   r   r_   s     r   r\   z8TestLiteralDispatch.test_aliased_variable.<locals>.innerä   r`   r   r7   r.   r5   ra   c                 ó   — |d| |z   z  z   S r¢   r1   ra   s      r   rN   z;TestLiteralDispatch.test_aliased_variable.<locals>.<lambda>ê   s   €  ! b¨A°©E¡lÒ"2r   r1   ry   r{   s	           @r   Útest_aliased_variablez)TestLiteralDispatch.test_aliased_variableÜ   sÜ   ø€ Ü	ó	ó 
ð	ô 
ñ	$ó 
ð	$ô ˜˜Q !Ô$ˆÙ‰m�F‰mˆÚ2Ñ=°fÑ=ˆØ×Ñ˜˜fÔ%Ø%(§^¡^Ñ"Ñ	!ˆ&�&˜&Ø× Ñ  ¬¯©Ô7Ø×Ñ˜f¤e§m¡mÔ4Ø×Ñ˜×-Ñ-¨qÔ1Ø×Ñ˜f¤e§m¡mÔ4Ø×Ñ˜×-Ñ-¨qÕ1r   c                 óp  ‡‡— d„ Št        ‰«      ˆfd„«       Št        ˆfd„«       }d}d} |||«      }| j                  |||z   «       |j                  d   \  }}| j	                  |t
        j                  «       | j                  |j                  |«       | j                  |t
        j                  «       y )Nc                 ó   — | |z   S r   r1   r_   s     r   Údo_thisz;TestLiteralDispatch.test_overload_explicit.<locals>.do_thisö   ó   € Ø�q‘5ˆLr   c                 ó`   •— t        dg«      j                  ‰«      j                  | |«       d„ S )Nr   c                 ó   — | |z   S r   r1   r_   s     r   rN   zPTestLiteralDispatch.test_overload_explicit.<locals>.ov_do_this.<locals>.<lambda>ü   s   €   A¢r   )r   Úfor_functionÚbind)r   r2   Ú
ov_do_thiss     €r   r°   z>TestLiteralDispatch.test_overload_explicit.<locals>.ov_do_thisù   s+   ø€ ä˜s˜eÓ$×1Ñ1°*Ó=×BÑBÀ1ÀaÔHÙ%Ð%r   c                 ó   •—  ‰| |«      S r   r1   ©rY   rZ   rª   s     €r   r   z7TestLiteralDispatch.test_overload_explicit.<locals>.fooþ   ó   ø€ á˜1˜a“=Ð r   r'   r(   r   )	r   r   r   r   rz   r   r:   r    r9   )	r!   r   rY   rZ   Úrr|   r}   rª   r°   s	          @@r   Útest_overload_explicitz*TestLiteralDispatch.test_overload_explicitó   s±   ù€ ò	ô 
�'Ó	ó	&ó 
ð	&ô 
ó	!ó 
ð	!ð ˆØˆÙ��1‹IˆØ×Ñ˜˜A ™EÔ"ØŸ>™>¨!Ñ,Ñˆ�Ø×Ñ˜f¤e§m¡mÔ4Ø×Ñ˜×-Ñ-¨qÔ1Ø× Ñ  ¬¯©Õ7r   c                 óˆ  ‡‡	— d„ Št         d„ «       Š	t        ‰«      ˆ	fd„«       }t         ˆfd„«       }d}d} |||«      }| j                  |||z   «       |j                  d   \  }}| j	                  |t
        j                  «       | j                  |j                  |«       | j                  |t
        j                  «       y )Nc                 ó   — | |z   S r   r1   r_   s     r   rª   z;TestLiteralDispatch.test_overload_implicit.<locals>.do_this  r«   r   c                 ó   — t        | «      |z   S r   r   r_   s     r   Úhiddenz:TestLiteralDispatch.test_overload_implicit.<locals>.hidden  r/   r   c                 óD   •— t        | t        j                  «      rˆfd„S y )Nc                 ó   •—  ‰| |«      S r   r1   ©r   r2   r¹   s     €r   rN   zPTestLiteralDispatch.test_overload_implicit.<locals>.ov_do_this.<locals>.<lambda>  s   ø€ ¡F¨1¨a¤Lr   )Ú
isinstancer   ÚIntegerr¼   s     €r   r°   z>TestLiteralDispatch.test_overload_implicit.<locals>.ov_do_this  s   ø€ ä˜!œUŸ]™]Ô+ã0Ð0ð ,r   c                 ó   •—  ‰| |«      S r   r1   r²   s     €r   r   z7TestLiteralDispatch.test_overload_implicit.<locals>.foo  r³   r   r'   r(   r   )	r   r   r   r   rz   r   r:   r    r9   )
r!   r°   r   rY   rZ   r´   r|   r}   rª   r¹   s
           @@r   Útest_overload_implicitz*TestLiteralDispatch.test_overload_implicit  sÅ   ù€ ò	ô 
ñ	$ó 
ð	$ô 
�'Ó	ó	1ó 
ð	1ô
 
ó	!ó 
ð	!ð ˆØˆÙ��1‹IˆØ×Ñ˜˜A ™EÔ"ØŸ>™>¨!Ñ,Ñˆ�Ø×Ñ˜f¤e§m¡mÔ4Ø×Ñ˜×-Ñ-¨qÔ1Ø× Ñ  ¬¯©Õ7r   c                 ó.  ‡‡— d„ Št         d„ «       Št        ‰«      ˆfd„«       }t         ˆfd„«       }| j                  t        j                  «      5 } |dd¬«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)	Nc                 ó   — | |z   S r   r1   r_   s     r   rª   z=TestLiteralDispatch.test_overload_error_loop.<locals>.do_this.  r«   r   c                 ó   — t        | «      |z   S r   r   r_   s     r   r¹   z<TestLiteralDispatch.test_overload_error_loop.<locals>.hidden1  r/   r   c                 óp   •— t        |t        j                  «      rt        j                  d«      ‚ˆfd„}|S )NÚoopsc                 ó   •—  ‰| |«      S r   r1   r¼   s     €r   ÚimplzNTestLiteralDispatch.test_overload_error_loop.<locals>.ov_do_this.<locals>.impl<  s   ø€ Ù! ! Q›<Ð'r   )r½   r   ÚIntegerLiteralr   ÚNumbaValueError)r   r2   rÇ   r¹   s      €r   r°   z@TestLiteralDispatch.test_overload_error_loop.<locals>.ov_do_this5  s0   ø€ ä˜!œU×1Ñ1Ô2ô ×,Ñ,¨VÓ4Ð4ô(à�r   c                 ó(   •—  ‰| t        |«      «      S r   r   r²   s     €r   r   z9TestLiteralDispatch.test_overload_error_loop.<locals>.foo@  s   ø€ á˜1œi¨›lÓ+Ð+r   r'   r(   r‰   zRepeated literal typing request)r   r   rm   r   ÚCompilerErrorro   rp   rq   )r!   r°   r   rs   rª   r¹   s       @@r   Útest_overload_error_loopz,TestLiteralDispatch.test_overload_error_loop)  s–   ù€ ò
	ô 
ñ	$ó 
ð	$ô 
�'Ó	ó	ó 
ð	ô 
ó	,ó 
ð	,ð
 ×Ñœv×3Ñ3Ô4¸Ù�#˜Õ÷ 5à�‰Ð7Ü˜&×*Ñ*Ó+õ	-÷ 5Ð4ús   ÁBÂBN)Ú__name__Ú
__module__Ú__qualname__r%   r+   r=   rA   rU   rg   rt   r   r†   ÚunittestÚexpectedFailurerŒ   r�   r”   r—   rž   r§   rµ   rÀ   rÌ   r1   r   r   r   r      s‰   „ ò
8ò3ò<ò"	CòGò67ò >ò2ò*
ð& ×Ññó ðð ×Ññ
ó ð
òCò

ò-ò&2ò.8ò08ó< -r   r   c                   ó   — e Zd Zd„ Zd„ Zy)Ú!TestLiteralDispatchWithCustomTypec                 óø   ‡‡‡—  G d„ dt         «      } G ˆfd„dt        j                  «      Št        ‰«       G ˆfd„dt        j
                  «      «       Št        ˆfd„«       Št        |«      ˆfd„«       }‰|fS )	Nc                   ó   — e Zd Zd„ Zy)ú@TestLiteralDispatchWithCustomType.make_dummy_type.<locals>.Dummyc                 ó   — |S r   r1   ©r!   rY   s     r   r#   zDTestLiteralDispatchWithCustomType.make_dummy_type.<locals>.Dummy.litO  s   € Ø�r   N)rÍ   rÎ   rÏ   r#   r1   r   r   ÚDummyrÖ   N  s   „ ór   rÙ   c                   ó"   •‡ — e Zd Zˆˆ fd„Zˆ xZS )úDTestLiteralDispatchWithCustomType.make_dummy_type.<locals>.DummyTypec                 ó&   •— t         ‰| �  d¬«       y )NÚdummy)Úname©ÚsuperÚ__init__)r!   Ú	DummyTypeÚ	__class__s    €€r   rá   zMTestLiteralDispatchWithCustomType.make_dummy_type.<locals>.DummyType.__init__S  s   ø€ Ü�i Ñ/°WÐ/Õ=r   ©rÍ   rÎ   rÏ   rá   Ú__classcell__)rã   râ   s   @€r   râ   rÛ   R  s   ù„ ÷>ñ >r   râ   c                   ó"   •‡ — e Zd Zˆˆ fd„Zˆ xZS )úITestLiteralDispatchWithCustomType.make_dummy_type.<locals>.DummyTypeModelc                 ó,   •— g }t         ‰| �  |||«       y r   rß   )r!   ÚdmmÚfe_typeÚmembersÚDummyTypeModelrã   s       €€r   rá   zRTestLiteralDispatchWithCustomType.make_dummy_type.<locals>.DummyTypeModel.__init__X  s   ø€ Ø�Ü�n dÑ4°S¸'À7ÕKr   rä   )rã   rì   s   @€r   rì   rç   V  s   ù„ ÷Lñ Lr   rì   c                 ó2   •— d„ }t         ‰«       «      }||fS )Nc                 ón   —  t        j                  |j                  «      | |«      }|j                  «       S r   )r   Úcreate_struct_proxyÚreturn_typeÚ	_getvalue)ÚcontextÚbuilderr
   r‚   rÝ   s        r   ÚcodegenzVTestLiteralDispatchWithCustomType.make_dummy_type.<locals>.init_dummy.<locals>.codegen^  s8   € ð+œ×3Ñ3Ø×)Ñ)ó+Ø+2°Gó=�ð —‘Ó(Ð(r   r	   )Ú	typingctxrô   r$   râ   s      €r   Ú
init_dummyzETestLiteralDispatchWithCustomType.make_dummy_type.<locals>.init_dummy\  s    ø€ ò)ô ™I›KÓ(ˆCØ˜�<Ðr   c                  ó   •— ˆfd„} | S )Nc                  ó   •—  ‰ «       S r   r1   )rö   s   €r   ÚctorzWTestLiteralDispatchWithCustomType.make_dummy_type.<locals>.dummy_overload.<locals>.ctori  s   ø€ Ù!“|Ð#r   r1   )rù   rö   s    €r   Údummy_overloadzITestLiteralDispatchWithCustomType.make_dummy_type.<locals>.dummy_overloadg  s   ø€ ô$ð ˆKr   )Úobjectr   ÚTyper   r   ÚStructModelr   r   )r!   rÙ   rú   râ   rì   rö   s      @@@r   Úmake_dummy_typez1TestLiteralDispatchWithCustomType.make_dummy_typeM  s�   ú€ ô	”Fô 	ö	>œŸ
™
ô 	>ô 
˜	Ó	"ö	LœV×/Ñ/ó 	Ló 
#ð	Lô
 
ó	 ó 
ð	 ô 
�%‹ó	ó 
ð	ð ˜5Ð!Ð!r   c                 ó|  ‡‡— | j                  «       \  }Št        |d«      d„ «       }t        ˆfd„«       Š| j                   ‰d«      d«       t        ˆfd„«       }| j	                  t
        j                  «      5 } |d«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nr#   c                 ó   — d„ }|S )Nc                 ó   — t        |«      S r   r   rØ   s     r   rÇ   zZTestLiteralDispatchWithCustomType.test_overload_method.<locals>.lit_overload.<locals>.implv  s   € Ü  “|Ð#r   r1   )r!   rY   rÇ   s      r   Úlit_overloadzLTestLiteralDispatchWithCustomType.test_overload_method.<locals>.lit_overloadt  s   € ò$ð ˆKr   c                 ó4   •—  ‰«       }|j                  | «      S r   )r#   )rY   r£   rÙ   s     €r   Ú	test_implzITestLiteralDispatchWithCustomType.test_overload_method.<locals>.test_impl{  s   ø€ á“ˆAà—5‘5˜“8ˆOr   é   c                 ó   •—  ‰| dz   «      S rE   r1   )rY   r  s    €r   ÚinsidezFTestLiteralDispatchWithCustomType.test_overload_method.<locals>.inside…  s   ø€ á˜Q ™UÓ#Ð#r   é   zCannot request literal type.)
rþ   r   r   r   rm   r   r…   ro   rp   rq   )r!   râ   r  r  rs   rÙ   r  s        @@r   Útest_overload_methodz6TestLiteralDispatchWithCustomType.test_overload_methodp  s¶   ù€ à×/Ñ/Ó1Ñˆ	�5ä	˜ EÓ	*ñ	ó 
+ð	ô 
ó	ó 
ð	ð 	×Ñ™ 1› qÔ)ô 
ó	$ó 
ð	$ð ×Ñœv×1Ñ1Ô2°fÙ�1ŒI÷ 3ð 	�‰Ð4´c¸&×:JÑ:JÓ6KÕL÷ 3Ð2ús   Á;	B2Â2B;N)rÍ   rÎ   rÏ   rþ   r	  r1   r   r   rÓ   rÓ   L  s   „ ò!"óFMr   rÓ   Ú__main__)Únumpyrk   r@   rÐ   Únumba.tests.supportr   r   Ú
numba.corer   r   r   Únumba.core.typingr
   Únumba.core.datamodelr   Únumba.core.extendingr   r   r   r   r   Únumba.misc.specialr   r   rÓ   rÍ   Úmainr1   r   r   Ú<module>r     si   ðÛ ã Û Ý (Ý ß -Ñ -Ý 'Ý '÷õ õ )ôy-˜(ô y-ôx	@M¨ô @MðF ˆzÒØ€H‡M�M…Oð r   