§
    ƒÛgÔ-  ã                   óð   — 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j        ¦   «          dS dS )é    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dS )ÚTestLiteralDispatchc                 óæ   — t           d„ ¦   «         }|D ]!}|                       ||¦  «        |¦  «         Œ"t          ||j        ¦  «        D ]&\  }}|                      |d         j        |¦  «         Œ'd S )Nc                 ó    — t          | ¦  «        S ©Nr   ©Úxs    úW/granary/edev/quantum/lib/python3.11/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   s–   € Ý	ð	 ð 	 ñ 
Œð	 ð  ð 	,ð 	,ˆCØ×Ò˜S˜S ™XœX sÑ+Ô+Ð+Ð+å˜L¨#¬.Ñ9Ô9ð 	8ð 	8‰HˆC�Ø×Ò˜S œVÔ1°3Ñ7Ô7Ð7Ð7ð	8ð 	8r   c                 ób   — |                       ddg¦  «         |                       ddg¦  «         d S )Né{   éA  ÚabcÚcb123)r%   )r!   s    r   Útest_literal_basicz&TestLiteralDispatch.test_literal_basic   s9   € Ø× Ò  # s Ñ,Ô,Ð,Ø× Ò  %¨Ð!1Ñ2Ô2Ð2Ð2Ð2r   c                 óÊ  ‡— t           d„ ¦   «         Št           ˆfd„¦   «         }d\  }}|                       |||¦  «        |dz  |z   ¦  «         ‰j        \  }|                      |d         t          j        |¦  «        ¦  «         |j        \  }|                      |d         t          j        |¦  «        ¦  «         |                      |d         t          j        ¦  «         d S )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&   ó   ø€ à�3�q‘6”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‰	ˆØ×Ò˜ œ¥U¤]°1Ñ%5Ô%5Ñ6Ô6Ð6Ø”N‰	ˆØ×Ò˜ œ¥U¤]°1Ñ%5Ô%5Ñ6Ô6Ð6Ø× Ò  ¨¤­U¬]Ñ;Ô;Ð;Ð;Ð;r   c                 óä   ‡— dd l Št          ˆfd„¦   «         }|                       |d¦  «        d¦  «         |                      |j        d         d         t	          j        d¦  «        ¦  «         d S )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   s�   ø€ àˆˆˆå	ð	&ð 	&ð 	&ð 	&ñ 
Œð	&ð 	×Ò˜˜˜S™œ 3Ñ'Ô'Ð'Ø×Ò˜œ¨Ô*¨1Ô-­u¬}¸SÑ/AÔ/AÑBÔBÐBÐBÐBr   c                 óX  — d„ } |d„ ¦  «        \  }} |t           ¦  «        \  }}|                       |dd¦  «         |dd¦  «        ¦  «         |                      |j        d         d         j        d¦  «         |                      |j        d         d         j        d¦  «         |                       |dd¦  «         |dd¦  «        ¦  «         |                      |j        d         d         j        d¦  «         |                      |j        d         d         j        d¦  «         d S )	Nc                 óB   ‡‡— | ˆfd„¦   «         Š| ˆfd„¦   «         Š‰‰fS )Nc                 ó8   •— | 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�5Ø �LØ˜9˜9 Q¨¡U¨EÑ2Ô2Ñ2Ð2r   c                 óR   •— | 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   s5   ø€ à�q’5�5Ý$ UÑ+Ô+Ð+Ø˜9˜9 Q¨¡U¨EÑ2Ô2Ñ2Ð2r   r1   )ÚdecorrH   rI   s    @@r   Úget_functionszHTestLiteralDispatch.test_mutual_recursion_literal.<locals>.get_functions>   sY   øø€ Øð3ð 3ð 3ð 3ñ ŒUð3ð
 ð3ð 3ð 3ð 3ñ ŒUð3ð
 ˜iÐ'Ð'r   c                 ó   — | S r   r1   r   s    r   ú<lambda>zCTestLiteralDispatch.test_mutual_recursion_literal.<locals>.<lambda>M   s   € ¸q€ r   é
   é   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=   s7  € ð	(ð 	(ð 	(ð (5 }°[°[Ñ'AÔ'AÑ$ˆ�}Ø,˜}­TÑ2Ô2Ñˆ	�9à×Ò˜˜ 2 rÑ*Ô*¨M¨M¸"¸bÑ,AÔ,AÑBÔBÐBØ×Ò˜Ô-¨aÔ0°Ô3ÔAÀ2ÑFÔFÐFØ×Ò˜Ô-¨aÔ0°Ô3ÔAÀ2ÑFÔFÐFà×Ò˜˜ 2 rÑ*Ô*¨M¨M¸"¸bÑ,AÔ,AÑBÔBÐBØ×Ò˜Ô-¨aÔ0°Ô3ÔAÀ2ÑFÔFÐFØ×Ò˜Ô-¨aÔ0°Ô3ÔAÀ2ÑFÔFÐFÐFÐFr   c                 ó,  ‡— t           ˆfd„¦   «         }t           d„ ¦   «         Št          ddd¬¦  «        } |di |¤Ž} d„ di |¤Ž}|                      ||¦  «         |j        \  }|                      |d         t	          j        d¦  «        ¦  «         d S )	Nc                 ó   •—  ‰| |¦  «        S r   r1   ©ÚaÚbÚcÚinners      €r   r   z>TestLiteralDispatch.test_literal_nested_multi_arg.<locals>.fooY   ó   ø€ à�5˜˜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 !Ð$Ñ$Ô$ˆØˆcˆmˆm�FˆmˆmˆØ'Ð'Ð'Ð2Ð2¨6Ð2Ð2ˆØ×Ò˜˜fÑ%Ô%Ð%Ø”N‰	ˆØ×Ò˜ œ¥U¤]°1Ñ%5Ô%5Ñ6Ô6Ð6Ð6Ð6r   c                 óN  ‡— t           ˆfd„¦   «         }t           d„ ¦   «         Št          j        d¦  «        }|                      t          j        ¦  «        5 } |dd|¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )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˜‰mŒmˆØ×Ò�vÔ8Ñ9Ô9ð 	!¸VØˆC�!�q˜CÐ Ñ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!à�Š�o¥s¨6Ô+;Ñ'<Ô'<Ñ=Ô=Ð=Ð=Ð=s   ÁA2Á2A6Á9A6c                 ó  ‡— t           ˆfd„¦   «         }t           d„ ¦   «         Št          ddd¬¦  «        } |di |¤Ž} d„ di |¤Ž}|                      ||¦  «         |j        \  \  }}}|                      |t
          j        ¦  «         |                      |t
          j        ¦  «         |                      |j        d¦  «         |                      |t
          j        ¦  «         |                      |j        d¦  «         d S )	Nc                 ó6   •—  ‰| |¦  «         ‰||¦  «        z   S r   r1   rX   s      €r   r   z/TestLiteralDispatch.test_biliteral.<locals>.foox   s"   ø€ à�5˜˜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 !Ð$Ñ$Ô$ˆØˆcˆmˆm�FˆmˆmˆØ/Ð/Ð/Ð:Ð:°6Ð:Ð:ˆØ×Ò˜˜fÑ%Ô%Ð%Ø%(¤^Ñ"Ñ	!ˆ&�&˜&Ø× Ò  ­¬Ñ7Ô7Ð7Ø×Ò˜f¥e¤mÑ4Ô4Ð4Ø×Ò˜Ô-¨qÑ1Ô1Ð1Ø×Ò˜f¥e¤mÑ4Ô4Ð4Ø×Ò˜Ô-¨qÑ1Ô1Ð1Ð1Ð1r   c                 óª  ‡— t           d„ ¦   «         Š|                      t          j        ¦  «        5   ‰ddd¦  «         d d d ¦  «         n# 1 swxY w Y   t           ˆfd„¦   «         }|                      t          j        ¦  «        5 } |dd¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )Nc                 ó    — t          |¦  «        S r   r   )rY   Úargss     r   r   z7TestLiteralDispatch.test_literally_varargs.<locals>.fooŒ   s   € å˜T‘?”?Ð"r   r7   r.   r5   c                 ó    •—  ‰| |¦  «         d S r   r1   ©rY   rZ   r   s     €r   r3   z7TestLiteralDispatch.test_literally_varargs.<locals>.bar“   s   ø€ àˆC��1‰IŒIˆIˆIˆ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‹   sk  ø€ Ý	ð	#ð 	#ñ 
