
    hf?                     8   S SK r S SKJr  SSKJ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	 r
S
 rS rS rS rS rS rS S jrS rS rS!S jrS"S jrS#S jrS rS rS rS$S jr S SKJr  \" 5       rS r 0 r!S r"S!S jr#g! \ a     " S S5      r N'f = f)%    N)time   )Errors)
DebugFlags)Options)CompileErrorInternalError
AbortError)Namingc                 8    [        U R                  5       5        U $ N)printdump)ts    R/var/www/fran/franai/venv/lib/python3.13/site-packages/Cython/Compiler/Pipeline.pydumptreer      s    	!&&(OH    c                 N    [         R                  " 5       S:w  a  [        S5      eU $ )Nr   zpipeline break)r   get_errors_countr
   )nodes    r   abort_on_errorsr      s$     A%)**Kr   c                    ^  U 4S jnU$ )Nc                    > U R                   nU R                  nUSS4n[        R                  Ssn[        l        TR	                  X#SS9nU[        l        TR                  XSUS9nXl        XVl        SUl        U$ )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"   "parse_stage_factory.<locals>.parse   s    ))"33"Aq);B;S;SUZ8 8##$4TU#V#9 }}[qM]}^")
r    )r*   r"   s   ` r   parse_stage_factoryr-      s     Lr   c                    ^ ^^ U UU4S jnU$ )Nc                 H   > TR                  U TSTS9nTUl        SUl        U$ )NTr   )r"   r$   r%   )r   r)   r*   module_namer$   s     r   r"   &parse_pxd_stage_factory.<locals>.parse(   s2    }}[%T.9  ;
r   r,   )r*   r$   r0   r"   s   ``` r   parse_pxd_stage_factoryr2   '   s     Lr   c                    ^ ^ U U4S jnU$ )Nc                 N   > U R                  TT5        U R                  Tl        T$ r   )process_implementationr#   )module_nodeoptionsresults    r   generate_pyx_code_stage@generate_pyx_code_stage_factory.<locals>.generate_pyx_code_stage1   s&    **7F;$/$B$B!r   r,   )r7   r8   r9   s   `` r   generate_pyx_code_stage_factoryr;   0   s     #"r   c                    ^  U 4S jnU$ )Nc                 n   > TR                   R                  5        H  u  pU R                  XSS9  M     U $ Nr   stage)utility_pxdsvaluesmerge_in)r6   statlistnoder$   r*   s      r   inject_utility_pxd_code_stageLinject_utility_pxd_code_stage_factory.<locals>.inject_utility_pxd_code_stage9   s9    #*#7#7#>#>#@L  E B $Ar   r,   )r*   rE   s   ` r   %inject_utility_pxd_code_stage_factoryrG   7   s    
 )(r   c                    ^  U 4S jnU$ )Nc                 t   > TR                   R                  5        H  u  nu  p#U R                  X#SS9  M     U $ r>   )pxdsitemsrC   )r6   namerD   r$   r*   s       r   inject_pxd_code_stage<inject_pxd_code_stage_factory.<locals>.inject_pxd_code_stageB   s<    +2<<+=+=+?'D'<  E B ,@r   r,   )r*   rM   s   ` r   inject_pxd_code_stage_factoryrO   @   s     ! r   c                    Uc
  [        5       nU R                  R                  5        H  nX2;   a  M
  UR                  U5        UR                  (       a\  UR
                  (       aK  UR                  UR
                  5        UR
                  R                   H  nUR                  U5        M     M  UR                  (       d  M  [        UR                  X5        M     g r   )
setentriesrB   addusedutility_code_definitionuse_utility_coderequires	as_moduleuse_utility_code_definitions)r$   targetseenentryrequired_utilitys        r   rY   rY   I   s    |u%%'=::%77##E$A$AB$)$A$A$J$J ''(89 %K___(&G (r   c                 j   ^^^ 0 mTR                   mUUU4S jmU  H  nT" U5        M     [        TTS9$ )Nc           	         > T" U 5      nUc]  STU '   [        T5      nSU R                  (       a,  [        U R                   Vs/ s H  nT" U5      PM     sn5      OS-   US-  -   =nTU '   U$ s  snf )Nr   r   g:0yE>)lenrW   min)utilcoderankoriginal_orderdepcalculate_rankget_rankrankss       r   rg   5sorted_utility_codes_and_deps.<locals>.calculate_rank^   s    !<E(O ZN%&KSK\K\H4E4EF4ES^C(4EFGbd&"T)&* *D5?  Gs   A,
)key)getsorted)	utilcodesrc   rg   rh   ri   s     @@@r   sorted_utility_codes_and_depsro   Z   s9    EyyH x   %X&&r   c                     U  Vs0 s H  oU_M     nnU  H<  nUR                   =(       d    S Vs/ s H  o2R                  X35      PM     snUl         M>     g s  snf s  snf )Nr,   )rW   
setdefault)rn   rc   depsrf   s       r   normalize_depsrs   o   sZ    .78i(XiD8BJBSBSBYWYBYZBY3__S6BYZ  9Zs
   AAc                    ^ ^ U U4S jnU$ )Nc                   > U R                  5         [        TR                  U R                  5        U R                  nUR                  n[        U5      US S & [        U5        [        5       nU H  nXC;   a  M
  UR                  U5        UR                  (       a+  UR                   H  nXS;  d  M
  UR                  U5        M     UR                  TR                  S9=n(       aE  U R                  UR                  5       UR                  SS9  U R                  UR                  T	S9  M  UR                  TR                  S9=n(       d  M  UR                   R                  U5        M     U $ )N)cython_scopeutilityr?   )internalise_c_class_entries)prepare_utility_coderY   rv   r$   utility_code_listro   rs   rQ   rS   rW   appendget_treerC   with_compiler_directivesmerge_scopeget_shared_library_scopecimported_modules)
r6   module_scoperz   addedrc   rf   r)   shared_library_scoper*   rx   s
           r   inject_utility_code_stageDinject_utility_code_stage_factory.<locals>.inject_utility_code_stagev   sJ   ((*$W%9%9;;L;LM"(((::<=NO!() *H IIh  #,,C')005 -  ((g6J6J(KKtK$$T%B%B%D%)ZZy % B''

Pk'l)1)J)JX_XlXl)J)mm%m..556JK * r   r,   )r*   rx   r   s   `` r   !inject_utility_code_stage_factoryr   u   s    8 %$r   c                    US;   d   eSSK Jn  SSKJnJnJnJn  SSKJnJn	J	n
  SSKJ
nJn  SSKJnJnJn  SSKJnJnJn  SS	KJnJn  SS
KJn  SSKJnJn  SSKJnJnJn  SSKJnJnJn  SSKJn  SSK J!n  SSK"J#n   SSK$J%n!J&n"J'n#  SSK$J(n$J)n%  SSK$J*n&  SSK$J+n'J,n(  SSK$J-n)  SSK$J.n*  SSK/J0n+  SSK1J2n,J3n-  US:X  a  U-n.U" U 5      n/OU,n.S n/US:X  a	  U" U 5      n0OS n0/ U" U 5      PU" U 5      PU/PU" 5       PU" X Rh                  5      PU" U 5      PU" 5       PU" U 5      PU0PU" U 5      PU" U 5      PU" U 5      PU'" 5       PU!" 5       PU" U 5      PU" U 5      PU	" 5       PU
" U 5      PU" U 5      PU " U 5      PU$" U 5      PU" U 5      PU" U 5      PU" U 5      PU" U 5      PU" U 5      PU+" U 5      PU.PU&" U 5      PU" U 5      PU" 5       PU" U 5      PU#" U 5      PU"" U 5      PU%" U 5      PU" U 5      PU" U 5      PU*" U 5      PU)" 5       PU(" U 5      PU" U 5      PU" 5       Pn1U(       a$  U1 V2s/ s H  n2U2Rj                  U;  d  M  U2PM     n1n2U1$ s  sn2f )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   )6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	__class__)3r*   modeexclude_classesr   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stagesss3                                                      r   create_pipeliner      sL   ''''"ZZii\aaooSEQrrTT0=1UUH,=224J u} 8+G4 4#t|&>w&G#&*#
,
g,
',
 	,
 		,

 	$G-H-HI,
 	w',
 	,
 	g&,
 	$,
 	7#,
 	%W-,
 	g&,
 	,
 	 ,
 	7#,
  	G$!,
" 	#,
$ 	%W-%,
& 	g&',
( 	w),
* 	!)+,
, 	 (-,
. 	 (/,
0 	G$1,
2 	g&3,
6 	"'*7,
8 	%W-9,
: 	;,
< 	7#=,
> 	$G,?,
@ 	#$A,
B 	w'C,
D 	7#E,
F 	 G,
H 	W%I,
J 	W%K,
L 	)1M,
N 	!)O,
P 	!"Q,
R 	7#S,
T 	wU,
V 	
W,
FZ #JVq{{/'I!VJM Ks   *IIc                    U(       a  SOSn/ n/ nUR                   (       a=  SSKJn  U" 5       n	UR                  U	5        UR                  U	R	                  5       5        UR
                  (       a7  SSKJn
  SSKJ	n  U
R                  UR                  5      U l        U" XU5      /nO/ n[        [        R                  " [!        U 5      /[#        XUS9U[%        U 5      ['        U 5      [)        U 5      [*        /U[-        X5      /U5      5      $ )	Nr   r      )TreeAssertVisitor)DebugWriterr   )DebugTransformr   )evaluate_tree_assertions	TestUtilsr   r{   create_c_file_validator	gdb_debugDebuggerr   r   r   CythonDebugWriter
output_dirgdb_debug_outputwriterlist	itertoolschainr-   r   rO   r   rG   r   r;   )r*   r7   r8   r   r   r   test_supportctest_supportr   test_validatorr   r   debug_transforms                r   create_pyx_pipeliner      s    45DLM''1*,N+^CCEF*7)4)F)F* &)'FCD		W	%&G)'2-g61':		
 		(	9:  r   c                 T    SSK Jn  [        XU5      /[        U S5      -   U" 5       /-   $ )Nr   )ExtractPxdCoder   )CodeGenerationr   r2   r   )r*   r$   r0   r   s       r   create_pxd_pipeliner     s<    .
 	 <
GU+, 	/

 
r   c                     [        XUSS9$ )NT)r   )r   )r*   r7   r8   s      r   create_py_pipeliner   !  s    wDAAr   c           
      R  ^^ SSK JnJnJnJn  SSKJnJn  SSKJ	m  / n[        X R                  UUUUUU/S9n	SSKJm   " U4S jST5      n
U	 H=  nUR                  U5        [        X5      (       d  M&  UR!                  S	U
" 5       5          O   U4S
 jnUR                  U5        U$ )Nr   )r   r   r   r   )r   r   )StatListNoder   VisitorTransformc                   6   > \ rS rSrS r Y R
                  rSrg)5create_pyx_as_pxd_pipeline.<locals>.SetInPxdTransformi3  c                 X    [        US5      (       a  SUl        U R                  U5        U$ )Nin_pxdT)hasattrr   visitchildren)selfr   s     r   visit_StatNodeDcreate_pyx_as_pxd_pipeline.<locals>.SetInPxdTransform.visit_StatNode8  s)    tX&&"t$Kr   r,   N)__name__
