
    i                         S SK Jr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  S SKJrJrJr  S SKJr  S SKJr   " S	 S
\5      r " S S\5      rg)    )CompilerDefaultPassBuilder)FunctionPassAnalysisPassregister_pass)InlineInlinables)IRLegalization)jitobjmodenjitcfunc)typespostprocerrors)
FunctionIR)TestCasec                   :   ^  \ rS rSrU 4S jrS rS rS rSrU =r	$ )TestCustomPipeline   c                 ^   >^ [         [        U ]  5          " U4S jS[        5      mTU l        g )Nc                   >   >^  \ rS rSr/ rUU 4S jrUU 4S jrSrU =r$ )0TestCustomPipeline.setUp.<locals>.CustomPipeline   c                 X   > U R                   R                  U5        [        TU ]  U5      $ N)custom_pipeline_cacheappendsupercompile_extra)selffuncCustomPipeline	__class__s     T/var/www/html/trading/venv/lib/python3.13/site-packages/numba/tests/test_pipeline.pyr   >TestCustomPipeline.setUp.<locals>.CustomPipeline.compile_extra   s)    **11$7^T@FF    c                 b   > U R                   R                  U5        [        TU ]  " U/UQ70 UD6$ r   )r   r   r   
compile_ir)r    func_irargskwargsr"   r#   s       r$   r(   ;TestCustomPipeline.setUp.<locals>.CustomPipeline.compile_ir   s>    **11':^T=.".&,. .r&    )	__name__
__module____qualname____firstlineno__r   r   r(   __static_attributes____classcell__)r#   r"   s   @r$   r"   r      s    $&!G
. .r&   r"   )r   r   setUpr   pipeline_class)r    r"   r#   s    @r$   r4   TestCustomPipeline.setUp   s'     $-/	.X 	. -r&   c                    U R                  U R                  R                  / 5        [        U R                  S9S 5       nU R	                  U" S5      S5        U R                  U R                  R                  UR
                  /5        g )Nr5   c                     U $ r   r-   xs    r$   foo8TestCustomPipeline.test_jit_custom_pipeline.<locals>.foo$       Hr&      )assertListEqualr5   r   r
   assertEqualpy_funcr    r<   s     r$   test_jit_custom_pipeline+TestCustomPipeline.test_jit_custom_pipeline!   sv    T00FFK	D//	0	 
1	 	Q#T00FF!kk]	,r&   c                 Z   U R                  U R                  R                  / 5        [        [        R
                  " [        R
                  5      U R                  S9S 5       nU R                  U" S5      S5        U R                  U R                  R                  UR                  /5        g )Nr8   c                     U $ r   r-   r:   s    r$   r<   :TestCustomPipeline.test_cfunc_custom_pipeline.<locals>.foo/   r>   r&   r?   )r@   r5   r   r   r   int64rA   __wrapped__rC   s     r$   test_cfunc_custom_pipeline-TestCustomPipeline.test_cfunc_custom_pipeline,   s    T00FFK	u{{5;;'8K8K	L	 
M	 	Q#T00FF!oo.	0r&   c                    U R                  U R                  R                  / 5        [        U R                  S9S 5       nSnU R	                  U" U5      US-   5        U R	                  [        U R                  R                  5      S5        U R                  R                  S   nU R                  X1R                  5        U R                  R                  S   nU R                  U[        5        g )Nr8   c                 j    [        SS9   U [        S5      -  n S S S 5        U $ ! , (       d  f       U $ = f)Nintpr:      )r   intr:   s    r$   r<   <TestCustomPipeline.test_objmode_custom_pipeline.<locals>.foo:   s/    6"SX #H #"Hs   #
2{   rP      r   )
r@   r5   r   r
   rA   lenassertIsrB   assertIsInstancer   )r    r<   argfirstseconds        r$   test_objmode_custom_pipeline/TestCustomPipeline.test_objmode_custom_pipeline7   s    T00FFK	D//	0	 
1	
 S37+T00FFGK##99!<e[[)$$::1=fj1r&   r8   )
