
    Ng=                     :   d dl mZ d dlZd dlmZ ddlm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
 Zd Zd Zd Zd Zd Zd"dZd Zd Zd Zd#dZd$dZd Zd Zd Zd%dZi Z	 d dlmZ n# e $ r  G d de!          ZY nw xY w e            Z"d Z#d&d!Z$dS )'    )absolute_importN)time   )Errors)
DebugFlags)Options)CompileErrorInternalError
AbortError)Namingc                 H    t          |                                            | S N)printdump)ts    T/var/www/html/ai-engine/env/lib/python3.11/site-packages/Cython/Compiler/Pipeline.pydumptreer      s    	!&&((OOOH    c                 R    t          j                    dk    rt          d          | S )Nr   zpipeline break)r   get_errors_countr   )nodes    r   abort_on_errorsr      s*      A%%)***Kr   c                       fd}|S )Nc                    | j         }| j        }|ddf}t          j        dc}t          _                            ||d          }|t          _                            ||d|          }| |_        ||_        d|_        |S )Nr   r   F)posneed_pxdpxdfull_module_name)	source_descr   r   cimport_from_pyxfind_moduleparsecompilation_sourcescopeis_pxd)compsrcr    r   initial_possaved_cimport_from_pyxr%   treecontexts          r   r#   z"parse_stage_factory.<locals>.parse   s    )"3"Aq);B;SUZ8 8##$4KTU#VV#9 }}[%qM]}^^")
r    )r+   r#   s   ` r   parse_stage_factoryr-      s#         Lr   c                       fd}|S )Nc                 V                         | d          }|_        d|_        |S )NTr   )r#   r%   r&   )r    r*   r+   module_namer%   s     r   r#   z&parse_pxd_stage_factory.<locals>.parse*   s7    }}[%T.9  ; ;
r   r,   )r+   r%   r0   r#   s   ``` r   parse_pxd_stage_factoryr1   )   s/           Lr   c                       fd}|S )Nc                 L    |                                 | j        _        S r   )process_implementationr$   )module_nodeoptionsresults    r   generate_pyx_code_stagez@generate_pyx_code_stage_factory.<locals>.generate_pyx_code_stage3   s)    **7F;;;$/$B!r   r,   )r6   r7   r8   s   `` r   generate_pyx_code_stage_factoryr9   2   s*          #"r   c                       fd}|S )Nc                 |    j                                         D ] \  }\  }}|                     ||d           !| S )Nr   )stage)pxdsitemsmerge_in)r5   namestatlistnoder%   r+   s       r   inject_pxd_code_stagez<inject_pxd_code_stage_factory.<locals>.inject_pxd_code_stage;   sP    +2<+=+=+?+? 	C 	C'D'<  uE BBBBr   r,   )r+   rB   s   ` r   inject_pxd_code_stage_factoryrC   :   s$         ! r   c                 f   |t                      }| j                                        D ]}||v r|                    |           |j        rF|j        r?|                    |j                   |j        j        D ]}|                    |           i|j        rt          |j        ||           d S r   )
setentriesvaluesaddusedutility_code_definitionuse_utility_coderequires	as_moduleuse_utility_code_definitions)r%   targetseenentryrequired_utilitys        r   rN   rN   B   s    |uu%%'' 
H 
HD==: 	H%7 	H##E$ABBB$)$A$J : : ''(89999:_ 	H(&$GGG
H 
Hr   c                 j    i j         fd| D ]} |           t                    S )Nc                      |           }|Kd| <   t                    }d| j        r t          fd| j        D                       ndz   |dz  z   x}| <   |S )Nr   r   c                 &    g | ]} |          S r,   r,   ).0depcalculate_ranks     r   
<listcomp>zIsorted_utility_codes_and_deps.<locals>.calculate_rank.<locals>.<listcomp>]   s#    FFFS^^C((FFFr   g:0yE>)lenrL   min)utilcoderankoriginal_orderrX   get_rankrankss      r   rX   z5sorted_utility_codes_and_deps.<locals>.calculate_rankW   s    x!!<E(O ZZN%&KSK\dFFFFH4EFFFGGGbd&"T)&* *D5? r   )key)getsorted)	utilcodesr]   rX   r`   ra   s     @@@r   sorted_utility_codes_and_depsrf   S   sm    EyH        ! !x     %X&&&&r   c                 ^    d | D             | D ]}fd|j         pdD             |_         d S )Nc                     i | ]}||S r,   r,   )rV   r]   s     r   
<dictcomp>z"normalize_deps.<locals>.<dictcomp>i   s    888(HX888r   c                 <    g | ]}                     ||          S r,   )
setdefault)rV   rW   depss     r   rY   z"normalize_deps.<locals>.<listcomp>k   s'    ZZZ3T__S#66ZZZr   r,   )rL   )re   r]   rl   s     @r   normalize_depsrm   h   s[    88i888D [ [ZZZZ(BSBYWYZZZ[ [r   c                       fd}|S )Nc                 
   |                                   t          j        | j                   | j        j        }t          |          |d d <   t          |           t                      }|D ]}||v r|                    |           |j	        r#|j	        D ]}||vr|
                    |           |                    j                  }|r0|                     |                                |j        dd           | S )N)cython_scopeutilityT)r<   merge_scope)prepare_utility_coderN   rp   r%   utility_code_listrf   rm   rE   rH   rL   appendget_treer?   with_compiler_directives)r5   rt   addedr]   rW   r*   r+   s         r   inject_utility_code_stagezDinject_utility_code_stage_factory.<locals>.inject_utility_code_stageo   s4   ((***$W%9;;LMMM'-?<=NOO!!!())) * 	7 	7H5  IIh  6#, 6 6C%'')00555$$'2F$GGD 7$$T%B%B%D%D%)Zy15 % 7 7 7 r   r,   )r+   ry   s   ` r   !inject_utility_code_stage_factoryrz   n   s$        4 %$r   r,   c                 P   |dv sJ ddl m} ddlm}m}m}m} ddlm}m}	m	}
 ddlm
}m} ddlm}m}m} ddlm}m}m} dd	lm}m} dd
lm} ddlm}m} ddlm}m}m} ddlm}m}m} ddlm} ddl m!} ddl"m#}  ddl$m%}!m&}"m'}# ddl$m(}$m)}% ddl$m*}& ddl$m+}'m,}( ddl$m-}) ddl$m.}* ddl/m0}+ ddl1m2},m3}- |dk    r|-}. ||           }/n|,}.d }/|dk    r ||           }0nd }0g  ||            ||           |/ |             || | j4                   ||            |             ||           |0 ||            ||            ||            |'             |!             ||            ||            |	             |
|            ||            | |            |$|            ||            ||            ||            ||            ||            |+|           |. |&|            ||            ||            ||            |#|            |"|            |%|            ||            ||            |*|            |)             |(|            ||            |            }1rfd|1D             }1|1S )N)pyxpyr   r   	PrintTree)WithTransformNormalizeTree	PostParsePxdPostParse)ForwardDeclareTypesInjectGilHandlingAnalyseDeclarationsTransform)AnalyseExpressionsTransformFindInvalidUseOfFusedTypes)CreateClosureClassesMarkClosureVisitorDecoratorTransform)TrackNumpyAttributesInterpretCompilerDirectivesTransformBuiltinMethods)ExpandInplaceOperatorsParallelRangeTransform) CalculateQualifiedNamesTransform)MarkParallelAssignmentsMarkOverflowingArithmetic)AdjustDefByDirectivesAlignFunctionDefinitionsAutoCpdefFunctionDefinitions)RemoveUnreachableCodeGilCheckCoerceCppTemps)ControlFlowAnalysis)AutoTestDictTransform)EmbedSignature)FlattenInListTransformSwitchTransformIterationTransform)EarlyReplaceBuiltinCallsOptimizeBuiltinCalls)InlineDefNodeCalls)ConstantFoldingFinalOptimizePhase)DropRefcountingTransform)ConsolidateOverflowCheck)IntroduceBufferAuxiliaryVars)check_c_declarationscheck_c_declarations_pxdr   r}   c                 &    g | ]}|j         v|S r,   )	__class__)rV   sexclude_classess     r   rY   z#create_pipeline.<locals>.<listcomp>   s%    JJJq{/'I'I!'I'I'Ir   )5Visitorr   ParseTreeTransformsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   TypeInferencer   r   r   r   r   r   r   r   FlowControlr   AnalysedTreeTransformsr   AutoDocTransformsr   Optimizer   r   r   r   r   r   r   r   r   r   Bufferr   
ModuleNoder   r   compiler_directives)2r+   moder   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _check_c_declarations_specific_post_parse_align_function_definitionsstagess2     `                                               r   create_pipeliner      s   '''''""""""ZZZZZZZZZZZZiiiiiiiiii\\\\\\\\aaaaaaaaaaooooooooooSSSSSSSSEEEEEEQQQQQQQQrrrrrrrrrrTTTTTTTTTT000000======111111UUUUUUUUUUHHHHHHHH,,,,,,========222222222222444444JJJJJJJJ u}} 8+|G44 4#t||&>&>w&G&G##&*#
,
g,
	',
 	,
 		,

 	$#GW-HII,
 	w'',
 	,
 	g&&,
 	$,
 	7##,
 	%$W--,
 	g&&,
 	,
 	  ,
 	7##,
  	G$$!,
" 	#,
$ 	%$W--%,
& 	g&&',
( 	w),
* 	! ))+,
, 	 ((-,
. 	 ((/,
0 	G$$1,
2 	g&&3,
6 	"!'**7,
8 	%$W--9,
: 	;,
< 	7##=,
> 	$#G,,?,
@ 	#"7++A,
B 	w''C,
D 	7##E,
F 	  G,
H 	W%%I,
J 	W%%K,
L 	)(11M,
N 	! ))O,
P 	! ""Q,
R 	7##S,
T 	wU,
V 	

W,
FZ  KJJJJVJJJMr   Fc                 .   |rdnd}g }g }|j         rLddlm}  |            }	|                    |	           |                    |	                                           |j        r:ddlm}
 ddlm	} |

                    |j                  | _         || ||          g}ng }t          t          j        t!          |           gt#          | ||          |t%          |           t'          |           t(          g|t+          ||          g|                    S )	Nr}   r|      )TreeAssertVisitor)DebugWriterr   )DebugTransformr   )evaluate_tree_assertions	TestUtilsr   ru   create_c_file_validator	gdb_debugDebuggerr   r   r   CythonDebugWriter
output_dirgdb_debug_outputwriterlist	itertoolschainr-   r   rC   rz   r   r9   )r+   r6   r7   r}   r   r   test_supportctest_supportr   test_validatorr   r   debug_transforms                r   create_pyx_pipeliner      s]    445DLM' G111111**,,N+++^CCEEFFF ******777777)4)F)F*  * &)>'7FCCD		W	%	%&GGG	&w	/	/	*7	3	3		 		(&	9	9:
 
 
 
 
r   c                 l    ddl m} t          | ||          gt          | d          z    |            gz   S )Nr   )ExtractPxdCoder   )CodeGenerationr   r1   r   )r+   r%   r0   r   s       r   create_pxd_pipeliner   
  sX    ......
 	 <<
GU++, 	/

 
r   c                 (    t          | ||d          S )NT)r}   )r   )r+   r6   r7   s      r   create_py_pipeliner     s    wDAAAAr   c           
      p   ddl m}m}m}m} ddlm}m} ddlm	 g }t          | | j        ||||||g          }	ddlm  G fdd          }
|	D ]G}|                    |           t          ||          r |                    d	 |
                        nHfd
}|                    |           |S )Nr   )r   r   r   r   )r   r   )StatListNoder   VisitorTransformc                   $    e Zd Zd Z j        ZdS )5create_pyx_as_pxd_pipeline.<locals>.SetInPxdTransformc                 ^    t          |d          rd|_        |                     |           |S )Nin_pxdT)hasattrr   visitchildren)selfr   s     r   visit_StatNodezDcreate_pyx_as_pxd_pipeline.<locals>.SetInPxdTransform.visit_StatNode,  s4    tX&& #"t$$$Kr   N)__name__
__module____qualname__r   recurse_to_children
visit_Noder   s   r   SetInPxdTransformr   '  s(        
	 	 	 &9


r   r   rZ   c                 (   | j         j                                        D ]Z}|j        sQd|_        |j        |j        k    r:|j        dk    r/|j                             t          j
        |j                  |_        [ | j        g           | j         fS )Nr   extern)stats)r%   rF   rG   in_cincludedefined_in_pxdr@   cname
visibilitymangler   func_prefixr   )rootrQ   r   s     r   fake_pxdz,create_pyx_as_pxd_pipeline.<locals>.fake_pxd9  s    Z'..00 	U 	UE$ U'($:,,1AX1M1M"'+"4"4V5G"T"TEK|DHB///;;r   )r   r   r   r   r   r   r   r   Nodesr   r   r6   r   r   ru   
isinstanceinsert)r+   r7   r   r   r   r   r   r   pipelinepyx_pipeliner   r<   r   r   r   s                @@r   create_pyx_as_pxd_pipeliner     s   H H H H H H H H H H H HAAAAAAAA######H&w+C+=+:+A+88-. . .L *))))): : : : : : :, : : :   e9:: 	OOB 1 1 3 3444E	< < < < < OOHOr   c                     |s|sJ |p|}t          |           D ]\  }}t          ||          r n|r|dz  }| d|         |gz   | |d         z   S )z
    Insert a new transform into the pipeline after or before an instance of
    the given class. e.g.

        pipeline = insert_into_pipeline(pipeline, transform,
                                        after=AnalyseDeclarationsTransform)
    r   N)	enumerater   )r   	transformbeforeafterclsir   s          r   insert_into_pipeliner  D  s     U
/EC(##  1a 	E	  	QBQB<9+%44r   )localc                       e Zd ZdS )_threadlocalN)r   r   r   r,   r   r   r  r  a  s          r   r  c                  @    	 t           j        S # t          $ r i cY S w xY wr   )threadlocalcython_pipeline_timingsAttributeErrorr,   r   r   get_timingsr  f  s4    22   			s    Tc                    ddl m} t          j        r t	                                                      nd }	 t          j        }n# t          $ r i x}t          _        Y nw xY wd }d }|}	 	 | D ]&}	|	|st          |	|          rt          |	dt          |	          j                  }
t          j        rVt          d|	z             	 t          |
         }n5# t          $ r( t!          d|
z  |           ||
         x}t          |
<   Y nw xY wt#                      } ||	|          }t#                      |z
  }	 ||
         \  }}n# t          $ r d\  }}Y nw xY w|t%          |dz            z   |dz   f||
<   t          j        rt          d	|z             (n/# t&          $ r"}t)          j        |d
           |}Y d }~nd }~ww xY wnE# t,          $ r$}t)          j                    dk    r |}Y d }~nd }~wt0          $ r}|}Y d }~nd }~ww xY w||fS )Nr   r~   c                      | |          S r   r,   )phasedatas     r   runzrun_pipeline.<locals>.runv  s    uT{{r   r   zEntering pipeline phase %rz'def %s(phase, data): return phase(data))r   r   i@B z    %.3f secondsF)	use_stackr   )r   r   r   debug_verbose_pipelineglobalscopyr	  r
  r  r   getattrtyper   r   _pipeline_entry_pointsKeyErrorexecr   intr	   r   report_errorr
   r   r   )r   source	printtreer   exec_nstimingsr  errorr  r  
phase_namer   old_tcounterrs                  r   run_pipeliner&  m  s   """"""","CMgiinnG;5 ; ; ;8::+555;   ED'	! 2 2=  Zy%A%A $UJU8LMM
4 W6>???W4Z@# W W WFSU\]]]CJ:CVV4Z@@@W FFs5$''FFQJ(#*:#6LE55 ( ( (#'LE555(',s1w;/?/?'?&K
#4 2,q0111526  	 	 	u5555EEEEEE	    "$$))   4=s   A AA*AF CF /DF D.F 6EF EF EA F G 
GF<7G <GG 
HG..H;HHr   )r,   )Fr,   )NN)T)%
__future__r   r   r    r   r   r   r	   r
   r   r   r   r   r-   r1   r9   rC   rN   rf   rm   rz   r   r   r   r   r   r  r  	threadingr  r  ImportErrorobjectr	  r  r&  r,   r   r   <module>r,     sH   & & & & & &                             ; ; ; ; ; ; ; ; ; ;      
  
      # # #! ! !H H H H"' ' '*[ [ [% % %DX X X Xt   @	
 	
 	
B B B* * *X5 5 5 50  %/////// % % %$$$$$v$$$$$% lnn  6 6 6 6 6 6s   *A1 1BB