
    sh-                         S SK rS SKrS SKrS SKJr  S SKJr  S SKJrJ	r	J
r
  S SKJr  S SKJr  S SKJrJrJrJrJr  S SKJr   " S	 S
\5      r " S S\5      r\S:X  a  \R4                  " 5         gg)    N)TestCasenjit)typeserrorscgutils	signature)models)overloadSentryLiteralArgsoverload_methodregister_model	intrinsic	literallyc                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 r\R                  S 5       r\R                  S 5       rS rS rS rS rS rS rS rSrg)TestLiteralDispatch   c                     [         S 5       nU H  nU R                  U" U5      U5        M     [        XR                  5       H$  u  p4U R                  US   R                  U5        M&     g )Nc                     [        U 5      $ Nr   xs    u/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_literal_dispatch.pyfoo4TestLiteralDispatch.check_literal_basic.<locals>.foo   s    Q<    r   )r   assertEqualzip
signaturesliteral_value)selfliteral_argsr   litsigs        r   check_literal_basic'TestLiteralDispatch.check_literal_basic   se    		  
	   CSXs+   L..9HCSV1137 :r   c                 P    U R                  SS/5        U R                  SS/5        g )N{   A  abccb123)r'   )r#   s    r   test_literal_basic&TestLiteralDispatch.test_literal_basic   s'      #s,  %!12r   c                   ^ [         S 5       m[         U4S j5       nSu  p#U R                  U" X#5      US-  U-   5        TR                  u  nU R                  US   [        R                  " U5      5        UR                  u  nU R                  US   [        R                  " U5      5        U R                  US   [        R                  5        g )Nc                     [        U 5      S-  $ )N   r   r   s    r   r   4TestLiteralDispatch.test_literal_nested.<locals>.foo"       Q<!##r   c                    > T" U 5      U-   $ r    )yr   r   s     r   bar4TestLiteralDispatch.test_literal_nested.<locals>.bar&       q6A:r   )      r2   r      )r   r   r!   r   literalassertNotIsInstanceLiteral)r#   r8   r7   r   foo_sigbar_sigr   s         @r   test_literal_nested'TestLiteralDispatch.test_literal_nested!   s    		$ 
	$ 
	 
	 QAEAI.NN	U]]1%56NN	U]]1%56  U]];r   c                    ^ SS K m[        U4S j5       nU R                  U" S5      S5        U R                  UR                  S   S   [        R
                  " S5      5        g )Nr   c                 (   > TR                   " U 5      $ r   r   )r   numbas    r   r   7TestLiteralDispatch.test_literally_freevar.<locals>.foo6   s    ??1%%r   r*   )rG   r   r   r!   r   r>   )r#   r   rG   s     @r   test_literally_freevar*TestLiteralDispatch.test_literally_freevar2   sU    		& 
	& 	S3'*1-u}}S/ABr   c                    S nU" S 5      u  p#U" [         5      u  pEU R                  U" SS5      U" SS5      5        U R                  UR                  S   S   R                  S5        U R                  UR                  S   S   R                  S5        U R                  U" SS5      U" SS5      5        U R                  UR                  S   S   R                  S5        U R                  UR                  S   S   R                  S5        g )	Nc                 :   ^^ U U4S j5       mU U4S j5       mTT4$ )Nc                 2   > U S:  a  U$ U T" U S-
  U5      -  $ Nr=   r6   )nvalue	inner_facs     r   	outer_fac[TestLiteralDispatch.test_mutual_recursion_literal.<locals>.get_functions.<locals>.outer_fac?   s%    q5 L9QUE222r   c                 D   > U S:  a  [        U5      $ U T" U S-
  U5      -  $ rN   r   )rO   rP   rR   s     r   rQ   [TestLiteralDispatch.test_mutual_recursion_literal.<locals>.get_functions.<locals>.inner_facE   s+    q5$U++9QUE222r   r6   )decorrQ   rR   s    @@r   get_functionsHTestLiteralDispatch.test_mutual_recursion_literal.<locals>.get_functions>   s6    3 3
 3 3
 i''r   c                     U $ r   r6   r   s    r   <lambda>CTestLiteralDispatch.test_mutual_recursion_literal.<locals>.<lambda>M   s    qr   
      r   r=         )r   r   r!   r"   )r#   rW   ref_outer_facref_inner_facrR   rQ   s         r   test_mutual_recursion_literal1TestLiteralDispatch.test_mutual_recursion_literal=   s    	( (5['A$,T2	2r*M"b,AB--a03AA2F--a03AA2F2r*M"b,AB--a03AA2F--a03AA2Fr   c                   ^ [         U4S j5       n[         S 5       m[        SSSS9nU" S0 UD6nS " S0 UD6nU R                  X45        UR                  u  nU R                  US   [        R
                  " S5      5        g )	Nc                    > T" X5      $ r   r6   abcinners      r   r   >TestLiteralDispatch.test_literal_nested_multi_arg.<locals>.fooY       ;r   c                     U [        U5      -   $ r   r   r   r7   s     r   rj   @TestLiteralDispatch.test_literal_nested_multi_arg.<locals>.inner]       y|##r   r=   r2   r;   rg   rh   ri   c                 
    X-   $ r   r6   rq   s      r   rZ   CTestLiteralDispatch.test_literal_nested_multi_arg.<locals>.<lambda>c   s    !%r   r6   )r   dictr   r!   r   r>   )r#   r   kwargsgotexpectrA   rj   s         @r   test_literal_nested_multi_arg1TestLiteralDispatch.test_literal_nested_multi_argX   s    		 
	 
	$ 
	$ Q!$mFm'262%NN	U]]1%56r   c                 4  ^ [         U4S j5       n[         S 5       m[        R                  " S5      nU R                  [        R
                  5       nU" SSUS9  S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                    > T" X5      $ r   r6   rf   s      r   r   >TestLiteralDispatch.test_unsupported_literal_type.<locals>.fooi   rl   r   c                     U [        U5      -   $ r   r   rn   s     r   rj   @TestLiteralDispatch.test_unsupported_literal_type.<locals>.innerm   rp   r   r\   r=   r2   rq   znumpy.ndarray)	r   nparangeassertRaisesr   LiteralTypingErrorassertInstr	exception)r#   r   arrraisesrj   s       @r   test_unsupported_literal_type1TestLiteralDispatch.test_unsupported_literal_typeh   s    		 
	 
	$ 
	$ iimv889V!qC  :os6+;+;'<= :9s   	B		