Œð	#ð ×Ò�vÔ8Ñ9Ô9ð 	ð 	ØˆC��1�a‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ 
ð	ð 	ð 	ð 	ñ 
Œð	ð ×Ò�vÔ1Ñ2Ô2ð 	°fØˆC��1‰IŒIˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à�ŠØ)Ý�Ô Ñ!Ô!ñ	
ô 	
ð 	
ð 	
ð 	
s#   ±AÁAÁAÂB Â B$Â'B$c                 ó@   — t           dd„¦   «         } |d¬¦  «         d S )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ž   s5   € õ 
ð	%ð 	%ð 	%ñ 
Œð	%àˆˆaˆ‰Œˆˆˆr   c                 ód   ‡— t           dd„¦   «         Št           ˆfd„¦   «         } |d¦  «         d S )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¦   s[   ø€ õ 
ð	%ð 	%ð 	%ñ 
Œð	%õ 
ð	ð 	ð 	ð 	ñ 
Œð	ð 	ˆˆA‰Œˆˆˆr   c                 óð   — t           d„ ¦   «         } |d¦  «        }|                      ||                     d¦  «        ¦  «         |                      |j        d         d         t
          j        ¦  «         d S )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³   sv   € å	ð	&ð 	&ñ 
Œð	&ð ˆc�#‰hŒhˆØ×Ò˜˜cŸkšk¨#Ñ.Ô.Ñ/Ô/Ð/Ø×Ò˜cœn¨QÔ/°Ô2µE´MÑBÔBÐBÐBÐBr   c                 óü   — t           d„ ¦   «         }|                      t          j        ¦  «        5 } |dd¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )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Ñ2Ô2ð 	°fØˆC��1‰IŒIˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à�ŠØ-Ý�Ô Ñ!Ô!ñ	
ô 	
ð 	
ð 	
ð 	
s   °A	Á	AÁAc                 ó  ‡— t           d„ ¦   «         Š ‰dd¦  «        }|                      |‰                     dd¦  «        ¦  «         t           ˆfd„¦   «         } |¦   «         }|                      ||                     ¦   «         ¦  «         d S )Nc                 óJ   — d}| t          |¦  «        z   t          |¦  «        z   S )Niè  r   )rY   rZ   Úvs      r   r   z5TestLiteralDispatch.test_inlined_literal.<locals>.fooË   s#   € àˆAØ•y ‘|”|Ñ#¥i°¡l¤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Ø�3˜˜a�=‘=”=Ð r   )r   r   r“   )r!   re   r3   r   s      @r   Útest_inlined_literalz(TestLiteralDispatch.test_inlined_literalÉ   s¥   ø€ å	ð	3ð 	3ñ 
Œð	3ð ˆc�!�Q‰iŒiˆØ×Ò˜˜cŸkšk¨!¨QÑ/Ô/Ñ0Ô0Ð0å	ð	!ð 	!ð 	!ð 	!ñ 
Œð	!ð
 ˆc‰eŒeˆØ×Ò˜˜cŸkšk™mœmÑ,Ô,Ð,Ð,Ð,r   c                 ó  ‡— t           ˆfd„¦   «         }t           d„ ¦   «         Št          ddd¬¦  «        } |di |¤Ž} d„ di |¤Ž}|                      ||¦  «         |j        \  \  }}}|                      |t
          j        ¦  «         |                      |t
          j        ¦  «         |                      |j        d¦  «         |                      |t
          j        ¦  «         |                      |j        d¦  «         d S )	Nc                 ó,   •‡ ‡— ˆ ˆˆfd„} ||¦  «        S )Nc                 óB   •— t          | ¦  «        d ‰‰‰¦  «        z  z   S ©NrO   r   )ÚdrY   rZ   r\   s    €€€r   ÚclosurezGTestLiteralDispatch.test_aliased_variable.<locals>.foo.<locals>.closureß   s#   ø€ Ý  ‘|”| b¨5¨5°°A©;¬;Ñ&6Ñ6Ð6r   r1   )rY   rZ   r[   r¤   r\   s   ``  €r   r   z6TestLiteralDispatch.test_aliased_variable.<locals>.fooÝ   s8   øøø€ ð7ð 7ð 7ð 7ð 7ð 7ð 7ð �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Ñ"2€ r   r1   ry   r{   s	           @r   Útest_aliased_variablez)TestLiteralDispatch.test_aliased_variableÜ   s(  ø€ Ý	ð	ð 	ð 	ð 	ñ 