__module____qualname____firstlineno__r   recurse_to_children
visit_Node__static_attributes__r   s   r   SetInPxdTransformr   3  s    
	 &99
r   r   r`   c                   > U R                   R                  R                  5        H  nUR                  (       a  M  SUl        UR
                  UR                  :X  d  M9  UR                  S:w  d  MK  UR                   R                  [        R                  UR
                  5      Ul        M     T" U R                  / S9U R                   4$ )Nr   extern)stats)r$   rR   rB   in_cincludedefined_in_pxdrL   cname
visibilitymangler   func_prefixr   )rootr\   r   s     r   fake_pxd,create_pyx_as_pxd_pipeline.<locals>.fake_pxdE  s    ZZ''..0E$$$'($::,1A1AX1M"'++"4"4V5G5G"TEK 1 DHHB/;;r   )r   r   r   r   r   r   r   r   Nodesr   r   r7   r   r   r{   
isinstanceinsert)r*   r8   r   r   r   r   r   r   pipelinepyx_pipeliner   r@   r  r   r   s                @@r   create_pyx_as_pxd_pipeliner  $  s    H HA#H&w+C+=+:+A+88-.L *:, : e::OOB 1 34	 
< OOHOr   c                     U(       d	  U(       d   eU=(       d    Un[        U 5       H  u  pV[        Xd5      (       d  M    O   U(       a  WS-  nU SW U/-   X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  P  s`     U?
/EC(#a $ 	QBQ<9+%44r   )localc                       \ rS rSrSrg)_threadlocalik  r,   N)r   r   r   r   r   r,   r   r   r  r  k  s    r   r  c                  H     [         R                  $ ! [         a    0 s $ f = fr   )threadlocalcython_pipeline_timingsAttributeErrorr,   r   r   get_timingsr  p  s'    222 	s    !!c                 n     [         U    $ ! [         a     Of = fS nU =Ul        Ul        U[         U '   U$ )Nc                     U " U5      $ r   r,   phasedatas     r   run%_make_debug_phase_runner.<locals>.run      T{r   )_pipeline_entry_pointsKeyErrorr   r   )
phase_namer!  s     r   _make_debug_phase_runnerr'  y  sJ    %j11  '10CL3#),:&Js    
c                 P   SSK Jn   [        R                  nS nS nUn  U  H  nUc  M  U(       d  [        X5      (       a  M!  [        US[        U5      R                  5      n	[        R                  (       a  [        SU-  5        [        U	5      n[        5       n
U" X5      n[        5       U
-
  n
 XI   u  pU[        U
S-  5      -   US-   4XI'   [        R                  (       d  M  [        SU
-  5        M     Xg4$ ! [         a    0 =n[        l         Nf = f! [         a    Su  p Nqf = f! [          a#  n["        R$                  " US	S
9  Un S nAXg4$ S nAff = f! [&         a(  n["        R(                  " 5       S:X  a  e Un S nAXg4$ S nAf[*         a  nUn S nAXg4$ S nAff = f)Nr   r   c                     U " U5      $ r   r,   r  s     r   r!  run_pipeline.<locals>.run  r#  r   r   zEntering pipeline phase %r)r   r   i@B z    %.3f secondsF)	use_stackr   )r   r   r  r  r  r  getattrtyper   r   debug_verbose_pipeliner   r'  r   r%  intr   r   report_errorr	   r   r
   )r	  source	printtreer   timingsr!  errorr   r  r&  r   old_tcounterrs                 r   run_pipeliner8    s   ";55 ED"	!= Z%A%A$UJU8L8LM
446>?2:>CF5'FQJ(#*#6LE (-s1w;/?'?&K#444,q01+ "B =W  ;8::+5;6   (#'LE5(
  	u5E =	  ""$) =  =s}   C< BD- 2D8+D- 'D- <DDD*'D- )D**D- -
E7EE EE 
F%'F

F%F  F%r   )T)r,   )Fr,   )NN)$r   r    r   r   r   r   r	   r
   r   r   r   r-   r2   r;   rG   rO   rY   ro   rs   r   r   r   r   r   r  r  	threadingr  r  ImportErrorr  r  r$  r'  r8  r,   r   r   <module>r<     s         ; ; 

#)!H"'*[%HXt!F	
B*X50/ n  /=  s   +B BB