r.   r/   r0   r1   r4   rD   rK   r[   r2   r3   )r#   s   @r$   r   r      s    -(	,	02 2r&   r   c                   *    \ rS rSrSS jrS rS rSrg)TestPassManagerFunctionalityL   Nc                    ^^^ U R                  TSL5        U R                  TSL5        [        SSS9 " U4S jST5      5       m " UU4S jS[        5      nU$ )zt
Creates a new compiler pipeline with the _InjectDelsPass injected after
the pass supplied in kwarg 'inject_after'.
NF)mutates_CFGanalysis_onlyc                   D   > \ rS rSrSrS\"  Y 5      -  rU 4S jrS rSr	g)LTestPassManagerFunctionality._create_pipeline_w_del.<locals>._InjectDelsPassV   z,
This pass injects ir.Del nodes into the IR
zinject_dels_%sc                 (   > TR                  U 5        g r   )__init__)r    bases    r$   rg   UTestPassManagerFunctionality._create_pipeline_w_del.<locals>._InjectDelsPass.__init__]   s    d#r&   c                 b    [         R                  " UR                  5      nUR                  SS9  g)NT)	emit_dels)r   PostProcessorr)   run)r    statepps      r$   run_passUTestPassManagerFunctionality._create_pipeline_w_del.<locals>._InjectDelsPass.run_pass`   s'    ++EMM:&r&   r-   N)
r.   r/   r0   r1   __doc__str_namerg   rp   r2   )rh   s   r$   _InjectDelsPassrd   V   s"     %s4y0E$r&   ru   c                   $   > \ rS rSrU U4S jrSrg)ITestPassManagerFunctionality._create_pipeline_w_del.<locals>.TestCompilere   c                    > [         R                  " U R                  5      nUR                  TT5        UR	                  5         U/$ r   )r   define_nopython_pipelinern   add_pass_afterfinalize)r    pmru   inject_afters     r$   define_pipelinesZTestPassManagerFunctionality._create_pipeline_w_del.<locals>.TestCompiler.define_pipelinesg   s7    '@@L!!/<@tr&   r-   N)r.   r/   r0   r1   r   r2   )ru   r~   s   r$   TestCompilerrw   e   s     r&   r   )
assertTruer   r   )r    rh   r~   r   ru   s    `` @r$   _create_pipeline_w_del3TestPassManagerFunctionality._create_pipeline_w_delN   s`    
 	D01D()	5	>	d 	 
?		 	8 	 r&   c                 J   U R                  [        [        5      n[        US9S 5       nU R	                  [
        R                  5       nU" S5        S S S 5        [        WR                  5      nU R                  SU5        U R                  SU5        g ! , (       d  f       NH= f)Nr8   c                     U S-   $ NrP   r-   r:   s    r$   r<   YTestPassManagerFunctionality.test_compiler_error_on_ir_del_from_functionpass.<locals>.foos       q5Lr&   
   zIllegal IR, del found at:zdel x)
r   r   r   r   assertRaisesr   CompilerErrorrs   	exceptionassertIn)r    new_compilerr<   raiseserrstrs        r$   /test_compiler_error_on_ir_del_from_functionpassLTestPassManagerFunctionality.test_compiler_error_on_ir_del_from_functionpasso   s    22<3CE 
\	*	 
+	 v334G 5 V%%&16:gv& 54s   		B
B"c                     U R                  [        [        5      n[        US9S 5       nU R	                  U" S5      UR                  S5      5        g )Nr8   c                     U S-   $ r   r-   r:   s    r$   r<   ]TestPassManagerFunctionality.test_no_compiler_error_on_ir_del_after_legalization.<locals>.foo   r   r&   r   )r   r   r	   r   r   rB   )r    r   r<   s      r$   3test_no_compiler_error_on_ir_del_after_legalizationPTestPassManagerFunctionality.test_no_compiler_error_on_ir_del_after_legalization   sO     22<3AC 
\	*	 
+	 	BR1r&   r-   )NN)r.   r/   r0   r1   r   r   r   r2   r-   r&   r$   r^   r^   L   s    B' 2r&   r^   N)numba.core.compilerr   r   numba.core.compiler_machineryr   r   r   numba.core.untyped_passesr   numba.core.typed_passesr	   numbar
   r   r   r   
numba.corer   r   r   numba.core.irr   numba.tests.supportr   r   r^   r-   r&   r$   <module>r      sE    <: : 6 2 + + . . $ (=2 =2@C28 C2r&   