Œð	õ 
ð	$ð 	$ñ 
Œð	$õ ˜˜Q !Ð$Ñ$Ô$ˆØˆcˆmˆm�FˆmˆmˆØ2Ð2Ð2Ð=Ð=°fÐ=Ð=ˆØ×Ò˜˜fÑ%Ô%Ð%Ø%(¤^Ñ"Ñ	!ˆ&�&˜&Ø× Ò  ­¬Ñ7Ô7Ð7Ø×Ò˜f¥e¤mÑ4Ô4Ð4Ø×Ò˜Ô-¨qÑ1Ô1Ð1Ø×Ò˜f¥e¤mÑ4Ô4Ð4Ø×Ò˜Ô-¨qÑ1Ô1Ð1Ð1Ð1r   c                 ó�  ‡‡— d„ Št          ‰¦  «        ˆfd„¦   «         Št          ˆfd„¦   «         }d}d} |||¦  «        }|                      |||z   ¦  «         |j        d         \  }}|                      |t
          j        ¦  «         |                      |j        |¦  «         |                      |t
          j        ¦  «         d S )Nc                 ó   — | |z   S r   r1   r_   s     r   Údo_thisz;TestLiteralDispatch.test_overload_explicit.<locals>.do_thisö   ó   € Ø�q‘5ˆLr   c                 óx   •— t          dg¦  «                             ‰¦  «                             | |¦  «         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ÔHÐHØ%Ð%Ð%r   c                 ó   •—  ‰| |¦  «        S r   r1   ©rY   rZ   rª   s     €r   r   z7TestLiteralDispatch.test_overload_explicit.<locals>.fooþ   ó   ø€ à�7˜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û   øø€ ð	ð 	ð 	õ 