Bc                   ^ [         U4S j5       n[         S 5       m[        SSSS9nU" S0 UD6nS " S0 UD6nU R                  X45        UR                  u  u  pVnU R	                  U[
        R                  5        U R                  U[
        R                  5        U R                  UR                  S5        U R                  U[
        R                  5        U R                  UR                  S5        g )	Nc                 &   > T" X5      T" X5      -   $ r   r6   rf   s      r   r   /TestLiteralDispatch.test_biliteral.<locals>.foox   s    ;q,,r   c                     U [        U5      -   $ r   r   rn   s     r   rj   1TestLiteralDispatch.test_biliteral.<locals>.inner|   rp   r   r=   r2   r;   rq   c                     X-   U-   U-   $ r   r6   rq   s      r   rZ   4TestLiteralDispatch.test_biliteral.<locals>.<lambda>   s    !%!)a-r   r6   	r   rt   r   r!   r?   r   r@   assertIsInstancer"   	r#   r   ru   rv   rw   type_atype_btype_crj   s	           @r   test_biliteral"TestLiteralDispatch.test_biliteralv   s    		- 
	- 
	$ 
	$ Q!$mFm/:6:%%(^^"	!&&  7femm4--q1femm4--q1r   c                   ^ [         S 5       mU R                  [        R                  5         T" SSS5        S S S 5        [         U4S j5       nU R                  [        R                  5       nU" SS5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       Nt= f! , (       d  f       NE= f)Nc                     [        U5      $ r   r   )rg   argss     r   r   7TestLiteralDispatch.test_literally_varargs.<locals>.foo   s    T?"r   r=   r2   r;   c                    > T" X5        g r   r6   rg   rh   r   s     r   r8   7TestLiteralDispatch.test_literally_varargs.<locals>.bar   s
    Ir   zCannot request literal type)r   r   r   r   TypingErrorr   r   r   )r#   r8   r   r   s      @r   test_literally_varargs*TestLiteralDispatch.test_literally_varargs   s    		# 
	# v8891aL : 
	 
	 v112f1I 3)  !	
 :9 32s   B&.
B7&
B47
Cc                 ,    [         SS j5       nU" SS9  g )Nr=   c                     U [        U5      4$ r   r   rg   rh   s     r   r   8TestLiteralDispatch.test_literally_defaults.<locals>.foo       y|$$r   )rg   r=   r   )r#   r   s     r   test_literally_defaults+TestLiteralDispatch.test_literally_defaults   s     
	% 
	%ar   c                 P   ^ [         SS j5       m[         U4S j5       nU" S5        g )Nr=   c                     U [        U5      4$ r   r   r   s     r   r   >TestLiteralDispatch.test_literally_defaults_inner.<locals>.foo   r   r   c                    > T" U 5      S-   $ rN   r6   )rg   r   s    r   r8   >TestLiteralDispatch.test_literally_defaults_inner.<locals>.bar   r:   r   r   r   )r#   r8   r   s     @r   test_literally_defaults_inner1TestLiteralDispatch.test_literally_defaults_inner   s4     
	% 
	% 
	 
	 	Ar   c                     [         S 5       nU" S5      nU R                  X!R                  S5      5        U R                  UR                  S   S   [
        R                  5        g )Nc                 .    [         R                  " U 5      $ r   )rG   r   r   s    r   r   ;TestLiteralDispatch.test_literally_from_module.<locals>.foo   s    ??1%%r   r*   r   )r   r   py_funcr   r!   r   r@   )r#   r   rv   s      r   test_literally_from_module.TestLiteralDispatch.test_literally_from_module   sX    		& 
	& #hkk#./cnnQ/2EMMBr   c                     [         S 5       nU R                  [        R                  5       nU" SS5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                     [        SU -   5      $ rN   r   r   s     r   r   1TestLiteralDispatch.test_non_literal.<locals>.foo   s    QU##r   r=   r2   zInvalid use of non-Literal type)r   r   r   r   r   r   r   )r#   r   r   s      r   test_non_literal$TestLiteralDispatch.test_non_literal   s`    		$ 
	$ v112f1I 3-  !	
 32s   
A$$
A2c                    ^ [         S 5       mT" SS5      nU R                  UTR                  SS5      5        [         U4S j5       nU" 5       nU R                  XR                  5       5        g )Nc                 :    SnU [        U5      -   [        U5      -   $ )Ni  r   )rg   rh   vs      r   r   5TestLiteralDispatch.test_inlined_literal.<locals>.foo   s    Ay|#il22r   r=   r2   c                     > Sn SnT" XS9$ )Nd   	   r   r6   r   s     r   r8   5TestLiteralDispatch.test_inlined_literal.<locals>.bar   s    AA= r   )r   r   r   )r#   rv   r8   r   s      @r   test_inlined_literal(TestLiteralDispatch.test_inlined_literal   sl    		3 
	3 !Qickk!Q/0		! 
	!
 ekkm,r   c                   ^ [         U4S j5       n[         S 5       m[        SSSS9nU" S0 UD6nS " S0 UD6nU R                  X45        UR                  u  u  pVnU R	                  U[
        R                  5        U R                  U[
        R                  5        U R                  UR                  S5        U R                  U[
        R                  5        U R                  UR                  S5        g )	Nc                 (   >^ ^ U UU4S jnU" U5      $ )Nc                 4   > [        U 5      ST" TT5      -  -   $ Nr\   r   )drg   rh   rj   s    r   closureGTestLiteralDispatch.test_aliased_variable.<locals>.foo.<locals>.closure   s     |b5A;&666r   r6   )rg   rh   ri   r   rj   s   ``  r   r   6TestLiteralDispatch.test_aliased_variable.<locals>.foo   s    7 1:r   c                     U [        U5      -   $ r   r   rn   s     r   rj   8TestLiteralDispatch.test_aliased_variable.<locals>.inner   rp   r   r=   r2   r;   rq   c                     USX-   -  -   $ r   r6   rq   s      r   rZ   ;TestLiteralDispatch.test_aliased_variable.<locals>.<lambda>   s    !bAEl"2r   r6   r   r   s	           @r   test_aliased_variable)TestLiteralDispatch.test_aliased_variable   s    		 
	 
	$ 
	$ Q!$mFm2=f=%%(^^"	!&&  7femm4--q1femm4--q1r   c                 n  ^^ S m[        T5      U4S j5       m[        U4S j5       nSnSnU" X#5      nU R                  XBU-   5        UR                  S   u  pVU R	                  U[
        R                  5        U R                  UR                  U5        U R                  U[
        R                  5        g )Nc                 
    X-   $ r   r6   rn   s     r   do_this;TestLiteralDispatch.test_overload_explicit.<locals>.do_this   	    5Lr   c                 ^   > [        S/5      R                  T5      R                  X5        S $ )Nr   c                 
    X-   $ r   r6   rn   s     r   rZ   PTestLiteralDispatch.test_overload_explicit.<locals>.ov_do_this.<locals>.<lambda>   s    r   )r   for_functionbind)r   r7   
ov_do_thiss     r   r   >TestLiteralDispatch.test_overload_explicit.<locals>.ov_do_this   s)    se$11*=BB1H%%r   c                    > T" X5      $ r   r6   rg   rh   r   s     r   r   7TestLiteralDispatch.test_overload_explicit.<locals>.foo       1= r   r*   r+   r   )	r   r   r   r!   r   r   r@   r"   r?   )	r#   r   rg   rh   rr   r   r   r   s	          @@r   test_overload_explicit*TestLiteralDispatch.test_overload_explicit   s    	 
'		& 
	& 
	! 
	! IE">>!,femm4--q1  7r   c                   ^^	 S m[         S 5       m	[        T5      U	4S j5       n[         U4S j5       nSnSnU" X45      nU R                  XSU-   5        UR                  S   u  pgU R	                  U[
        R                  5        U R                  UR                  U5        U R                  U[
        R                  5        g )Nc                 
    X-   $ r   r6   rn   s     r   r   ;TestLiteralDispatch.test_overload_implicit.<locals>.do_this  r   r   c                     [        U 5      U-   $ r   r   rn   s     r   hidden:TestLiteralDispatch.test_overload_implicit.<locals>.hidden  r4   r   c                 P   > [        U [        R                  5      (       a  U4S j$ g )Nc                    > T" X5      $ r   r6   r   r7   r   s     r   rZ   PTestLiteralDispatch.test_overload_implicit.<locals>.ov_do_this.<locals>.<lambda>  s	    F1Lr   )
isinstancer   Integerr   s     r   r   >TestLiteralDispatch.test_overload_implicit.<locals>.ov_do_this  s    !U]]++00 ,r   c                    > T" X5      $ r   r6   r   s     r   r   7TestLiteralDispatch.test_overload_implicit.<locals>.foo  r   r   r*   r+   r   )	r   r   r   r!   r   r   r@   r"   r?   )
r#   r   r   rg   rh   r   r   r   r   r   s
           @@r   test_overload_implicit*TestLiteralDispatch.test_overload_implicit  s    	 
	$ 
	$ 
'		1 
	1
 
	! 
	! IE">>!,femm4--q1  7r   c                 6  ^^ S m[         S 5       m[        T5      U4S j5       n[         U4S j5       nU R                  [        R                  5       nU" SSS9  S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)	Nc                 
    X-   $ r   r6   rn   s     r   r   =TestLiteralDispatch.test_overload_error_loop.<locals>.do_this.  r   r   c                     [        U 5      U-   $ r   r   rn   s     r   r   <TestLiteralDispatch.test_overload_error_loop.<locals>.hidden1  r4   r   c                 ~   > [        U[        R                  5      (       a  [        R                  " S5      eU4S jnU$ )Noopsc                    > T" X5      $ r   r6   r   s     r   implNTestLiteralDispatch.test_overload_error_loop.<locals>.ov_do_this.<locals>.impl<  s    !!<'r   )r   r   IntegerLiteralr   NumbaValueError)r   r7   r  r   s      r   r   @TestLiteralDispatch.test_overload_error_loop.<locals>.ov_do_this5  s3    !U1122 ,,V44(r   c                 (   > T" U [        U5      5      $ r   r   r   s     r   r   9TestLiteralDispatch.test_overload_error_loop.<locals>.foo@  s    1il++r   r*   r+   r   zRepeated literal typing request)r   r   r   r   CompilerErrorr   r   r   )r#   r   r   r   r   r   s       @@r   test_overload_error_loop,TestLiteralDispatch.test_overload_error_loop)  s    
	 
	$ 
	$ 
'		 
	 
	, 
	,
 v334# 57&**+	- 54s   B


Br6   N)__name__
__module____qualname____firstlineno__r'   r.   rC   rI   rb   rx   r   r   r   unittestexpectedFailurer   r   r   r   r   r   r   r   r	  __static_attributes__r6   r   r   r   r      s    
83<"	CG67 >2*
&   
 
C

-&2.808< -r   r   c                        \ rS rSrS rS rSrg)!TestLiteralDispatchWithCustomTypeiL  c                    ^^^  " S S[         5      n " U4S jS[        R                  5      m[        T5       " U4S jS[        R
                  5      5       m[        U4S j5       m[        U5      U4S j5       nTU4$ )	Nc                       \ rS rSrS rSrg)@TestLiteralDispatchWithCustomType.make_dummy_type.<locals>.DummyiN  c                     U$ r   r6   r#   rg   s     r   r%   DTestLiteralDispatchWithCustomType.make_dummy_type.<locals>.Dummy.litO  s    r   r6   N)r  r  r  r  r%   r  r6   r   r   Dummyr  N  s    r   r  c                   ,   >^  \ rS rSrUU 4S jrSrU =r$ )DTestLiteralDispatchWithCustomType.make_dummy_type.<locals>.DummyTypeiR  c                     > [         TU ]  SS9  g )Ndummy)namesuper__init__)r#   	DummyType	__class__s    r   r"  MTestLiteralDispatchWithCustomType.make_dummy_type.<locals>.DummyType.__init__S  s    i/W/=r   r6   r  r  r  r  r"  r  __classcell__)r$  r#  s   @r   r#  r  R  s    > >r   r#  c                   ,   >^  \ rS rSrUU 4S jrSrU =r$ )ITestLiteralDispatchWithCustomType.make_dummy_type.<locals>.DummyTypeModeliV  c                 *   > / n[         TU ]  XU5        g r   r   )r#   dmmfe_typemembersDummyTypeModelr$  s       r   r"  RTestLiteralDispatchWithCustomType.make_dummy_type.<locals>.DummyTypeModel.__init__X  s    nd4S7Kr   r6   r&  )r$  r.  s   @r   r.  r)  V  s    L Lr   r.  c                 0   > S n[        T" 5       5      nX!4$ )Nc                 n    [         R                  " UR                  5      " X5      nUR                  5       $ r   )r   create_struct_proxyreturn_type	_getvalue)contextbuilderr
   r   r  s        r   codegenVTestLiteralDispatchWithCustomType.make_dummy_type.<locals>.init_dummy.<locals>.codegen^  s2    33))++2= ((r   r	   )	typingctxr7  r&   r#  s      r   
init_dummyETestLiteralDispatchWithCustomType.make_dummy_type.<locals>.init_dummy\  s    ) IK(C<r   c                     > U4S jn U $ )Nc                     > T " 5       $ r   r6   )r:  s   r   ctorWTestLiteralDispatchWithCustomType.make_dummy_type.<locals>.dummy_overload.<locals>.ctori  s    !|#r   r6   )r>  r:  s    r   dummy_overloadITestLiteralDispatchWithCustomType.make_dummy_type.<locals>.dummy_overloadg  s    $ Kr   )objectr   Typer   r   StructModelr   r   )r#   r  r@  r#  r.  r:  s      @@@r   make_dummy_type1TestLiteralDispatchWithCustomType.make_dummy_typeM  s    	F 		>

 	> 
		"	LV// 	L 
#	L
 
	  
	  
%	 
	 5!!r   c                   ^^ U R                  5       u  nm[        US5      S 5       n[        U4S j5       mU R                  T" S5      S5        [        U4S j5       nU R	                  [
        R                  5       nU" S5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nr%   c                     S nU$ )Nc                     [        U5      $ r   r   r  s     r   r  ZTestLiteralDispatchWithCustomType.test_overload_method.<locals>.lit_overload.<locals>.implv  s     |#r   r6   )r#   rg   r  s      r   lit_overloadLTestLiteralDispatchWithCustomType.test_overload_method.<locals>.lit_overloadt  s    $ Kr   c                 4   > T" 5       nUR                  U 5      $ r   )r%   )rg   r   r  s     r   	test_implITestLiteralDispatchWithCustomType.test_overload_method.<locals>.test_impl{  s    A558Or      c                    > T" U S-   5      $ rN   r6   )rg   rN  s    r   insideFTestLiteralDispatchWithCustomType.test_overload_method.<locals>.inside  s    QU##r      zCannot request literal type.)
rE  r   r   r   r   r   r   r   r   r   )r#   r#  rK  rR  r   r  rN  s        @@r   test_overload_method6TestLiteralDispatchWithCustomType.test_overload_methodp  s    //1	5	E	*	 
+	 
	 
	 	1q) 
	$ 
	$ v112f1I 3 	4c&:J:J6KL 32s   =	B44
Cr6   N)r  r  r  r  rE  rU  r  r6   r   r   r  r  L  s    !"FMr   r  __main__)numpyr   rG   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  mainr6   r   r   <module>r`     sg       (  - - ' '  )y-( y-x	@M @MF zMMO r   