�'Ñ	Ô	ð	&ð 	&ð 	&ð 	&ñ 
Ô	ð	&õ 
ð	!ð 	!ð 	!ð 	!ñ 
Œð	!ð ˆØˆØˆC��1‰IŒIˆØ×Ò˜˜A ™EÑ"Ô"Ð"Øœ>¨!Ô,Ñˆ�Ø×Ò˜f¥e¤mÑ4Ô4Ð4Ø×Ò˜Ô-¨qÑ1Ô1Ð1Ø× Ò  ­¬Ñ7Ô7Ð7Ð7Ð7r   c                 ó°  ‡‡	— d„ Št           d„ ¦   «         Š	t          ‰¦  «        ˆ	fd„¦   «         }t           ˆfd„¦   «         }d}d} |||¦  «        }|                      |||z   ¦  «         |j        d         \  }}|                      |t
          j        ¦  «         |                      |j        |¦  «         |                      |t
          j        ¦  «         d S )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                 óF   •— t          | t          j        ¦  «        rˆfd„S d S )Nc                 ó   •—  ‰| |¦  «        S r   r1   ©r   r2   r¹   s     €r   rN   zPTestLiteralDispatch.test_overload_implicit.<locals>.ov_do_this.<locals>.<lambda>  s   ø€  F F¨1¨a¡L¤L€ r   )Ú
isinstancer   ÚIntegerr¼   s     €r   r°   z>TestLiteralDispatch.test_overload_implicit.<locals>.ov_do_this  s0   ø€ å˜!�Uœ]Ñ+Ô+ð 1à0Ð0Ð0Ð0Ð0ð1ð 1r   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ð 	1ñ 
Ô	ð	1õ
 
ð	!ð 	!ð 	!ð 	!ñ 
Œð	!ð ˆØˆØˆC��1‰IŒIˆØ×Ò˜˜A ™EÑ"Ô"Ð"Øœ>¨!Ô,Ñˆ�Ø×Ò˜f¥e¤mÑ4Ô4Ð4Ø×Ò˜Ô-¨qÑ1Ô1Ð1Ø× Ò  ­¬Ñ7Ô7Ð7Ð7Ð7r   c                 ó`  ‡‡— d„ Št           d„ ¦   «         Št          ‰¦  «        ˆfd„¦   «         }t           ˆfd„¦   «         }|                      t          j        ¦  «        5 } |dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )	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                 ón   •— 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   ø€ Ø!˜6 ! Q™<œ<Ð'r   )r½   r   ÚIntegerLiteralr   ÚNumbaValueError)r   r2   rÇ   r¹   s      €r   r°   z@TestLiteralDispatch.test_overload_error_loop.<locals>.ov_do_this5  sI   ø€ å˜!�UÔ1Ñ2Ô2ð õ Ô,¨VÑ4Ô4Ð4ð(ð (ð (ð (ð (à�r   c                 ó6   •—  ‰| t          |¦  «        ¦  «        S r   r   r²   s     €r   r   z9TestLiteralDispatch.test_overload_error_loop.<locals>.foo@  s   ø€ à�7˜1�i¨™lœ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)  s2  øø€ ð
	ð 	ð 	õ 
ð	$ð 	$ñ 
Œð	$õ 
�'Ñ	Ô	ð	ð 	ð 	ð 	ñ 
Ô	ð	õ 
ð	,ð 	,ð 	,ð 	,ñ 
Œð	,ð
 ×Ò�vÔ3Ñ4Ô4ð 	¸ØˆC�#˜ÐÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à�ŠÐ7Ý˜&Ô*Ñ+Ô+ñ	-ô 	-ð 	-ð 	-ð 	-s   Á!A;Á;A?ÂA?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      sK  € € € € € ð
8ð 
8ð 
8ð3ð 3ð 3ð<ð <ð <ð"	Cð 	Cð 	CðGð Gð Gð67ð 7ð 7ð >ð >ð >ð2ð 2ð 2ð*
ð 
ð 
ð& Ôðð ñ Ôðð Ôð
ð 
ñ Ôð
ðCð Cð Cð

ð 

ð 

ð-ð -ð -ð&2ð 2ð 2ð.8ð 8ð 8ð08ð 8ð 8ð< -ð  -ð  -ð  -ð  -r   r   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú!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dS )ú@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                 óP   •— t          ‰| ¦  «                             d¬¦  «         d S )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                 óV   •— g }t          ‰| ¦  «                             |||¦  «         d S r   rß   )r!   ÚdmmÚfe_typeÚmembersÚDummyTypeModelrã   s       €€r   rá   zRTestLiteralDispatchWithCustomType.make_dummy_type.<locals>.DummyTypeModel.__init__X  s0   ø€ Ø�Ý�n dÑ+Ô+×4Ò4°S¸'À7ÑKÔKÐKÐKÐKr   rä   )rã   rì   s   @€r   rì   rç   V  sH   øø€ € € € € ðLð Lð Lð Lð Lð Lð Lð Lð Lð Lr   rì   c                 ó@   •— d„ }t           ‰¦   «         ¦  «        }||fS )Nc                 óp   —  t          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^  s?   € ð+�Ô3ØÔ)ñ+ô +Ø+2°Gñ=ô =�ð —’Ñ(Ô(Ð(r   r	   )Ú	typingctxrô   r$   râ   s      €r   Ú
init_dummyzETestLiteralDispatchWithCustomType.make_dummy_type.<locals>.init_dummy\  s1   ø€ ð)ð )ð )õ ˜I˜I™KœKÑ(Ô(ˆCØ˜�<Ðr   c                  ó   •— ˆfd„} | S )Nc                  ó   •—  ‰ ¦   «         S r   r1   )rö   s   €r   ÚctorzWTestLiteralDispatchWithCustomType.make_dummy_type.<locals>.dummy_overload.<locals>.ctori  s   ø€ Ø!�z‘|”|Ð#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ð 	Lð 	Lð 	Lð 	Lð 	Lð 	L�VÔ/ñ 	Lô 	Lñ 
#Ô	"ð	Lõ
 
ð	 ð 	 ð 	 ð 	 ñ 
Œð	 õ 
�%‰Œð	ð 	ð 	ð 	ñ 
Œð	ð ˜5Ð!Ð!r   c                 óÄ  ‡‡— |                       ¦   «         \  }Št          |d¦  «        d„ ¦   «         }t          ˆfd„¦   «         Š|                       ‰d¦  «        d¦  «         t          ˆfd„¦   «         }|                      t
          j        ¦  «        5 } |d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j	        ¦  «        ¦  «         d S )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                 óB   •—  ‰¦   «         }|                      | ¦  «        S r   )r#   )rY   r£   rÙ   s     €r   Ú	test_implzITestLiteralDispatchWithCustomType.test_overload_method.<locals>.test_impl{  s   ø€ à�‘”ˆAà—5’5˜‘8”8ˆOr   é   c                 ó    •—  ‰| dz   ¦  «        S rE   r1   )rY   r  s    €r   ÚinsidezFTestLiteralDispatchWithCustomType.test_overload_method.<locals>.inside…  s   ø€ à�9˜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  sH  øø€ à×/Ò/Ñ1Ô1Ñˆ	�5å	˜ EÑ	*Ô	*ð	ð 	ñ 
+Ô	*ð	õ 
ð	ð 	ð 	ð 	ñ 
Œð	ð 	×Ò˜˜ 1™œ qÑ)Ô)Ð)õ 
ð	$ð 	$ð 	$ð 	$ñ 
Œð	$ð ×Ò�vÔ1Ñ2Ô2ð 	°fØˆF�1‰IŒIˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	�ŠÐ4µc¸&Ô:JÑ6KÔ6KÑLÔLÐLÐLÐLs   ÂB-Â-B1Â4B1N)rÍ   rÎ   rÏ   rþ   r	  r1   r   r   rÓ   rÓ   L  s8   € € € € € ð!"ð !"ð !"ðFMð Mð Mð Mð 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     sw  ðØ Ð Ð Ð à €€€Ø €€€Ø (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð ð ð ð ð )Ð (Ð (Ð (Ð (Ð (ðy-ð y-ð y-ð y-ð y-˜(ñ y-ô y-ð y-ðx	@Mð @Mð @Mð @Mð @M¨ñ @Mô @Mð @MðF ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   