+
    VBi	                       ^ RI t ] P                  ! ER/ R]bR]bR]bR]bR]bR]bR]bR	]bR
]bR]bR]bR]bR]bR]bR]bR]bR]bR]bR]bR]bR]bR]bR]bR]bR]bR]bR]bR]bR]bR]bR ]bR!]bR"]bR#]bR$]bR%]bR&]bR']bR(]bR)]b  ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ R*IHt ^R+IHtHtHtHtHtHtHtHt ^R,IHtHt ^R-IHt ^R.IHt ^R/IHt ^R0IHt ^R1IHtH t  ^R2IH!t! ^R3I!H"t"H#t#H$t$H%t%H&t& ^R4IH't' ^R5I(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t3H4t4 ^R6IH(t( ^R7IH5t5 ^R8IH6t6 ^R9I7H8t8 ^R:IH9t9 ^R;I:H;t; ^R<I<H=t=H>t> ^R=I?H@t@HAtAHBtBHCtCHDtDHEtEHFtFHGtGHHtHHItIHJtJHKtKHLtLHMtMHNtN ^R>I!HOtO ]P]Q3tR ! R? R@4      tS]S! 4       tT]! 4       tURA tV].]/3RB].]!PD                  3RC].]!P                  3RC].]!P                  3RC].]!P                  3RC]/].3RD]/]!P                  3RE]/]!P                  3RE]!PD                  ].3RF]!P                  ].3RF]!P                  ].3RF]!P                  ].3RF]V! ]!P                  ! 4       4      RG]V! ]!P                  ! 4       4      RH/t^RI t_RJ t`RK taERRL ltbRM tcRN tdRO teRP tfRQ tgRR th ! RS RT]4      ti ! RU RV]i4      tj ! RW RX]i4      tk ! RY RZ]k4      tl ! R[ R\]l4      tm ! R] R^]l4      tn ! R_ R`]k4      to ! Ra Rb]o4      tp ! Rc Rd]o4      tq ! Re Rf]o4      tr ! Rg Rh]o4      ts ! Ri Rj]o4      ttRk tu ! Rl Rm]o4      tv ! Rn Ro]o4      tw ! Rp Rq]w4      tx ! Rr Rs]k4      ty ! Rt Ru]k4      tz ! Rv Rw]k4      t{ ! Rx Ry]i4      t| ! Rz R{]i4      t} ! R| R}]i4      t~ ! R~ R]~4      t ! R R]i4      t ! R R]k4      t ! R R]~4      t ! R R]k4      t ! R R]i]EP                  4      t ! R R]k4      t ! R R]i4      t ! R R]4      t ! R R]i4      t ! R R]i4      t ! R R]i4      t ! R R]k4      t ! R R]k4      t ! R R]i4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]i4      t ! R R]4      t ! R R]4      t ! R R]i4      t ! R R]i4      t ! R R]4      t ! R R]i4      t ! R R]4      t ! R R]i4      t ! R R]4      t ! R R]4      t ! R R]i4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]i4      t ! R R]i4      t ! R R]i4      t ! R R]i4      t ! R R]i4      t ! R R]4      t ! R R]4      t ! R R]~4      t ! R R]4      t ! R R]4      t ! R R]i4      t ! R R]i4      t ! R R]i4      t ! R R]i4      t ! R R]i4      t ! R R]i4      t ! R R]j4      t ! R R4      t ! R R]i]4      t ! R R]i4      t ! R R]i4      t ! R R]i]4      t ! R R]i4      t ! R R]i4      t ! R R]i]4      t ! R R]4      t ! R R4      t ! R R]i4      t ! R R]i4      t ! R R]i4      t ! R R]4      t ! ER  ER]4      t ! ER ER]4      t ! ER ER]4      t ! ER ER]i4      t ! ER ER	]4      t ! ER
 ER]4      t ! ER ER]4      t ! ER ER]4      t ! ER ER]k4      t ! ER ER]4      t ! ER ER]4      t ! ER ER]k4      tER tER]EP                  ER]EP                  ER]EP                  ER]EP                  /t ! ER ER]i4      t ! ER ER ]4      t ! ER! ER"]4      t ! ER# ER$]4      t ! ER% ER&]4      t ! ER' ER(]4      t ! ER) ER*]4      t ! ER+ ER,]4      tER- t ! ER. ER/]4      tER]ER]ER]/tER0 t ! ER1 ER2]i4      tER3tER4tER5tER6tER7t ! ER8 ER9]i4      t ! ER: ER;]i4      t ! ER< ER=]4      t ! ER> ER?]4      t ! ER@ ERA]i4      t ! ERB ERC]i4      t ]EP                  t/ ERE]EP                  bERF]EP                  bERG]EP                  bERH]EP                  bERI]EP                  bERJ]EP                  bERK]EP                  bERL]EP                  bER]EP                  bERM]EP                  bERN]EP                  bERO]EP                  bERP]EP                  bERQ]EP                  bERR]EP                  bERS]EP                  bERT]EP                  bERU]EP                  ER]EP                   ERV]EP                  ERW]ERXERY ERZER[ /CEtER\ Et ! ER] ER^]i4      Et ! ER_ ER`E]4      EtERa Et ! ERb ERcE]4      Et ! ERd EReE]4      Et ! ERf ERgE]4      Et	 ! ERh ERiE]4      Et
 ! ERj ERkE]4      Et ! ERl ERmE]4      Et ! ERn ERoE]4      Et ! ERp ERqE]4      Et]	EP                  ! ERr4      EP                   EtE]! 0 ERm4      Et ! ERs ERtE]4      Et ! ERu ERvE]4      Et ! ERw ERx]i4      Et ! ERy ERz]i4      Et ! ER{ ER|]i4      EtEREER}ERFER~ERGERERHERERERERJERERIERERXERERZER/	Et ! ER ER4      Et ! ER ER]iE]4      Et ! ER ER]E]4      EtERE]ERE]ERSE]	ERVE]ERME]ERPE]ERUE]ERE]
ERE]ERRE]ERWE]ERNE]EROE]ERQE]ERTE]/EtERER lEt ! ER ER]i4      Et ! ER ERE]4      Et  ! ER ERE]4      Et! ! ER ERE]4      Et" ! ER ER]j4      Et# ! ER ERE]4      Et$ ! ER ERE]$4      Et% ! ER ERE]4      Et& ! ER ERE]4      Et' ! ER ERE]'4      Et( ! ER ERE]4      Et)ER Et* ! ER ERE]4      Et+ ! ER ERE]4      Et, ! ER ERE]4      Et- ! ER ERE]4      Et. ! ER ERE]-4      Et/ ! ER ER]i4      Et0 ! ER ER]i4      Et1 ! ER ER]i4      Et2 ! ER ER]i4      Et3 ! ER ER]i4      Et4 ! ER ER]i4      Et5 ! ER ER]i4      Et6R#   ] d	    ERD t ELOi ; i(      Nerrorwarning	warn_onceInternalErrorCompileErrorUtilityCodeTempitaUtilityCodeStringEncodingoperatorlocal_errorsreport_errorNamingNodes
PyrexTypespy_object_type	list_type
tuple_typeset_type	dict_typeunicode_type
bytes_type	type_typeBuiltinSymtabUtilsfind_coercion_errordebug_disposal_codedebug_temp_allocdebug_coercionbytearray_type
slice_typememoryview_typebuiltin_sequence_typesbuild_line_tableinspectcopyospathlibresys)Optional)r   r   r   r   r   r   CannotSpecializeperformance_hint)r   r	   )r$   )r
   )r   )r   )NodeSingleAssignmentNode)r   )c_char_ptr_typer   typecast
error_typeunspecified_type)	TypeSlots)r   r   r   r   r   r   r   r    r!   sequence_typesr"   )r   )r   )r   )AnnotationItem)Future)print_call_chain)r   r   )
to_pythranis_pythran_supported_type#is_pythran_supported_operation_typeis_pythran_exprpythran_func_typepythran_binop_typepythran_unaryop_typehas_np_pythranpythran_indexing_codepythran_indexing_type!is_pythran_supported_node_or_nonepythran_typepythran_is_numpy_func_supportedpythran_get_func_include_filepythran_functor)PythranExprc                   <   a a ] tR t^@t oRtV 3R ltR tRtVtV ;t	# )NotConstantNc                x   < \         P                  f   \        SV `  V 4      \         n        \         P                  # N)rJ   _objsuper__new__)cls	__class__s   &>/usr/lib/python3.14/site-packages/Cython/Compiler/ExprNodes.pyrO   NotConstant.__new__C   s,    #$ws3K    c                    R # )z<NOT CONSTANT> selfs   &rR   __repr__NotConstant.__repr__I   s    rT   rV   )
__name__
__module____qualname____firstlineno__rM   rO   rY   __static_attributes____classdictcell____classcell__rQ   __classdict__s   @@rR   rJ   rJ   @   s     D    rT   rJ   c                     W 3# rL   rV   )tps   &rR   _type_to_itselfrf   O   s	    6MrT   zGCannot convert Unicode string to 'bytes' implicitly, encoding required.z5Unicode objects only support coercion to Py_UNICODE*.zBCannot convert 'bytes' object to str implicitly, decoding requiredz8Cannot convert 'bytes' object to Py_UNICODE*, use 'str'.z?Cannot convert 'char*' to unicode implicitly, decoding requiredzcython.pymutex cannot be copiedz*cython.pythread_type_lock cannot be copiedc                   a  \         P                  S 4      pVf   V# VP                  R,          '       Ed   \        ;QJ d[    V 3R l\        P
                  \        P                  \        P                  \        P                  3 4       F  '       g   K   RMP	  RML! V 3R l\        P
                  \        P                  \        P                  \        P                  3 4       4      '       dP   S ^,          P                  '       d   V# VP                  R,          R9   d   V# RS ^ ,          P                  ,          # V# )Nc_string_encodingc              3   ,   <"   T F	  qS9   x  K  	  R # 5irL   rV   ).0t
type_tuples   & rR   	<genexpr>&find_coercion_error.<locals>.<genexpr>o   s      r ,qaz/ ,qs   TFz\'%s' objects do not support coercion to C types with non-ascii or non-utf8 c_string_encoding)asciiutf8)coercion_error_dictget
directivesanyr   r0   c_uchar_ptr_typec_const_char_ptr_typec_const_uchar_ptr_typeis_pyobjectname)rl   defaultenverrs   f&& rR   r   r   j   s
   

!
!*
-C
{
..,
-
-c rJ,F,F
HcHc,6,L,LjNoNo,q rccc rJ,F,F
HcHc,6,L,LjNoNo,q r r ra=$$$N^^/04EENqt~  @A  uB  uG  uG  G  G
rT   c                 v    R \         R\        R\        R\        /P                  V P                  R,          4      # )bytes	bytearraystrunicodec_string_type)r   r    r   rr   rs   )r{   s   &rR   default_str_typer   {   s5    ^|<	
 
c#..
)*+rT   c                     V  FZ  pVe'   \        VP                  \        \        34      '       g   K/  VP                  ^ 8  g   KB  \	        VP
                  R^R7       K\  	  R# )z
Raise a warning on nodes that are known to have negative numeric values.
Used to find (potential) bugs inside of "wraparound=False" sections.
Nzfthe result of using negative indices inside of code sections marked as 'wraparound=False' is undefinedlevel)
isinstanceconstant_resultintfloatr   pos)nodesnodes   * rR   check_negative_indicesr      sP    
 <z$*>*>eMM!#DHH '(*	 rT   c                    VP                   '       gj   Vf   VP                  V 4      pV\        J dK   VP                  '       d9   \	        VP                  4      ^8X  d    VP                  ^ ,          P
                  pVP                   '       dJ   VeF   VP                  4       '       d0    VP                  VP                  ,          pVP                  V 4      # VP                   '       g   VP                  '       Ed   VP                   Uu. uF  qDP                  '       d   K  VNK  	  pp\	        V4      \	        VP                  4      8  pV Uu0 uF1  pVP                  '       d   \!        W4      MVP                  V 4      kK3  	  ppR V9   d   R # V Uu0 uF5  pVP"                  '       d   VP$                  '       d   VP$                  MTkK7  	  pp\	        V4      ^8X  d   VP'                  4       pV'       d!   VP"                  '       g   VP$                  pV# V'       gv   V\(        \*        39   de   \,        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d+   V\(        J d   \.        P0                  M\.        P2                  pV# R #   \         d     EL-i ; i  \        \        \        3 d     ELi ; iu upi u upi u upi )Nc              3   h   "   T F(  qP                   ;'       d    VP                  4       x  K*  	  R # 5irL   )is_string_literalcan_coerce_to_char_literalrj   args   & rR   rm   +infer_sequence_item_type.<locals>.<genexpr>   s+     o]nVY,,QQ1O1O1QQ]ns   22FT)is_sequence_constructor
infer_typer   cf_statelenrhsAttributeErrorhas_constant_resultargsr   
ValueError	TypeError
IndexErroris_set_literalis_none
is_starredinfer_sequence_item_typerx   equivalent_typepopr   r   allr   c_py_ucs4_typec_uchar_type)	r{   seq_node
index_nodeseq_typeitemargs_without_nonehas_none
item_types	item_types	   &&&&     rR   r   r      sa   +++**3/Hz!   S):):%;q%@'00377H '''!j&D&D&F&F,}}Z%?%?@ s++'''8+B+B+B.6mmPmd<<TTmP()C,>> *
) 48???$S/X[H\\) 	 
 : (
'	 *3)>)>)>9C\C\C\I%%bkk' 	 
 z?a"(I	 5 5 5%55	
 	 )j/I"I3o]no333o]nooo=F,=V
 9 9\f\s\sIK &  	:6  Q

sN   J )J- 
K
"K
K& KK,K>KJ*)J*-KKc           	     |   V Uu. uEF  pVf   \         R\        R4      3MVP                  '       dG   \        VP                  VP                  '       d   VP
                  MR.VP                  ,           4      MVP                  '       d8   \        VP                  VP                  VP                  VP                  34      MYVP                  4       '       dC   VP                  VP                  VP                  \         J d   \        VP                  4      MR3MRNEK  	  ppRV9   d   R# V \        V4      3# u upi )al  
Recursively generate a deduplication key from a sequence of values.
Includes Cython node types to work around the fact that (1, 2.0) == (1.0, 2), for example.

@param outer_type: The type of the outer container.
@param item_nodes: A sequence of constant nodes that will be traversed recursively.
@return: A tuple that can be used as a dict key for deduplication.
N)r   typer   make_dedup_key
is_literalmult_factorr   is_slicestartstopstepr   r   tuple)
outer_type
item_nodesr   	item_keyss   &&  rR   r   r      s   $ 
 D /3ltDz*gk  hD  hD  hD^DIIDOOO(8(8QU'VY]YbYb'bcNRmmm^DII

DIItyy'IJ W[VnVnVpVp ii--,0II,Gd4''(TS	   
 yuY'''
s   -D9AD9AD9A	D9c                 R   V f   R# V P                   \        P                  8X  d   V P                  R8X  d   R# V P                   P                  '       d6   RV P
                  P                  : RV P
                  P                  : R2R3# RV P
                  P                  ,          R3# )	NF*zLtry { throw; } catch(const std::exception& exn) {PyErr_SetString((PyObject*)z6, exn.what());} catch(...) { PyErr_SetNone((PyObject*)z); }zc%s(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");)__Pyx_CppExn2PyErr();F)r   T)r   r   c_char_typevaluerx   entrycname)exception_values   &rR   get_exception_handlerr      s    --


*"8"8
8##s*,,				)	)	)
  %%++%%++	-
  	2  %%++-  	rT   c                    V'       d   V'       dT   V P                   P                  \        P                  ! R R4      4       V P	                  V P                  RV4      4       R# V P	                  V P                  RV4      4       R# R# )ErrOccurredWithGILExceptions.c__Pyx_ErrOccurredWithGIL()PyErr_Occurred()N)globalstateuse_utility_coder   load_cachedputlnerror_goto_if)codecheck_py_exceptionr   nogils   &&&&rR   maybe_check_py_errorr      sg    --''(<nMOJJt))*FLMJJt))*<cBC rT   c                    \        V4      w  rgV P                  R 4       V P                  RV,          4       V'       d!   V P                  V P                  W14      4       \        WW4       V P                  R4       V'       d   V P	                  RR7       V P                  V4       V'       d   V P                  4        V P                  V P                  V4      4       V P                  R4       R# )try {z%s} catch(...) {Tdeclare_gilstate}N)r   r   error_goto_if_nullr   put_ensure_gilput_release_ensured_gil
error_goto)r   r   inside	py_resultr   r   raise_py_exceptionr   s   &&&&&&  rR   translate_cpp_exceptionr      s    -B?-S*JJwJJtf}

4**9:;3>JJ T2JJ!"$$&JJts#$JJsOrT   c                    V P                   R 8X  g   Q hV P                  f   R# V P                  P                  '       d   R# \        V P                  \        4      '       d   V P                  P
                  R8X  d   R# R# )+TFr   )exception_checkr   is_namer   CharNoder   )r   s   &rR   needs_cpp_exception_conversionr     si    3&&&# ###$&&11d6J6J6P6PTW6WrT   c                 @   \        V4      w  r\        V4      w  rV P                  R 4       V P                  VP                  RV,          4      4       \        W	W4       V P                  R 4       V P                  RV,          4       \        WW4       V P                  R4       V'       d   V P	                  RR7       V P                  V
4       V'       d   V P                  4        V P                  V P                  V4      4       V P                  R4       V P                  R4       V'       d   V P	                  RR7       V P                  V4       V'       d   V P                  4        V P                  V P                  V4      4       V P                  R4       R# )r   z__pyx_local_lvalue = %s;r   Tr   r   N)r   r   declaration_coder   r   r   r   )r   r   lhs_typelhs_coderhs_codelhs_exc_valassign_exc_valr   handle_lhs_exclhc_check_py_exchandle_assignment_excassignment_check_py_excs   &&&&&&&&    rR   translate_double_cpp_exceptionr   !  s1   '<['I$N5J>5Z2JJwJJx(()Ch)NOP<JJwJJ)H45CJJ T2JJ$%$$&JJts#$JJsOJJ T2JJ~$$&JJts#$JJsOrT   c                   B  a  ] tR tRt o RtRtRtRtRtRt	Rt
RtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRt]t ]!PD                  PF                  R8X  d   ]$! ]%PL                  ! R4      R7      t'M]$R 4       t'R	 t(R
 t)R t*R t+R t,R t-R t.R`R lt/R t0R t1RaR lt2R t3RaR lt4R t5R t6R t7R t8R t9R t:R t;R t<V 3R lR lt=R  t>R! t?R" t@R# tAR$ tBR% tCR& tDR' tER( tFR) tGRbR* ltHR+ tIR, tJR- tKR. tLR/ tMR0 tNR1 tOR2 tPR3 tQR4 tRR5 tSR6 tTR7 tUR8 tVR9 tWR: tXR; tYR< tZR= t[R> t\R? t]R@ t^RA t_RB t`RC taRcRD ltbR`RE ltcRF tdRG teRH tfRI tgRJ thRdRK ltiRL tjRM tkRN tlRO tmRP tnRQ toReRR ltpRS tqRT trRU tsRV ttRW tuRX tvRY twRZ txR[ tyRfR\ ltz]{R] 4       t|R^ t}R_t~V tR# )gExprNodei>  NTFcpythonsubexprs)fgetc                    V P                   # rL   )r   rW   s   &rR   child_attrsExprNode.child_attrs  s    == rT   c                    R # rL   rV   rX   r{   s   &&rR   analyse_annotationsExprNode.analyse_annotations      rT   c                h    \        VR 4       \        V P                  P                  : RV: R24      h)znot implemented.z not implemented)r8   r   rQ   r[   )rX   method_names   &&rR   not_implementedExprNode.not_implemented  s.    &78'+~~'>'>LN 	NrT   c                    ^ # r   rV   rW   s   &rR   	is_lvalueExprNode.is_lvalue      rT   c                h    V P                  4       ;'       d    V P                  P                  '       * # rL   )r
  r   is_memoryviewslicerW   s   &rR   is_addressableExprNode.is_addressable  s$    ~~DD		(D(D$DDrT   c                V    V P                   P                  ;'       d    V P                  # rL   )r   rx   is_temprW   s   &rR   is_ephemeralExprNode.is_ephemeral  s      yy$$555rT   c                    . pV P                    FK  p\        W4      pVf   K  \        V4      \        J d   VP	                  V4       K:  VP                  V4       KM  	  V# rL   )r   getattrr   listextendappend)rX   r   ry   r   s   &   rR   subexpr_nodesExprNode.subexpr_nodes  sR     MMD4&D:%LL&LL& " rT   c                ^    V P                   '       d   V P                  # V P                  4       # rL   )r  	temp_codecalculate_result_coderW   s   &rR   resultExprNode.result  s&    <<<
 >>!--//rT   c                    V'       dM   V P                   '       d9   V P                  P                  '       d   V P                  P                  '       d   V# R V n        RP                  V'       d   RV4      # RV4      # )Tz{}({})__PYX_STD_MOVE_IF_SUPPORTEDz	std::move)r  r   is_cpp_classis_referencehas_temp_movedformat)rX   r  optionals   &&&rR   _make_move_result_rhsExprNode._make_move_result_rhs  sX    T\\\dii.D.D.DTYYMcMcMcM"<[abbk[abbrT   c                D    V P                  V P                  4       R R7      # )Tr'  )r(  r  rW   s   &rR   move_result_rhsExprNode.move_result_rhs  s    ))$++-$)GGrT   c                    V P                  V4      pVP                  '       gJ   VP                  '       g8   VP                  ;'       d    V P                  pV P                  W#'       * R 7      pV# )r+  )	result_asr$  needs_refcountingis_rvalue_referencer  r(  )rX   r   r  requires_moves   &&  rR   move_result_rhs_asExprNode.move_result_rhs_as  sY    %!!!T%;%;%; 44EEM//AR/SFrT   c                \    \        V 4      '       d   \        V 4      # Vf   Q h\        W4      # rL   )rC   r9   )rX   type_s   &&rR   pythran_resultExprNode.pythran_result%  s/    ,T22d##   $&&rT   c                    R# )zJ
Subtypes may return False here if result temp allocation can be skipped.
TrV   rW   s   &rR   is_c_result_requiredExprNode.is_c_result_required,  s     rT   c                   V P                   '       dG   V P                  P                  '       d+   V\        8w  d    \	        V\        V P                  4       4      # \	        WP                  4       V P                  4       4      # rL   )r  r   rx   r   r1   r  ctyperX   r   s   &&rR   r/  ExprNode.result_as2  sR    LLLTYY222& D.$++-@@jjlDKKM::rT   c                ,    V P                  \        4      # rL   )r/  r   rW   s   &rR   r   ExprNode.py_result;  s    ~~n--rT   c                B    V P                   ;'       g    V P                  # rL   )result_ctyper   rW   s   &rR   r=  ExprNode.ctype?  s       --DII-rT   c                    R # rL   rV   rW   s   &rR   get_constant_c_result_code#ExprNode.get_constant_c_result_codeD  s     rT   c                    R # rL   rV   rW   s   &rR   calculate_constant_result"ExprNode.calculate_constant_resultO  s     	rT   c                Z    V P                   \        J;'       d    V P                   \        J# rL   r   constant_value_not_setnot_a_constantrW   s   &rR   r   ExprNode.has_constant_result[  .    ##+AA : :##>9	:rT   c                2    \        V P                  R 4       R# )zInvalid compile-time expressionNr   r   rX   denvs   &&rR   compile_time_valueExprNode.compile_time_value_  s    dhh9:rT   c                j    \        V P                  R VP                  P                  : RV: 24       R# )z"Error in compile-time expression: : N)r   r   rQ   r[   )rX   es   &&rR   compile_time_value_error!ExprNode.compile_time_value_errorc  s$    dhhKK  !% 	&rT   c                    V P                  4       pVf   \        V P                  R4       R# V P                  4       '       d   V P                  MTp\
        P                  P                  W2V P                  4      # )z
Returns a PyrexTypes.CFuncType.ExceptionValue (or None)

The python_value attribute of the result can be either a Python constant
or a string for types that can't be represented by a Python constant
(e.g. enums)
Nz Exception value must be constant)	rF  r   r   r   r   r   	CFuncTypeExceptionValuer   )rX   r{   c_resultr   s   &&  rR   as_exception_valueExprNode.as_exception_valueg  sd     224$((>? -1,D,D,F,FD((H	##229		RRrT   c                    < V ^8  d   QhRS[ /#    returnr   )r&  rc   s   "rR   __annotate__ExprNode.__annotate__y  s     8 8c 8rT   c                   V P                   '       d   R # V P                  '       d   R# \        V R4      '       d   V P                  f   R # V P                  P                  '       d   R# V P                  P
                  P                  '       d;   V P                  P                  '       g   V P                  P                  '       g   R# R # )&__Pyx_ReferenceSharing_SharedReference)__Pyx_ReferenceSharing_OwnStrongReferencer   '__Pyx_ReferenceSharing_FunctionArgument)	in_parallel_blockr  hasattrr   is_argscopeis_local_scope
in_closurefrom_closurerW   s   &rR   may_be_unsafe_sharedExprNode.may_be_unsafe_sharedy  s     !!!;<<< ?tW%%);;::<JJ+++ JJ)))$**2I2I2I>7rT   c                2    \        V P                  R 4       R# )zCannot assign to or delete thisNrR  r   s   &&rR   analyse_target_declaration#ExprNode.analyse_target_declaration  s    dhh9:rT   c                2    \        V P                  R 4       R# )z=Cannot use anything except a name in an assignment expressionNrR  r   s   &&rR   0analyse_assignment_expression_target_declaration9ExprNode.analyse_assignment_expression_target_declaration  s    dhhWXrT   c                H    V P                  V4      pVP                  4        V# rL   )analyse_typescheck_constrX   r{   r   s   && rR   analyse_const_expression!ExprNode.analyse_const_expression  s%    
 !!#&rT   c                $    V P                  V4      # rL   r}  r   s   &&rR   analyse_expressionsExprNode.analyse_expressions  s     !!#&&rT   c                $    V P                  V4      # rL   )analyse_target_typesrX   r{   r   s   &&&rR   analyse_target_expression"ExprNode.analyse_target_expression  s     ((--rT   c                J    V P                  V4      pVP                  V4      pV# rL   )r}  coerce_to_boolean)rX   r{   r   bools   &&  rR   analyse_boolean_expression#ExprNode.analyse_boolean_expression  s'    !!#&%%c*rT   c                d    V P                  V4      pVP                  V4      P                  V4      # rL   )r}  r  coerce_to_simpler  s   && rR   analyse_temp_boolean_expression(ExprNode.analyse_temp_boolean_expression  s0     !!#&%%c*;;C@@rT   c                    \        V R R4      e   R# \        V P                  4        Uu. uF  q"P                  V4      NK  	  upR4      # u upi )r   NrV   )r  sumr  type_dependenciesr  s   && rR   r  ExprNode.type_dependencies  sL     4&2ID<N<N<PQ<PD**3/<PQSUVVQs   A
c                    \        V R R4      pVe   V# \        V RR4      pVe   VP                  # V P                  R4       R# )r   Nr   r   )r  r   r  rX   r{   r   r   s   &&  rR   r   ExprNode.infer_type  sI    
 tVT*Kgt,::\*rT   c                    V P                   ;'       gI    V P                  ;'       g5    V P                  P                  ;'       g    V P                  P                  # rL   )r   r  r   is_arrayis_cfunctionrW   s   &rR   nonlocally_immutableExprNode.nonlocally_immutable  s>     ^^$,,^^$))2D2D^^		H^H^^rT   c                n    \        V P                  V \        P                  V P                  V4      R7      # )zr
Return a node that represents the (type) result of an indexing operation,
e.g. for tuple unpacking or iteration.
baseindex)	IndexNoder   IntNodefor_sizerX   r  s   &&rR   inferable_item_nodeExprNode.inferable_item_node  s(    
 G4D4DTXXu4UVVrT   c                    R # rL   rV   r   s   &&rR   analyse_as_moduleExprNode.analyse_as_module       rT   c                    R # rL   rV   r   s   &&rR   analyse_as_typeExprNode.analyse_as_type  r  rT   c                :   V P                  V4      pV'       dA   VP                  '       d/   VP                  '       d    VP                  VP                  4      # V'       d)   VP                  '       d   \        V P                  R 4       V#   \         d     L?i ; i)zType is not specific)r  is_fusedfused_to_specific
specializeKeyErrorr   r   )rX   r{   r   s   && rR   analyse_as_specialized_type$ExprNode.analyse_as_specialized_type  sw    ##C(DMMMc&;&;&;s'<'<== DMMM$((23	  s   B BBc                    R # rL   rV   r   s   &&rR   analyse_as_extension_type"ExprNode.analyse_as_extension_type  r  rT   c                (    V P                  R 4       R# )r}  Nr  r   s   &&rR   r}  ExprNode.analyse_types   s    _-rT   c                $    V P                  V4      # rL   r  r   s   &&rR   r  ExprNode.analyse_target_types  s    !!#&&rT   c                    V P                   '       d1   V P                   P                  '       d   V P                  4        R # R # R # rL   )r   rx   	gil_errorr   s   &&rR   nogil_checkExprNode.nogil_check  s-     999...NN /9rT   c                    VP                   '       d7   V P                  P                  '       d   \        V P                  R 4       R# R# R# )z3Assignment of Python object not allowed without gilN)r   r   rx   r   r   r   s   &&rR   gil_assignment_checkExprNode.gil_assignment_check  s0    999...$((QR /9rT   c                &    V P                  4        R # F)	not_constrW   s   &rR   r~  ExprNode.check_const  s    rT   c                2    \        V P                  R 4       R# )z$Not allowed in a constant expressionNrR  rW   s   &rR   r  ExprNode.not_const  s    dhh>?rT   c                &    V P                  4        R # r  )addr_not_constrW   s   &rR   check_const_addrExprNode.check_const_addr  s    rT   c                2    \        V P                  R 4       R# )zAddress is not constantNrR  rW   s   &rR   r  ExprNode.addr_not_const  s    dhh12rT   c                    V P                   # rL   r  rW   s   &rR   result_in_tempExprNode.result_in_temp!  s     ||rT   c                "    V P                  4       # rL   r  rW   s   &rR   target_codeExprNode.target_code*  s    ))++rT   c                (    V P                  R 4       R# )r  Nr  rW   s   &rR   r  ExprNode.calculate_result_code.  s    45rT   c                   V P                   '       d2   \        R V P                  P                  : RV P                  : 24      hV P
                  pVP                  '       g   VP                  '       d   \        P                  pMCV P                  '       g2   VP                  '       g    V P                  4       '       g
   RV n         R# VP                  P                  W P                  R7      V n         R# RV n         R# )z!Temp allocated multiple times in rX  N
manage_ref)r  RuntimeErrorrQ   r[   r   r   is_voidrx   r   r   result_is_usedr  r:  	funcstateallocate_tempuse_managed_ref)rX   r   r   s   && rR   allocate_temp_resultExprNode.allocate_temp_result5  s    >>>DNNLcLceiememnooyy|||!00)))T-D-D-DHaHaHcHc!%!^^99!5!5 : 7DN "DNrT   c                ~   V P                   '       g   V P                  '       g   R # V P                  '       dX   \        P                  P                  V P                  ^ ,          P                  4       4      3V P                  R,          ,           MRpV P                  '       d6   \        RV P                  : RV P                  P                  : RV: 24      h\        RV P                  P                  : RV: 24      hVP                  P                  V P                   4       V P                   V n        R V n         R # )N   NNz(?)ztemp z released multiple times in z at z"no temp, but release requested in )r  r  r   r'   pathbasenameget_descriptionold_tempr  rQ   r[   r  release_temp)rX   r   r   s   && rR   release_temp_resultExprNode.release_temp_resultD  s    ~~~&&&W[W_W_W_277##DHHQK$?$?$ABDtxxPR|SejC}}}"MM4>>#:#:C$A B B #NN++S$2 3 3##DNN3rT   c                    V P                  4       '       g1   VP                  V P                  4       V P                  4       4       R# R# )zd
Make sure we own a reference to result.
If the result is in a temp, it is already a new reference.
N)r  
put_increfr  r=  rX   r   s   &&rR   make_owned_referenceExprNode.make_owned_referenceV  s2    
 ""$$OODKKM4::<8 %rT   c                    V P                  4       '       g>   VP                  V P                  4       V P                  V P                  '       * R7       R# R# )z:
Make sure we own the reference to this memoryview slice.
have_gilN)r  put_incref_memoryviewslicer  r   in_nogil_contextr  s   &&rR   make_owned_memoryviewslice#ExprNode.make_owned_memoryviewslice^  sF    
 ""$$++DKKM4999=9N9N5N , P %rT   c                   V P                  V4       VP                  V P                  4       V P                  '       d   V P	                  V4       V P                  V4       V P                  '       da   V P                  P                  '       gC   V P                  P                  '       g%   V P                  V4       V P                  V4       R # R # R # R # rL   ) generate_subexpr_evaluation_codemark_posr   r  r  generate_result_coder   	is_stringis_pyunicode_ptrgenerate_subexpr_disposal_codefree_subexpr_tempsr  s   &&rR   generate_evaluation_code!ExprNode.generate_evaluation_codeg  s     	--d3dhh<<<%%d+!!$'<<<!4!4!4		8R8R8R //5##D)	 9S!4<rT   c                V    V P                  4        F  pVP                  V4       K  	  R # rL   )r  r  rX   r   r   s   && rR   r  )ExprNode.generate_subexpr_evaluation_codex  s#    &&(D))$/ )rT   c                (    V P                  R 4       R# )r  Nr  r  s   &&rR   r  ExprNode.generate_result_code|  s    34rT   c                6   V P                   '       d1   VP                  P                  \        P                  ! R R4      4       V P
                  '       d   V P                  P                  '       g   V P                  P                  '       d#   V P                  V4       V P                  V4       V P                  4       '       dB   VP                  V P                  4       V P                  4       V P                  '       * R7       R# R# V P                  V4       R# )MoveIfSupportedCppSupport.cppr  N)r%  r   r   r   r   r  r   r  r  r  r  r  put_decref_clearr=  r  r  s   &&rR   generate_disposal_codeExprNode.generate_disposal_code  s    --++,=?OPR<<<yy"""dii&@&@&@33D9''-{{}}%%dkkmTZZ\595J5J1J & L 
 //5rT   c                V    V P                  4        F  pVP                  V4       K  	  R # rL   )r  r  r	  s   && rR   r  'ExprNode.generate_subexpr_disposal_code  s%     &&(D''- )rT   c                   V P                   '       EdM   V P                  P                  '       g   V P                  P                  '       d$   V P	                  V4       V P                  V4       MV P                  P                  '       d(   VP                  R V P                  4       ,          4       MhV P                  P                  '       dM   VP                  RV P                  4       ,          4       VP                  RV P                  4       ,          4       V P                  '       d3   VP                  P                  \        P                  ! RR4      4       R# R# V P	                  V4       R# )%s = 0;z%s.memview = NULL;z%s.data = NULL;r  r  N)r  r   r  r  r  r  rx   r   r  r  r%  r   r   r   r   r  s   &&rR   generate_post_assignment_code&ExprNode.generate_post_assignment_code  s    <<<yy"""dii&@&@&@33D9''-&&&

9t{{}45---

/$++-?@

,t{{}<="""  11++,=?OPR # //5rT   c                    R # rL   rV   )rX   r   r   overloaded_assignmentr   r   s   &&&&&&rR   generate_assignment_code!ExprNode.generate_assignment_code  s    
 	rT   c                    R # rL   rV   rX   r   ignore_nonexistings   &&&rR   generate_deletion_codeExprNode.generate_deletion_code  s     	rT   c                    V P                   '       d2   V P                  P                  '       g   V P                  V4       R # R # V P	                  V4       R # rL   )r  r   r  r  r  r  s   &&rR   
free_tempsExprNode.free_temps  s>    <<<99$$$((. % ##D)rT   c                V    V P                  4        F  pVP                  V4       K  	  R # rL   )r  r#  )rX   r   subs   && rR   r  ExprNode.free_subexpr_temps  s!    %%'CNN4  (rT   c                    R # rL   rV   rX   r{   r   s   &&&rR   generate_function_definitions&ExprNode.generate_function_definitions  r  rT   c                d    VP                  V P                  4       V P                  4       V4       R # rL   )put_decref_setr  r=  rX   r   r   s   &&&rR   generate_decref_setExprNode.generate_decref_set  s     DKKM4::<=rT   c                d    VP                  V P                  4       V P                  4       V4       R # rL   )put_xdecref_setr  r=  r.  s   &&&rR   generate_xdecref_setExprNode.generate_xdecref_set  s     T[[]DJJL#>rT   c                   V'       d   V P                   '       gf   V'       d.   V P                  '       d   V'       d   V P                  V4       R # VP                  V P	                  4       V P                  4       4       R # R # rL   )
cf_is_nullcf_maybe_nullgenerate_xgotref
put_gotrefr  r=  )rX   r   handle_nullmaybe_null_extra_checks   &&&&rR   generate_gotrefExprNode.generate_gotref  sK     2 2 2.%%d+tzz|< !0rT   c                b    VP                  V P                  4       V P                  4       4       R # rL   )put_xgotrefr  r=  r  s   &&rR   r8  ExprNode.generate_xgotref      

5rT   c                b    VP                  V P                  4       V P                  4       4       R # rL   )put_giverefr  r=  r  s   &&rR   generate_giverefExprNode.generate_giveref  rA  rT   c                b    VP                  V P                  4       V P                  4       4       R # rL   )put_xgiverefr  r=  r  s   &&rR   generate_xgiverefExprNode.generate_xgiveref  s    $++-6rT   c                V    V P                  4        F  pVP                  V4       K  	  R # rL   )r  annotater	  s   && rR   rK  ExprNode.annotate  s!    &&(DMM$ )rT   c                   T pV P                   pV P                  W4      '       d   V # VP                  pV'       d   VP                  '       g   VP                  pVP                  '       d   VP
                  pVP                  '       g   VP                  '       Ed5   VP                  '       d   VP                  '       g   VP                  '       d   VP                  P                  '       dq   VP                  pVP                  4        FP  pVP                  V4      '       g   K  Wcn         VP                   P                  Vn        R VP                  n        V u # 	  VP                  '       d   \        V P                  R4       M<VP                   '       d   VP                  '       d   V # \        V P                  R4       \"        V n         V # V P$                  e4   \'        V P                  RV P$                  R7      pVP)                  W4       VP*                  '       Ed   ^RIHp VP                   P*                  '       g   VP                   P0                  '       d   \3        W1V4      pV# VP                   P4                  '       d'   \6        P9                  W24      P)                  W4      pV# VP:                  '       g   \        V P                  RV: R24       V# VP                   P<                  '       d   R Vn        VP                   P?                  WP@                  V PB                  R7      '       g   VP                   PD                  P                  VPD                  4      '       d   R	p	VP                   V3p
M$R
p	VP                   PD                  VPD                  3p
\        V P                  W,          4       V# VP0                  '       Ed   VPF                  '       d    V# VPH                  f'   \K        VP                  4      P)                  W4      pV# VP                   P0                  '       d0   VP                   PM                  V4      '       g   \O        W1V4      pV# V\P        J d)   VP                   PR                  '       d   \U        W24      pM\W        W2VR7      pVP                   PM                  V4      '       g   \O        W1V4      pV# \Y        V4      '       d   \[        VP                   4      '       d   V# \Y        VP                   4      '       d#   \[        V4      '       d   V# \W        W2VR7      pV# VP                   P0                  '       dF   V'       d0   VP\                  '       d   \_        V P                  RV,          4       \a        WV4      pV# VPb                  '       d,   WA8w  d&   VPe                  V4      '       d   \g        W1V4      pV# V\h        Pj                  J d,   WA8w  d&   VPe                  V4      '       g   \m        W1V4      pV# VP                   V8X  gL   \o        VP                   4      \o        V4      8X  g)   VPe                  V4      '       g   V Pq                  V4       V# )TzType is not specializedz/Cannot coerce to a type that is not specialized )ry   r   
MemoryViewzCannot convert 'z' to memoryviewslice)	broadcastcopyingz3Memoryview '%s' not conformable to memoryview '%s'.z-Different base types for memoryviews (%s, %s)r   zTCannot pass Python object as C++ data structure reference (%s &), will pass by copy.)9r   check_for_coercion_errorr$  ref_base_typeis_cv_qualifiedcv_base_typer  r  is_ptr	base_type"get_all_specialized_function_typessame_asr   usedr   r   is_null_ptrr2   coercion_typeNameNode	coerce_tor  rN  rP  rx   CoerceToMemViewSliceNoder  CythonArrayNodefrom_carrayis_errorwritable_neededconforms_tois_memview_broadcastis_memview_copy_assignmentdtyper   r   NoneNode
subtype_ofPyTypeTestNoder   is_intCoerceIntToBytesNodeCoerceToPyTypeNoder<   r:   r#  r   CoerceFromPyTypeNode
is_complexassignable_fromCoerceToComplexNoder   soft_complex_typecoerce_from_soft_complexr   fail_assignment)rX   dst_typer{   srcsrc_typeused_as_reference	signaturer   rP  msgtups   &&&        rR   r`  ExprNode.coerce_to  s     99((77K$11X%:%:%:--H###,,H 1 1 1 %%%h.?.?.?OOO(:(:(G(G(G#--!)!L!L!NI ((22#,$'HHNN	)-		# "O    dhh 9:%%%(///dhh QR"DIK)DHH2D4F4FGDNN8)&&&$88...88'''23#FCR 
Q XX&&&)55c?II(XCN 
M "***$((FNPRJ 
E 88+++/3H,xx++H@Y@Y484S4S , U Uxx~~--hnn==S!hh0M!hhnnhnn<$((CI.n 
k !!!{{{d 
c $$,sww'11(@` 
_ %%%xx**844(<CX 
U z)chhooo.s8C,SHEC
 xx**844(<CB 
A X&&+DSXX+N+NJSXX&&(22 
$SH=C. 
- XX!!! X%:%:%:HHjmuuw 'xc:C" 
! !!!&**844%cS9C 
 *666&..x88*3#>C 
 HH(CMS],JhNfNfgoNpNp$$X.
rT   c                   \        V R 4      '       d   V P                  P                  MRpV P                  P                  '       d   RV P                  P                  4        R2MRpVP                  '       d   RVP                  4        R2MRpVP                  V P                  V4      p\        V P                  RV P                   RT RT RT V'       d   RMR V 2
4       R# )	r   Nz (alias of '')rN  zCannot assign type ''z to 'r  )	rn  r   ry   r   
is_typedefresolveassignment_failure_extra_infor   r   )rX   rw  src_namesrc_resolveddst_resolvedextra_diagnosticss   &&    rR   rv  ExprNode.fail_assignmento  s    &-dG&<&<4::??$AEAUAUAUdii&7&7&9%:"=[]@H@S@S@Sh&6&6&8%9<Y[$BB499hWdhh$TYYKqhZq)r23D2EG	
rT   c                    V'       d   V'       g   R p\        V P                  V3WB4      pVe.   \        V P                  VRV P                  RV/,          4       R# V'       d   V P	                  V4       R# R# )z)Cannot assign type '%(FROM)s' to '%(TO)s'FROMTOTF)r   r   r   r   rv  )rX   rw  r{   failrz   messages   &&&&& rR   rT  !ExprNode.check_for_coercion_errorz  sa    AG%tyy(&;WJ$((Gvtyy$&IIJ  *rT   c                B    V P                  \        P                  V4      # rL   )r`  r   r   r   s   &&rR   coerce_to_pyobjectExprNode.coerce_to_pyobject  s    ~~j77==rT   c           
        V P                  4       '       d-   \        V P                  4      p\        V P                  VR 7      # V P
                  pVP                  '       g   VP                  '       d   V # V\        P                  J d   V # VP                  '       g7   VP                  '       g%   VP                  '       g   VP                  '       d   \        W4      # VP                  '       d   VP                   '       ds   VP                   P#                  R4      '       dR   \%        V P                  \'        V P                  V \(        P*                  ! R4      R7      . R7      P-                  V4      # VP.                  '       d0   \1        VP2                  4      ^ 8H  p\        V P                  VR 7      # \5        V P                  RV,          4       V # )r   zoperator bool)obj	attributefunctionr   z%Type '%s' not acceptable as a boolean)r   r  r   BoolNoder   r   is_enumrd  r   c_bint_typerx   rm  rX  is_floatCoerceToBooleanNoder#  rp  lookupSimpleCallNodeAttributeNoder
   EncodedStringr}  	is_ctupler   
componentsr   )rX   r{   
bool_valuer   s   &&  rR   r  ExprNode.coerce_to_boolean  sG   
 ##%%d223JDHHJ77yy<<<4===KZ+++Kt}}}&t114:::$**2C2CO2T2T!&HH$.2N2N2_a	 's+	,
 ^^^T__-2JDHHJ77$((CdJKKrT   c                ~    V P                   P                  '       d   V # V P                  \        P                  V4      # rL   )r   rm  r`  r   c_py_ssize_t_typer   s   &&rR   coerce_to_indexExprNode.coerce_to_index  s.    yy'''t^T^^J<X<XZ]-^^rT   c                H    V P                  4       '       d   V # \        W4      # rL   )r  CoerceToTempNoder   s   &&rR   coerce_to_tempExprNode.coerce_to_temp  s!      K#D..rT   c                T    V P                  4       '       d   V # V P                  V4      # rL   )	is_simpler  r   s   &&rR   r  ExprNode.coerce_to_simple  s%    >>K&&s++rT   c                "    V P                  4       # rL   )r  rW   s   &rR   r  ExprNode.is_simple  s    
 ""$$rT   c                H     V P                  4       #   \         d     R # i ; ir  )r  	ExceptionrW   s   &rR   try_is_simpleExprNode.try_is_simple  s&    	>>## 		s    !!c                    V P                   '       d;   V P                   P                  '       g   V P                   P                  '       g   R # V P                  4       '       d   V P                  RJ# R# )FNT)r   rx   r  r   r   rW   s   &rR   may_be_noneExprNode.may_be_none  sP    999dii333"ii:::##%%''t33rT   c                    R # rL   rV   rW   s   &rR   as_cython_attributeExprNode.as_cython_attribute      rT   c                J    V P                  4       '       d   \        WW4      # V # rL   )r  NoneCheckNode)rX   r  r   format_argss   &&&&rR   as_none_safe_nodeExprNode.as_none_safe_node  s%      gCCKrT   c                    RP                  4       pV F  pWB9   d   K   \        W4      pWRV&   K  	  V ! VP                  3/ VB #   \         d     K@  i ; i)zuInstantiate this node class from another node, properly
copying over all attributes that one would forget otherwise.
z1cf_state cf_maybe_null cf_is_null constant_result)splitr  r   r   )rP   r   kwargs
attributes	attr_namer   s   &&,   rR   	from_nodeExprNode.from_node  si    
 INNP
#I"*0 %*y! $ 488&v&&	 " s   AAAc                    R# )z
Gets the module.path that this node was imported from.

Many nodes do not have one, or it is ambiguous, in which case
this function returns a false value.
NrV   rW   s   &rR   !get_known_standard_library_import*ExprNode.get_known_standard_library_import  s     rT   )r%  r  r  r   r  rL   r	  FNNFTFN)PyExc_TypeErrorrV   )r[   r\   r]   r^   rC  r   
annotationr  r  r  r  is_numpy_attributegenerator_arg_tagrm  r   is_dict_literalr   r   is_attributeis_subscriptr   is_buffer_accessis_memview_indexis_memview_slicerg  rh  r  r%  	is_targetr   is_annotationrM  r   r*   implementationry   propertyr   
attrgetterr   r   r  r
  r  r  r  r  r(  r,  r3  r7  r:  r/  r   r=  rF  rI  r   rU  rZ  r`  rt  rw  rz  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/  r3  r<  r8  rD  rH  rK  r`  rv  rT  r  r  r  r  r  r  r  r  r  r  classmethodr  r  r_   r`   rc   s   @rR   r   r   >  s    " LDJIHONf $ONLLH !&GNIJM,O
)+H$7$7
$CD		! 
	!N
E60cH';..
	
:;&S$8 82;Y
'.	AW+_
W


.'S@3
,6"$9P*"056 .6$*!
>?=667
 IV	

>:_/,% ' '  rT   r   c                      a a ] tR tRt oRtR.tRtV 3R lt]R 4       t	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tRtVtV ;t# )_TempModifierNodei  z[Base class for nodes that inherit the result of their temp argument and can modify it.
    r   Fc                (   < \         SV `  WR 7       R# r   N)rN   __init__rX   r   r   rQ   s   &&&rR   r  _TempModifierNode.__init__  s    &rT   c                .    V P                   P                  # rL   r   r   rW   s   &rR   r   _TempModifierNode.type      xx}}rT   c                8    V P                   P                  V4      # rL   r   r   r   s   &&rR   r   _TempModifierNode.infer_type      xx""3''rT   c                F    V P                   P                  V4      V n         V # rL   )r   r}  r   s   &&rR   r}  _TempModifierNode.analyse_types  s    88))#.rT   c                6    V P                   P                  4       # rL   )r   rI  rW   s   &rR   rI  +_TempModifierNode.calculate_constant_result  s    xx1133rT   c                6    V P                   P                  4       # rL   r   r  rW   s   &rR   r  _TempModifierNode.may_be_none      xx##%%rT   c                6    V P                   P                  4       # rL   r   r  rW   s   &rR   r  _TempModifierNode.is_simple      xx!!##rT   c                6    V P                   P                  4       # rL   r   r  rW   s   &rR   r   _TempModifierNode.result_in_temp      xx&&((rT   c                6    V P                   P                  4       # rL   r   r  rW   s   &rR   r  &_TempModifierNode.nonlocally_immutable      xx,,..rT   c                6    V P                   P                  4       # rL   r   r  rW   s   &rR   r  '_TempModifierNode.calculate_result_code      xx  rT   c                    R # rL   rV   r  s   &&rR   r  &_TempModifierNode.generate_result_code  r  rT   c                <    V P                   P                  V4       R # rL   r   r  r  s   &&rR   r  /_TempModifierNode.generate_post_assignment_code      ..t4rT   c                8    V P                   P                  V4      # rL   )r   r  r  s   &&rR   r  &_TempModifierNode.allocate_temp_result   s    xx,,T22rT   c                <    V P                   P                  V4       R # rL   r   r#  r  s   &&rR   r#  _TempModifierNode.free_temps#      D!rT   r  )r[   r\   r]   r^   __doc__r   r  r  r  r   r   r}  rI  r  r  r  r  r  r  r  r  r#  r_   r`   ra   rb   s   @@rR   r  r    sp     wHG'  (4&$)/!53" "rT   r  c                   0   a  ] tR tRt o . tR tR tRtV tR# )AtomicExprNodei-  c                    R # rL   rV   r  s   &&rR   r  /AtomicExprNode.generate_subexpr_evaluation_code4  r  rT   c                    R # rL   rV   r  s   &&rR   r  -AtomicExprNode.generate_subexpr_disposal_code6  r  rT   rV   N)	r[   r\   r]   r^   r   r  r  r_   r`   r  s   @rR   r  r  -  s      H rT   r  c                   J   a  ] tR tRt o ^t]tRtR tR t	R t
R tR tRtV tR# )	PyConstNodei:  Nc                    ^# r  rV   rW   s   &rR   r  PyConstNode.is_simpleA  r  rT   c                    R # r  rV   rW   s   &rR   r  PyConstNode.may_be_noneD      rT   c                    V # rL   rV   r   s   &&rR   r}  PyConstNode.analyse_typesG      rT   c                    V P                   # rL   r  rW   s   &rR   r  !PyConstNode.calculate_result_codeJ      zzrT   c                    R # rL   rV   r  s   &&rR   r   PyConstNode.generate_result_codeM  r  rT   rV   )r[   r\   r]   r^   r   r   r   r  r  r  r}  r  r  r_   r`   r  s   @rR   r  r  :  s4      JDK rT   r  c                   J   a a ] tR tRt o^tRtRtR tR tV 3R lt	Rt
VtV ;t# )rj  iQ  Py_NoneNc                    R # rL   rV   rS  s   &&rR   rU  NoneNode.compile_time_valueY  r  rT   c                    R # TrV   rW   s   &rR   r  NoneNode.may_be_none\  r  rT   c                   < VP                   '       gB   VP                  '       g0   VP                  '       g   \        V P                  R V,          4       \
        SV `  W4      # )zCannot assign None to %s)rx   r  rd  r   r   rN   r`  rX   rw  r{   rQ   s   &&&rR   r`  NoneNode.coerce_to_  sI    $$$(C(C(CxGXGXGX$((6ABw //rT   rV   )r[   r\   r]   r^   r   r   r   rU  r  r`  r_   r`   ra   rb   s   @@rR   rj  rj  Q  s*      GEO0 0rT   rj  c                   .   a  ] tR tRt o Rt]tR tRtV t	R# )EllipsisNodeif  Py_Ellipsisc                    \         # rL   )EllipsisrS  s   &&rR   rU  EllipsisNode.compile_time_valuem  s    rT   rV   N)
r[   r\   r]   r^   r   r:  r   rU  r_   r`   r  s   @rR   r7  r7  f  s      EO rT   r7  c                   n   a  ] tR tRt o ^tRtR tR tR tR t	R t
R tR	 tR
 t]]3R l4       tRtV tR# )	ConstNodeiq  Nc                    ^# r  rV   rW   s   &rR   r  ConstNode.is_simpley  r  rT   c                    ^# r  rV   rW   s   &rR   r  ConstNode.nonlocally_immutable|  r  rT   c                    R # r  rV   rW   s   &rR   r  ConstNode.may_be_none  r#  rT   c                    V # rL   rV   r   s   &&rR   r}  ConstNode.analyse_types  r&  rT   c                    R # r1  rV   rW   s   &rR   r~  ConstNode.check_const  r  rT   c                "    V P                  4       # rL   r  rW   s   &rR   rF  $ConstNode.get_constant_c_result_code  s    ))++rT   c                ,    \        V P                  4      # rL   )r   r   rW   s   &rR   r  ConstNode.calculate_result_code      4::rT   c                    R # rL   rV   r  s   &&rR   r  ConstNode.generate_result_code  r  rT   c                   \         pV\        P                  J g!   VR 8X  g   V^ 8X  d   VP                  '       d   \	        V 4      # VP
                  '       g   \        P                  '       d   \        pM:VP                  '       d   \        pM!V\        J d   \        pMV\        J d   \        pVP                  VJ d   V! WVR7      pV# V! WW#R7      pV# )NULLr   r   r   r   r   )r=  r   c_null_ptr_typerX  NullNoderm  r  r  r  	FloatNoder   	BytesNoder   UnicodeNoder   )r   r   r   r   rP   r  s   &&&&  rR   for_typeConstNode.for_type  s    :---&EQJDKKKC= [[[J222 C]]]CZC\!C88t?KF  VFrT   rV   )r[   r\   r]   r^   r   r  r  r  r  r}  r~  rF  r  r  staticmethodrM  rX  r_   r`   r  s   @rR   r=  r=  q  sP     
 JK, 3I  rT   r=  c                   ~   a a ] tR tRt o]P
                  tRV3R lV 3R llltR tR t	R t
R tR tR	 tR
tVtV ;t# )r  i  c                    < V ^8  d   QhRS[ /# )rd  r   )r  )r&  rc   s   "rR   rg  BoolNode.__annotate__  s      4 rT   c                   < VR J g   VRJ g   Q \        V4      4       h\        SV `	  WVR7       Ve5   W0P                  Jd$   V\        P
                  J g   Q V4       hW0n        R# R# R# )TFrQ  N)reprrN   r  r   r   	bool_type)rX   r   r   r   rQ   s   &&&&rR   r  BoolNode.__init__  sf    };U;.5AII 57,,,2d2,I !6rT   c                (    V P                   V n        R # rL   rQ  rW   s   &rR   rI  "BoolNode.calculate_constant_result      #zzrT   c                    V P                   # rL   r  rS  s   &&rR   rU  BoolNode.compile_time_value  r)  rT   c                    V P                   P                  '       d   V P                  '       d   R # R# V P                  '       d   R# R# )Py_TruePy_False10)r   rx   r   rW   s   &rR   r  BoolNode.calculate_result_code  s8    99    $


9:
:***3-#-rT   c                    V P                   P                  '       d   V # \        V P                  V P                  \
        P                  R 7      # )r   r   )r   rx   r  r   r   r   r`  r   s   &&rR   r  BoolNode.coerce_to_pyobject  s4    99   K

9J9JKKrT   c                    V P                   P                  '       d   V # \        V P                  V P                  R 7      # r  )r   rm  r  r   r   r   s   &&rR   r  BoolNode.coerce_to_boolean  s,    99K

33rT   c                    WP                   8X  d   V # V\        J d!   V P                   \        P                  J d   V # VP                  '       dM   V P                   P
                  '       d1   \        V P                  V P                  \        P                  R 7      # VP
                  '       d>   V P                   P                  '       d"   \        V P                  V P                  R7      # \        P                  WV4      # )rn  r  )r   r   r   r`  rx   rm  r  r   r   r=  r`  rX   rw  r{   s   &&&rR   r`  BoolNode.coerce_to  s    yy K~%$))w7H7H*HKDII$4$4$4DHHDJJW=N=NOO???tyy444DHHDJJ77""4377rT   )r   r   rL   )r[   r\   r]   r^   r   r  r   r  rI  rU  r  r  r  r`  r_   r`   ra   rb   s   @@rR   r  r    s>     !!D *.L
4
	8 	8rT   r  c                   F   a  ] tR tRt o ]P
                  tRt^ tR t	Rt
V tR# )rT  i  rP  c                    V P                   # rL   r  rW   s   &rR   rF  #NullNode.get_constant_c_result_code  r)  rT   rV   N)r[   r\   r]   r^   r   rS  r   r   r   rF  r_   r`   r  s   @rR   rT  rT    s$     %%DEO rT   rT  c                   J   a  ] tR tRt o ]P
                  tR tR tR t	Rt
V tR# )r   i  c                :    \        V P                  4      V n        R # rL   )ordr   r   rW   s   &rR   rI  "CharNode.calculate_constant_result  s    "4::rT   c                ,    \        V P                  4      # rL   )r{  r   rS  s   &&rR   rU  CharNode.compile_time_value  rL  rT   c                P    R \         P                  ! V P                  4      ,          # )z'%s')r
   escape_charr   rW   s   &rR   r  CharNode.calculate_result_code  s    224::>>>rT   r   N)r[   r\   r]   r^   r   r   r   rI  rU  r  r_   r`   r  s   @rR   r   r     s$     !!D/? ?rT   r   c                      a  ] tR tRt o RtRtRt]R 4       t]R 4       t	R t
]]P                  3R l4       t]R 4       tR	 tR
 tR tR tR tR tR tR tR tRtV tR# )r  i  rN  Nc                |    \         P                  ! \        \         P                  ! V P                  4      4      4      # rL   )r   strip_py2_long_suffixhexstr_to_numberr   rW   s   &rR   	hex_valueIntNode.hex_value  s'    **3u/B/B4::/N+OPPrT   c                T    \        \        P                  ! V P                  4      4      # rL   )r   r   r  r   rW   s   &rR   base_10_valueIntNode.base_10_value  s    5&&tzz233rT   c                p    \         P                  ! W3/ VB  R V9  d   V P                  4       V n        R# R# )r   N)r   r  find_suitable_type_for_valuer   )rX   r   kwdss   &&,rR   r  IntNode.__init__  s2    $,t,99;DI rT   c                x    \        V\        4      '       g   Q \        V4      4       hV ! V\        V4      W#R R7      # )T)r   r   r   is_c_literal)r   r   r_  r   )rP   r   	int_valuer   s   &&&&rR   for_intIntNode.for_int  s4    )S)):4	?:)3c)niaeffrT   c                D    V P                  W\        P                  R 7      # )rS  )r  r   r  )rP   r   r  s   &&&rR   r  IntNode.for_size  s    {{3
0L0L{MMrT   c                    V P                   \        J d    V P                  4        V P                  '       g:   V P                  4       '       d$   V P                  '       g   V P                  R 8X  d   V P                  R 8H  ;'       d    ^;'       g    ^p\        P                  V P                  '       * VR3,          pV P                  '       d!   \        P                  ! W P                  4      pV# RV P                   u;8:  d   R8  dS   M MOV P                  '       d+   V P                  P                  '       d   V P                  pV# \        P                  p V# \        P                  pV#   \         d     ELVi ; i)LLr   l        i   )r   rM  rI  r   r  r   unsignedlongnessr   modifiers_and_name_to_typer   widest_numeric_typerm  c_long_typer   int_type)rX   ranksuitable_types   &  rR   r  $IntNode.find_suitable_type_for_value  s0   #99..0
 ++--}}} 5MMT)00q55AD&AAdmmBSUY[`B`aMyyy * > >}ii X  --55999!1!1!1$(IIM
  %/$:$:M  !( 0 0+  s   E. .E=<E=c           
        V P                   VJ d   V # VP                  '       g   V\        P                  J d   V P	                  4       '       dG   \        V P                  R \        V P                  4      ,          V\        V P                  4      R7      # \        V P                  V P                  V\        R7      # VP                  '       dY   VP                  '       gG   \        V P                  V P                  V P                  VRV P                  V P                   R7      pV# VP"                  '       dT   \        V P                  V P                  V P                  \        P$                  RV P                  V P                   R7      pMB\        V P                  V P                  V P                  V P                  V P                   R7      p\&        P)                  W1V4      # )z%d.0rR  T)r   r   r   r  r  r  F)r   r   r  r  )r   r  r   
float_typer   rU  r   r   r   r   r   rN  
is_numericrq  r  r  r  rx   r  r=  r`  rX   rw  r{   r   s   &&& rR   r`  IntNode.coerce_to,  sj   99 K(g.@.@"@'')) #d>R>R:S1SZb16t7K7K1LN N !(1?A A   )<)<)<4884::tG[G[ (t$(MMDMMKD K!!!4884::tG[G[ ' 0 0u$(MMDMMKD 4884::tG[G[$(MMDMMKD
 ""4377rT   c           	         \        V P                  V P                  V P                  \        P
                  V P                  V P                  R 7      # ))r   r   r   r  r  )r  r   r   r   r   r  r  r  r   s   &&rR   r  IntNode.coerce_to_booleanI  s;    HHDJJ 00'']]T]]	< 	<rT   c                N   V P                   P                  '       dt   \        P                  ! V P                  4      pVR8  d   \
        M\        pV! V4      p\        P                  ! V4      pVP                  W@P                  4      V n
        R# V P                  4       V n
        R# )
   Nl     a$)r   rx   r   r  r   r  r   r  
get_py_intr  result_coderF  )rX   r   r   	formatterplain_integer_strings   &&   rR   r   IntNode.generate_evaluation_codeP  sz    99   
 ''

3E$/SI#,U#3 #(#>#>?S#T #/C]]SD#>>@DrT   c                   V P                   V P                  r!V P                  4       pV'       g   V'       g   V P                  P                  '       d   V^ ,          R8X  dz   V^,          R8w  dl   V P                  P
                  \        P                  P
                  8  d   RpM5V P                  P
                  \        P                  P
                  8  d   RpW1,           V,           # )r   -rk  r  L)	r  r  value_as_c_integer_stringr   rm  r  r   c_longlong_typer  )rX   r  r  literals   &   rR   rF  "IntNode.get_constant_c_result_code^  s    !]]DMM(002H$))*:*:*:wqzS?PU\]^U_cfUfyy~~!;!;!@!@@:#9#9#>#>>!H,,rT   c                   V P                   p\        V4      ^8:  d   V# RpV^ ,          R8X  d   RpVR,          pV^ ,          R8X  d   V^,          pV'       dL   VR9   dE   VR,          P                  4       '       d(   \        \        P
                  ! V4      4      pW!,           # VR9   d   RVR,          ,           pW!,           # VR9   d   \        \        VR,          ^4      4      pW!,           # VP                  4       '       d?   V P                  '       g-   V P                  '       g   V'       g   R	\        V4      ,          pW!,           # )
rd  rN  r  r  rk  oOxX0123456789:rd  NNoObBz0x%X)	r   r   isdigitr   r   r  r   r  r  )rX   r   neg_signliteral_types   &   rR   r  !IntNode.value_as_c_integer_stringi  s   

u:?L8s?H"IE8s? 8L L,<<rARARATAT E//67  %eBi  %Cb	1-.  ]]__T]]]4=== U+rT   c                    V P                   # rL   r  rW   s   &rR   r  IntNode.calculate_result_code      rT   c                P    \         P                  ! V P                  4      V n        R # rL   )r   r  r   r   rW   s   &rR   rI  !IntNode.calculate_constant_result  s    $224::>rT   c                B    \         P                  ! V P                  4      # rL   )r   r  r   rS  s   &&rR   rU  IntNode.compile_time_value  s    ""4::..rT   )r   r  r   )r[   r\   r]   r^   r  r  r  r  r  r  r  r  r   
c_int_typer  r  r  r`  r  r  rF  r  r  rI  rU  r_   r`   r  s   @rR   r  r    s      HHL Q Q 4 4<
 *4*?*? g g N N68:<A	- 8 ?/ /rT   r  c                   \   a  ] tR tRt o ]P
                  tR tR tR t	R t
R tR tRtV tR	# )
rU  i  c                :    \        V P                  4      V n        R # rL   )r   r   r   rW   s   &rR   rI  #FloatNode.calculate_constant_result  s    $TZZ0rT   c                   \        V P                  4      pR V,          P                  R4      p\        P                  ! V P                  4      pWC\        V4      P                  R4      39  d   \        V P                  RV,          4       V# )z%.330frk  zEUsing this floating point value with DEF may lose precision, using %r)	r   r   stripr   normalise_float_reprr_  lstripr   r   )rX   rT  float_valuestr_float_value	str_values   &&   rR   rU  FloatNode.compile_time_value  so    DJJ'#k188=..tzz:	d;.?.F.Fs.KLLDHHehsstrT   c                   VP                   '       dX   V P                  P                  '       d<   \        V P                  V P
                  V P                  \        P                  R 7      # VP                  '       dJ   V P                  P                   '       d.   \        V P                  V P
                  V P                  VR 7      # \        P                  WV4      # ))r   r   r   )rx   r   r  rU  r   r   r   r   r  r=  r`  rt  s   &&&rR   r`  FloatNode.coerce_to  s    DII$6$6$6

 $ 4 4'') ) !6!6!6

 $ 4 4  ""4377rT   c                    V P                   # rL   r  rW   s   &rR   r  FloatNode.calculate_result_code  r  rT   c                    V P                   p\        V\        4      '       g   Q h\        \	        V4      4      pVR 8X  d   R# VR8X  d   R# VR8X  d   R# V# )nanz(Py_HUGE_VAL * 0)infPy_HUGE_VALz-infz(-Py_HUGE_VAL))r   r   r   r_  r   )rX   strvalcmpvals   &  rR   rF  $FloatNode.get_constant_c_result_code  sP    &#&&&&eFm$U?&u_ v#MrT   c                    V P                  4       pV P                  P                  '       d$   VP                  V P                  V4      V n        R # W n        R # rL   )rF  r   rx   get_py_floatr   r  )rX   r   c_values   && rR   r  "FloatNode.generate_evaluation_code  s?    11399   #00WED&rT   r   r  N)r[   r\   r]   r^   r   c_double_typer   rI  rU  r`  r  rF  r  r_   r`   r  s   @rR   rU  rU    s3     ##D18 ' 'rT   rU  c                    \         P                  ! V 4      pVe   VP                  '       d   V# VP                  4       pVP	                  V 4      pV'       dY   VP
                  '       dG   VP                  pV'       d'   VP                  '       g   VP                  '       d   V# T;'       g    Tp^RIHp \        RR7      ;_uu_ 4        V^ ,          V^,          V^,          ^,
          3p V! RV ,          V^ ,          P                  VR7      pVP                  P                  ^ ,          P                  p	\        V	\        4      '       dx   V	P!                  V4      p	\        V	\        4      '       dQ   V	P"                  pV'       d1   VP                  '       g   VP                  '       d   VuuR R R 4       # T;'       g    TpR R R 4       T#   \$         d     Li ; i  + '       g   i     T# ; i)N)TreeFragmentTignore
sizeof(%s))ry   initial_pos)r   parse_basic_typein_c_type_contextglobal_scoper  is_typer   rx   r  r   filenamerootstatsexprr   SizeofTypeNoder}  arg_typer   )
ry   r   r{   r=  r  global_entryr   r  declarationsizeof_nodes
   &&&       rR   _analyse_name_as_typer    s   ''-ES222##%L&&t,L,,,  T%%%)>)>)>K +	T	"	"1vs1vs1vax(	*&|d':Q^abK &**00388K+~66)77<k>::&//D!1!1!1S5J5J5J# 
#	" "MMTE 
# L  			 
#	" LsO   
"G-#GA7GGG,G8GGGGGGG0	c                   h   a  ] tR tRt o Rt]tR tRR ltR t	R t
R tR	 tR
 tR tR tR tRtV tR# )rV  i  Tc                (    V P                   V n        R # rL   rQ  rW   s   &rR   rI  #BytesNode.calculate_constant_result  rd  rT   Nc                    \         P                  ! V P                  WV1,          V P                  P                  4      p\	        V P
                  WDR 7      # )rQ  )r
   bytes_literalr   encodingrV  r   )rX   r   r   r   r   s   &&&& rR   as_sliced_nodeBytesNode.as_sliced_node  s<    ,,TZZ4-H$**J]J]^FFrT   c                6    V P                   P                  4       # rL   )r   
byteencoderS  s   &&rR   rU  BytesNode.compile_time_value  s    zz$$&&rT   c                b    \        V P                  P                  R 4      V P                  V4      # )z	ISO8859-1)r  r   decoder   r   s   &&rR   r  BytesNode.analyse_as_type  s$    $TZZ%6%6{%CTXXsSSrT   c                2    \        V P                  4      ^8H  # r  r   r   rW   s   &rR   r   $BytesNode.can_coerce_to_char_literal      4::!##rT   c                V    \        V P                  \        V P                  4      R 7      # rq  )r  r   r  r   r   s   &&rR   r  BytesNode.coerce_to_boolean  s     TZZ(899rT   c                   V P                   V8X  d   V # VP                  '       d   V P                  4       '       g   \        V P                  R 4       V # VP
                  '       d   \        V P                  R4       V # \        V P                  V P                  \        V P                  4      R7      # \        V P                  V P                  V P                  R7      pVP                  '       dH   V\        \        P                  39   d   \        P                  Vn         V# V P                  WRR7       V# V\         P"                  \         P$                  39   d	   Wn         V# V\         P&                  \         P(                  \         P*                  39   dM   VP,                  P.                  '       d   \         P$                  M\         P"                  Vn         \1        W14      # VP3                  \         P"                  4      '       d-   VP4                  '       d   VP.                  '       d	   Wn         V# \6        P9                  W1V4      # )z?Only single-character string literals can be coerced into ints.zRBytes literals cannot coerce to Py_UNICODE/Py_UCS4, use a unicode literal instead.rQ  Tr  )r   rm  r   r   r   is_unicode_charr   r   r{  rV  r   rx   r   r   r   rT  r   r0   rv   ru   rw   c_void_ptr_typerY  is_constCastNoderr  r#  r=  r`  r  s   &&& rR   r`  BytesNode.coerce_to   s   99 K???2244dhh ab'''dhh tuDHHDJJ,/

O= = TEYEYZNG,>,>??#..	 K --h$-GK*44j6V6VWW IK*55z7X7XZdZtZtuu=E=O=O=X=X=X99(88 ID++%%j&@&@AA(((H,=,=,=$	
 ""4377rT   c                   V P                   P                  '       d   VP                  V P                  4      pMV P                   P                  '       g   V P                   P
                  '       dC   V P                   P                  P                  '       d   VP                  V P                  4      pM?V P                  P                  4       p\        V P                   \        P                  V4      pW n        R # rL   )r   rx   get_py_string_constr   rX  r  rY  r  get_string_constas_c_string_literalr1   r   r  r  )rX   r   r  r  s   &&  rR   r  "BytesNode.generate_evaluation_code&  s    99   --djj9Fii$))"4"4"4$)):M:M:V:V:V**4::6F jj446Gdii)C)CWMF!rT   c                    R # rL   rV   rW   s   &rR   rF  $BytesNode.get_constant_c_result_code2  r  rT   c                    V P                   # rL   r  rW   s   &rR   r  BytesNode.calculate_result_code5  r  rT   r  rL   )r[   r\   r]   r^   r   r   r   rI  r  rU  r  r   r  r`  r  rF  r  r_   r`   r  s   @rR   rV  rV    sL     
 D*G'T$:
$8L
"   rT   rV  c                      a a ] tR tRt oRtRtRt]tRV 3R llt	R t
R tRR ltR tR	 tR
 tR tR tR tR tRtVtV ;t# )rW  i9  TNc                n   < \         SV `  WVR 7       Ve   W0n        Ve   V\        Jd	   W@n        R# R# R# )rQ  N)rN   r  bytes_valuer   r   )rX   r   r   r  r   rQ   s   &&&&&rR   r  UnicodeNode.__init__F  s;    5A"*L 8I !9rT   c                (    V P                   V n        R # rL   rQ  rW   s   &rR   rI  %UnicodeNode.calculate_constant_resultM  rd  rT   c                D    \        V P                  V P                  V4      # rL   )r  r   r   r   s   &&rR   r  UnicodeNode.analyse_as_typeP  s    $TZZ3??rT   c                J   \         P                  ! V P                  WV1,          V P                  P                  4      pV P                  e@   \         P
                  ! V P                  WV1,          V P                  P                  4      pMR p\        V P                  WER7      # )N)r   r  )r
   encoded_stringr   r  r  r  rW  r   )rX   r   r   r   r   r  s   &&&&  rR   r  UnicodeNode.as_sliced_nodeS  s    --JJu$')<)<>'(66  D143C3C3L3LNK K4885JJrT   c                   WP                   J d    V # VP                  '       de   V P                  4       '       g   \        V P                  R 4       V # \        V P                  4      p\        P                  V P                  W1R7      # VP                  '       d#   \        V P                  V P                  VR7      # VP                  '       Eg   VP                  '       gU   VP                  '       gC   VP                  '       g1   VP                  '       Ed]   VP                   P"                  '       Ed@   V P$                  eS   VP&                  '       d   VP)                  4       p\+        V P                  V P$                  R7      P-                  W4      # VP.                  R,          '       dT    V P                  P1                  VP.                  R,          4      p\+        V P                  VR7      P-                  W4      # V P                  P7                  4       '       dT   \+        V P                  \8        P:                  ! V P                  P1                  R4      4      R7      P-                  W4      # \        V P                  R4       V # V\<        Jd   V P?                  WRR7       V #   \2        \4        3 d     Li ; i)	zhOnly single-character Unicode string literals or surrogate pairs can be coerced into Py_UCS4/Py_UNICODE.rS  rn  r  rh   ro   zUnicode literals do not support coercion to C types other than Py_UCS4/Py_UNICODE (for characters), Py_UNICODE* (for strings) or char*/void* (for auto-encoded strings).Tr  ) r   r  r   r   r   r{  r   r  r  r  rW  rx   r  is_cpp_stringrm  rX  rY  r  r  r  element_ptr_typerV  r`  rs   encodeUnicodeEncodeErrorLookupErrorisasciir
   BytesLiteralr   rT  )rX   rw  r{   r  byte_strings   &&&  rR   r`  UnicodeNode.coerce_to]  s!   yy H G %%%2244dhhPQ DJJI??488Y?FF&&&txxtzzII%%%!!!X%;%;%;xOOO(:(:(B(B(B##/(((#+#<#<#>$TXXT5E5EFPPQY__>>"566_&*jj&7&7GZ8[&\  )EOOPX^^::%%''$TXX^5P5PQUQ[Q[QbQbcjQk5l ''0y'?@$((MN  ^+))(d)C /< s   0,J, ,K ?K c                2    \        V P                  4      ^8H  # r  r  rW   s   &rR   r   &UnicodeNode.can_coerce_to_char_literal  r
  rT   c                Z    \        V P                  4      p\        V P                  VR 7      # rq  )r  r   r  r   )rX   r{   r  s   && rR   r  UnicodeNode.coerce_to_boolean  s!    $**%

33rT   c                    V P                   P                  4       '       d   ^# \        \        V P                   4      4      pV^8:  d   ^# VR8:  d   R# R# )   i  i )r   r.  r{  max)rX   max_charvals   & rR   estimate_max_charval UnicodeNode.estimate_max_charval  sC    ::#djj/*#E!rT   c                   V P                   P                  '       Ed   \        P                  ! V P                  4      '       Ed   VP                  R 4      V n        VP                  \        P                  ! V P                  P                  R4      4      4      pVP                  V P                  4      pVf   R# VP                  V P                  4       VP                  V P                  : RV: RV: RVP                  V P                  V P                  4      : 24       VP                  V P                  RV P                  ,          4       R# V P                   '       d#   VP#                  V P                  4      V n        R# VP%                  V P                  4      V n        R# VP'                  V P                  4      V n        R# )ustringunicode_escapeNz! = PyUnicode_DecodeUnicodeEscape(	, sizeof(z) - 1, NULL); z__Pyx_PyUnicode_READY(%s))r   rx   r
   string_contains_lone_surrogatesr   get_py_constr  r  r/  r+  get_cached_constants_writerr   r   r   r   put_error_if_negis_identifierintern_identifierr  get_pyunicode_ptr_const)rX   r   
data_cname
const_codes   &&  rR   r  $UnicodeNode.generate_evaluation_code  sQ   99   ==djjII $(#4#4Y#? !22"//

0A0ABR0STV
!==d>N>NO
%##DHH-  (("""55d6F6FQ	ST ++HH9D<L<LLN####'#9#9$**#E #'#;#;DJJ#G #;;DJJGDrT   c                    V P                   # rL   r  rW   s   &rR   r  !UnicodeNode.calculate_result_code  r  rT   c                    V P                   # rL   r  rS  s   &&rR   rU  UnicodeNode.compile_time_value  r)  rT   )r  r   r  r   NNrL   )r[   r\   r]   r^   r   rD  r  r   r   r  rI  r  r  r`  r   r  r:  r  r  rU  r_   r`   ra   rb   s   @@rR   rW  rW  9  s\      MKD*@K&P$4
H6  rT   rW  c                       ] tR tRtRtRtR# )IdentifierStringNodei  TrV   N)r[   r\   r]   r^   rD  r_   rV   rT   rR   rP  rP    s    MrT   rP  c                   f   a  ] tR tRt o ]P
                  tR tR tR t	R t
R tRtR tR	 tR
tV tR# )ImagNodei  c                N    \        R \        V P                  4      4      V n        R# )        N)complexr   r   r   rW   s   &rR   rI  "ImagNode.calculate_constant_result  s    &sE$**,=>rT   c                @    \        R \        V P                  4      4      # )rT  )rU  r   r   rS  s   &&rR   rU  ImagNode.compile_time_value  s    sE$**-..rT   c                <    V P                   P                  V4       V # rL   )r   create_declaration_utility_coder   s   &&rR   r}  ImagNode.analyse_types  s    		11#6rT   c                    R # r  rV   rW   s   &rR   r  ImagNode.may_be_none  r#  rT   c                    V P                   VJ d   V # \        V P                  V P                  R 7      pVP                  '       d   ^Vn        \        P                  Vn         \        P                  W1V4      # rq  )
r   rR  r   r   rx   r  r   complex_typer  r`  r  s   &&& rR   r`  ImagNode.coerce_to  s\    99 K

3DL,,DI ''<<rT   zConstructing complex numberc                    V P                   P                  '       d   V P                  4       # V P                   P                  : R \	        V P
                  4      : R2# )z(0, ))r   rx   r  
from_partsr   r   rW   s   &rR   r  ImagNode.calculate_result_code  s<    99   ;;= "&))"6"6djj8IJJrT   c           
     .   V P                   P                  '       dy   VP                  V P                  4       : R \	        V P
                  4      : RVP                  V P                  4       V P                  4      : 24       V P                  V4       R# R# )z = PyComplex_FromDoubles(0.0, ); N)	r   rx   r   r  r   r   r   r   r<  r  s   &&rR   r  ImagNode.generate_result_code  si    99   JJKKM$**%++DKKM488DFG
   & !rT   r  N)r[   r\   r]   r^   r   c_double_complex_typer   rI  rU  r}  r  r`  gil_messager  r  r_   r`   r  s   @rR   rR  rR    sB     
 ++D?/
= 0KK' 'rT   rR  c                   B   a  ] tR tRt o RtR tR tR tR tR t	Rt
V tR# )	NewExprNodei  Nc                T   V P                   P                  V4      pVe   VP                  '       g$   \        V P                  R4       \
        V n        R # V P                  V4       VP                  V P                  4      pW n	        W0n
        VP                  V n        V P                  # )Nz/new operator can only be applied to a C++ class)cppclassr  r#  r   r   r2   r   	cpp_checkget_constructor
class_typer   )rX   r{   r   constructors   &&  rR   r   NewExprNode.infer_type  s    }},,S1<t000$((MN"DIs**4884 
$$	yyrT   c                D    V P                   f   V P                  V4       V # rL   )r   r   r   s   &&rR   r}  NewExprNode.analyse_types  s    99OOC rT   c                    R # r  rV   rW   s   &rR   r  NewExprNode.may_be_none  r#  rT   c                    R # rL   rV   r  s   &&rR   r   NewExprNode.generate_result_code  r  rT   c                D    R V P                   P                  4       ,           # )znew )rp  empty_declaration_coderW   s   &rR   r  !NewExprNode.calculate_result_code  s    >>@@@rT   )rp  r   r   )r[   r\   r]   r^   r   r   r}  r  r  r  r_   r`   r  s   @rR   rk  rk    s,      D
A ArT   rk  c                   X  a a ] tR tRt oRtRtRtRt^ tRt	Rt
RtRtRtRtRtRtR tR tR tR	 tR
 tV 3R ltR-R ltR tR tR tR tR tR tR tR tR t R t!Rt"R-R lt#R t$R t%R t&V 3R lt'R t(R t)R t*R  t+R! t,R" t-R# t.R$ t/R% t0R.R& lt1R' t2R( t3R-R) lt4R* t5R+ t6R,t7Vt8V ;t9# )/r_  i  TFNrN  c                    V P                   # rL   )cython_attributerW   s   &rR   r  NameNode.as_cython_attribute4  s    $$$rT   c                    V P                   f!   VP                  V P                  4      V n         V P                   e*   V P                   P                  P                  '       d   V 3# R# NrV   )r   r  ry   r   is_unspecifiedr   s   &&rR   r  NameNode.type_dependencies7  sI    ::DII.DJ::!djjoo&D&D&D7NIrT   c                   V P                   f!   VP                  V P                  4      V n         V P                   e   V P                   P                  \        J d!   V P
                  e   V P
                  # \        # V P                   P                  P                  '       g'   V P                   P                  P                  '       d6   V P                   V P                   P                  P                   8X  d   \        # V P                   P                  \        J dG   V P                   V P                   P                  P                   8X  d   V P                  R9   d   \        # V P                   P                  P                  '       dW   V P                   P                  P                  '       d   \        # \        P                  ! V P                   P                  4      # V P                   P                  P                   '       dW   V P
                  '       dE   V P
                  P"                  '       d   V P                   P$                  '       g   V P
                  # V P                   P                  # )N)r   
basestring)r   r  ry   r   r3   inferred_typer   is_extension_typeis_builtin_typer   r   r  rp  is_builtin_scoper   CPtrTyperx   rm  might_overflowr   s   &&rR   r   NameNode.infer_type?  s   ::DII.DJ::4D!D!!-)))!!jjoo///4::??3R3R3R

djjoo333 jjoo-

djjoo333		E^8^ZZ__)))zz000%% "**4::??;; zz***t/A/A/A**111djj6O6O6O---::??"rT   c                     VP                  V P                  4      #   \         d,    \        T P                  R T P                  ,          4        R# i ; i)z"Compile-time name '%s' not definedN)r  ry   r  r   r   rS  s   &&rR   rU  NameNode.compile_time_value`  sD    	N;;tyy)) 	N$((@499LM	Ns    2AAc                    V P                   '       d'   V P                   P                  P                  '       d   R # V P                   P                  # rL   )r   r   rx   r   rW   s   &rR   rF  #NameNode.get_constant_c_result_codef  s1    zzzTZZ__888zzrT   c                  < V\         J d   V P                  pV'       d   VP                  '       d   VP                  pV'       d   VP                  '       d9   VP
                  '       d'   VP                  VP                  V P                  4      p\        V P                  V P                  R 7      pWEn        VP                  V4       V# \        SV `1  W4      # )ry   )r   r   r  as_variable
is_builtinr  declare_builtinry   r   r_  analyse_rvalue_entryrN   r`  )rX   rw  r{   r   	var_entryr   rQ   s   &&&   rR   r`  NameNode.coerce_tok  s    
 ~%JJE+++!--	 +++	0B0B0B$'$7$7	$Q	#DHHTYY?D!*J--c2Kw //rT   c           	        V P                   pV P                  pV P                  ;'       g    VP                  V4      pV'       Eg   VP                  '       d   R# RpVP
                  P                  '       g   VP                  R,          '       g   RpM,VP                  '       d   \        pMVP                  V4      w  rgVf.   V'       d   VP                  R,          R8w  d   \        M\        pM@VP                  '       d/   VP                  '       d    VP                  VP                  4      pRpVP&                  '       dE   VP&                  R8H  p	VP(                  '       g   VP+                  V4      '       d   V	'       d   RMR	pV'       dT   VP,                  '       dB   VP(                  '       g0   VP.                  '       g   \        p\1        VP"                  R
^4       VP3                  W7V P"                  V'       * VVR7      ;qPn        V'       d   VP                  '       g	   WEn        R# R# R#   \         d2    \!        T P"                  RT P                   ,          4       \$        p EL?i ; i)aK  Implements PEP 526 annotation typing in a fairly relaxed way.

Annotations are ignored for global variables.
All other annotations are stored on the entry in the symbol table.
String literals are allowed and not evaluated.
The ambiguous Python types 'int' and 'long' are not evaluated - the 'cython.int' form must be used instead.
Nannotation_typinginfer_typesFzR'%s' cannot be specialized since its type is not a fused argument to this functionprivatefrozenreadonlypubliczxAnnotation ignored since class-level attributes must be Python objects. Were you trying to set up an instance attribute?)is_cdef
visibilitypytyping_modifiersrV   )ry   r  r   lookup_hereis_module_scoper  r   rs   is_py_class_scoper   analyse_type_annotationr3   r  r  r  r,   r   r   r2   is_c_dataclass_scoperx   can_coerce_to_pyobjectis_c_class_scoperd  r   declare_var)
rX   r{   	as_targetry   r  r   	modifiersatyper  	is_frozens
   &&&       rR   declare_from_annotation NameNode.declare_from_annotation~  s    yy__


33cood3u"""I 111~~&9::&&&&#-#E#Ec#J 	},5#..:W[`:`(ftC$9$9$9'!,,S-B-BCE #J'''  44@	$$$(D(DS(I(I/8hJ S1115;L;L;LPUP^P^P^&
 )KLMO "%TXX9}#, "1 ". .EJ
 e...) /:5 ( '$((n))$% 'E	's   H6 68I21I2c                \   V P                   pV'       g   VP                  V P                  4      pV'       d   VP                  '       d   VP                  # V'       dO   VP                  '       d=   \
        P                  ! VP                  4      pV'       d   VP                  '       d   V# R # rL   )r   r  ry   	as_moduleknown_standard_library_importr   'get_known_standard_library_module_scoper  )rX   r{   r   rp  s   &&  rR   r  NameNode.analyse_as_module  sq     

JJtyy)EU___??"U888CCEDgDghE...rT   c                   R pV P                   '       d"   \        P                  ! V P                   4      pM2VP                  '       d!   \        P                  ! V P
                  4      pV'       d   V# V P                  pV'       g   VP                  V P
                  4      pV'       dE   VP                  '       g3   VP                  '       d!   \        P                  ! VP                  4      pV'       dQ   VP                  '       d?   VP                  pVP                  '       d   VP                  '       d   VP                  pV# V P
                  R8X  d   \        # VP                  '       d!   \        P                  ! V P
                  4      # \        P                  ! V P
                  4      '       d2   \!        V P"                  RV P
                   RV P
                   R24       R # )NobjectzFound C type name 'z6' in a Python annotation. Did you mean to use 'cython.z'?)r~  r   r  r  parse_basic_ctypery   r   r  r  r  r    get_known_standard_library_entryr   rx   r   r   r   r   r  s   &&  rR   r  NameNode.analyse_as_type  sY      ..t/D/DED"""//		:DK

JJtyy)E5+N+N+N<<U=`=`aEU]]]::DD$8$8$8++K99 !!    ..tyy99((33DHH 3DII;>tuyu~u~t  @B  C  DrT   c                    V P                   pV'       g   VP                  V P                  4      pV'       dW   VP                  '       dE   VP                  P
                  '       g   VP                  P                  '       d   VP                  # R # rL   )r   r  ry   r  r   r  r  rX   r{   r   s   && rR   r  "NameNode.analyse_as_extension_type  sY     

JJtyy)EU]]]zz+++uzz/I/I/Izz!rT   c                (    V P                  VR R7      # )Fis_assignment_expression_analyse_target_declarationr   s   &&rR   rw  #NameNode.analyse_target_declaration  s    //e/TTrT   c                (    V P                  VR R7      # )Tr  r  r   s   &&rR   rz  9NameNode.analyse_assignment_expression_target_declaration 	  s    //d/SSrT   c                   R V n         V P                  '       gJ   V'       d"   VP                  V P                  4      V n        M VP	                  V P                  4      V n        V P                  '       d   RV P                  n        V P                  '       g3   V P                  e%   VP                  pV P                  W'       * R7       MhV P                  '       dW   V P                  P                  '       d;   V P                  '       d)   VP                  '       d   \        V P                  R4       V P                  '       g   VP                  R,          '       d)   \        V P                  RV P                  ,          ^4       VP                  R,          R8w  d   \        pM\        pV'       d-   VP!                  V P                  W@P                  4      V n        M+VP#                  V P                  W@P                  4      V n        V P                  P$                  '       d   \        V n        V P                  P(                  '       d   ^V P                  n        R# R# )	TrN  N)r  z7Cannot redeclare inherited fields in Cython dataclasseszwarn.undeclaredzimplicit declaration of '%s'r  F)r  r   #lookup_assignment_expression_targetry   r  r  r  r  r  is_inheritedr   r   rs   r   r3   r   $declare_assignment_expression_targetr  is_declared_genericrC  r  is_variable)rX   r{   r  is_dataclassr   s   &&&  rR   r  $NameNode._analyse_target_declaration	  s   zzz' DDTYYO
 __TYY7
:::79DJJ4zzzdoo933L ((8H(IjjjTZZ444C$<$<$<$((UVzzz~~/00"@499"LaP~~m,5'%' EEdiiQUW_W_`
 __TYYhhG
::))) .D::%&DJJ"  rT   c                .   VP                   R ,          V n        V P                  pVf   VP                  V P                  4      pV'       gZ   VP                  V P                  V P                  4      pV'       d,   VP                  '       d   VP                  '       d   RV n	        V'       g   \        P                  V n        V # W n        ^Vn        VP                  P                  '       d   ^RIHp VP#                  V4       V P%                  V4       V # )initializedcheckTBuffer)rs   initialized_checkr   r  ry   r  r   r  r  r   r   r2   r   r\  	is_bufferrN  r  used_buffer_aux_varsr  rX   r{   r   r  s   &&  rR   r}  NameNode.analyse_types&	  s    !$0B!C

=JJtyy)E++DIItxx@U---%...&*DO&11	J
:: ''.!!#&rT   c                   V P                  VR R7       V P                  pVP                  '       d   VP                  '       dz   VP                  '       gE   VP
                  P                  '       g)   V P                  4       '       g6   VP                  '       d$   VP                  ;q n        VP
                  V n        V P                  4       '       g=   \        V P                  RV P                  ,          4       \        P                  V n        ^Vn        VP
                  P                  '       d   ^RIHp VP#                  V4       V # )Tr  zAssignment to non-lvalue '%s'r  )analyse_entryr   r  r  is_overridabler   r
  fused_cfunctionr   r   ry   r   r2   r\  r  rN  r  r  r  s   &&  rR   r  NameNode.analyse_target_types:	  s    3$/

%"3"3"3$$$

(A(A(A$..JZJZ_d_t_t_t%*%6%66
!JJ	~~$((;diiGH"--DI
:: ''.rT   c                   V P                  V4       V P                  pVP                  '       d   \        V n        VP
                  '       g   VP                  '       d=   VP                  '       d   VP                  '       d	   ^ V n        M^V n        ^V n	        V # VP                  P                  '       d   RV n        RV n	        RV n        V # )r   FT)r  r   r  r   rC  is_pyglobalr  r  r  is_used_as_rvaluer   r  r  r  s   && rR   r  NameNode.analyse_rvalue_entryN	  s     	3

$$$ .D 0 0 0ENNN  %&D"
 	 ZZ*** DL%)D"#'D rT   c                   R V n         V P                  '       dk   V P                  pVP                  '       d'   VP                  '       g   V P                  4        R# R# VP                  '       d   V P                  4        R# R# R# TN)r   r  r   r  r  r  r  r  s   && rR   r  NameNode.nogil_checkd	  sb    
!!!JJE~~~NN$ &"""  # "rT   z"Accessing Python global or builtinc                   V P                  4        V P                  pVP                  pV'       gM   VP                  '       d;   V P                  '       d)   V P                  P
                  '       d   V P                  pW@n        VP                  P                  '       d?   VP                  '       g   VP                  '       d   VP                  R 4      V n        R# R# R# )rN  N)check_identifier_kindr   r   rx   r  r  rp  r  r  is_cclass_var_entryname_in_module_statemodule_state_lookup)rX   r{   r  r   r   s   &&&  rR   r  NameNode.analyse_entryp	  s    ""$

zzd...43E3E3E""222%%D	;;&&&!!!U%>%>%>'*'?'?'CD$ &? 'rT   c                   V P                   pVP                  '       d#   VP                  P                  '       d   Wn        VP                  '       d   VP                  P
                  '       g   VP                  P                  '       dc   VP                  '       dQ   \        P                  ! V P                  R \        4      pRVn        V P                   P                  Vn        W n         R # VP                  '       g   VP                  '       g   VP                   '       g   VP"                  '       g   VP$                  '       gw   V P                   P&                  '       d   V P                   P&                  V n         R # V P(                  '       g*   \+        V P,                  RV P                  ,          4       R # R # R # R # R # R # R # )NTz7'%s' is not a constant, variable or function identifier)r   r  r   r  
type_entryr  is_cpp_enumcreate_wrapperr   Entryry   r   r  rp  r  r  r  r  r#  r  is_cython_moduler   r   )rX   r   py_entrys   &  rR   r  NameNode.check_identifier_kind	  s)    

===UZZ999#O===ejj000EJJ4J4J4JPUPdPdPd||DIIt^DH#'H !ZZ--HN!J...E$5$5$5"""e&8&8&8$$$zz%%%!ZZ33
***dhh Y\`\e\e ef + % '9" %6.rT   c                    V P                   '       g   V P                  '       d   R # V P                  ;'       g    VP                  V P                  4      pVP
                  ;'       d    VP                  '       * # r  )r  r~  r   r  ry   r  r  r  s   && rR   "is_cimported_module_without_shadow+NameNode.is_cimported_module_without_shadow	  sU       D$9$9$9

33cjj388u'8'8#88rT   c                    ^# r  rV   rW   s   &rR   r  NameNode.is_simple	  s    rT   c                  < V P                   '       d   V P                  '       d   V P                  P                  '       g   V P                  P                  '       d]   \	        V R R4      '       d   R# RV n        RpV P                    F*  pVP                  P                  4       '       g   K%  Rp V =V# 	  V =V# \        SV `  4       # )_none_checkingFT)	r   r   rx   r  r  r  r   r  rN   )rX   r  
assignmentrQ   s   &  rR   r  NameNode.may_be_none	  s    ===TYYYDII,A,A,A,0II,H,H,Ht-u55 "&D  K"mm
>>--//"&K# , #w"$$rT   c                   \         P                  V 4      '       d   R # V P                  pV'       d   VP                  '       d   R# VP                  ;'       g5    VP
                  ;'       g!    VP                  ;'       g    VP                  # TF)r   r  r   rr  is_localro  r  is_readonlyrX   r   s   & rR   r  NameNode.nonlocally_immutable	  sb    ((..

(((~~VVVV1A1AVVUEVEVVrT   c                    R # rL   rV   r   s   &&rR   calculate_target_results!NameNode.calculate_target_results	  r  rT   c                    V P                   pVee   VP                  '       gS   VP                  '       gA   VP                  '       g/   VP                  P                  '       g   V P                  4        R# R# )NFT)r   r  r  r  r   r  r  s   & rR   r~  NameNode.check_const	  sR    

"""   

###NNrT   c                    V P                   pVP                  '       g7   VP                  '       g%   VP                  '       g   V P	                  4        R # R# r  )r   
is_cglobalr  r  r  r  s   & rR   r  NameNode.check_const_addr	  s?    

   E$6$6$6%:J:J:J!rT   c                    V P                   P                  ;'       d$    V P                   P                  '       * ;'       g5    V P                   P                  ;'       d    V P                   P                  # rL   )r   r  r  r  r  rW   s   &rR   r
  NameNode.is_lvalue	  s^    JJ"" ' '

&&&
 
 JJ## & &JJ%%	
rT   c                t    V P                   P                  ;'       d    V P                  P                  '       * # rL   )r   r  r   r  rW   s   &rR   r  NameNode.is_addressable	  s'    zz%%JJdii.J.J*JJrT   c                    ^ # r	  rV   rW   s   &rR   r  NameNode.is_ephemeral	  s     rT   c                    V P                   pV'       g   R # V P                   P                  '       d&   V P                  '       g   RVP                  ,          # V P                  VP                  ,           # )<error>(*%s))r   is_cpp_optionalr  r   r  r  s   & rR   r  NameNode.calculate_result_code	  sM    

::%%%dnnnU[[((''%++55rT   c                   V P                   pVf   R # VP                  '       d&   VP                  P                  VP                  4       VP                  '       d   VP
                  '       d   R # VP                  '       Ed   VP                  P                  '       g   Q R4       hVP                  V P                   P                  4      pVP                  '       d   \        P                  pMVP                  P                  pV P                  '       gc   VP!                  V P#                  4       : RV: RV: R24       VP!                  RV P#                  4       ,          4       VP!                  R4       VP                  P                  \$        P&                  ! RR4      4       VP!                  R	V P#                  4       : RV: R24       V P                  '       g   VP!                  R
4       VP!                  VP)                  V P#                  4       V P*                  4      4       V P-                  V4       R # VP                  '       d   VP                  P.                  '       g   VP                  P                  '       g   Q R4       hVP                  V P                   P                  4      pVP                  P                  \$        P&                  ! RR4      4       VP!                  V P#                  4       : RV: RVP)                  V P#                  4       V P*                  4      : 24       V P-                  V4       R # VP0                  '       g1   VP                  '       Ed   VP                  P.                  '       Ed   VP                  P                  '       g   Q R4       hVP                  V P                   P                  4      pVP                  P.                  '       d   VP                  P                  \$        P&                  ! RR4      4       VP!                  R	V P#                  4       : RV: RVP)                  V P#                  4       V P*                  4      : 24       MVP3                  VP                  4      pV P                   P                  P4                  pVP                  P                  \$        P&                  ! RR4      4       TP!                  RV P#                  4       : RV'       d   RMR: V: RV: RVP)                  V P#                  4       V P*                  4      : 2	4       V P-                  V4       R # VP6                  '       gB   VP8                  '       g0   VP:                  '       g   VP                  P<                  '       EdC   V P>                  ;'       g    V P                  ;'       d    V P@                  '       * pVP                  P<                  ;'       d    V PB                  pVPD                  ;'       d    V PB                  p	V	'       d'   VP                  PG                  VPH                  4      p
M%VP                  PK                  VPH                  4      p
V
'       dc   V'       dY   VP                  P                  '       g   V'       g	   V	'       d+   VPM                  V P*                  W PN                  V
R7       R # R # R # R # VPP                  '       dx   VPD                  '       dd   V PB                  '       dP   VP                  PG                  VPH                  4      p
VPM                  V P*                  W PN                  V
R7       R # R # R # R # )N,Python global or builtin not a Python objectz = PyObject_GetItem(, );if (unlikely(!%s)) {PyErr_Clear();GetModuleGlobalNameObjectHandling.cz__Pyx_GetModuleGlobalName(r   GetBuiltinNamez = __Pyx_GetBuiltinName(rf  GetNameInClassz__Pyx_GetNameInClass(z(PyObject*)rN  unbound_check_code))r   utility_coder   r   r  r  is_pyclass_attrr   rx   rE  ry   r   builtins_cnamerp  namespace_cnamer6  r   r  r   r   r   r   r<  r  r  namespace_cname_in_module_statenamespace_cname_is_typer  rr  rs  r  r7  
allow_nullr  r   cpp_optional_check_for_null_coder   check_for_null_codeput_error_if_unboundr  r  )rX   r   r   interned_cname	namespacer#  r%  raise_unboundmemslice_checkoptional_cpp_checkr  s   &&         rR   r  NameNode.generate_result_code	  s<   

=--e.@.@A"""::)))Y+YY)!33DJJOODN"11	!KK77	???

!&()
 

1DKKMAB

+,--''(=?QRTJJKKM"$% ???

3JJt..t{{}dhhGH  &ekk&A&A&A::)))Y+YY)!33DJJOODN--''(8:LMOJJ''txx@BC
   &5#3#3#38S8S8S::)))Y+YY)!33DJJOODN{{***  11++,ACUVX

&//txxHJK #'"F"Fu{{"S*.***:*:*R*R'  11++,<>PQS

)@bH'&//txxHJK   &^^^u///53E3E3EIfIfIf ##66tOO<O  #ZZ::UUt?U?UN!&!6!6!Q!Q4;Q;Q!%*ZZ%P%PQVQ\Q\%]"%*ZZ%C%CEKK%P"!m9O9O9OSaew))$((E;P;Pew)x fxm! %"7"7"7D<R<R<R!&!L!LU[[!Y%%dhh7L7Las%t =S"7rT   c                   V P                   pVf   R # V P                   P                  P                  '       dQ   \        V\        4      '       d;   V P
                  '       g)   VP                  '       g   \        V P                  R4       VP                  '       Ed5   VP                  P                  '       g   Q R4       hVP                  V P                   P                  4      pVP                  V P                   P                  4      pV P                   P                  P                  p	Rp
VP                   '       d6   RpRp
VP"                  P%                  \&        P(                  ! RR4      4       MVP                  P*                  '       d#   RpVP-                  \.        P0                  4      pMqVP2                  '       dP   V P                  R	8X  d   R
MRpVP"                  P%                  \&        P(                  ! VR4      4       RV,           pMQ \5        T4      4       hV	'       d   V
'       g   RV R2pV
'       d   V	'       g   Q hVP7                  V P                  V: RV: RV: RVP9                  4       : R24       \:        '       d   \=        R4       \=        RV,          4       VP?                  V4       VPA                  V4       R # V P                  PB                  '       d   V PE                  W4       M-V P                  PF                  '       d   V PI                  W4       RpV P                  PJ                  '       d   RpV P                  P                  '       Edh   V PL                  '       EdU   VPO                  V4       VPP                  ;'       g5    V P                   PR                  ;'       g    V P                   PT                  pV'       d   V PW                  VRR7       RpVPP                  '       d0   V PY                  W!P[                  V P]                  4       4      4       MV P^                  '       gq   V P`                  '       d0   V Pc                  W!P[                  V P]                  4       4      4       M1V PY                  W!P[                  V P]                  4       4      4       MRpV'       d   VPe                  V4       V P                  PB                  '       Eg   V'       Eg]   V'       d   VPg                  4       pVR8X  df   \i        Y P                  V Pk                  4       : RV: R2V P                  P                  '       d   V Pk                  4       MR WPPl                  4       MVPo                  V Pk                  4       : RV: R24       MVPq                  V P]                  4       4      p\s        V P                  4      '       d<   VPo                  RV Pk                  4       : RV Pk                  4       : RV: R24       M;WPk                  4       8w  d(   VPo                  V Pk                  4       : RV: R24       \:        '       d   \=        R4       \=        RV,          4       VPu                  V4       M'VPw                  4       '       d   VPu                  V4       VPA                  V4       R # )Nz?Literal list must be assigned to pointer at time of declarationr  F__Pyx_SetItemOnTypeDictTSetItemOnTypeDictzExtensionTypes.cPyDict_SetItemrO   SetNewInClassSetNameInClassr  __Pyx_((PyObject*)rb  (r  z"NameNode.generate_assignment_code:z"...generating disposal code for %s)r:  r    = ;new (&) decltype(){};z)...generating post-assignment code for %s)<r   r   rX  r   ListNodelhs_of_first_assignmentin_module_scoper   r   r  rx   rE  ry   r$  rp  r%  	is_memberr   r   r   r   r  r  r   moddict_cnamer!  r_  rC  r   r   printr  r#  r   generate_acquire_memoryviewslicer  generate_acquire_bufferr  r  r  r  rr  rs  r<  r/  r/  r=  r6  r7  r3  rD  r,  r   r  r  r   r3  r<   r  r  )rX   r   r   r  r   r   r   r*  r+  namespace_is_typenamespace_needs_typesetternassignedis_external_refr  s   &&&&&&          rR   r  !NameNode.generate_assignment_codeF
  s    

=JJOO"""z#x'@'@444S=P=P=P$((]^ ::)))Y+YY)!33DJJOODN<<TZZ=M=MNI $

 0 0 H H#(  3'+$  11++,?ASTV,,,) 55f6J6JK	&&&'+yyI'=OCS  11+2I2I!M_2`a!A)d5k)u )=*9+Q7	,5FGG!!"MMO	%& #":;:S@A&&t,NN4 yy+++55c@$$$ ,,S7Hyy!!!yy$$$
 ''',,T2&+&6&6&j&j$**:O:O&j&jSWS]S]SjSjO&,,Tt,D#H'''00}}TZZ\7RS##111 $ 9 9$djjl@[ \ $ 8 8}}TZZ\?Z [',H&,,T299///x,!$!4!4!6*c13 $hh.2kkmV D151F1F1FD /1F1F	H !JJT[[]F'KL!$!7!7

!E*49955 JJW[WbWbWdfl'mn#{{}4 JJT[[]F'KL&&>?EKL11$7##%%11$7NN4 rT   c           
         ^RI Hp VP                  V P                  4       V P                  V P
                  VVV P                  '       * V P                  R7       R# )zy
Slices, coercions from objects, return values etc are new references.
We have a borrowed reference in case of dst = src
rO  )	lhs_cnamer   lhs_posr   r   r  first_assignmentN)rN  rP  put_acquire_memoryviewslicer  r   r   r  r6  )rX   r   r   rP  s   &&& rR   rE  )NameNode.generate_acquire_memoryviewslice
  sJ    
 	!..kkmYYHH...!__ 	/ 	.rT   c           	        \        V\        4      ;'       g    VP                  4       pV'       d!   VP                  V P	                  4       4      pMgVP
                  P                  V P                  P                  R R7      pVP                  V: RVP                  V P	                  4       4      : R24       ^RI
Hp VP                  V P                  4       W@P                  V P                  '       * V P                  VR7       V'       g6   VP                  RV,          4       VP
                  P!                  V4       R# R# )Fr  r9  r:  r  )is_initializedr   r   r  N)r   r_  r  r/  r=  r  r  r   r   r   rN  r  put_assign_to_bufferr  r@  r   r  )rX   r   r   
pretty_rhsrhstmpr  s   &&&   rR   rF   NameNode.generate_acquire_buffer
  s      X.FF#2D2D2F
]]4::<0F^^11$**//e1TFJJVS]]4::<-HIJ##DKKM6::7;7S7S3S(,t 	$ 	= JJy6)*NN''/ rT   c                   V P                   f   R # V P                   P                  '       d   V P                   P                  P                  pVP	                  V P                   P
                  4      pV'       d   RpMRV P                   P
                  ,          pVP                  RV: RV: RV: RVP                  V P                  4      : R2	4       R # V P                   P                  '       d   VP                  P                  \        P                  ! RR	4      4       VP	                  V P                   P
                  4      pR
\        P                  : RV: R2pV'       d6   VP                  RV: RVP                  V P                  4      : R24       R # VP!                  V P                  V4       R # V P                   P"                  P$                  '       g(   V P                   P"                  P&                  '       Ed-   V P(                  '       Eg   V P*                  '       d:   V'       g2   VP-                  V P                  V P                   V P.                  4       V P                   P0                  '       d   V P3                  VRVR7       V'       dT   V P*                  '       dB   VP5                  V P7                  4       V P9                  4       V P:                  '       * R7       R # VP=                  V P7                  4       V P9                  4       V P:                  '       * R7       R # R # \?        V P                  R4       R # )NzPyErr_Clear(); elsezT{ PyErr_Clear(); PyErr_Format(PyExc_NameError, "name '%%s' is not defined", "%s"); }zif (unlikely(PyObject_DelItem(r  z>) < 0)) { if (likely(PyErr_ExceptionMatches(PyExc_KeyError)))   }PyObjectSetAttrStrr  __Pyx_PyObject_DelAttrStr(rb  if (unlikely(zW < 0)) { if (likely(PyErr_ExceptionMatches(PyExc_AttributeError))) PyErr_Clear(); else T)r:  r;  r  z!Deletion of C names not supported) r   r!  rp  r#  rE  ry   r   r   r   r  r   r   r   r   r   module_cnamerC  r   rx   r  r6  r7  r)  r  rr  r<  put_xdecref_clearr  r=  r   r  r   )rX   r   r  r+  r*  key_error_codedel_codes   &&&    rR   r   NameNode.generate_deletion_code
  sD   ::ZZ'''

((88I!33DJJOODN!!6 mJJOO$  JJ !.%txx023 ZZ###--''(<>PQS!33DJJOODN##^5H!

 $T__TXX%>@A
 %%dhh9ZZ__(((DJJOO,N,N,N???%%%.@--dhh

DDYDYZ::(((((4Xj(k%$*<*<*<**4;;=$**,59ZZ + A ))$++-7;zz> * C # $((?@rT   c           
        \        V R R4      '       d   V P                  ^ ,          V P                  ^,          V P                  ^,          \        V P                  4      ,
          ^,
          3pV P                  P
                  '       d   RRrCMRRrCVP                  V\        W4V P                  ,          \        V P                  4      R7      4       R# R# )	is_calledFpy_callzpython function (%s)c_callzc function (%s)sizeN)r  r   r   ry   r   rx   rK  r6   )rX   r   r   styletexts   &&   rR   rK  NameNode.annotate  s    4e,,88A;TXXa[3tyy>-IA-MNCyy$$$')?t&(9tMM#~eDII5ECPTPYPYN[\ -rT   c                V    V P                   '       d   V P                   P                  # R # rL   )r   r  rW   s   &rR   r  *NameNode.get_known_standard_library_import  s    :::::;;;rT   )r  r   r  r   r  r  r  r  r   rC  r   r  r  r  r  ):r[   r\   r]   r^   r   r  r~  r@  r  r   r  r7  r6  r&  r   r  r  r  r  r   rU  rF  r`  r  r  r  r  rw  rz  r  r}  r  r  r  ri  r  r  r  r  r  r  r  r~  r  r
  r  r  r  r  r  rE  rF  r   rK  r  r_   r`   ra   rb   s   @@rR   r_  r_    s%     G#EJMJJEM%#BN 
0&>*@$L	UT!'F((,! 7KDg(9%*W	
K
6\u|v!p. 0(0Ad] rT   r_  c                   @   a  ] tR tRt o ]tR.tR tRtR t	R t
RtV tR# )	BackquoteNodei#  r   c                    V P                   P                  V4      V n         V P                   P                  V4      V n         ^V n        V # r  )r   r}  r  r  r   s   &&rR   r}  BackquoteNode.analyse_types,  s:    88))#.88..s3rT   zBackquote expressionc                N    \        V P                  P                  4      V n        R # rL   )r_  r   r   rW   s   &rR   rI  'BackquoteNode.calculate_constant_result4  s    #DHH$<$<=rT   c           
         VP                  V P                  4       : R V P                  P                  4       : RVP	                  V P                  4       V P
                  4      : 24       V P                  V4       R# )z = PyObject_Repr(rf  N)r   r  r   r   r   r   r<  r  s   &&rR   r  "BackquoteNode.generate_result_code7  sX    

""$''txx@B	C
 	T"rT   )r   r   r  N)r[   r\   r]   r^   r   r   r   r}  ri  rI  r  r_   r`   r  s   @rR   rq  rq  #  s.     
 DwH )K># #rT   rq  c                   F   a  ] tR tRt o ]tRtRR.tR tRt	R t
R tR	tV tR
# )
ImportNodeiF  Tmodule_nameimported_namesc                   V P                   fr   VP                  4       P                  '       dK   VP                  R,          '       g*   \        P
                  VP                  P                  9  d	   RV n         M^ V n         V P                  P                  V4      pVP                  V4      V n        V P                  P                  '       g   Q hV P                  e0   V P                   Uu. uF  q3P                  V4      NK  	  upV n        V P                   ^ 8w  d   V P                   ^ 8  d   V P                   M^pVP                  4       P                  p\        V4       F  pVP                  R4      w  p pK  	  \         P"                  ! V RV P                  P$                   24      V n        V # R V n        V # u upi )N
py2_importr  )r   r  parent_modulers   r7   absolute_importcontextfuture_directivesrz  r}  r  r   r{  qualified_namerange
rpartitionr
   r  r   module_qualname)rX   r{   rz  ry   r   qualname_s   &&     rR   r}  ImportNode.analyse_types]  so   ::!///NN<00**#++2O2OO

&&44S9&99#>11111*484G4G#4GD""3'4G#D ::?"&**q.DJJaE'')88H5\!)!4!4S!9!Q "#1#?#?8*AdN^N^NdNdMe@f#gD   $(D #s   +F<zPython importc           
        V P                   P                  '       g   Q hR pV P                  e   VP                  V P                  4      pVP                  P                  \        P                  ! RR4      4       V P                  eG   VP                  R4       VP                  RRP                  R V P                   4       4       R24       R	V P                   P                  4       V P                  e   R
MRV P                  e   \        V P                  4      M^ VV P                  3,          pVP                  P                  V P                   RR7      pVP                  V RV RVP#                  W@P$                  4       24       V P                  e   VP                  R4       V P&                  '       EdY   RV P                   P(                  9   Ed=   VP                  P                  \        P                  ! RR4      4       VP                  P                  V P                   RR7      pV P                   P(                  P+                  R4      pVR,           F  pVP                  \,        P.                  ! V4      4      pVP                  V RV RV R24       VP                  RV R24       VP                  VP#                  WPP$                  4      4       VP                  V RV R24       K  	  VP                  P1                  V4       VP                  V P3                  4        RV R24       VP                  P1                  V4       V P5                  V4       R# )rP  NImportzImportExport.c{z*PyObject* const __pyx_imported_names[] = {,c              3   @   "   T F  qP                  4       x  K  	  R # 5irL   )r  )rj   rJ  s   & rR   rm   2ImportNode.generate_result_code.<locals>.<genexpr>  s     Fo[nVWxxzz[n   r>  z __Pyx_Import(%s, %s, %d, %s, %d)__pyx_imported_namesrk  Fr  r9  ; r   r  
ImportFromr  z = __Pyx_ImportFrom(r  r  z
Py_DECREF(r:  )rz  r   r  r  r   r   r   r   r{  r   joinr   r   r   r  r  r   r   r   is_import_as_namer   r  r
   r  r  r  r<  )	rX   r   r  import_codetmp_submodule	submodulemodulesmodule
module_objs	   &&       rR   r  ImportNode.generate_result_code|  s   11111 +"66t7K7KLO))+*A*A(L\*]^*JJsOJJ=chhFo[_[n[nFo>o=ppstv 9&&(&*&9&9&E"3(,(;(;(GC##$QJJ<  44TYY54Q

oSR0G0GW_W_0`/ab	
 *JJsO!!!cT-=-=-C-C&C--k.E.ElTd.ef44TYY54QI&&,,2237G!"++!55n6R6RSY6Z[


i[(<]O2j\Y[\]

Zb9:

4229hhGH

m_C	{!<= & NN''	2

dkkm_Ca89##M2T"rT   c                .    V P                   P                  # rL   )rz  r   rW   s   &rR   r  ,ImportNode.get_known_standard_library_import  s    %%%rT   )r{  r   rz  r  N)r[   r\   r]   r^   r   r   r  r   r}  ri  r  r  r_   r`   r  s   @rR   ry  ry  F  s8     $ DG/0H: "K*#X& &rT   ry  c                   f   a a ] tR tRt o. tRtRtRR ltR tR t	R t
R tV 3R	 ltR
 tRtVtV ;t# )ScopedExprNodei  NTc                    Ve	   W n         R # V P                  '       d   \        P                  ! V4      V n         R # V P                   '       g
   R V n         R # R # rL   )
expr_scopehas_local_scoper   ComprehensionScope)rX   outer_scoper  s   &&&rR   
init_scopeScopedExprNode.init_scope  s@    !(O!!!$77DDO"DO !rT   c                (    V P                  V4       R # rL   )r  r   s   &&rR   analyse_declarations#ScopedExprNode.analyse_declarations  s    rT   c                    R # rL   rV   r   s   &&rR   analyse_scoped_declarations*ScopedExprNode.analyse_scoped_declarations      rT   c                    V # rL   rV   r   s   &&rR   r}  ScopedExprNode.analyse_types      rT   c                    V # rL   rV   r   s   &&rR   analyse_scoped_expressions)ScopedExprNode.analyse_scoped_expressions  r  rT   c                `  < \         SV `  pV P                  '       d   V P                  P                  '       g   V! V4       R # VP                  R4       . p\        R V P                  P                  P                  4        4       4       F\  w  rEVP                  '       d   K  VP                  P                  '       g   K7  VP                  '       g   KK  VP                  V4       K^  	  V'       g   V! V4       VP                  R4       R # VP                  4       pVP                  4       pV! V4       V P!                  W4       VP#                  R4      pVP%                  V4       VP&                  V3.\)        \+        VP-                  4       V4      4      ,            FQ  w  rVP/                  V	4      '       g   K  VP1                  V	4       V P!                  W4       VP%                  V
4       KS  	  VP1                  V4       VP                  R4       VP3                  V4       Wqn        R # )Nz{ /* enter inner scope */c              3   F   "   T F  q^ ,          '       g   K  Vx  K  	  R# 5i)r   NrV   )rj   r   s   & rR   rm   :ScopedExprNode.generate_evaluation_code.<locals>.<genexpr>  s     [0OXYSZSZtt0Os   !
!z} /* exit inner scope */
exit_scope)rN   r  r  r  var_entriesr   sortedentriesitemsrr  r   rx   r\  r  new_loop_labelsnew_error_label_generate_vars_cleanup	new_labelput_gotoerror_labelr  zipget_loop_labels
label_used	put_labelset_loop_labels)rX   r   generate_inner_evaluation_code
py_entriesr  r   old_loop_labelsold_error_labelr  label	old_labelrQ   s   &&         rR   r  'ScopedExprNode.generate_evaluation_code  s   ).)I&###4??+F+F+F*40

./
[0G0G0M0M0O[[HA###::)))ejjj%%e, \ *40JJ12 ..0..0&t, 	##D5 ^^L1
j!#'#3#3_"E!F!%c$*>*>*@/&R!S"T "TEu%%u%++D=i("T 	z"

-._-*rT   c                    V FK  pVP                   '       d&   VP                  V4       VP                  VR 4       K:  VP                  V4       KM  	  R# )r-  N)r  put_var_gotrefput_var_decref_setput_var_xdecref_clear)rX   r   r  r   s   &&& rR   r  %ScopedExprNode._generate_vars_cleanup  sD    E##E*''y9**51  rT   )r  rL   )r[   r\   r]   r^   r   r  r  r  r  r  r}  r  r  r  r_   r`   ra   rb   s   @@rR   r  r    sA      HJ O#*+X2 2rT   r  c            
         a  ] tR tRt o ]tRtRtRtRt	Rt
R.tR tRt]P                  ! ]P                   ! ]P                  ]P"                  ! R]P                  R4      .4      4      tR tR	 tR
 tR tR tR tR tR tRtV tR# )IteratorNodei  NFsequencec                    V P                   '       d   V P                   pV P                  P                  V4      V n        V P                  P                  P                  '       g'   V P                  P                  P
                  '       dD   V P                  P                  P                  '       g   V P                  P                  V n        EM)V P                  P                  P                  '       d1   \        V P                  V P                  R 7      P                  V4      # V P                  4       '       dY   V P                  P                  P                  ^ ,          P                  p\        V P                  VRR7      P                  V4      # V P                  P                  V4      V n        V P                  P                  \        \         39   d!   V P                  P#                  R4      V n        ^V n        V # )r  T)r  reversed!'NoneType' object is not iterable)r  r  r}  r   r  rX  r  r#  CppIteratorNoder   is_reversed_cpp_iteration	arg_tupler   r   r  r   r   r  r  )rX   r{   r  s   && rR   r}  IteratorNode.analyse_types  sQ   ???//C33C8MM'''4==+=+=+D+D+DMM&&000**DI]],,,"488dmmDRRSVWW++--}}..33A6::H"488hN\\]`aa MM<<SADM}}!!i%<< $ ? ?@c drT   zIterating over Python objectitc                   \        V P                  \        4      '       dK   V P                  P                  '       d/   \	        V P                  P                  P
                  4      ^8X  g   R# V P                  P                  pVP                  '       d   VP                  R8X  d   VP                  P                  '       g   R# V P                  P                  P
                  ^ ,          p\        V\        4      '       dI   VP                  P                  '       d-   VP                  P                  pVP                  P                  # R# )z
Returns True if the 'reversed' function is applied to a C++ iterable.

This supports C++ classes with reverse_iterator implemented.
Fr  )r   r  r  r  r   r   r  r   ry   r   r  CoercionNoder   r   r#  )rX   funcr   s   &  rR   r  &IteratorNode.is_reversed_cpp_iteration2  s     4==.99'''C0G0G0L0L,MQR,R}}%%<<<DII3::(((--))..q1C#|,,ggmmxx,,,rT   c                `    V P                   P                  V P                  ;'       g    T4      # rL   )r  r  r  r   s   &&rR   r  IteratorNode.type_dependenciesE  s#    }}..t/E/E#FFrT   c                T   V P                   P                  V4      pVP                  '       g   VP                  '       d   V# VP                  '       d=   VP
                  P                  R 4      pVe   VP                  P                  #  \        # VP                  '       d   V# \        # )begin)r  r   r  rX  r#  rp  r  r   return_typerx   r   )rX   r{   sequence_typer  s   &&  rR   r   IteratorNode.infer_typeH  s    005!!!]%9%9%9  '''!''..w7E zz--- !  &&&  rT   c           
     b   V P                   P                  pVP                  '       d   Q R4       hVP                  '       g   VP                  '       d   \        R4      hV\        \        39   pV'       g   V P                  '       d   Q R4       hVP                  '       * V n
        V P                  '       dK   VP                  RV P                   P                  4       : RV P                   P                  4       : R24       V'       g   V P                  '       Edt   VP                  V P                  4       : RV P                   P                  4       : RV P                  4       : R	24       VP                  P                  \         P"                  R R
7      V n        V P                  '       d   V\        J d   RpMRpVP                  V P$                  : RV: RV P                  4       : R	24       VP                  R4       VP                  VP'                  V P$                  V P(                  4      4       VP                  R4       VP                  RV P$                  ,          4       M"VP                  RV P$                  ,          4       V'       Egs   VP                  P                  V P*                  R R
7      V n        V P                  '       dV   VP                  RV P,                  ,          4       VP                  R4       VP/                  RV P$                  ,          4       VP                  V P                  4       : RV P                   P                  4       : RVP1                  V P                  4       V P(                  4      : 24       V P3                  V4       VP/                  V P,                   RV P                  4        R24       VP                  VP1                  V P,                  V P(                  4      4       V P                  '       d   VP                  R4       R# R# )Fz+Should have been changed to CppIteratorNodez#for in carray slice not transformedzBinternal error: reversed() only implemented for list/tuple objectszif (likely(PyList_CheckExact(z)) || PyTuple_CheckExact()) {r9  z; __Pyx_INCREF(r  r  __Pyx_PyList_GET_SIZE__Pyx_PyTuple_GET_SIZEr8  #if !CYTHON_ASSUME_SAFE_SIZE#endifz--%s;r  
%s = NULL;} else {z	%s = -1;  = PyObject_GetIter(rf  T = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(r   N)r  r   r#  r  rX  r   r   r   r  r  may_be_a_sequencer   r   r  r  r  r   r  counter_cnameerror_goto_if_negr   _func_iternext_typeiter_func_ptrputr   r<  )rX   r   r  is_builtin_sequencelen_funcs   &&   rR   r  !IteratorNode.generate_result_codeT  s   **%%%GGG5!!!]%9%9%9 EFF+	:/FF"}}}j&jj$%2%B%B!B!!!JJMM++-MM++-/0
 $"8"8"8JJ'') 
 "&!=!=,, "> "@D}}} I-6H7H

T-?-?4;;=YZ

9:

411$2D2DdhhOP

8$

7T%7%778

9t'9'99:""!%!=!=d>V>Vch!=!iD%%%

<$*<*<<=

:&t'9'99:JJ'')''txx@B C   &
 HH%%& '@@D@P?QQTV JJt..t/A/A488LM!!!JJsO "rT   c                (    VP                  R 4       R# z;;Nr  r  s   &&rR   generate_for_loop_header%IteratorNode.generate_for_loop_header      rT   c           
        V P                   '       g   Q R 4       hVR9   g   Q hRV RV P                  4        R2pRpV P                  P                  '       d   \	        V P                  P
                  4      pV P                  P                  f   TpRpM\\        V P                  P                  P                  \        4      '       d)   W`P                  P                  P                  ,          pRpV'       d&   VP                  RV P                   : R	V: R
24       MVP                  R4       VP                  R\        P                  : RV: R24       VP                  R4       VP                  VP                  \        P                  V P                  4      4       VP                  R4       VP                  RV P                   : R	\        P                  : R
24       VP                  R4       V P                  '       d   RMRpVR8X  dE   VP                  V RV P                  4        RV P                    RV P!                  4        R24       MVP                  R4       VP                  V RV P                  4        RV P                    R24       VP                  R4       VP                  V RV P                  4        RV P                    R24       VP                  R4       VP                  V V P                    R24       R# )z/internal error: counter_cname temp not preparedList__Pyx_Pyz
_GET_SIZE(rb  FNTif (z >= z) break;r  Py_ssize_t r9  r:  r  r  r   z--++z = __Pyx_PyList_GetItemRefFast(r  r  <#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFSz! = __Pyx_NewRef(PyTuple_GET_ITEM());#elsez = __Pyx_PySequence_ITEM()r  Tuple)r  r   r  r   r   r   r   r   r   r   r   r   quick_temp_cnamer  r   r  rt  )rX   	test_nameresult_namer   
final_sizesize_is_safe
item_countinc_decs   &&&&    rR   generate_next_sequence_item(IteratorNode.generate_next_sequence_item  sj   !!!T#TT!----	{*T^^5E4FaH
==000T]]//0J}}((0'
#DMM55EEsKK'--*C*C*S*SS
#JJ1C1CZPQJJsOJJ0G0GTUJJ56JJt--f.E.EtxxPQJJx JJ1C1CVE\E\]^JJsO---$TJJ->>>#$Bt'9'9&:"T=V=V=X<YY[]^ JJUVJJ+&GHXGYY[\`\n\n[oorstJJwJJ+&?@P?QQSTXTfTfSggijkJJx 

gYt112!45rT   c                   V P                   P                  pV P                  '       d    VP                  R V P                   R24       V\
        J dU   V P                  RW4       VP                  VP                  WP                  4      4       VP                  V\        4       R# V\        J dU   V P                  RW4       VP                  VP                  WP                  4      4       VP                  V\        4       R# V P                  '       d   VP                  RV P                  ,          4       VP                  RV P                  4       ,          4       V P                  RW4       VP                  R4       V P                  RW4       VP                  R4       VP                  VP                  WP                  4      4       VP                  R	4       VP                  R
4       VP                  V RV P                   RV P                  4        R24       VP                  RV,          4       VP                  R4       VP                  R4       VP                  VP!                  RV P                  4      4       VP                  R4       VP                  R4       VP                  R4       VP                  R4       VP                  R4       VP                  V\        4       R# )r  z < 0) break;r  Nr  zif (likely(!%s)) {z$if (likely(PyList_CheckExact(%s))) {r  r   z} else r  r9  r8  r  r  z&PyObject* exc_type = PyErr_Occurred();zif (exc_type) {zA!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)r  break;)r  r   r  r   r  r   r  r   r   r9  r   r   r  r  r   r  r   )rX   r  r   r  s   &&& rR   generate_iter_next_result_code+IteratorNode.generate_iter_next_result_code  s'   **===JJd001>?I%,,V[GJJt..{HHEFOOK8j(,,WkHJJt..{HHEFOOK8!!!JJ+d.@.@@AJJ=@PPQ,,V[GJJz",,WkHJJsOJJt..{HHEFHHY

3

k]#d&8&8%94>>;K:LBOP

)K78

;<

$%

4%%&ikokskstu

#$

3

8

3

3^4rT   c                   V P                   '       d&   VP                  P                  V P                   4       V P                  '       d-   VP                  P                  V P                  4       R V n        \        P                  W4       R # rL   )r  r  r  r  r   r#  r  s   &&rR   r#  IteratorNode.free_temps  s`    NN''(:(:;NN''(:(:;!%DD'rT   )r  r  r  r  r  r   )r[   r\   r]   r^   r   r   r  r  r  is_asyncr  r   r}  ri  r   r  r]  CFuncTypeArgr  r  r  r   r  r  r  r  r#  r_   r`   r  s   @rR   r  r    s      DMMHHO|H( 1K$--j.B.B!!##D**C*CTJ$/ 
&G
=~&6P$5L( (rT   r  c                   p   a  ] tR tRt o RtRtRtRtRtR.t	R t
R	 tR
 tR tR tR tR tR tR tRtV tR# )r  i  Nr  rN  TFr  c                .    V P                   '       g   R# R# )r  )r  end)rbeginrend)r  rW   s   &rR   get_iterator_func_names'CppIteratorNode.get_iterator_func_names  s    '+}}}L:LLrT   c                   V P                   P                  pVP                  '       d   VP                  pV P	                  4       w  r4VP
                  P                  V4      pVP
                  P                  V4      pVe9   VP                  P                  '       d   VP                  P                  '       d@   \        V P                  RV: RV P                   P                  : 24       \        V n        V # Ve9   VP                  P                  '       d   VP                  P                  '       d@   \        V P                  RV: RV P                   P                  : 24       \        V n        V # VP                  P                  pVP                  '       Ed[   VP                  R,          '       d   RV n        VP!                  V P                  RWvP                  P                  .4       f@   \        V P                  RV: RV P                   P                  : 24       \        V n        V # VP!                  V P                  RV.4      f@   \        V P                  RV: RV P                   P                  : 24       \        V n        V # VP!                  V P                  RV.4      f@   \        V P                  R	V: RV P                   P                  : 24       \        V n        V # Wpn        V # VP                  '       dB   WvP                  P                  8X  g    \        V P                  R
V: RV: R24       Wpn        V # \        V P                  RV: RV P                   P                  : R24       \        V n        V # )Nzmissing z() on 
cpp_localsr   !=z missing operator!= on result of r	  z missing operator++ on result of zmissing operator* on result of zincompatible types for z() and z()zresult type of z must be a C++ class or pointer)r  r   rX  rY  r$  rp  r  r  r   r   r   r2   r  r#  rs   extra_dereferencelookup_operator_for_types)rX   r{   r  
begin_nameend_namer  r!  	iter_types   &&      rR   r}  CppIteratorNode.analyse_types  s   **)33M#;;=
##**:6!!((2Mzz...::???$((J@R@RST"DIKKxx,,,88===$((Hdmm>P>PQR"DIKJJ**	!!!~~l++),&,,HH 4 457 ;?? dhhPZ\`\i\i\n\n op&	,,TXXti[IQdhhPZ\`\i\i\n\n op&	,,TXXsYKHPdhhz[_[h[h[m[m no&	!I  !5!55dhh*V^ _`!I  $((Zdfjfsfsfxfxyz"DIrT   c                   V P                   P                  pV P                  4       w  r4V P                   P                  4       '       dR   VP	                  V P                  4       : R V P                   P                  4       : V P                  : V: R24       R# TpVP                  '       d!   \        P                  ! VP                  4      pVP                  '       g$   VP                  P                  R,          '       d   RV n        VP                  P                  VRR7      V n        TP	                  V P                   : R VP                  '       d   RMR: V P                   P#                  4       : R	24       VP	                  V P                  4       : R V P                   : V P                  : V: R24       R# )
r9  z();Nr'  ->Fr  &rN  r:  )r  r   r$  r  r   r  cpp_attribute_opr$  r   r  rU  rX  r   rs   r  r  cpp_sequence_cnamer,  )rX   r   r  r+  r  	temp_types   &&    rR   r  $CppIteratorNode.generate_result_code+  sU   **446
 ==""$$ JJ$$&%%	   "	!!! #++M,G,GHIt//::<HH$(D! #'..">">yUZ">"[

#####C+MM))+
 	
 	

KKM##!!	
 	rT   c                H   V P                  4       w  r#TP                  R V P                  : V P                  4       : RV P                  ;'       g    V P
                  P                  4       : V P                  : V: RV P                  : V P                  4       : 2
4       R# )r  z != z(); ++N)r$  r  r)  r  r3  r  r2  )rX   r   r  r,  s   &&  rR   r  (CppIteratorNode.generate_for_loop_headerV  sv     224""KKM##==t}}';';'==!!""KKM 	rT   c                n    VP                  V: R V P                  : V P                  4       : R24       R# )z = *r:  N)r   r)  r  )rX   r  r   s   &&&rR   r  .CppIteratorNode.generate_iter_next_result_codec  s(    

#..' 	(rT   c                X    V P                   '       g   R # \        P                  W4       R # rL   )r3  r   r  r  s   &&rR   r  .CppIteratorNode.generate_subexpr_disposal_codei  s!    &&& //;rT   c                X    V P                   '       g   R # \        P                  W4       R # rL   )r3  r   r  r  s   &&rR   r  "CppIteratorNode.free_subexpr_tempsp  s!    &&& ##D/rT   c                    V P                   '       g+   \        P                  W4       \        P                  W4       \        P	                  W4       R # rL   )r3  r   r  r  r  r  s   &&rR   r  &CppIteratorNode.generate_disposal_codew  s:    &&& 33D?''3''3rT   c                    V P                   '       d&   VP                  P                  V P                   4       \        P	                  W4       R # rL   )r3  r  r  r   r#  r  s   &&rR   r#  CppIteratorNode.free_temps  s4    """NN''(?(?@D'rT   )r2  r3  r)  r   )r[   r\   r]   r^   r3  r2  r)  r  r  r   r$  r}  r  r  r  r  r  r  r#  r_   r`   r  s   @rR   r  r    s_      GH|HM.`)V(<04( (rT   r  c                   L   a  ] tR tRt o RtR tR tR tRR ltR t	R	 t
R
tV tR# )NextNodei  Tc                P    \         P                  WP                  4       Wn        R # rL   r  r  r   iteratorrX   rF  s   &&rR   r  NextNode.__init__      ll3 rT   c                    R # rL   rV   r   s   &&rR   r  NextNode.nogil_check  r  rT   c                8    V P                   P                  V4      # rL   )rF  r  r   s   &&rR   r  NextNode.type_dependencies  s    }}..s33rT   Nc           
        Vf   V P                   P                  V4      pVP                  '       g   VP                  '       d   VP                  # VP
                  '       dM   VP                  V P                  RV.4      P                  P                  p\        P                  ! VRR7      pV# \        V P                  V P                   P                  \        V P                  R\        P                  R7      R7      pVP                  V4      # )Nr   Tremove_fakerefPY_SSIZE_T_MAXrn  r  )rF  r   rX  r  rY  r#  r*  r   r   r  r   remove_cv_refr  r  r  r  )rX   r{   iterator_typer   fake_index_nodes   &&&  rR   r   NextNode.infer_type  s      MM44S9M=#9#9#9 ***'''55dhhm_UZZffI"004PI (]]++dhh.>#-#?#?ABO
 #--c22rT   c                ,   V P                  WP                  P                  4      pV P                  P                  P                  '       dC   VP                  '       g1   VP                  ;'       g    \
        V n        V P                  W!4      # W n        V # rL   )r   rF  r   rx   r   r   r`  )rX   r{   r   s   && rR   r}  NextNode.analyse_types  sk    OOC););<	==))))2G2G2G "11CC^DI>>)11!IKrT   c                Z    V P                   P                  V P                  4       V4       R # rL   )rF  r  r  r  s   &&rR   r  NextNode.generate_result_code  s    44T[[]DIrT   )rF  r   rL   )r[   r\   r]   r^   r  r  r  r  r   r}  r  r_   r`   r  s   @rR   rC  rC    s1      G!43$	J JrT   rC  c                   N   a  ] tR tRt o R.tRt]t^tRt	R t
R tR tR tR	tV tR
# )AsyncIteratorNodei  r  TFc                    \         # rL   r   r   s   &&rR   r   AsyncIteratorNode.infer_type      rT   c                :   V P                   '       d   V P                   pV P                  P                  V4      V n        V P                  P                  P                  '       g7   \        V P                  R 4       V P                  P                  V4      V n        V # )z*async for loops not allowed on C/C++ types)r  r  r}  r   rx   r   r   r  r   s   &&rR   r}  AsyncIteratorNode.analyse_types  sj    ???//C33C8}}!!---$((HI MM<<SADMrT   c           
     \   VP                   P                  \        P                  ! R R4      4       VP	                  V P                  4       : RV P                  P                  4       : RVP                  V P                  4       V P                  4      : 24       V P                  V4       R# )	AsyncIterCoroutine.cz  = __Pyx_Coroutine_GetAsyncIter(rf  N)r   r   r   r   r   r  r  r   r   r   r<  r  s   &&rR   r  &AsyncIteratorNode.generate_result_code  w    ))+*A*A+}*]^

KKMMM##%##DKKM488<> 	? 	T"rT   c                (    VP                  R 4       R# r  r   r  s   &&rR   r  *AsyncIteratorNode.generate_for_loop_header  r  rT   r  N)r[   r\   r]   r^   r   r  r   r   r  r  r   r}  r  r  r_   r`   r  s   @rR   r[  r[    s;      |HHDGO# rT   r[  c                   @   a  ] tR tRt o ]t^tR tR tR t	R t
RtV tR# )AsyncNextNodei  c                P    \         P                  WP                  4       Wn        R # rL   rE  rG  s   &&rR   r  AsyncNextNode.__init__  rI  rT   c                    \         # rL   r]  r   s   &&rR   r   AsyncNextNode.infer_type  r_  rT   c                    V # rL   rV   r   s   &&rR   r}  AsyncNextNode.analyse_types  r&  rT   c           
     \   VP                   P                  \        P                  ! R R4      4       VP	                  V P                  4       : RV P                  P                  4       : RVP                  V P                  4       V P                  4      : 24       V P                  V4       R# )rc  rd  z! = __Pyx_Coroutine_AsyncIterNext(rf  N)r   r   r   r   r   r  rF  r   r   r   r<  r  s   &&rR   r  "AsyncNextNode.generate_result_code  rf  rT   )rF  N)r[   r\   r]   r^   r   r   r  r  r   r}  r  r_   r`   r  s   @rR   rj  rj    s*      DG!# #rT   rj  c                   B   a  ] tR tRt o RR.tR.tRtRtR tR t	R	t
V tR# )
WithExitCallNodei   r   
await_expr	with_statTNc                    V P                   P                  V4      V n         V P                  '       d!   V P                  P                  V4      V n        \        P                  V n        R V n        V # r1  )r   r}  ru  r   r  r   r  r   s   &&rR   r}  WithExitCallNode.analyse_types  sP    II++C0	???"oo;;C@DO**	rT   c                J   V P                   '       d-   VP                  R V P                  P                  ,          4       V P                  P                  V4       VP                  P                  \        RR7      pVP                  V P                  4       VP                  P                  \        P                  ! RR4      4       VP                  V: RV P                  P                  : RV P                  P                  4       : R24       VP!                  V P                  P                  \        R7       V P                  P#                  V4       V P                  P%                  V4       VP                  VP'                  W P                  4      4       VP)                  V\        4       V P*                  '       d   V P*                  P                  WR	R
7       VP                  V: RV P*                  P-                  4       : R24       V P*                  P/                  V4       V P*                  P%                  V4       V P0                  '       d9   V P3                  V4       VP                  V P                  4       : RV: R24       VP!                  V\        R7       V P0                  '       d+   VP5                  V P                  V P                  4       4       VP                  P7                  V4       V P                   '       d   VP                  R4       R# R# )	if (%s) {Fr  PyObjectCallr   = __Pyx_PyObject_Call(r  z, NULL);rS  T)source_cnamedecref_sourcer9  r:   = __Pyx_PyObject_IsTrue(r  r   N)test_if_runr   rv  exit_varr   r  r  r  r   r   r   r   r   r   r   r  r  r  r#  r   r9  ru  r   r  r  r  rC  r  )rX   r   
result_vars   && rR   r  )WithExitCallNode.generate_evaluation_code  s#   JJ{T^^%<%<<=		**40^^11.U1S
dhh))+*A*A.+0 	1

NN##II  	! 	dnn55NK		((.		T"

4**:xx@A
N3???OO44Tbf4gJJZ1J1J1LMNOO99$?OO&&t,%%d+JJDKKM:VWj~>!!$((DKKM:##J/JJsO rT   )r   ru  r  r   )r[   r\   r]   r^   r   uptree_ref_attrsr  ru  r}  r  r_   r`   r  s   @rR   rt  rt     s2      %H#}KJ% %rT   rt  c                   D   a  ] tR tRt o ]3R ltR tR tR tR t	Rt
V tR# )	ExcValueNodei=  c                4    \         P                  WVR 7       R# rS  N)r  r  )rX   r   r   s   &&&rR   r  ExcValueNode.__init__B  s    5rT   c                    Wn         R # rL   var)rX   r  s   &&rR   set_varExcValueNode.set_varE  s    rT   c                    V P                   # rL   r  rW   s   &rR   r  "ExcValueNode.calculate_result_codeH  s    xxrT   c                    R # rL   rV   r  s   &&rR   r  !ExcValueNode.generate_result_codeK  r  rT   c                    V # rL   rV   r   s   &&rR   r}  ExcValueNode.analyse_typesN  r&  rT   r  N)r[   r\   r]   r^   r   r  r  r  r  r}  r_   r`   r  s   @rR   r  r  =  s(     
 "0 6 rT   r  c                   ^   a  ] tR tRt o . tRR ltR tR tR tR t	R t
R	 tR
 tR tRtV tR# )TempNodeiR  Nc                    \         P                  W4       W n        VP                  '       d   \        V n        ^V n        R# r  N)r   r  r   rx   r   rC  r  )rX   r   r   r{   s   &&&&rR   r  TempNode.__init__]  s0    $$	 .DrT   c                    V # rL   rV   r   s   &&rR   r}  TempNode.analyse_typesd  r&  rT   c                    R V n         R# r  r  r   s   &&rR   rw  #TempNode.analyse_target_declarationg  	    rT   c                    R # rL   rV   r  s   &&rR   r  TempNode.generate_result_codej  r  rT   c                ^    VP                   P                  V P                  R R7      V n        R# )Tr  N)r  r  r   
temp_cnamer  s   &&rR   allocateTempNode.allocatem  s!    ..66tyyT6RrT   c                ^    VP                   P                  V P                  4       R V n        R # rL   )r  r  r  r  s   &&rR   releaseTempNode.releasep  s    ##DOO4rT   c                4     V P                   #    Q R4       h; i)Fz-Remember to call allocate/release on TempNode)r  rW   s   &rR   r  TempNode.resultt  s#    	??"	III5s    	c                    R # rL   rV   r  s   &&rR   r  TempNode.allocate_temp_result|  r  rT   c                    R # rL   rV   r  s   &&rR   r  TempNode.release_temp_result  r  rT   )r  r  rC  r  r   rL   )r[   r\   r]   r^   r   r  r}  rw  r  r  r  r  r  r  r_   r`   r  s   @rR   r  r  R  s?      HS rT   r  c                   &   a  ] tR tRt o R tRtV tR# )
PyTempNodei  c                P    \         P                  W\        P                  V4       R # rL   )r  r  r   r   )rX   r   r{   s   &&&rR   r  PyTempNode.__init__  s    $Z%>%>DrT   rV   Nr[   r\   r]   r^   r  r_   r`   r  s   @rR   r  r    s     E ErT   r  c                   F   a  ] tR tRt o . tR	R ltR tR tR tR t	Rt
V tR# )
RawCNameExprNodei  Nc                L    \         P                  WVR 7       Ve	   W0n        R# R# r  )r   r  r   )rX   r   r   r   s   &&&&rR   r  RawCNameExprNode.__init__  s%    $$/J rT   c                    V # rL   rV   r   s   &&rR   r}  RawCNameExprNode.analyse_types  r&  rT   c                    Wn         R # rL   r   )rX   r   s   &&rR   	set_cnameRawCNameExprNode.set_cname  s    
rT   c                    V P                   # rL   r  rW   s   &rR   r  RawCNameExprNode.result  r)  rT   c                    R # rL   rV   r  s   &&rR   r  %RawCNameExprNode.generate_result_code  r  rT   r  rN  )r[   r\   r]   r^   r   r  r}  r  r  r  r_   r`   r  s   @rR   r  r    s(     H
 rT   r  c                   D   a  ] tR tRt o ]tRtRtR.tR t	R t
R tRtV tR	# )
JoinedStrNodei  TzString concatenationvaluesc                    V P                    Uu. uF"  q"P                  V4      P                  V4      NK$  	  upV n         V # u upi rL   )r  r}  r  )rX   r{   vs   && rR   r}  JoinedStrNode.analyse_types  s9    MQ[[Y[s+>>sC[Y Zs   (Ac                    R # r  rV   rW   s   &rR   r  JoinedStrNode.may_be_none      rT   c           
     N	   VP                  V P                  4       \        V P                  4      pV^ 8  p\	        4       p^pV P                   F  p\        V\        4      '       d   \        WVP                  4       4      pK4  \        V\        4      '       d:   VP                  R8w  d)   VP                  P                  P                  '       d   K  \        V\        4      '       d   K  VP                  V4       K  	  . p/ p\!        V4      .p	V P                   F  pVP#                  V4       \        V\        4      '       d    \!        \        VP                  4      4      p
M=RVP%                  4        R2p
Wd9   d$   V	P'                  RVP%                  4        R24       W9   d   W;;,          ^,          uu&   K  VP'                  V
4       ^W&   K  	  V'       dB   VP(                  P+                  \,        P.                  ! \,        P0                  V4      RR7      pMVP(                  P+                  \,        P2                  ! \,        P0                  4      RR7      pVP5                  RW3,          4       VP5                  RV,          4       VP5                  R	VP7                  V P                  4      ,          4       VP5                  R
4       \9        V P                  4       F-  w  rVP5                  RWVP%                  4       3,          4       K/  	  V Uu. uF  pW,          ^8  d   V RW,           2MTNK!  	  ppVP                  V P                  4       V P;                  V4       VP<                  P?                  \@        PB                  ! RR4      4       VP5                  RV PE                  4       VVRPG                  V4      RPG                  V	4      3,          4       V'       g   VP5                  RV,          4       VP(                  PI                  V4       VP5                  VPK                  V P%                  4       V P                  4      4       V PM                  V4       V P                   F%  pVPO                  V4       VPQ                  V4       K'  	  R# u upi )    cz__Pyx_PyUnicode_GET_LENGTH(rb  z__Pyx_PyUnicode_MAX_CHAR_VALUE(Fr  z7%s = (PyObject **) PyMem_Calloc(%d, sizeof(PyObject*));r  zPyErr_NoMemory(); %sr   z%s[%d] = %s; * JoinPyUnicodeStringTools.cz*%s = __Pyx_PyUnicode_Join(%s, %d, %s, %s); +  | zPyMem_Free(%s);N))r   r   r   r  setr   rW  r8  r:  FormattedValueNodec_format_specr   r   r  	CloneNodeaddr   r  r   r  r  r  r   c_array_typer   r  r   r   	enumerater  r   r   r   r   r  r  r  r   r<  r  r#  )rX   r   	num_itemsuse_stack_memoryunknown_nodesmax_char_valuer   length_partscountscharval_partslength_partvalues_arrayiparts   &&            rR   r  &JoinedStrNode.generate_evaluation_code  s   dhh$	$r>KKD$,,!$^5N5N5P!QT#566&&#-$**//2L2L2LD),,!!$'   ^,-KKD))$/$,,!#djj/2 !<DNN<L;MQO(!((+J4>>K[J\\])^_$#q(###K0&'#  " >>77''
(A(A9MZ_ 8 aL  >>77##J$=$=>5 8 RLJJPT`SllmJJ-<=JJ-0IIJJJsO -GAJJ~$..:J(KKL .
 %
$ +1,*:tfC~&D$ 	 

 	dhh!!$'))+*A*A/Sb*cd

?KKMJJ|$ JJ}%C
 
 	  JJ(<78##L1

4**4>>+;TXXFGT"KKD''-OOD!  3
s   %R")r  N)r[   r\   r]   r^   r   r   r  ri  r   r}  r  r  r_   r`   r  s   @rR   r  r    s3      DG(KzHQ" Q"rT   r  c                   r   a  ] tR tRt o RR.t]tRtRtRt	RRR	R
RRRR/P                  tR tR tR tRtV tR# )r  i  r   format_specTNzString formattingsPyObject_StrrPyObject_RepraPyObject_ASCIId__Pyx_PyNumber_Longc                    R # r  rV   rW   s   &rR   r  FormattedValueNode.may_be_none#  r  rT   c                j   V P                   P                  V4      V n         V P                   P                  P                  4       pV P                  '       d   V P                  P
                  '       dg   V P                  '       d   V P                  P                   MVP                  pV P                   P                  P                  WR 7      '       d   W0n        V P                  '       d0   V P                  P                  V4      P                  V4      V n        V P                  f   V P                   P                  V4      V n         V P                  '       gZ   V P                  '       d   V P                  R8X  d7   V\        J d-   V P                   P                  4       '       g   V P                   # V # ))r  r  )r   r}  r   r  r  r   default_format_speccan_coerce_to_pystringr  r  conversion_charr   r  )rX   r{   resolved_typer  s   &&  rR   r}   FormattedValueNode.analyse_types'  s2   ZZ--c2


//14#3#3#E#E#E6:6F6F6FD,,22MLmLmMzz55c5UU%2"#//==cBUUVYZD%66s;DJ###T-A-A-ATEYEY]`E` L09O9O9Q9Q::%rT   c                   V P                   e   V P                  P                  P                  '       g   V P                  P                  P	                  V P                  P                  4       WP                   4      pVP                  V P                  4       : RV: RVP                  V P                  4       V P                  4      : 24       V P                  V4       R # V P                  P                  4       pV P                  P                  \        J ;'       d     V P                  P                  4       '       * pV P                  '       d   RpV P                  P                  4       pM!RpVP                  \        P                   4      pV P"                  pVR8X  d   V'       d   R pV'       dh   V P%                  V4      pVf   Q RV,          4       hV: RV: R2pVP&                  P)                  \*        P,                  ! R	R
4      4       VR,          pMsV P                  '       d2   VP&                  P)                  \*        P,                  ! RR
4      4       M0VP&                  P)                  \*        P,                  ! RR
4      4       VP                  V P                  4       : RV: RV: RV: RVP                  V P                  4       V P                  4      : 2	4       V P                  V4       R # )Nr9  r  __Pyx_PyObject_Format__Pyx_PyObject_FormatSimpler  z(invalid conversion character found: '%s'r8  rb  PyObjectFormatAndDecrefr  	AndDecrefPyObjectFormatPyObjectFormatSimpler  rf  )r  r   r   rx   convert_to_pystringr  r   r   r   r<  r   r   r  r  r  r   empty_unicoder  find_conversion_funcr   r   r   r   )	rX   r   convert_func_callvalue_resultvalue_is_unicodeformat_funcr  r  fns	   &&       rR   r  'FormattedValueNode.generate_result_code9  sD   )$**//2M2M2M $

 C C

!!#T+=+=!?JJ!''txx@B C   &zz++-::??l:[[4::CYCYC[?[1K**446K 8K33F4H4HIK..c!&6"O**?;B>_#MP_#__>')<8L--''(A?SU;&K--''(8/JL --''(>PR 	

KKM##DKKM488<> 	? 	T"rT   )r  r  r   )r[   r\   r]   r^   r   r   r   r  r  ri  rr   r   r  r}  r  r_   r`   r  s   @rR   r  r    sb      'HDGM%K 	^_"	
 
c $/# /#rT   r  c                   N   a  ] tR tRt o Rt]P                  tR tR t	R t
RtV tR# )ParallelThreadsAvailableNodeiq  a  
Note: this is disabled and not a valid directive at this moment

Implements cython.parallel.threadsavailable(). If we are called from the
sequential part of the application, we need to call omp_get_max_threads(),
and in the parallel part we can just call omp_get_num_threads()
c                    R V n         V # r1  r  r   s   &&rR   r}  *ParallelThreadsAvailableNode.analyse_types|      rT   c                8   VP                  R 4       VP                  RV P                  ,          4       VP                  RV P                  ,          4       VP                  R4       VP                  RV P                  ,          4       VP                  R4       R# )#ifdef _OPENMPz2if (omp_in_parallel()) %s = omp_get_max_threads();z else %s = omp_get_num_threads();r  z%s = 1;r  Nr   r  r  s   &&rR   r  1ParallelThreadsAvailableNode.generate_result_code  so    

#$

G<@NNK 	L

5FG

7

9t~~-.

8rT   c                    V P                   # rL   r  rW   s   &rR   r  #ParallelThreadsAvailableNode.result      ~~rT   r  Nr[   r\   r]   r^   r  r   r  r   r}  r  r  r_   r`   r  s   @rR   r  r  q  s+        D
 rT   r  c                   N   a  ] tR tRt o Rt]P                  tR tR t	R t
RtV tR# )ParallelThreadIdNodei  z'
Implements cython.parallel.threadid()
c                    R V n         V # r1  r  r   s   &&rR   r}  "ParallelThreadIdNode.analyse_types  r  rT   c                    VP                  R 4       VP                  RV P                  ,          4       VP                  R4       VP                  RV P                  ,          4       VP                  R4       R# )r  z%s = omp_get_thread_num();r  r  r  Nr  r  s   &&rR   r  )ParallelThreadIdNode.generate_result_code  sR    

#$

/$..@A

7

9t~~-.

8rT   c                    V P                   # rL   r  rW   s   &rR   r  ParallelThreadIdNode.result  r  rT   r  Nr  r  s   @rR   r  r    s+        D
 rT   r  c                   2   a  ] tR tRt o R tR tR tRtV tR# )_IndexingBaseNodei  c                    V P                   P                  4       ;'       g)    V P                   P                  \        \        \
        39   # rL   )r  r  r   r   r   r    rW   s   &rR   r  _IndexingBaseNode.is_ephemeral  s>     yy%%' 6 6499>>*n>6 ,6 	6rT   c                z    V P                   P                  4       ;'       d    V P                  P                  4       # rL   )r  r  r  r~  rW   s   &rR   r  "_IndexingBaseNode.check_const_addr  s*    yy))+HH

0F0F0HHrT   c                    V P                   P                  '       d,   V P                   P                  P                  '       d   R #  R# V P                   P                  '       d   R# R# r  )r   r$  rU  r  rX  rW   s   &rR   r
  _IndexingBaseNode.is_lvalue  sQ     99!!!yy&&/// 0  YY rT   rV   N)	r[   r\   r]   r^   r  r  r
  r_   r`   r  s   @rR   r  r    s     
6I rT   r  c                      a  ] tR tRt o RR.tRtRtRtR tR t	R	 t
R
 tR tR tR tR tR tR tR tR%R ltR tR tR tR tR tR tR tR&R ltR tRtR tR tR t R  t!R'R! lt"R" t#R(R# lt$R$t%V t&R# ))r  i  r  r  NTFc                r    V P                   P                  V P                  P                  ,          V n        R # rL   )r  r   r  rW   s   &rR   rI  #IndexNode.calculate_constant_result  s#    #yy889S9STrT   c                    V P                   P                  V4      pV P                  P                  V4      p W#,          #   \         d   pT P	                  T4        R p?R # R p?ii ; irL   )r  rU  r  r  rZ  )rX   rT  r  r  rY  s   &&   rR   rU  IndexNode.compile_time_value  sX    yy++D1

--d3	-; 	-))!,,	-s   A   A'A""A'c                   V P                   pVP                  4       ;'       dk    V P                  P                  4       ;'       dI    VP                  ;'       d5    VP                  P                  ;'       g    VP                  P
                  # rL   )r  r  r  r   rX  r  rX   r  s   & rR   r  IndexNode.is_simple  st    yy  K KTZZ%9%9%; K KIIK K#'99#3#3#I#Ityy7I7I	LrT   c                (   V P                   P                  pV'       da   VP                  '       d   R # V\        \        \
        39   d   R # \        V P                  \        4      '       d   VP                  '       d   R # \        P                  V 4      # r  )r  r   r  r   r   r    r   r  	SliceNoder  r   r  rX   rY  s   & rR   r  IndexNode.may_be_none  sf    IINN	"""\:~FF$**i00,,, !##D))rT   c                    R # rL   rV   r   s   &&rR   rw  $IndexNode.analyse_target_declaration  r  rT   c                @   V P                   P                  4       pVEec   VR9   Ed[   V P                  P                  V4      pVf'   \	        V P                   P
                  RV R24       R # VR8X  d   \        P                  ! V4      # VR8H  pV'       * pVP                  '       d   VP                  '       d+   V'       d!   \	        V P                   P
                  R4       RpVP                  '       d+   V'       d!   \	        V P                   P
                  R4       RpVP                  pVP                  '       d(   \	        V P                   P
                  RV R	V R
24       \        P                  ! W4V'       * R7      # V P                   P                  V4      pV'       Ed   VP                  '       g   VP                  '       dv   V P                  P                   '       d   V P                  P"                  pMV P                  .p\$        P&                  ! V P
                  VR R7      pVP)                  WR7      # V P                  P*                  '       g   V P                  P                   '       d   ^RIHp VP1                  VP3                  VP4                  P6                  4      4       V P                  P*                  '       d   V P                  .M\9        V P                  P"                  4      p	\        P:                  ! W8P=                  W4      4      # VP>                  '       gX   V P                  PA                  V4      p
V
e#    \C        V
4      p
\        PD                  ! W:4      # \	        V P
                  R4       R #   \F        \H        3 d     L+i ; i)Npointerconstzinvalid use of 'z', argument is not a typezDuplicate 'const'TzDuplicate 'volatile'z(Cannot declare memory view variable as 'z'. Did you mean 'z[item_type][:]' ?)r  is_volatile)r   positional_argskeyword_args)rY  rO  z*Array size must be a compile time constant)r4  r5  volatile)%r  r  r  r  r   r   r   r  rV  r  r6  rW  r  c_const_or_volatile_typer#  python_type_constructor_namer   r   r   TemplatedTypeNodeanalyser   rN  rP  r   get_view_utility_coder  shared_utility_qualified_namer  MemoryViewSliceTypeget_axes_specsrx   rU  r   
CArrayTyper   r   )rX   r{   modifierrY  r  r6  template_values	type_noderP  axesr  s   &&         rR   r  IndexNode.analyse_as_type  s   99002H0P$P

2237I diimm'7zAZ%[\9$!**955  7*H&,K(((%%%diimm-@A#H((("diimm-CD"&K%22	+++diimm@
J[\d[eevwy66h,H H II--c2	9%%%)O)O)O::555&*jjooO'+zzlO!33$3!%'	 !(((BB$$$

(J(J(J($$44AA
 (,zz':':':

|TZZ__@U!55iAZAZ[^Aeff***

55c:$G #E
  *44YFFdhh LM '	2 s   N	 	NNc                B   . pT pVP                   '       d   VP                  P                  V4      pV'       dX   VP                  '       dF   VP                  '       d4   TP                  VP                  4       '       d   R MVP                  4       VP                  pK  V# )typing.Optional)r  r  r  r;  modifier_namer  allows_noner  )rX   r{   r  modifier_nodemodifier_types   &&   rR   analyse_pytyping_modifiers$IndexNode.analyse_pytyping_modifiers?  s     	((()..>>sCM-"L"L"L%333  m6O6O6Q6Q!2WdWrWrs)//MrT   c                x    V P                   P                  V4      V P                  P                  V4      ,           # rL   )r  r  r  r   s   &&rR   r  IndexNode.type_dependenciesM  s+    yy**3/$**2N2Ns2SSSrT   c           	        V P                   P                  V4      pV P                  P                  '       dm   VP                  '       d   \
        # VP                  '       d   \        # V\        \
        \        \        \        39   d   V# VP                  '       d   V# \        # V P                  P                  V4      pV'       d   VP                  '       g"   \        V P                  \        4      '       Ed   V\        J d   \         P"                  # V\        J g   V\
        J d   \         P$                  # V\        \        \&        39   d+   \)        WP                   V P                  VR 7      pVe   V# EMVP*                  '       g   VP,                  '       d   VP.                  # VP0                  '       d   \        V P                  \        4      '       d   V P                  P3                  4       '       d_   V P                  P4                  pV^ 8  d   WRP6                  ,          p^ Tu;8:  d   VP6                  8  d   M MVP8                  V,          # \;        VP8                  4      p\=        V4      ^8X  d   VP?                  4       # MsVP                  '       db   VP@                  ^ 8X  d    VP@                  ^8X  d   VPB                  # \         PD                  ! VPB                  VPF                  R,          4      # V P                  PH                  '       d   VP                  '       d|   TpV P                  PJ                   F]  pVP                  '       g    ML\M        V PN                  \Q        V P                   PN                  VR7      VR7      P                  V4      pK_  	  V# VPR                  '       d_    ! R R4      p	V	! V PN                  VR7      V	! V PN                  VR7      .p
VPU                  RV
4      pVe   VPV                  PX                  # \[        V4      '       d5   \[        V4      '       d$   V P                  V3p\]        \_        W,.4      4      # V\        J d   V# \        # )r   r  rS  r  c                   &   a  ] tR tRt o R tRtV tR# ))IndexNode.infer_type.<locals>.FakeOperandi  c                <    V P                   P                  V4       R # rL   )__dict__update)rX   r  s   &,rR   r  2IndexNode.infer_type.<locals>.FakeOperand.__init__  s    MM((.rT   rV   Nr  r  s   @rR   FakeOperandrU    s     / /rT   rZ  )r   r   [])0r  r   r  r   r  r   r  r   r    r   r   r  r   rm  r   r  r   r   r   r   r   rX  r  rY  r  r   r   rj  r  r  r   r   ndimri  r@  rF  r   r   r  r   r   r#  lookup_operatorr   r  r<   rH   rB   )rX   r{   rY  
index_typer   r  r   r  r  rZ  operands
index_funcindex_with_types   &&           rR   r   IndexNode.infer_typeP  s_   II((-	::"""!!+++##|ZT^__  ---   &%ZZ**3/
*+++z$**g/N/NL( "000n,	Z0G!...z9h??4DJJD	($$ )!!!Y%7%7%7 ***$$$DJJ)H)H::1133 JJ66Eqy/E2INN2(33E:: !5!56
z?a'%>>++ (--->>Q&>>Q&$??*%99)//9>>Z\K]^^::---)2N2N2N%MZZ__$777 )$(($))--Vc9d01!33=:c?  % %$!!!/ / y9z:H ,,T8<J%!2229%%/**E*E#zz:6O4Y@QRSS $ rT   c                h    V P                   P                  V4      V n         V P                  VR R7      # )Tgetting)r  r}  analyse_base_and_index_typesr   s   &&rR   r}  IndexNode.analyse_types  s.    II++C0	00d0CCrT   c                T   V P                   P                  V4      V n         V P                  VR R7      pVP                  P                  '       d   \        V P                  R4       W J d>   VP                  4       '       g(   \        V P                  RVP                  ,          4       V# )T)settingzAssignment to const dereference%Assignment to non-lvalue of type '%s')r  r}  rf  r   r  r   r   r
  r  s   && rR   r  IndexNode.analyse_target_types  sz    II++C0	00d0C99$((=>< 0 0$((CdiiOPrT   c                   V P                   P                  P                  '       d   \        P                  V n        V # V P
                  P                  pVP                  R ,          '       gS   V'       d6   \        V P
                  P                  V P
                  P                  4       M\        V P
                  4       V'       gq   \        V P
                  \        4      '       dQ   \        P                  ! V P
                  P                  4      '       d!   V P
                  P!                  V4      V n        V P                   P                  P"                  pV'       g   \        V P                   \$        4      '       g	   V'       d   V P                   P                  P&                  '       gM   V P                   P                  P(                  '       gG   V P                   P                  P*                  '       g!   V P                   P!                  V4      V n         V P-                  W4      pVe   V# VP.                  V n        V P                   P                  pVP0                  '       Eg   V P
                  P3                  V4      V n        V P
                  P                  V n        V P4                  P6                  '       d   V P4                  P8                  V n        VP:                  '       d   V'       d   \=        V P>                  R^R7       M'V P
                  P@                  R9   d   V P                   # V P                   P!                  V4      V n         V P                   P                  pVPB                  '       d   V PE                  WW#4      # VP(                  '       g   VP*                  '       d   V PG                  W4      # VPH                  '       d   V PK                  W4      # VP0                  '       d   V PM                  V4      # VPN                  '       d   V PQ                  WV4      # \S        V P>                  RV,          4       \        P                  V n        V # )
wraparoundz%cannot assign to Unicode string indexr   z'Attempting to index non-array type '%s')r   r~  )*r  r   rd  r   r2   r  r   rs   r   r   r   r   r  r   long_literalr   r  r  rV  r  rX  r  analyse_as_buffer_operationr   r  r}  original_index_typer$  rU  r  r   r   r   rx   analyse_as_pyobjectanalyse_as_c_arrayr#  analyse_as_cppanalyse_as_c_functionr  analyse_as_c_tupler   )rX   r{   re  ri  r   is_memslicereplacement_noderY  s   &&&&    rR   rf  &IndexNode.analyse_base_and_index_types  s    99>>""" #--DIK::&&~~l++&tzz'7'7I&tzz2 Jtzz7;;@R@RSWS]S]ScSc@d@d66s;DJiinn77
499i @ @Hyy~~'''		0E0E0EI`I`I` II88=	;;CI'##YY
IINN	%%%11#6DJ'+zzD$''444+/+C+C+Q+Q(((( DHH&MUVWZZ//7:99$ II88=	 IINN	   ++C7LL!3!3!3**399###&&s44###--c22   **3AA$((; #--DIKrT   c                   V P                   P                  pV P                  P                  P                  '       dL   V\        JdB   \        V P                  R ^R7       V P                  P                  V4      V n        ^V n        EMV P                  P                  P                  '       EdF   V\        JEd;   V'       d   VP                  R,          '       g   V\        \        \        39   d   V P                  P                  P                  '       du   VP                  R,          '       d\   \        V P                  \         4      '       dD   V P                  P#                  4       '       d$   V P                  P$                  ^ 8  d	   ^ V n        M^V n        V P                  P'                  \(        P*                  V4      P-                  V4      V n        V P.                  P1                  V4       M'V P                  P                  V4      V n        ^V n        V'       * ;'       d!    V P                  P                  P                  pV'       d"   V\2        J d   \(        P4                  V n        EMLV'       dG   V\        \6        39   d6   V'       d   \(        P8                  V n        EM\(        P:                  V n        MV'       d(   V\6        \        \2        \        \        39   d   WPn        MRpV'       d5   V\        \        39   d$   \=        WP                   V P                  VR7      pM3V P                   P>                  '       d   \=        WP                   VR7      pV\        \        \        39   d!   V P                   PA                  R4      V n         Ve   VPB                  '       g   \D        V n        MWpn        V PG                  W4       V # )zItem lookup of unicode character codes now always converts to a Unicode string. Use an explicit C integer cast to get back the previous integer lookup behaviour.r   boundscheckrm  NrS  &'NoneType' object is not subscriptable)$r  r   r  r  r   r   r   r  r  rm  rs   r   r   r    signedr   r  r   r   r`  r   r  r  rp  create_to_py_utility_coder   r   r   r   r  r   r   r  rx   r   wrap_in_nonecheck_node)rX   r{   r   re  ri  rY  is_int_indexingr   s   &&&&&   rR   rq  IndexNode.analyse_as_pyobject  s   IINN	::??***y	/IDHHhopr 66s;DJDLZZ__###	(BNN=99"y*n&MM!ZZ__333 #| < <'

G<<!ZZ;;==$**B\B\`aBa  --j.J.JCPaabefDJ$$>>sC66s;DJDL&,AA4::??+A+AyL8 #11DI~z.J!J&33	 '11	)
NLR[]g'hh!II9J0G#G4S))TZZZcd	%%%4S))iX	Y
I>> II778`a	 	(=(=(= +	%	##C1rT   c                R   V P                   P                  pVP                  V n        V P                  P                  '       d&   \        P
                  ! V P                  4      V n        V'       d	   W0n        V # V P                  P                  P                  '       d2   V P                  P                  \        P                  V4      V n        V # V P                  P                  P                  '       g2   \        V P                  R V P                  P                  ,          4       V # )zInvalid index type '%s')r  r   rY  r#  r   CReferenceTyper  rx   r`  r  rm  r   r   )rX   r{   r   rY  s   &&& rR   rr  IndexNode.analyse_as_c_array=  s    IINN	''	99!!!"11$))<DI!I
 	 ZZ__(((--j.J.JCPDJ  '''$((5

GHrT   c                   V P                   P                  pVP                  R V P                   V P                  .4      pVfR   \	        V P
                  RV: RV P                  P                  : R24       \        P                  V n        RV n        V # VP                  pVP                  '       d   VP                  pVP                  V n        VP                  V n        V P                  '       dG   V'       g   RV n        \        V 4      '       d'   VP                  \         P"                  ! RR4      4       V P                  P%                  VP&                  ^ ,          P                  V4      V n        VP(                  V n        V'       dD   VP(                  P*                  '       g(   \	        V P
                  RV P                  ,          4       V # )	r[  z
Indexing 'z ' not supported for index type 'r  r  TCppExceptionConversionr  z#Can't set non-reference result '%s')r  r   r]  r  r   r   r   r2   r  rX  rY  r   r   r  r   r   r   r   r`  r   r  r$  )rX   r{   ri  rY  r  	func_types   &&&   rR   rs  IndexNode.analyse_as_cppJ  sN   IINN	&&tdii-DE$((QZ\`\f\f\k\klm"--DI(DKMM	!++I(88(88#-d33$$[%<%<=UWg%hiZZ)))..*;*@*@#F
))	900===$((ADIIMNrT   c           	        V P                   P                  pVP                  '       d   V P                  V4       V # V P	                  V4      V n        R V n        VP                  f$   \        V P                  R4       \        V n        V # V P
                  f   \        V n        V # \        VP                  4      \        V P
                  4      8w  dR   \        V P                  R\        VP                  4      : R\        V P
                  4      : 24       \        V n        V # VP                  \        \        VP                  V P
                  4      4      4      V n        V # )Nz)Can only parameterize template functions.z-Wrong number of template arguments: expected , got )r  r   r  parse_indexed_fused_cdefparse_index_as_typestype_indicesr  	templatesr   r   r2   r   r  dictr  rX   r{   rY  s   && rR   rt  IndexNode.analyse_as_c_functionb  s    IINN	))#."  !% 9 9# >DDJ""*dhh KL&	  ""*&	  Y(()S1B1B-CCdhhY0013t7H7H3I!L M&	  &00c):M:MtO`O`6a1bc	rT   c                `   V P                   P                  p\        V P                  \        4      '       d   V P                  P                  4       '       d   V P                  P                  pVP                  ) Tu;8:  d   VP                  8  d7   M M3V^ 8  d   WTP                  ,          pVP                  V,          V n        V # \        V P                  RV: RV: R24       \        P                  V n        V # V P                   P                  V4      V n         V P                  WVR7      # )r   zIndex z out of bounds for 'r  re  ri  )r  r   r   r  r  r   r   rj  r  r   r   r   r2   r  rf  )rX   r{   re  ri  rY  r  s   &&&&  rR   ru  IndexNode.analyse_as_c_tuplex  s    IINN	djj'**tzz/M/M/O/OJJ..E%8)..819^^+E%007	 K	 dhhi)* '11	K		44S9DI44SSZ4[[rT   c                   \        V P                  \        4      '       d   V P                  P                  pMV P                  .pV P                  pVP
                  pRpVP                  '       d   ^RIHp VP                  '       d0   VP                  V4      pVe   VP                  pVP
                  pTpVP                  W5P                  4      w  rp
V	'       d   \        V P                  W4R7      pEM\        V P                  W4R7      pEMVP                   '       g   VP"                  '       Ed   VP"                  '       g   \%        V4      VP                  8X  EdZ   RpV Uu. uF  qP'                  V4      NK  	  ppVP"                  '       d   \(        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      pV'       du   \+        V4       Fe  w  rVP,                  '       g   K  \/        VP                  VP0                  VP2                  VP4                  R7      pVP'                  V4      pWV&   Kg  	  M4\(        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      pV'       d:   \7        V P                  W4R7      p\        V P                  \8        4      '       d   Q hVe   VP'                  W4      pV# u upi )	z9
Analyse buffer indexing and memoryview indexing/slicing
NrO  )indicesr  Tc              3      "   T FM  pVP                   P                  ;'       g+    VP                  ;'       g    VP                   P                  x  KO  	  R # 5irL   )r   rm  r   r<   rj   r  s   & rR   rm   8IndexNode.analyse_as_buffer_operation.<locals>.<genexpr>  sB      ).%,E 

))YYU^^YYuzz?Y?YY%,s   !AAAFr   r   r   c              3   L   "   T F  qP                   P                  x  K  	  R # 5irL   r   rm  r  s   & rR   rm   r    s     (Pu):):s   "$)r   r  	TupleNoder   r  r   r  rN  rP  r  merged_indicesunellipsifyr\  MemoryViewSliceNoder   MemoryViewIndexNoder  r<   r   r}  r   r  r   SliceIntNoder   r   r   BufferIndexNoder  )rX   r{   re  r  r  rY  rw  rP  r  have_slicesnewaxesr  r  do_replacementr  s   &&&            rR   ro  %IndexNode.analyse_as_buffer_operation  s%    djj),,jjooGzzlGyyII	'''$$$$!%!4!4W!=!-99D $		I,G,6,B,B7NN,[)K'#6txx#\ #6txx#\    I$=$=$=(((CLINN,J#' AHI..s3I,,,%(S ).%,).SSS ).%,). &.N &'0'9GA$~~~(4UYYekkX]XbXbinisis(t(-(;(;C(@-2
	 (: &)S(P(PSSS(P(P%PN!'6txx'\$)$**i@@@@'/==cK) Js   (Kc                    VP                   R ,          '       d!   V P                  P                  4       '       g   R# V P                  P                  R4      V n        R# )	nonecheckNr{  )rs   r  r  r  rX   r{   re  s   &&&rR   r~   IndexNode.wrap_in_nonecheck_node  s=    ~~k**$))2G2G2I2III//0XY	rT   c                <   \        V P                  \        4      '       d   V P                  P                  pMV P                  .p. pV FO  pVP	                  VP                  V4      4       VR,          e   K0  V'       d   \        VP                  R4        R# 	  V# )r  Nznot parsable as a typer~  )r   r  r  r   r  r  r   r   )rX   r{   requiredr  r  r  s   &&&   rR   r  IndexNode.parse_index_as_types  s{    djj),,jjooGzzlGE 5 5c :;B'%))%=>  rT   c           	        \         P                  V n        RV n        V P                  P                  p. pV P
                  P                  '       g   V P
                  P                  '       d'   VP                  V P
                  P                  4       MX\        V P
                  \        4      '       d9   V P
                  P                   F  pVP                  VP                  4       K   	  V P                  VRR7      pVf   V P
                  P                  V4      V n        V P                  P                  P                   '       g   \#        V P                  R4       MV P                  P                  P                   ;V P                  n        V n        V P                  P                  ;V P                  n        V n        RV P                  n        RV n        RV P                  n        RV n        R# \)        V4       F  w  rgVP+                  V4      WV&   K  	  VP-                  4       p\/        V4      \/        V4      8  d   \#        V P                  R4      # \/        V4      \/        V4      8  d0   V\/        V4      ,          p	\#        V P                  RV	,          4      # \1        VVV4       Ff  w  rp\3        VP4                   U	u. uF  qP7                  V	4      NK  	  up	4      '       g   \#        V
R4      u # Ve   VP8                  '       g   Ke   R# 	  \;        \1        W4      4      pVP=                  V4      pVP>                  '       d   \#        V P                  R	4       R# V P                  P                  PA                  4        F  pVP7                  V4      '       g   K  Wn        V P                  P                  '       d4   VP                  V n        RV n        V P                  PB                  V n!        RV P                  P                  n        WP                  n        VP                  V P                  n         R# 	  \E        R
4      hu up	i )a  
Interpret fused_cdef_func[specific_type1, ...]

Note that if this method is called, we are an indexed cdef function
with fused argument types, and this IndexNode will be replaced by the
NameNode with specific entry just after analysis of expressions by
AnalyseExpressionsTransform.
TF)r  Nz)Can only index fused functions with typeszToo many types specifiedzHNot enough types specified to specialize the function, %s is still fusedzType not in fused typez6Index operation makes function only partially specificz!Couldn't find the right signature)#r   r2   r   is_fused_indexr  r  r   r  r  r   r   r  r   r  r}  r   r  r   r  r\  r  specialize_fusedget_fused_typesr   r  rt   typesr[  rd  r  r  r  rZ  r  r   )rX   r{   rY  	positionsr   specific_typesr  r   fused_typesrk   r   specific_type
fused_typer  r{  s   &&             rR   r  "IndexNode.parse_indexed_fused_cdef  s<    ))	"IINN		::!8!8!8TZZ^^,

I..zz  ) '2232G!11#6DJ99??...dhh KL 04yy/J/JJ		$*-1ZZ__<		$(		!#"&

"'D 0GA $ 5 5c :N 1  //1~[!11#=>> 3{#33C/0A $EGH$I J J /2)2@2=/?*C
 *:J:JK:JQ--a0:JKLLS":;;$(>(>(>/? ![!AB##$56===$((JL "YY^^NNP	<<	** )Iyy--- &/__
,0)#'99==+/DIIOO(%.IIN&/ooDIIO Q$ $$GHHC Ls   Q
zIndexing Python objectc           	        V P                   P                  \        \        \        39   d   V P                   P                  \        J d   R pEMV P                   P                  \        J d   RpEMV P                   P                  \        J d   RpEMQ RT P                   P                  ,          4       hV P                   P                  P
                  '       dY   V P                   P                  4       : RRP                  V P                   Uu. uF  q"P                  4       NK  	  up4      : R2# V P                   P                  P                  '       de   V P                  P                  pV^ 8  d'   W0P                   P                  P                  ,          pV P                   P                  4       : RV: 2# V P                  P                  '       g   V P                  P                  '       d>   V P                  V P                   P                  8X  d   \!        V P"                  R4       R	# R
pWP                   P                  4       V P                  P                  4       3,          # u upi )z__Pyx_PyList_GET_ITEM(%s, %s)z__Pyx_PyTuple_GET_ITEM(%s, %s)z5((unsigned char)(__Pyx_PyByteArray_AsString(%s)[%s]))z$unexpected base type in indexing: %s<r  >.fzInvalid use of pointer sliceNz(%s[%s]))r  r   r   r   r    r  r  r  r  rz  r  r  r   rj  rX  r  r   r   )rX   
index_codeparamr  s   &   rR   r  IndexNode.calculate_result_code/  s   99>>i^DD yy~~*<
:-=
>1T
UDtyy~~UUuYY^^(((		  "dFWFWXFWU668FWXY[ [ YY^^%%%JJ..Eqy,,,#yy//1599		   DII$6$6$6DII<Wdhh >?#JYY--/1B1B1DEEE Ys   I,c           	        V P                   P                  P                  '       Ed   V P                  P                  \        J p\        VP                  P                  R ,          4      ;'       di    V P                  P                  ;'       dK    \        V P                   P                  \        4      ;'       d    V P                   P                  ^ 8  '       * p\        VP                  P                  R,          4      pV P                  '       * pV P                  P                  4       pV P                  P                  \        J dK   V'       gC   V'       d;   VP                  P                  R,          '       d   \!        V P"                  R^4       RV P                  P%                  4       V P                  P                  ;'       d    ^;'       g    ^ V P                  P&                  W#WEV3,          # R# )rm  rz  freethreading_compatiblezIndexing a bytearray with 'boundscheck' enabled and without the GIL is not thread-safe on freethreaded Python (disable 'boundscheck' to turn off this warning)z , %s, %d, %s, %d, %d, %d, %d, %srN  )r  r   rm  r  r   r  r   rs   rp  r|  r   r   r   r  rt  r    r   r   rz  to_py_function)rX   r   is_listrm  rz  has_gilunsafe_shareds   &&     rR   extra_index_paramsIndexNode.extra_index_paramsL  s   ::??!!!iinn	1GT%%00>? : :((//: :

 : :C@ 9 933q8: 
 t//::=IJK///G II::<M		.0[((334NOO HH GHIK 6((??A((//55A::((77[=	9J J J rT   c                	   V P                   '       g   R # V P                  P                  pR pR pV P                  P                  '       Ed   RpV P                  P                  P
                  '       d6   V\        J d   RpMV\        J d   RpMRp\        P                  ! RR4      pEMBV\        J d   Rp\        P                  ! RR4      pEMV\        J d:   V P                  P                  \        J d   R	p\        P                  ! RR4      pEMR
pVP                  P                  \        P                  ! RR4      4       \        P                  ! RR4      pEMV P                  P                   '       dP   V\        J dF   V P                  P                  P
                  '       g   Q hRpRp\        P                  ! RR4      pEM$V\"        J dc   V P                  P                  P
                  '       g   Q hV P                  P
                  '       g   Q hRpRp\        P                  ! RR4      pMV\$        J dc   V P                  P                  P
                  '       g   Q hV P                  P
                  '       g   Q hRpRp\        P                  ! RR4      pMLVP&                  '       d   V P(                  '       g)   Q RT P                  : RT: RT P*                  : R24       hVe   VP                  P                  V4       V P                  P                  P
                  '       d   V P                  P-                  4       pMV P                  P/                  4       pVP&                  '       d   V P(                  '       d   \1        YP*                  V P-                  4       : RV P                  P-                  4       : RV P                  P-                  4       : R2V P                  P                  '       d   V P-                  4       MR V P2                  V P4                  4       MVR8X  d   RMRV,          pVP7                  V P-                  4       : RX: RV P                  P/                  4       : RV: V P9                  V4      : R VP;                  WpP-                  4       ,          V P*                  4      : 2
4       V P                  P                  '       d   V P=                  V4       R # R # )!NrP  __Pyx_GetItemInt_List__Pyx_GetItemInt_Tuple__Pyx_GetItemInt
GetItemIntr  __Pyx_PyDict_GetItemDictGetItem__Pyx_PyObject_Dict_GetItem__Pyx_PyObject_GetItemObjectGetItem__Pyx_GetItemInt_Unicodez(Py_UCS4)-1GetItemIntUnicoder  __Pyx_GetItemInt_Bytesz-1GetItemIntBytes__Pyx_GetItemInt_ByteArrayGetItemIntByteArrayzunexpected type z and base type z for indexing (rb  r9  [z];!%sz	%%s == %sr8  r  rf  )r  r  r   rx   r  rm  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<  )rX   r   rY  r   error_valuer  r  error_checks   &&      rR   r  IndexNode.generate_result_codeg  s   |||IINN	99    Kzz%%%	)6H*,7H1H1==lL^_	)5H#.#:#:=J\#]L.0TZZ__5T<H#.#:#:=J\#]L7H$$55*66|EWXZ#.#:#:?L^#_LYY&&&9+D::??)))))1H'K&223FXL*$::??)))))99#####/HK&223DoVL.(::??)))))99#####3HK&223H/ZL(((T-A-A-A0		9dhh0 05 #--l;::??!!!**,J--/J!!!d&:&:&:#D(("&++-1A1A1C"&**"3"3"57!%!6!6!6D$$d&;&;	= $/&#8%kK>WKJJKKMII'')++D1&&{[[]'BDHHMOP 99     & !rT   c                   V P                   P                  P                  '       d   V P                  P                  \        J d4   VP
                  P                  \        P                  ! R R4      4       RpM2VP
                  P                  \        P                  ! RR4      4       RpV P                   P                  4       pM=V P                   P                  4       pV P                  P                  \        J d   RpMRpVP                  VP                  V: RV P                  P                  4       : R	V: R	V: V P                  V4      : R
2	V P                  4      4       R# )SetItemIntByteArrayr  __Pyx_SetItemInt_ByteArray
SetItemIntr  __Pyx_SetItemIntr3  PyObject_SetItemr8  r  rb  N)r  r   rm  r  r    r   r   r   r   r  r   r   r   r  r  r   )rX   
value_coder   r  r  s   &&&  rR   generate_setitem_codeIndexNode.generate_setitem_code  s
   ::??!!!yy~~/  11++,A?SU7  11++L:LMO-**,J--/Jyy~~*+ .

4))		##%''-/ HH 	rT   c           
        V P                  V4       V P                  P                  '       d#   V P                  VP	                  4       V4       EMV P
                  P                  \        J d%   V P                  W!4      pV P                  Wb4       EMtV P
                  P                  P                  '       Ed   V P                  '       Ed   V P                  R 8X  d   V'       do   V'       dg   V P                  V8w  dV   \        W P                  V P                  V P                  4       VP                  4       V P                  WPP                  4       M\        Y P                  V P                  4       : RVP                  4       : R2V P                  P                  '       d   V P                  4       MRV P                  V P                  4       M5VP!                  V P                  4       : RVP                  4       : R24       V P#                  V4       V P%                  V4       VP'                  V4       VP)                  V4       R# )r   r9  r:  N)r  r   rx   r  r   r  r    _check_byte_valuer#  r   r   r   r   r  r  r   r   r  r  r  r#  )rX   r   r   r  r   r   r  s   &&&&&& rR   r  "IndexNode.generate_assignment_code  s   --d399   &&s}}=YY^^~-//:J&&z8YY^^(((T-A-A-AdFZFZ^aFa$T=Q=QUd=d /tXXtyyKKM3::<1E1E#%:%:< (hh"&++->%)YY%:%:%:DKKM(($*?*?A
 JJ"kkmSZZ\:< 	++D1%""4(trT   c                @   VP                   P                  '       g   Q \        VP                   4      4       hVP                  4       pVP	                  4       '       dJ   ^ VP
                  u;8:  d
   R8  d    V#  Rp\        VP                  RVP
                  ,          ^R7       MVP                   \        P                  8g  pV P                  '       Eg8   . pVP                  '       g   VP                   P                  '       d   VP                  RV,          4       VP                  '       gU   VP                  4       '       d?   VP                   \        P                  \        P                  \        P                   39   g   VP                  RV,          4       V'       dj   VP#                  RRP%                  V4      ,          4       VP#                  R	VP'                  V P                  4      ,          4       VP#                  R
4       V'       d
   RV,          pV# )r      Tz9value outside of range(0, 256) when assigning to byte: %sr   z%s < 0z%s > 255if (unlikely(%s)) {z || zFPyErr_SetString(PyExc_ValueError, "byte must be in range(0, 256)"); %sr   z((unsigned char)%s))r   rm  r_  r  r   r   r   r   r   r   r   r   r|  r  r  r   c_schar_typer   r  r   )rX   r   r   r  
needs_cast
conditionss   &&&   rR   r  IndexNode._check_byte_value  s   xx.SXX.ZZ\
""$$C''-#-!! .JCGG2474G4GH
 Z%<%<<JzzzJ~~~!!(Z"78''))chh"//1G1G"//;1 /1 !!*z"9:

06;;z3JJK

<OODHH-./ 

3.;JrT   c                   V P                  V4       V P                  P                  P                  '       dN   R pV P                  P	                  4       pVP
                  P                  \        P                  ! RR4      4       M=V P                  P                  4       pV P                  P                  \        J d   RpMRpVP                  VP                  V: RV P                  P                  4       : RV: V P                  V4      : R2V P                  4      4       V P!                  V4       V P#                  V4       R# )	__Pyx_DelItemInt
DelItemIntr  PyDict_DelItemPyObject_DelItemr8  r  rb  N)r  r  r   rm  r  r   r   r   r   r   r  r   r   r  r  r   r  r  )rX   r   r  r  r  s   &&&  rR   r    IndexNode.generate_deletion_code  s    --d3::??!!!)H**,J--''6HIK --/Jyy~~*+-

4))		##%''-	/
 HH 	 	++D1%rT   )r  r   r   r   r   r  r  r  r  r   r  rp  r  r   r  )FFr1  r  r  )'r[   r\   r]   r^   r   r  r  r  rI  rU  r  r  rw  r  rN  r  r   r}  r  rf  rq  rr  rs  rt  ru  ro  r~  r  r  ri  r  r  r  r  r  r  r   r_   r`   r  s   @rR   r  r    s       HLLNU-L
*AFT[zDBH=~0,\$3 jZ
YIv +KF:6M'^BB"H& &rT   r  c                      a a ] tR tRt oRtRR.tRtRtRtR t	RR lt
R	 tR
 tR tR tR tR tR tR tRR ltRR ltR tV 3R ltRtVtV ;t# )r  i5  z
Indexing of buffers and memoryviews. This node is created during type
analysis from IndexNode and replaces it.

Attributes:
    base - base node being indexed
    indices - list of indexing expressions
r  r  TFc                ,    V P                  VR R7       R# )Frd  Nr  r   s   &&rR   r  $BufferIndexNode.analyse_target_typesI  s    3.rT   c                b   V P                   P                  '       gI   \        V P                   P                  4      '       g$   \	        V P
                  R4       \        V n        V # V'       g   V P                   P                  P                  P                  '       g   \	        V P
                  R4       MRRV n	        V P                   P                  P                  '       d&   RV P                   P                  P                  n	        RV n        V P                  W4       V P                  V4       V # )zb
Analyse types for buffer indexing only. Overridden by memoryview
indexing and slicing subclasses
zCan only index buffer variableszWriting to readonly bufferTr{  )r  r   r<   r   r   r   r2   r   writablere  r  
buffer_auxnone_error_messageanalyse_buffer_indexr~  r  s   &&&rR   r}  BufferIndexNode.analyse_typesL  s     yy   )H)H$((=>"DIK99??''000dhh <='+$99>>+++AEDIIOO..>"J!!#/##C(rT   c                Z   \        V P                  P                  4      '       dV   V P                   Uu. uF  q3VP                  3NK  	  pp\	        \        V P                  P                  V4      4      V n        MEV P                  P                  V4      V n        V P                  P                  P                  V n        V P                  P                  V n        V'       dD   V P                  P                  '       g   V P                  P                   '       d
   R V n
        R# R# R# u upi r  )r<   r  r   r  rH   rB   r  ri  buffer_typerx   r  )rX   r{   re  idxindex_with_type_lists   &&&  rR   r  $BufferIndexNode.analyse_buffer_indexd  s    499>>**?C||#L|#((O| #L#$9$))..J^$_`DI		2237DI		,,DI99>>		---1J1J1JDL 2K7 $Ms   D(c                    R# )zS
Called by IndexNode when this node is assigned to,
with the rhs of the assignment
NrV   rX   r   s   &&rR   analyse_assignment"BufferIndexNode.analyse_assignmentp  s    rT   c                    VP                   R ,          '       d!   V P                  P                  4       '       g   R# V P                  P                  V P                  4      V n        R# )r  N)rs   r  r  r  r  r   s   &&rR   r~  &BufferIndexNode.wrap_in_nonecheck_nodev  sB    ~~k**$))2G2G2I2III//0G0GH	rT   c                    V P                   '       g   V P                  '       dB   V P                  P                  '       d$   \	        V P
                  R 4       \        V n        R# R# R# )z2Cannot access buffer with object dtype without gilN)r  r  r   rx   r   r   r2   r   s   &&rR   r  BufferIndexNode.nogil_check{  sI       D$9$9$9yy$$$dhh TU&	 % %:rT   c                (    R V P                   ,          # r  )buffer_ptr_coderW   s   &rR   r  %BufferIndexNode.calculate_result_code  s    ----rT   c                    V P                   pV P                   P                  '       d   VP                  pVP                  P	                  V4      # rL   )r  is_nonecheckr   r   	get_entryr+  s   & rR   buffer_entryBufferIndexNode.buffer_entry  s9    yy99!!!88Dyy""4((rT   c                @   VP                   P                  \        P                  ! VP                  VP                  P
                  '       d   \        P                  M\        P                  4      R R7      pVP                  V: RVP                  4       : R24       V# )Fr  r9  r:  )
r  r  r   r  r   r|  c_ssize_t_typec_size_t_typer   r  )rX   r   ivarrets   &&& rR   get_index_in_temp!BufferIndexNode.get_index_in_temp  st    nn****		-1YY-=-=-=
)):C[C[] 	 + 
 	

dkkm45
rT   c                   V P                   '       di   V P                  '       g   V P                  '       dE   VP                  P                  R,          '       d"   \        V P                  RVP                  4       V P                   Uu. uF  q P                  W4      NK  	  up;V n	        p^RI
Hp V P                  4       pVP                  P                  '       d   VP                  P                  pMVP                   R,          pYTP#                  TV P                   Uu. uF  q"P                  P$                  NK  	  upVVP                  P                  V P                  VVV P                   R7      3# u upi u upi )z(
ndarray[1, 2, 3] and memslice[1, 2, 3]
rz  z(Use boundscheck(False) for faster accessr  negative_indices)r   index_signedsindex_cnamesrs   r   r   r  r  )r  r  r  r   rs   r-   r   r  r  index_tempsrN  r  r  r   r  r  buffer_defaultsput_buffer_lookup_coder|  )rX   r   r  r   r  r  r  s   &&     rR   buffer_lookup_code"BufferIndexNode.buffer_lookup_code  sB       $$$(=(=(=##..}==$TXX/Y[_[k[kl Y]XdXd)eXdPT*@*@*KXd)ee; 	((*&&&+00AA%556HI::8<E99++E$''22t-!22 ; 4 4 	4 *f Fs   	E7"E<c                    V P                  V4       V P                  W4       V P                  V4       V P                  V4       VP	                  V4       VP                  V4       R # rL   )r  generate_buffer_setitem_coder  r  r  r#  rX   r   r   r  s   &&&&rR   r  (BufferIndexNode.generate_assignment_code  sT    --d3))#4++D1%""4(trT   c           	     4   V P                   P                  p\        V4      '       Ed   \        VP                  4      '       d   VP                  P                  \        \        V P                   P                  4      4      R R7      pVP                  RV,          4       VP                  RV: RV: RV P                   P                  4       : R24       VP                  V: \        V P                  4      : RV: RVP                  4       : R	24       VP                  P                  V4       R
# V P                  V4      w  rgV P                  P                  P                   '       Ed    VP                  P                  VP"                  R R7      pVP%                  4       p	VP                  V: RV: R	24       VP'                  RV,          V P                  P                  4       VP                  RV	: RV: R24       VP                  RV: RV: RV	: R	24       VP)                  RV,          V P                  P                  4       VP                  P                  V4       R
# VP                  RV: RV: RVP%                  4       : R	24       R
# )Fr  __Pyx_call_destructor(%s);r;  r<  r=  r>  r[  z= r:  Nr9  z*%sz__Pyx_INCREF(z); __Pyx_XDECREF(*r  r   )r  r   r<   r:   r  r  rH   rD   r   r7  rA   r  r  r#  r   ri  rx   buf_ptr_typer  r?  rG  )
rX   r   r   oprY  r  r  ptrexprptrr   s
   &&&&      rR   r&  ,BufferIndexNode.generate_buffer_setitem_code  s   IINN	9%%*CCHH*M*M....{<		;W/Xej.kC JJ3c9:JJS$))BZBZB\]^JJ%dll3""$	& '
 NN'', !% 7 7 =!!--- ....|/H/H:? / ACzz|HJJS'23US[$*:*:*@*@AJJ#  JJR:;eck4+;+;+A+ABNN'', JJSZZ\BCrT   c                r   \        V P                  P                  4      '       dw   V P                  4       pVP	                  R V,          4       VP	                  RV: RV: RV P                  P                  4       : \        V P                  4      : R24       R# V P                  V4      w  q0n	        V P                  P                  '       dh   V P                  4       pVP	                  V: RV P                  : R24       VP	                  RV: R	V: R
24       VP	                  RV,          4       R# R# )r*  r;  r<  r=  r>  Nz = (PyObject *) *r:  r_  z == NULL)) z = Py_None;z__Pyx_INCREF((PyObject*)%s);)r<   r  r   r  r   r7  rA   r  r#  r  rx   )rX   r   resr  s   &&  rR   r  $BufferIndexNode.generate_result_code  s    499>>**++-CJJ3c9:JJ		((*%dll3	5 6
 -1-D-DT-J**99    ++-CJJ38L8LMNJJCMNJJ5;< !rT   c                   < V P                    F  pVP                  P                  V4       K   	  RV n         \        SV `  V4       R # r  )r   r  r  rN   r  )rX   r   temprQ   s   && rR   r  "BufferIndexNode.free_subexpr_temps  s:    $$DNN''- %"4(rT   )r  r  r   r   r  r  r   re  rV   r1  r  rN  )r[   r\   r]   r^   r  r   r  re  r   r  r}  r  r  r~  r  r  r  r  r#  r  r&  r  r  r_   r`   ra   rb   s   @@rR   r  r  5  sx      	"H O K/0
 I
'.)4:(DT=*) )rT   r  c                   D   a  ] tR tRt o RtRtR
R ltR tR tR t	Rt
V tR	# )r  i  TFc                v   ^RI Hp \        V4      V n        V P                  pVP                  W@P                  P                  P                  4      w  rTpV'       ge   RV n	        V P                  P                  '       g   V P                  P                  '       d&   RV P                  P                  P                  n	        V'       * ;'       d-    \        V4      V P                  P                  P                  8H  V n        . p\        P                   p. p	\        V4      \        V4      ,
          V P                  P                  P                  8  dc   \"        V n        \%        W@P                  P                  P                  ,          P&                  RV P                  P                  ,          4       V # ^ p
\)        V4       EF  w  rVP+                  V4      pVP,                  '       d,   RV n        V	P1                  V4       VP1                  R4       KT  V P                  P                  P2                  V
,          w  rV
^,          p
VP4                  '       d   RV n        VP6                  P,                  '       d   VP1                  W34       MVP1                  VR34       R FP  p\9        W4      pVP,                  '       d   K"  VP;                  W4      p\=        WV4       V	P1                  V4       KR  	  EK:  VP                  P>                  '       g   VP                  P@                  '       dd   VP                  P@                  '       d   \C        VP&                  RV4       RV n"        VP;                  W4      pWV&   V	P1                  V4       EK  \"        V n        \%        VP&                  RVP                  ,          4       V u # 	  V PD                  ;'       d    V P.                  '       * V n"        Wn        W@n#        VPH                  V n$        V PK                  WV4      pVPM                  V4       V# )	r  rO  Tz&Too many indices specified for type %sstridedz/Index should be typed for more efficient accessz/Invalid index for memoryview specified, type %s)directr9  r  )'rN  rP  r@   is_pythran_moder  r  r  r   r\  re  r   r  r   r   memslice_indexr   r  r2   r   r   r  r}  r   r  r  rF  r   r   r  r`  setattrrm  rx   r-   r  original_indicesr   analyse_operationr~  )rX   r{   re  rP  r  r  r  rF  r^  new_indicesaxis_idxr  r  accesspackingattrr   r   s   &&&               rR   r}  !MemoryViewIndexNode.analyse_types  s    -c2,,(2(>(>w		H[H[(\%g#'D yy   DII$:$:$:7;		$$4#*{RRs7|tyy~~?R?R/R11
w<#g,&)<)<<"DI'))..--.22:TYY^^KMK!'*HA'',E}}}(,%""5)12"iinn11(;OFMH~~~(,%::%%%KK 12KK 34 6D#E0E === %
 @U3#**51 6 """ejj&<&<&<::)))$UYY0acfg(,%
8"
""5) '	eii!RUZU_U_!_`O +T !% 5 5 S Sd>S>S:S" !(YY
%%cD9##C(rT   c                6    R V n         V P                  W4       V # )z"Cannot index None memoryview slice)r  r  )rX   r{   re  rF  s   &&&&rR   r?  %MemoryViewIndexNode.analyse_operationR  s    "F!!#/rT   c                    V P                   P                  '       d9   T pVP                  '       g   VP                  '       d   RVn        RVn        R# R# R# )z
Support broadcasting for slice assignment.
E.g.
    m_2d[...] = m_1d  # or,
    m_1d[...] = m_2d  # if the leading dimension has extent 1
TN)r   r  rg  rX   r   lhss   && rR   analyse_broadcast_operation/MemoryViewIndexNode.analyse_broadcast_operationW  sK     99'''C'''3+C+C+C+/(+/( ,D (rT   c                ^    V P                  V4      pV'       d   VP                  Vn        V# V # rL   )r  rh  rI  s   && rR   $analyse_as_memview_scalar_assignment8MemoryViewIndexNode.analyse_as_memview_scalar_assignmentd  s-    %%c*-0-K-KC*JrT   )
r  r  r  r;  r<  r   r  r>  r   re  Nr1  )r[   r\   r]   r^   r  r  r}  r?  rK  rN  r_   r`   r  s   @rR   r  r    s,     M^
0 rT   r  c                   h   a  ] tR tRt o RtRtRtRtRtR t	R t
R tR tR tR	 tR
 tRR ltRtV tR# )r  il  TFc                    \         ;QJ d&    R V P                   4       F  '       d   K   RM	  RM! R V P                   4       4      V n        V P                  '       d   V P                  P                  V n        R# R# )z@Slicing operations needing no evaluation, i.e. m[...] or m[:, :]c              3      "   T Fk  pVP                   ;'       dS    VP                  P                  ;'       d5    VP                  P                  ;'       d    VP                  P                  x  Km  	  R # 5irL   )r   r   r   r   r   r  s   & rR   rm   <MemoryViewSliceNode.analyse_ellipsis_noop.<locals>.<genexpr>y  sT      $'% NN``u{{22``uzz7I7I``ejjN`N``%   A5A5A5A5FTN)r   r  is_ellipsis_noopr  r   r  s   &&&rR   analyse_ellipsis_noop)MemoryViewSliceNode.analyse_ellipsis_noopv  s]     !$ $'$' $'$' !'    		DI !rT   c                T   ^RI Hp V'       g   RV n        RV n        MRV n        V P	                  W4       V P
                  '       d   V # RV n        RV n        RV n        VP                  V P                  V4      '       g   \        V n        V # \        P                  ! V P                  P                  P                   V4      V n        V P                  P#                  4       '       gA   V P                  P%                  4       '       g!   V P                  P'                  V4      V n        V # )r  rO  Tz&Cannot assign to None memoryview slicez"Cannot slice None memoryview sliceN)rN  rP  rg  r  rV  rU  r  r  r  validate_axesr   r2   r   r   r@  r  ri  r  r  r  )rX   r{   re  rF  rP  s   &&&& rR   r?  %MemoryViewSliceNode.analyse_operation  s     (,D%&ND#&JD#""30   K
#''$77"DIK22499>>3G3GN			##%%)A)A)C)C		005DIrT   c                4   VP                   P                  '       gh   V P                   P                  P                  VP                   4      '       g   VP                   P                  '       d   \        V P                  V 4      # \        V P                  V 4      # rL   )r   r  ri  rr  rx   MemoryCopyScalarr   MemoryCopySlicer  s   &&rR   r  &MemoryViewSliceNode.analyse_assignment  sa    xx***		//99$$$#DHHd33"488T22rT   c                   V'       g   R# V P                   R,          pVR,          p\        V P                   4       F  w  r4VP                  '       d   VP                  P                  '       dc   VP
                  P                  '       dG   VP                  P                  '       d+   V^ ,          W#&   VP                  ^ 4       V'       g   Vu # K   R# VP                  P                  '       d   K   R# 	  V'       dI   \        V4      \        V4      ,           V P                  P                  P                  8  d   R# W!,          pV# )zReturn a new list of indices/slices with 'indices' merged into the current ones
according to slicing rules.
Is used to implement "view[i][j]" => "view[i, j]".
Return None if the indices cannot (easily) be merged at compile time.
NNNN)r>  r  r   r   r   r   r   r   r   rm  r   r  r\  )rX   r  r@  r  r  s   &&   rR   r  "MemoryViewSliceNode.merged_indices  s     ++A.!*d334DAzzz77???qvv~~~!&&...%,QZKNKKN"** #  VV]]] 5 ;#g,.1D1DD"KrT   c                    V P                   '       d=   V P                  P                  4       ;'       g    V P                  P                  4       # V P                  4       # rL   )rU  r  r  r  rW   s   &rR   r  MemoryViewSliceNode.is_simple  sE       99&&(FFDII,D,D,FF""$$rT   c                6    V P                   P                  4       # )z3This is called in case this is a no-op slicing node)r  r  rW   s   &rR   r  )MemoryViewSliceNode.calculate_result_code  s    yy!!rT   c           
        V P                   '       d   R # V P                  4       pV P                  '       * pRp\        V P                  4      pV P
                   F  pVP                  '       d   RpVP                  P                  '       g   \        V4      Vn        VP                  P                  '       g   \        V4      Vn
        VP                  P                  '       g   \        V4      Vn        K  K  \        V4       K  	  \        V4      '       d   Q hVP                  WP
                  V P                  4       V P                  W4VP                   P"                  R7       R # )NFT)r  r  rs   )rU  r  r  iterr  r>  r   r   r   nextr   r   r  generate_buffer_slice_coder  r   r   rs   )rX   r   r  r  r  r  r  s   &&     rR   r  (MemoryViewSliceNode.generate_result_code  s      ((*,,, $,,**E~~~"{{***"&r(EKzz)))!%bEJzz)))!%bEJ * R + 88|//''		''22 	0 	4rT   c                   V P                   '       d   V P                  V4       MV P                  V4       V P                  '       d   V P	                  W4       MV P                  W4       V P                   '       d   V P                  V4       MV P                  V4       VP                  V4       VP                  V4       R # rL   )	rU  r  r  is_memview_scalar_assignment+generate_memoryviewslice_assign_scalar_code&generate_memoryviewslice_setslice_coder  r  r#  r'  s   &&&&rR   r  ,MemoryViewSliceNode.generate_assignment_code  s       11$7))$/,,,<<SG77B   //5''-""4(trT   )r  r  rU  rg  r  r  r   r  Nr  )r[   r\   r]   r^   r  rU  rl  r  rg  rV  r?  r  r  r  r  r  r  r_   r`   r  s   @rR   r  r  l  sR      #(  '63>%"48 rT   r  c                   F   a a ] tR tRt oRtR.tV 3R ltRR ltRtVt	V ;t
# )MemoryCopyNodei  zY
Wraps a memoryview slice for slice assignment.

    dst: destination mememoryview slice
dstc                T   < \         SV `  V4       W n        VP                  V n        R # rL   )rN   r  rr  r   rX   r   rr  rQ   s   &&&rR   r  MemoryCopyNode.__init__  s     HH	rT   c                   V P                   P                  V4       V P                  W4       V P                   P                  V4       V P                   P	                  V4       VP                  V4       VP	                  V4       R # rL   )rr  r  _generate_assignment_coder  r#  r'  s   &&&&rR   r  'MemoryCopyNode.generate_assignment_code  s`    ))$/&&s1''-D!""4(trT   )rr  r   r  )r[   r\   r]   r^   r  r   r  r  r_   r`   ra   rb   s   @@rR   rq  rq    s"      wH
 rT   rq  c                   2   a  ] tR tRt o RtRtRtR tRtV t	R# )r]  i  z
Copy the contents of slice src to slice dst. Does not support indirect
slices.

    memslice1[...] = memslice2
    memslice1[:] = memslice2
T__pyx_memoryview_copy_contentsc                   V P                   pVP                  P                  VP                  4       VP                  P                  VP                  4       VP	                  VP                  R V P                  VP                  4       VP                  4       VP                  P                  VP                  P                  VP                  P                  P                  3,          VP                  4      4       R# )z%s(%s, %s, %d, %d, %d)N)rr  r   assert_direct_dimsr   r   r  copy_slice_cnamer  r\  ri  rx   )rX   rx  r   rr  s   &&& rR   rw  )MemoryCopySlice._generate_assignment_code!  s    hh##CGG,##CGG,

4))$(=(=(+

cjjl(+sxx}}(+(B(B(D D GG 	rT   rV   N)
r[   r\   r]   r^   r  rh  r}  rw  r_   r`   r  s   @rR   r]  r]    s"      "&7 rT   r]  c                   <   a a ] tR tRt oRtV 3R ltR tRtVtV ;t	# )r\  i/  z
Assign a scalar to a slice. dst must be simple, scalar will be assigned
to a correct type and not just something assignable.

    memslice1[...] = 0.0
    memslice1[:] = 0.0
c                \   < \         SV `  W4       VP                  P                  V n        R # rL   )rN   r  r   ri  rt  s   &&&rR   r  MemoryCopyScalar.__init__8  s    "HHNN	rT   c                   ^RI Hp V P                  P                  P	                  V P                  P
                  4       V P                  P                  P                  pVP                  R4      pV P                  P                  P                  R4      pVP                  4        VP                  V: RVP                  4       : R24       V P                  P                  4       '       g!   V P                  P                  4       '       d   V P                  P                  4       pM3VP                  V: RV P                  P                  4       : R24       RpRpV P                  P                  p	V	 Fs  p
\        V
\        4      '       g   K  V
P                   P"                  '       d;   V
P$                  P"                  '       d   V
P&                  P"                  '       d   Kq  RpKu  	  VP)                  V P                  P                  VV P                  P                  P*                  VVR	7      pVP-                  4       pVP.                  '       d   VP                  R
V,          4       VP                  RV: RV: R24       VP.                  '       d   VP                  R4       VP1                  4        VP3                  4        R# )r  rO  rN  z __pyx_temp_scalar = r:  z __pyx_temp_slice = __pyx_temp_sliceFT)force_stridedzPy_DECREF(*(PyObject **) %s);z*((z *) z) = __pyx_temp_scalar;zPy_INCREF(__pyx_temp_scalar);N)rN  rP  rr  r   r|  r   ri  r   begin_blockr   r  r  r  r>  r   r.  r   r   r   r   
slice_iterr\  start_loopsrx   	end_loops	end_block)rX   scalarr   rP  ri  	type_decl
slice_decldst_tempr  r  r  slice_iter_objps   &&&          rR   rw  *MemoryCopyScalar._generate_assignment_code<  s    ((6##**2.	XX]]33B7


9fmmoNO88""$$(:(:(<(<xx(HJJj$((//BSTU)H((++C#y))3993D3D3D36883C3C3C36883C3C3C $	  $..txx}}h/3xx}}/A/A4=J / L &&(JJ6:;

)QGHJJ67  "rT   rS  )
r[   r\   r]   r^   r  r  rw  r_   r`   ra   rb   s   @@rR   r\  r\  /  s     #' 'rT   r\  c                   $  a a ] tR tRt o. ROtRtRtR tR R ltR t	R t
R tR	 tR
 tR!R ltR tV 3R ltRt]P&                  ! RRRR/R7      t]P&                  ! RRRR/R7      tV 3R ltR tR"R ltR#R ltR tR tR tR tR tRtVt V ;t!# )$SliceIndexNodeif  FNc                   V P                   P                  V4      pVP                  '       g   VP                  '       d   \        # VP
                  '       d   \        # V\        \        \        \        \        39   d   V# VP                  '       g   VP                  '       d"   \        P                  ! VP                  R 4      # \        # rL   )r  r   r  r#  r   r  r   r    r   r   rX  r  r   r  rY  r   r  s   && rR   r   SliceIndexNode.infer_typet  s    II((-	)"8"8"8''':~|$j2 2!3!3!3**9+>+>EErT   c                    V\         JdV   V P                  '       dD   V P                  P                  4       '       d   WP                  P                  ,          pM\         pV P                  P                  V4      # rL   )rN  r   r   r   r  r  r  s   &&rR   r  "SliceIndexNode.inferable_item_node  sQ    &4:::zz--//333&yy,,U33rT   c                    V P                   P                  pV'       d7   VP                  '       d   R # V\        \        \
        \        \        39   d   R # \        P                  V 4      # r  )
r  r   r  r   r    r   r   r   r   r  r/  s   & rR   r  SliceIndexNode.may_be_none  sM    IINN	"""Z&
4 4##D))rT   c                    V P                   f   R pMV P                   P                  pV P                  f   R pMV P                  P                  pV P                  P                  W V n        R # rL   )r   r   r   r  )rX   r   r   s   &  rR   rI  (SliceIndexNode.calculate_constant_result  sU    ::EJJ..E99D99,,D#yy88DrT   c                F   V P                   P                  V4      pV P                  f   ^ pMV P                  P                  V4      pV P                  f   R pMV P                  P                  V4      p W#V #   \         d   pT P                  T4        R p?R # R p?ii ; irL   )r  rU  r   r   r  rZ  )rX   rT  r  r   r   rY  s   &&    rR   rU  !SliceIndexNode.compile_time_value  s    yy++D1::EJJ11$7E99D99//5D	-d## 	-))!,,	-s   5A9 9B BB c                    R # rL   rV   r   s   &&rR   rw  )SliceIndexNode.analyse_target_declaration  r  rT   c                z    V P                  VR R7      pVP                  P                  '       d   \        Vn        V# )Frd  )r}  r   rx   r   r  s   && rR   r  #SliceIndexNode.analyse_target_types  s3    !!#u!599   &DIrT   c                
  a V P                   P                  V4      V n         V P                   P                  P                  '       gM   V P                   P                  P                  '       g'   V P                   P                  P
                  '       d   \        V P                  4      p\        V P                  V P                  ;'       g    TV P                  ;'       g    TVR 7      p\        V P                  W@P                   R7      pVP                  WV'       * R7      # V P                  '       d!   V P                  P                  V4      V n	        V P                  '       d!   V P                  P                  V4      V n
        VP                  R,          '       g!   \        V P                  V P                  4       V P                   P                  pVP                  '       dZ   V'       gR   V P                  '       g   V P                  '       g   W`n        M\         P"                  ! VP$                  4      V n        MVP&                  '       g   VP(                  '       d   \+        V4      V n        MVP,                  '       d   \.        V n        M|VP0                  '       d   W`n        McVP                  '       d'   \         P"                  ! VP$                  4      V n        M+V P                   P3                  V4      V n         \4        V n        VP6                  '       d'   W`n        V P                   P9                  R4      V n         V P                  \4        J d   V P                  '       d   V P                  P:                  '       d   V P                  '       d   V P                  P:                  '       d   \        V P                  4      p\        V P                  \<        P>                  ! V P                  ;'       g    T4      \<        P>                  ! V P                  ;'       g    T4      VR 7      P                  V4      V n         M\         PB                  oV3R lpV P                  '       da   V P                  P                  PD                  '       d   V! V P                  RV4      V n	        V P                  PG                  SV4      V n	        V P                  '       da   V P                  P                  PD                  '       d   V! V P                  RV4      V n
        V P                  PG                  SV4      V n
        ^V n$        V # )r  )r  r  r  rm  r{  c                   < ^RI HpHp V! V 4      p\        V P                  \        V P                  STVP                  4       '       d   \        V4      M\        R7      VP                  SV4      \        V P                  VR\        V P                  4      R7      P                  V4      R7      P                  V4      pV! WV4      # )r  EvalWithTempExprNodeResultRefNode)r   r   r   is)operand1r   operand2)true_val	false_valtest)	UtilNodesr  r  CondExprNoder   r  r  r   rN  r`  PrimaryCmpNoderj  r}  analyse_result_type)r   default_valuer{   r  r  node_refnew_exprc_ints   &&&    rR   
allow_none0SliceIndexNode.analyse_types.<locals>.allow_none  s    J(.'HH$"+>K>S>S>U>UM(:[i	 '00<'!)!%!)$((!3	
 $mC( &%c*   ,H??rT   rk  rQ  )%r  r}  r   r  r<   r  rj  r   r.  r   r   r  rf  rs   r   r  r   r  rY  r  r)  r   r  r   rX  r  r   r  r  r   r&   deepcopyslicer  rx   r`  r  )	rX   r{   re  	none_noder  r   rY  r  r  s	   &&&     @rR   r}  SliceIndexNode.analyse_types  sw   II++C0	99>>###tyy~~'E'E'EIjIjIj *Idhh$(JJ$;$;)#'99#9#9	#,.E #4885yyIJ::'k ; ; ; :::11#6DJ999		//4DI~~l++"4::tyy9IINN	g:::diii%	&//	0C0CD	   I$;$;$;(-DI'''$DI!I #++I,?,?@DI		44S9DI&DI$$$!I		334\]DI99&JJJ$**"7"7"7dii&:&:&:$TXX.	&HH--

(?(?i@tyy'='=I>"	
  -$ 
 00E@. zzz::??...!+DJJS!ADJ!ZZ11%=
yyy99>>--- *4996F LDI II//s;	rT   c                   V P                   P                  V4      pV'       d   V P                  '       g   V P                  '       g   ^RIHp VP                  VP                  VP                  P                  4      4       \        V P                  4      p\        V P                  VVVR7      p\        P                  ! W#P                  W.4      4      # R# )r  rO  r  N)r  r  r   r   rN  rP  r   r>  r  r?  rj  r   r.  r   r@  rA  )rX   r{   rY  rP  r  
slice_nodes   &&    rR   r  SliceIndexNode.analyse_as_type  s    II--c2	:::diii($$44AA
 %TXX.	&HH#""	
 "5588lKM MrT   c                D   < VP                   V n         \        SV `	  V4      # rL   )r   rN   r  rX   r{   rQ   s   &&rR   r  SliceIndexNode.nogil_check-  s    YY
w"3''rT   zSlicing Python objectSliceObjectr  rB  Get)r  Setc                  < V P                   P                  P                  '       g'   V P                   P                  P                  '       ds   V\        \
        \        39   d]   V\        J dM   VP                  R ,          '       g4   \        V P                  RV P                   P                  : RV: R24       Wn        VP                  '       df   V P                   P                  P                  '       d@   V P                  '       g.   V P                  '       g   V P                   P                  W4      # \        SV `5  W4      # )rh   /default encoding required for conversion from '' to 'r  )r  r   r  r)  r   r    r   rs   r   r   r  r   r   r`  rN   r4  s   &&&rR   r`  SliceIndexNode.coerce_to9  s    YY^^%%%)E)E)E^\ JJL(@S1T1TdhhYY^^X/0 !I!8!8!8:::diiiyy**899w //rT   c                   V P                   P                  '       g*   \        V P                  R V P                   ,          4       R# V P                  P                   pV P                  4       pV P                  4       pV P                  4       pVP                  '       d   V P                  P                  \        P                  4      pV P                   \        J d   RpM;V P                   \        J d   RpM$V P                   P                  P                  4       pV P                   f   RV RV RV R2pEM_RV RV RV R	V R
V R2pEMKVP"                  '       d   V P                  P                  \        P$                  4      pVP&                  P)                  \*        P,                  ! RR4      4       V P                   f   RV RV R2pEMRV RV R	V R
V R2	pEMV\        J dY   V P                  P                  4       pVP&                  P)                  \*        P,                  ! RR4      4       RV R	V R	V R2pEMTV P                   \.        J d   V P                  P1                  4       pV P3                  4       w  rrrp\5        VP&                  P6                  R,          4      pVP&                  P)                  V P8                  4       RV R	V R	V R	V R	V R	V R	V	R R	V
R R	VR R2pMV P                  P1                  4       pV\:        J d4   VP&                  P)                  \<        P,                  ! RR4      4       RpM?V\>        J d4   VP&                  P)                  \<        P,                  ! RR4      4       RpMRpV RV R	V R	V R2pVPA                  V RV RVPC                  W0P                  4       24       V PE                  V4       R# )z,Slicing is not currently supported for '%s'.N	ByteArrayUnicoder  z_FromString(r  rb  z_FromStringAndSize(r   - pyunicode_from_unicoder  z__Pyx_PyUnicode_FromUnicode(z%__Pyx_PyUnicode_FromUnicodeAndLength(PyUnicode_Substringz__Pyx_PyUnicode_Substring(rm  z__Pyx_PyObject_GetSlice(r  SliceTupleAndListr  __Pyx_PyList_GetSlice__Pyx_PyTuple_GetSlicePySequence_GetSlicer8  r9  r  )#r   rx   r   r   r  r  
start_code	stop_coder  r/  r   rv   r    r   ry   titler   r  c_const_py_unicode_ptr_typer   r   r   r   r   r   get_slice_configr  rs   get_slice_utility_coder   r	   r   r   r   r<  )rX   r   rY  r  r  r  base_result	type_namecallhas_c_start
has_c_stopc_startc_stoppy_startpy_stoppy_slicerm  cfuncs   &&                rR   r  #SliceIndexNode.generate_result_codeH  s   yy$$$$((@499LNIINN	__&
NN$	))--j.N.NOKyyN* (	l*%	 IINN002	yy !)LSTUV!),?}CPZ|[]^g]hhklvkwwxy'''))--j.T.TUK--''(@/RTyy 5k]#j\QRS>{m3zlZ\]f\ggjkujvvwx,&))**,K--''(=OQ/}Bzl"YKWXYDYY.())--/KTXTiTiTkQKWhd..99,GHJ--d.I.IJ.-r'"VHBxj7)2hZWYq/Jq>Jq>DD ))--/KI%  11&223FHZ[]/j(  11&223FHZ[]0-WAk]"ZL9+QGD

fXSb)@)@)R(STUT"rT   c                n   V P                  V4       V P                  P                  '       d   VP                  P	                  V P
                  4       V P                  4       w  rgrrpVP                  V P                  R V P                  P                  4       VP                  4       WWVWg\        VP                  P                  R,          4      3
,          4       EMV P                  '       d   V P                  4       MRpVP                  P                  '       d)   VP                  P                   pV P#                  W.4       MV P%                  4       : RV: 2pVP                  P	                  \&        P(                  ! RR4      4       VP+                  RV P                  P-                  4       : RV: RVP-                  4       : R	V P                  P-                  4       : R
V: R24       V P/                  V4       V P1                  V4       VP3                  V4       VP5                  V4       R# )z?__Pyx_PyObject_SetSlice(%s, %s, %s, %s, %s, %s, %s, %d, %d, %d)rm  rk  r  IncludeStringHr  	memcpy(&(r  ]), r?  z[0]) * (r  N)r  r   rx   r   r   set_slice_utility_coder  rC  r   r  r   r  rs   r   r  r  rj  generate_slice_guard_coder  r   r   r   r  r  r  r  r#  )rX   r   r   r  r   r   r  r  r  r  r  r  r  start_offsetarray_lengths   &&&&&&         rR   r  'SliceIndexNode.generate_assignment_code  s   --d399   --d.I.IJTXTiTiTkQKWh!!$((QII'')MMOx))44\BCUE EF 15


4??,Lxx   "xx}}..tB,0NN,<lK--k.E.EFVXg.hiJJ		  "L

		  "L  	++D1%""4(trT   c                H   V P                   P                  P                  '       g*   \        V P                  R V P                  ,          4       R# V P                  V4       VP                  P                  V P                  4       V P                  4       w  r4rVrxp	VP                  V P                  RV P                   P                  4       WVWxV	W4\        VP                  P                  R,          4      3	,          4       V P                  V4       V P                  V4       R# )z=Deleting slices is only supported for Python types, not '%s'.Nz;__Pyx_PyObject_DelSlice(%s, %s, %s, %s, %s, %s, %d, %d, %d)rm  )r  r   rx   r   r   r  r   r   r  r  rC  r   r  rs   r  r  )
rX   r   r  r  r  r  r  r  r  r  s
   &&&       rR   r   %SliceIndexNode.generate_deletion_code  s    yy~~)))$((QTXT]T]]_--d3))$*E*EF(,(=(=(?	&'	HdhhI		##%8T%%00>?MA A	B 	++D1%rT   c                   R RRr2pV P                   '       dj   V P                   P                  P                  '       * pV'       d   V P                   P                  4       pM!RV P                   P	                  4       ,          pR RRrepV P
                  '       dj   V P
                  P                  P                  '       * pV'       d   V P
                  P                  4       pM!RV P
                  P	                  4       ,          pV P                  ;'       d*    RV P                  P	                  4       ,          ;'       g    RpWW%W6V3# )Frk  rP  &%s)r   r   rx   r  r   r   r  )rX   r  r  r  r  r  r  r  s   &       rR   r  SliceIndexNode.get_slice_config  s    ).Vh:::"jjoo999K**++- 4::#7#7#99&+S&G
999!YY^^777J))+$))"5"5"77::@@%$***>*>*@"@JJF8- 	-rT   c                    V P                   P                  P                  '       g   R # V P                   P                  P                  p \	        V4      ;rCR ;rVV P                  '       dJ   V P                  P                  4       p \	        V4      pV^ 8  d   Vf   RW63,          pMW6,          pMTpR pV P                  '       d   V P                  P                  4       p \	        V4      pV^ 8  d7   Vf+   RV P                   P                  P                  V3,          pMWT,          p\        V\        4      '       d
   W5,          pM
V: RV: R2pR pR pRp \	        V4      p	\        V\        4      pV'       d&   V^ 8  d   V	^ 8  d   \        V P                  R4       MTV'       d.   Vf*   Vf&   W8w  d   \        V P                  RV: RV: 24       MVe   Vf   TpRV: R	V: R2pM	Ve   TpMTpV'       d   VP                  R
V: RV: R24       V P                  '       d   VP                  4        VP                  RV: RV: R24       V P                  '       d   VP                  4        VP                  VP!                  V P                  4      4       VP                  R4       R # R #   \
         d    R p ELni ; i  \
         d     EL"i ; i  \
         d     ELi ; i  \
         d    R p	 ELi ; i)Nz%s + %dz - (rb  FzAssignment to empty slice.z.Assignment to slice of wrong length, expected r  r8  z)-(if (unlikely((z) != ())) {zPyErr_Format(PyExc_ValueError, "Assignment to slice of wrong length, expected %" CYTHON_FORMAT_SSIZE_T "d, got %" CYTHON_FORMAT_SSIZE_T "d", (Py_ssize_t)(z), (Py_ssize_t)(r  r   )r  r   r  rj  r   r   r   r  r   r   r   r   r   r   r   r   r   )
rX   r   target_size
slice_sizetotal_lengthr   r   runtime_checkcompile_time_checkint_target_sizes
   &&&       rR   r  (SliceIndexNode.generate_slice_guard_code  s   yy~~&&&YY^^((
	 (+J7L 99999##%D4y!8#+%.*1C%C
"*
!%J :::JJ%%'EE
19#+ )TYY^^-@-@%,H H-j#..'J0:E!BJ "	=!+.O ",J!<*q."dhh <=EMdl,dhh +!/ 0|!+/7M M&MJJ-UVzzz##%JJ  01
 zzz,,.JJttxx01JJsO }  	 L	    "    	#"O	#sI   
J4 .K !A3K K, 4KKKKK)(K),K=<K=c                ^    V P                   '       d   V P                   P                  4       # R # )rk  )r   r  rW   s   &rR   r  SliceIndexNode.start_code)  s!    :::::$$&&rT   c                    V P                   '       d   V P                   P                  4       # V P                  P                  P                  '       d!   V P                  P                  P
                  # R # )rQ  )r   r  r  r   r  rj  rW   s   &rR   r  SliceIndexNode.stop_code/  sI    99999##%%YY^^$$$99>>&&&#rT   c                    R # )z<unused>rV   rW   s   &rR   r  $SliceIndexNode.calculate_result_code7  s    rT   )r  r   r  r   r  r   r   r   )r  r   r   r  r	  r1  r  r  )"r[   r\   r]   r^   r   r   r  r   r  r  rI  rU  rw  r  r}  r  r  ri  r	   loadr  r  r`  r  r  r   r  r  r  r  r  r_   r`   ra   rb   s   @@rR   r  r  f  s      2HEE4*	E-]~,( *K/44)He3DF 044)He3DF0E#N D&&-&Pd$ rT   r  c                   \   a  ] tR tRt o . ROtRt]t^tR t	R t
R tR tRtR tR	 tR
tV tR# )r.  i<  Tc                    \        V P                  P                  V P                  P                  V P                  P                  4      V n        R # rL   r  r   r   r   r   rW   s   &rR   rI  #SliceNode.calculate_constant_resultH  6    $JJ&&II%%II%% 'rT   c                   V P                   P                  V4      pV P                  P                  V4      pV P                  P                  V4      p \	        W#V4      #   \
         d   pT P                  T4        R p?R # R p?ii ; irL   r   rU  r   r   r  r  rZ  rX   rT  r   r   r   rY  s   &&    rR   rU  SliceNode.compile_time_valueN  q    

--d3yy++D1yy++D1	-d++ 	-))!,,	-   A B*BBc                    R # r  rV   rW   s   &rR   r  SliceNode.may_be_noneW  r#  rT   c                   V P                   P                  V4      pV P                  P                  V4      pV P                  P                  V4      pVP	                  V4      V n         VP	                  V4      V n        VP	                  V4      V n        V P                   P
                  '       dG   V P                  P
                  '       d+   V P                  P
                  '       d   R V n        RV n        V # r  )r   r}  r   r   r  r   r  )rX   r{   r   r   r   s   &&   rR   r}  SliceNode.analyse_typesZ  s    

((-yy&&s+yy&&s+--c2
++C0	++C0	::   TYY%9%9%9dii>R>R>R"DO DLrT   z Constructing Python slice objectc                    V P                   # rL   r  rW   s   &rR   r  SliceNode.calculate_result_codeh  r  rT   c                   V P                   '       dl   \        V P                  V 34      pVP                  R VR7      V n        VP                  V P                  4      pVf   R# VP                  V P                  4       VP                  V P                  4       : RV P                  P                  4       : RV P                  P                  4       : RV P                  P                  4       : RVP                  V P                  4       V P                  4      : 2	4       V P                  V4       V P                   '       d   V P!                  V4       R# R# )r  	dedup_keyNz = PySlice_New(r  rf  )r   r   r   rA  r  rB  r   r   r   r  r   r   r   r   r   r<  rD  )rX   r   r	  s   && rR   r  SliceNode.generate_result_codek  s    ???&tyy4':I#00I0ND33D4D4DED|MM$((#



$$&		##%		##%''txx@B	C 	T"???!!$' rT   )r   r   r  r  r   r   r   Nr  )r[   r\   r]   r^   r   r   r!   r   r  rI  rU  r  r}  ri  r  r  r_   r`   r  s   @rR   r.  r.  <  sE      )HHDG'-
 5K ( (rT   r.  c                   H   a  ] tR tRt o ^ tR tR tR tR tR t	R t
RtV tR	# )
r  i  c                    \        V P                  P                  V P                  P                  V P                  P                  4      V n        R # rL   r	  rW   s   &rR   rI  &SliceIntNode.calculate_constant_result  r	  rT   c                   V P                   P                  V4      pV P                  P                  V4      pV P                  P                  V4      p \	        W#V4      #   \
         d   pT P                  T4        R p?R # R p?ii ; irL   r	  r		  s   &&    rR   rU  SliceIntNode.compile_time_value  r	  r	  c                    R # r  rV   rW   s   &rR   r  SliceIntNode.may_be_none  r#  rT   c                   V P                   P                  V4      V n         V P                  P                  V4      V n        V P                  P                  V4      V n        V P                   P                  '       g!   V P                   P                  V4      V n         V P                  P                  '       g!   V P                  P                  V4      V n        V P                  P                  '       g!   V P                  P                  V4      V n        V P                   P                  '       dG   V P                  P                  '       d+   V P                  P                  '       d   R V n        RV n        V # r  )r   r}  r   r   r   r  r   r  r   s   &&rR   r}  SliceIntNode.analyse_types  s    ZZ--c2
II++C0	II++C0	zz!!!33C8DJyy   		11#6DIyy   		11#6DI::   TYY%9%9%9dii>R>R>R"DO DLrT   c                    R # rL   rV   rW   s   &rR   r  "SliceIntNode.calculate_result_code  r  rT   c                    V P                   V P                  V P                  3 F5  p\        V\        4      '       g   K  VP
                  P                  4        K7  	  R # rL   )r   r   r   r   r  r   r  )rX   r   r  s   && rR   r  !SliceIntNode.generate_result_code  s9    DIIdii/A!Y'' 0rT   )r   r   r  r   r   r   N)r[   r\   r]   r^   r  rI  rU  r  r}  r  r  r_   r`   r  s   @rR   r  r    s/      G'-" rT   r  c                   b   a  ] tR tRt o RtR tR tR tR tRR lt	R t
R	 tR
 tR tRtRtV tR# )CallNodei  Nc                8   V P                   pVP                  V4      p\        V\        4      '       d!   \        P
                  ! VP                  4      # V\        J d   VP                  '       dZ   VP                  P                  V4      pVP                  '       d-   \        P                  ! WBP                  4      pV\        Jd   V# \        VR R4      pVe   VP                  ;'       g    TpVP                   '       d   VP"                  pVP$                  '       d   \        V P                   R R4      '       d   \'        V R4      '       d   V P(                   Uu. uF  qwP                  V4      NK  	  ppV P                   P*                  P-                  W4      p	V	'       d7   V	P                  pVP                   '       d   VP"                  pVP.                  # VP.                  # V\0        J d   VP2                  '       d   VP*                  '       d   VP*                  P                  '       d   VP*                  P                  pVP4                  '       d   V# VP                  '       d\   VP*                  P6                  p
V
R8X  d   \        P8                  # V
R8X  d   \        P:                  # V
\        P<                  9   d   V# V P                   P?                  V4      pV'       d'   VP@                  '       g   VPB                  '       d   V# \        # u upi )r   Nr   r   r  )"r  r   r   rk  r   r  rp  r   r  r  r  r   "find_return_type_of_builtin_methodr  r  r   rX  rY  r  rn  r   r   best_function_matchr  r   r   r  ry   r  r  #types_that_construct_their_instancer  is_struct_or_unionr#  )rX   r{   r  r  method_obj_typeresult_typer   r   	arg_types
func_entry	func_names   &&         rR   r   CallNode.infer_type  sT   =='',	h,,&&x':':;;&$$$"*,,"9"9#">"222")"L"L_^p^p"qK".8**Hgt4E !JJ33)	!++I!!!t}}gt44v9N9N<@IIFIS^^C0I	F!]]00DDST
 *I '''$-$7$7	$000((()#HNNNx~~7J7J7J&nn11000&& 000 ( 3 3I G+)777"f,)555"g&Q&QQ**MM11#6	)666):P:P:P1 Gs   Lc                8    V P                   P                  V4      # rL   )r  r  r   s   &&rR   r  CallNode.type_dependencies  s     }}..s33rT   c                    R # r  rV   rW   s   &rR   r  CallNode.is_simple  s    
 rT   c                   V P                   e   V P                   # V P                  P                  pV\        J d   V P                  P                  '       dr   V P                  P
                  pVP                  P                  '       d   R# VP                  P                  '       d"   VP                  \        P                  9   d   R# \        P                  V 4      # NF)may_return_noner  r   r   r   r   r  r  ry   r   r)	  r   r  )rX   r  r   s   &  rR   r  CallNode.may_be_none  s    +'''MM&&		!dmm&;&;&;MM''Ezz+++

***JJ'"M"MM##D))rT   c                   \         V n        Vf   VP                  pVP                  '       Ed   VP                  pV\        P
                  J d   V'       d   VP                  '       d   VP                  \        P                  9   dx   \         V n	        RV n
        VP                  R8X  d-   \        P                  V n        \        P                  V n	        R # \        P                  VP                  ,          V n        R # VP                  '       d0   VP                  P                  V n        \         V n	        RV n
        R # R # VP                  '       d   VP                   P                  P"                  '       d   VP                   P                  p\        P$                  ! WAP&                  4      pV\         J V n
        VP(                  '       d	   WPn        R # VP*                  '       d   VP*                  V n        R # R # R # R # )NFr   )r   r   r   r   r   r   r  ry   r)	  rC  r7	  r   r  builtin_typesr  r  r  r  r'	  r  rx   r   )rX   r  r  r   r+	  r,	  s   &&&   rR   set_py_result_typeCallNode.set_py_result_type  sj   "	 INNEG---e...5::AlAl3l$2!',$::( * 8 8DI(2(@(@D% ' 5 5ejj ADI$$$ %//44	$2!',$ % """x||'8'8'H'H'H&ll//O!DD_VhVhiK#..#@D &&&'	,,,'77	 - (I"rT   c                   V P                   P                  V4      pV'       d   VP                  '       d   V P                  4       w  r4. p\	        W2P
                  P                  4       FK  w  rgVP                  \        VP                  \        VP                  VP                  R7      VR7      4       KM  	  V'       d   WTP                  ,          p\        V P                  VR7      pVP                  V4      P                  W!4      pV# V'       Ed1   VP                   '       Ed   V P"                   Uu. uF  qfP                  V4      NK  	  upV n        VP
                  P%                  R4      p	V	'       gI   \'        V P                   P                  RV P                   P                  ,          4       \(        V n        V # \-        V P                   P                  V	P*                  4      V n         WP                   n        V P                   P1                  VP3                  4       4       V P5                  V4       W n        V # R# R# u upi )z$
Returns a replacement node or None
r  keyr   key_value_pairsz<init>z'no constructor found for C++  type '%s'N)r  r  r*	  explicit_args_kwdsr  rp  r  r  DictItemNoder   rW  ry   rA	  DictNoder}  r`  r#  r   r  r   r2   r   r  r   r  rz  analyse_c_function_call)
rX   r{   r   r   r  r  r   memberr   rq  s
   &&        rR   analyse_as_type_constructor$CallNode.analyse_as_type_constructor%  s    }},,S1D+++002JDE"4)?)?@\#''{377RXR]R]7^fijk  A---DHHe<D%%c*44T?DKTd'''<@IIGIS++C0IGDI**++H5Kdmm'')RUYUbUbUgUg)gh&	,T]]->->@P@PQDM"-MMMM##D$?$?$AB((-IK (TGs   5Ic                n    V P                   P                  pVP                  '       d   VP                  pV# rL   )r  r   rX  rY  rX   r  s   & rR   function_typeCallNode.function_typeC  s0     MM&&	!++IrT   c                .    V P                   P                  # rL   )r   r$  rW   s   &rR   r
  CallNode.is_lvalueM  s    yy%%%rT   c                    V P                  4       pVP                  '       d   V P                  4        R# VP                  '       g(   \	        VR R4      '       g   V P                  4        R# R# R# )r   FN)rK	  rx   r  rd  r  )rX   r{   r  s   && rR   r  CallNode.nogil_checkP  sS    &&(	   NN###GIw,N,NNN -O#rT   zCalling gil-requiring function)r   r  r7	  rC  r   rL   )r[   r\   r]   r^   r7	  r   r  r  r  r;	  rG	  rK	  r
  r  ri  r_   r`   r  s   @rR   r%	  r%	    sB      O.`4
*8B<& 3KrT   r%	  c                      a a ] tR tRt o. ROtRtRtRtRtRt	Rt
RtRtR tR t]R 4       tR tR tR	 tR
 tR tR tR tV 3R ltR tRtVtV ;t# )r  iZ  NFc                    V P                   P                  V4      pV P                   Uu. uF  q3P                  V4      NK  	  pp V! V!  # u upi   \         d   pT P	                  T4        R p?R # R p?ii ; irL   )r  rU  r   r  rZ  )rX   rT  r  r   r   rY  s   &&    rR   rU  !SimpleCallNode.compile_time_valueq  so    ==33D98<		B	&&t,	B	-T?" C  	-))!,,	-s   AA A8A33A8c                   V P                   P                  '       Ed'   V P                   P                  P                  '       d   V P                   P                  p\
        P                  ! V4      '       g   \
        P                  ! V4      '       d   VP                  pV P                   P                  P                  pV'       d   VP                  M\        VP                  4      P                  p\        P                  ! WB4      '       d2   V P                   Uu. uF  qUP                  NK  	  ppV! V!  V n        R # R # R # R # R # u upi rL   )r  r  r  r   r   r%   	isbuiltinismethodr[   r   ry   __self__r   is_safe_compile_time_methodr   )rX   methodr  object_typeobject_type_namer   r   s   &      rR   rI  (SimpleCallNode.calculate_constant_resulty  s    ==%%%$--*;*;*F*F*F]]22F  ((G,<,<V,D,D$oo"mm//447B;#3#3V__H]HfHf 667GUU;?99E9C//9DE+14=D( V -E +G% Fs   Ec                    VP                   pVP                  VP                  4      pV'       g   Q R V: RVP                  : 24       h\	        WP                  WUP
                  R7      pV ! WV.R7      pV# )zGetter not found in scope rX  )ry   r   r   r  )rp  r  ry   r  r_  r   )rP   r   r  r   property_scopegetter_entryr  r   s   &&&&    rR   for_cpropertySimpleCallNode.for_cproperty  sc     %11%**=j>SaSiSijj|CjjK\K\]36rT   c                p   V P                   P                  4       pVR 8X  d   \        V P                  4      ^8w  d#   \	        V P                  P
                  R4       R# V P                  ^ ,          P                  V4      pV'       g*   \	        V P                  ^ ,          P
                  R4       R# \        P                  ! V4      # VR8X  di   \        V P                  4      ^8w  d!   \	        V P                  P
                  R4       V P                  ^ ,          P                  V4      pVP                  # R# )r4  zonly one type allowed.zUnknown typetypeofN)r  r  r   r   r   r   r  r   r  r}  r   )rX   r{   rD  r   operands   &&   rR   r  SimpleCallNode.analyse_as_type  s    }}0029499~"diimm%=>yy|33C8$))A,**N;%..t44X499~"diimm%=>iil005G<<	 rT   c                    V P                   R 3# rL   r   rW   s   &rR   rB	  !SimpleCallNode.explicit_args_kwds  s    yy$rT   c                $   V P                   '       d   V # R V n         V P                  V4      ;pe   V# ^V P                  n        V P                  P	                  V4      V n        V P                  pVP
                  '       dZ   VP                  '       dH   VP                  P                  '       d,   VP                  V n	        \        V P                  4      Vn        V P                  4       pRV n        \        V4      '       d   VP                  '       d   \        V4      '       d   R p\!        V P"                  V P$                  R7      V n        V P&                  P	                  V4      V n        V P&                  P$                   F  pV\)        V4      ,          pK  	  \+        V4      V n        V P                  '       dm   VP-                  \/        V4      4       \0        P3                  V \5        V4      V P&                  \7        \9        W0P&                  P$                  4      4      R7      # VP:                  '       dw   \!        V P"                  V P$                  R7      V n        V P&                  P	                  V4      P=                  V4      V n        RV n        V P?                  W44       ^V n         V # V P$                   Uu. uF  qfP	                  V4      NK  	  upV n        V PC                  V4       VPD                  R8X  d   R V n         V # u upi )TNFrg	  )function_cnamer  r   r   )#analysedrG	  r  rf  r}  r  r   
is_cmethodr  rX   r  rK	  is_numpy_call_with_exprsr@   r  rE   r  r   r   r  rC   r  add_include_filerF   NumPyMethodCallNoder  rG   rH   r=   rx   r  r;	  r  rE	  r   )rX   r{   as_type_constructorr  r  has_pythran_argsr   s   &&     rR   r}  SimpleCallNode.analyse_types  sZ   ===K#'#C#CC#HHU&&"#33C8==   X^^^8Q8Q8Q !DI$TYY/HL&&(	(-%3H$?$?$?/99#&txx		BDN!^^99#>DN~~** $Ec$JJ  +,01A,BD)(((  !>x!HI&00.x8.. !28^^=P=P!QR	 1   """&txx		BDN!^^99#>QQRUVDNDI##H8DL  =AIIGIS++C0IGDI((-((C/# Hs   Lc           
        V P                   P                  pV\        J d   \        V n        R # VP                  '       dn   VP                  '       d\   V P
                  '       d=   V P
                  P                  P                  '       d   \        V P                  R4       V P                  pM=V P
                  '       d    V P
                  .V P                  ,           pMV P                  pVP                  '       dS   V P                   P                  P                  P                  R4      pVf   \        P                  V n        RV n        R # M\        V P                   R4      '       d   V P                   P                   pM[V P                   P"                  '       d>   V P                   P$                  '       d"   V P                   P                  P                   pMR pV'       d    TP'                  TV Uu. uF  qUP                  NK  	  upRV Uu. uF  qUP)                  4       NK  	  upR7      pRTn        TP                  '       g   Y`P                   n        TP                  T P                   n        T P1                  4       pM_R pV P1                  4       pVP                  '       g<   \        V P                  RV,          4       \        P                  V n        RV n        R # \3        VP                  4      p	WP4                  ,
          p
\3        V4      pVP4                  '       d   W8w  d   ^V n        ^V n        V'       Ed   VP:                  '       Ed   VP                  '       Ed   VP                  '       Eg   VP                  ^ ,          pV^ ,          pVP<                  '       d   V P
                  '       d[   V P
                  P?                  RPA                  \3        VPB                  4      ^8:  d   R	MR
4      RVPB                  .R7      V n        M3VP?                  RVPB                  VP                  PB                  .R7      pV P
                  '       da   VPD                  '       d   \G        V P
                  4      pM\I        V P
                  4      pVPK                  VP                  V4      ;qPn&        MqVP                  PN                  '       dV   VPK                  VP                  V4      pVP                  PN                  '       d   \Q        V\R        4      '       d   RVn*        WS^ &   Rp\W        \Y        W4      4       F  pVP                  V,          pVP                  pW>,          PK                  W4      pVP<                  '       d   VP?                  R4      pVP[                  4       '       d   V^ 8  d   RpMuVP                  P\                  '       dZ   VP^                  '       gH   V^ 8X  d   V P
                  e   M1VPa                  4       '       d   MV^ 8  d   RpVPc                  V4      pWSV&   K  	  \W        W4       F  pW>,          pVP                  P\                  '       d   VP                  \d        J d   \        Pf                  pMVP                  Pi                  4       pVf0   \        V P                  V^,
          ,          P                  R4       MVPK                  VV4      ;W>&   pVP[                  4       '       g   K  V^ 8  g   K  RpK  	  V'       d   \W        V^,
          4       F  pV^ 8X  d   V P
                  e   K  W>,          pVPa                  4       '       d   K:  VP                  P                  '       d   KX  VP^                  '       d   VP                  P\                  '       d   K  V^ 8  g   V^8X  g   K  V P
                  f   K  \k        VP                  R^ 4        M	  W0P                  R&   \Q        V P                   \l        4      '       d1   \        Pn                  ! V P                   Pp                  4      V n        MVPr                  V n        V P                   Pt                  '       g   V P                   Pv                  '       dJ   V P                   P                   pV'       d,   VPx                  '       g   VPz                  '       d   ^V n        V P                  P\                  '       d   \|        V n?        ^V n        MKVP                  f   VP                  '       d	   ^V n        M#V P                  P                  '       d   ^V n        V P8                  '       dL   V P                  P                  '       d0   \        P                  ! V P                  P                  4      V n        VPr                  P                  '       d@   RVP                  V P                   P                  VPr                  P                  4      n        VP                  R8X  d8   \        V4      '       d'   VP                  \        P                  ! RR4      4       VP                  R,          V nN        R # u upi u upi   \        P*                   dQ   p\-        T4      pT'       d   \        T P                  T4       \        P                  T n        RT n         R p?R # R p?ii ; i)Nz4Cannot call a static method on an instance variable.z
operator()r  r   T)fail_if_emptyarg_is_lvalue_arrayzCalling non-function type '%s')'NoneType' object has no attribute '%{}s'.30rN  PyExc_AttributeError)r   r  z@descriptor '%s' requires a '%s' object but received a 'NoneType'r  FzGcannot pass None into a C function argument that is declared 'not None'z5Python object cannot be passed as a varargs parameterTArgument evaluation order in C function call is undefined and may not be as expectedr`  r   r  r  overflowcheck)Or  r   r2   r  is_static_methodrX   r  r   r   r   r#  rp  r  r   r  rn  r   r  r  r(	  r
  NoMatchFoundr   r\  rK	  r   optional_arg_counthas_optional_argsr  rl	  not_noner  r&  ry   accept_builtin_subtypesCMethodSelfCloneNoder  r`  coerced_selfr  r   rl  exact_builtin_typer  minr  rx   r   r  r  r   r0   default_coerced_ctyper   rk  r  rp  r  r   r  r   utility_code_definitionr   rC  r   r   r  r$  CFakeReferenceTyperU  r  declare_tuple_typer  r   r   r   r   rs   r{	  )rX   r{   r  r   overloaded_entryr   r   excr  	max_nargsexpected_nargsactual_nargs
formal_argsome_args_in_tempsr  formal_type	arg_ctyper.	  s   &&                rR   rE	  &SimpleCallNode.analyse_c_function_call  s   MM&&	
""DI!!!i&@&@&@yyyTYY^^=== dhh VW99DYYYII;*D99D!!!#}}1177>>|L'&11	#,  ( T]]G,,#}}22]]'''DMM,H,H,H#}}1177#(<<)-.#XX."&DH(IDSD(I	 =  EJ)))&+#!&DMM**,IE**,I)))dhh @9 LM&11	#,  	'	"%A%AA4y'''N,J%&D"DL 5U%%%)...A[A[A["*Jq'C"""999 $		 ; ;CJJTWX]XbXbTcgiTi5oqr4%*ZZL !< !2DI //Z%*ZZ1E1E$F 0 HC yyy555.tyy9C#DII.C*---
*MM'000mmJOOS988+++
30O0O-2C*G #s934A"*J$//K'##K5C"""++]_!!##q5)-&%%%ciii6dii3--// 1u-1*,,S1CG7 5< y/A'Cxx###88|+ * : :I # > > @I$$))AaC.,,QS %(MM)S$AADGc!!##A%)" 0   <>*6dii3g++--XX***YYY388#7#7#7  1uQ499+@)  BC  D) +, 		! dmm[11"++DMM,D,DEDI!--DI==   DMM$>$>$>,,Jz666*:\:\:\ 99    .DDL&&2i6O6O6ODLYY)))DL <<<DII222"55dii6M6MNDI  ***_cC""4==#4#4i6K6K6V6VW\ $$+-i88$$[%<%<=UWg%hi ^^O<W /(I** c($((G,&11	#, s7   %j 5j
	j j(j 
j k2"Ak--k2c                "    V P                  4       # rL   )c_call_coderW   s   &rR   r  $SimpleCallNode.calculate_result_code  s    !!rT   c                   V P                  4       pV P                  \        P                  J g   VP                  '       g   R # VP
                  p. p\        \        W P
                  4      4      p\        VP
                  4      pWQP                  ,
          p\        V P
                  4      pVRV  F1  w  rV	P                  VP                  4      p
VP                  V
4       K3  	  VP                  '       dV   TP                  \        \        V P                  ;'       g!    V P                   P"                  P$                  4      4      4       VP                  '       d.   Wg8X  d   RpMRV P&                  ,          pVP                  V4       V P
                  \        V4      R  F"  p	VP                  V	P)                  4       4       K$  	  V P                   P+                  4       : RRP-                  V4      : R2pV# )r  NrP  r  r8  r  rb  )rK	  r   r   r2   r  r   r  r  r   r~	  r3  r  r  r   r   wrapper_callr  r   is_unbound_cmethodopt_arg_structr,  r  r  )rX   r  formal_argsarg_list_coder   r	  r	  r	  r	  
actual_argarg_codeoptional_argsr  s   &            rR   r	  SimpleCallNode.c_call_code  s   &&(	99
---Y5K5K5KnnCYY/0	'	"%A%AA499~&*?N&;"J!44Z__EH  * '< ###  S):):)d)ddmm>Q>Q>d>d%e!fg'''- & %(;(; ;  /))C$4$56J  !;!;!=> 7 "]]113TYY}5MNrT   c                h    V P                  4       pVP                  e   VP                  R8X  d   R# R# )Nr   FT)rK	  r   r   rJ	  s   & rR   r:  #SimpleCallNode.is_c_result_required  s/    &&(	$$,	0I0IS0PrT   c                F  < V P                   pVP                  '       g   VP                  '       d&   VP                  P	                  VP
                  4       RpV P                  P                  ;'       d    V P                  P                  pV P                  '       d   V'       d   VP                  4       V9   d   VP                  P                  \        P                  ! RR4      4       VP                  RV P                  ^ ,          P                  4       : RV P                  ^ ,          P                  P!                  4       : RVP#                  V P$                  4      : R24       VP                  P&                  '       d]   \)        V P*                  P                  4      ^8  g9   V P*                  P                  '       d.   V P*                  P,                  '       d   \.        SV `a  V4       R# V P*                  P                  '       d   V P*                  P                  ^ ,          MRpV P2                  V P4                  W%3pV F  pVf   K	  VP1                  V4       K  	  VP7                  V P$                  4       V P8                  '       g   Q hV P;                  V4       Vf   VP                  P                  \        P                  ! RR	4      4       VP                  V P                  4       : R
VP=                  4       : RVP?                  V P                  4       V P$                  4      : 24       MVP                  P                  \        P                  ! RR	4      4       VP                  V P                  4       : RVP=                  4       : RVP=                  4       : RVP?                  V P                  4       V P$                  4      : 24       V PA                  V4       V F+  pVf   K	  VPC                  V4       VPE                  V4       K-  	  R# )absCommon
Overflow.cr_  z == __PYX_MIN(z))) {                PyErr_SetString(PyExc_OverflowError,                                "Trying to take the absolute value of the most negative integer is not defined."); z; }NPyObjectCallNoArgr  z = __Pyx_PyObject_CallNoArg(rf  PyObjectCallOneArgz = __Pyx_PyObject_CallOneArg(r  )r	  labs__Pyx_abs_longlong)#r  r   r  r   use_entry_utility_coder   r   rm  r|  r{	  r  r   r   r   r   r   rz  r   r   rx   r   r  r   rN   r  rX   r	  r   r  r  r   r   r<  r  r#  )	rX   r   r  abs_function_cnamesis_signed_intr   r   subexprrQ   s	   &&      rR   r  'SimpleCallNode.generate_evaluation_code  s   ==x44433HNNCC		((==TYY-=-=-HOO4EI\4\--k.E.EhP\.]^JJ !IIaL//1 IIaL--DDF OODHH57 8 }}(((C0C0C,Dq,H###(A(A(AG,T2 )-(;(;(;dnn!!!$IIt00(@G"006   	dhh||||!!$';--k.E.E#%7/9 :JJKKM&&(++DKKM488DFG --k.E.E$&8/: ;JJKKM&&(MMO++DKKM488D	FG 	T"G"..t4""4(  rT   c                   V P                  4       pVP                  '       d   V P                  P                  4       pVP                  P                  \        P                  ! R R4      4       VP                  V P                  4       : RV P                  P                  4       : RV: RVP                  V P                  4       V P                  4      : 24       V P                  V4       R# VP                  '       Edw   VP                  P                   '       * pV P"                  '       EdW   \%        V P&                  4      p\%        VP&                  4      VP(                  ,
          pVP                  P+                  VP,                  P.                  RR7      V n        VP                  V P0                  : R\2        P4                  R,           : R	\%        V P&                  4      V,
          : R
24       \7        \9        VP&                  V P&                  4      4      pWvV  F^  w  rVP                  V P0                  : RVP;                  VP<                  4      : R	V	P?                  VP@                  4      : R
24       K`  	  . p
V P@                  P                  '       d;   V PB                  '       d)   V
PE                  RV P                  4       ,          4       EMV P@                  PF                  '       dO   V PB                  '       g   Q hV
PE                  V P@                  PI                  V P                  4       4      4       EMUVPJ                  R8w  EdD   VPL                  pVPJ                  pVe0   V
PE                  VPO                  V P                  4       V4      4       V'       d   V'       d   V
'       g   \Q        V P                  RR4      p\R        PT                  ! V P                  VP                  PV                  V'       d   VP<                  MRV P@                  PX                  RT;'       d    VPZ                  R7       VP                  P                  \        P                  ! RR4      4       V
PE                  R4       MV
PE                  R4       V PB                  '       g
   V
'       Ed   V P]                  4       pV P                  4       '       db   RV P                  4       ,          pV PB                  '       d8   V P@                  P                  '       d   \_        \`        V P@                  V4      pMRpVPJ                  R8X  dX   \c        YP                  V: V: R
2V P@                  P                  '       d   V P                  4       MRVPL                  V4       MQV
'       d-   VPe                  RPg                  V
4      V P                  4      pMRpVP                  V: V: RV: 24       V P@                  P                  '       d(   V P                  4       '       d   V P                  V4       V P"                  '       d(   VP                  Pi                  V P0                  4       R# R# R# )r{  r  r|  r  z	, NULL); Tr  r  rJ  r9  r:  r  r   Nr   )function_namevoid_returnis_callis_from_pxdr   r   r   r   z%s = rN  z && r  )5rK	  rx   r  r   r   r   r   r   r   r  r  r   r   r<  r  r  	gil_ownedr	  r   r   r~	  r  op_arg_structrY  r	  r   pyrex_prefixr  r  opt_arg_cnamery   r/  r   r  r  r  error_conditionr   r   exception_test_coder  r   write_noexcept_performance_hintrp  r  defined_in_pxdr	  r1   r   r   r   r  r  )rX   r   r  r	  r   r	  r	  r   r	  r	  
exc_checksexc_val	exc_checkperf_hint_entryr   rJ  
goto_errors   &&               rR   r  #SimpleCallNode.generate_result_code  s   &&(	   ~~//1H--k.E.E 2/4 5JJKKMMM++-++DKKM488D	FG   &###000E%%%"499~!$Y^^!4y7S7S!S&*nn&B&B++55$ 'C 'H#

++++c11DII779 : C			:;.2,.O*JJJ //%33JOOD&00A C D /P
 Jyy$$$!!%$++-"78---|||#|!!$))";";DKKM"JK**c1#33%55	&%%g&A&A$++-QU&VW).5dmmWd.SO&FF $$..*>*>FUo.B.B[_,0II,=,=t-<-_-_A_A_	b
 ((99'334H.Y["))*FG"))*<=|||zz&&(;;==!DKKM1C|||		(=(=(= '~tyy#FC,,3+D((sC<P=AYY=R=R=RDKKMX\,5,E,EuN "%)%7%7J8OQUQYQY%Z
%'
JJS#zBC99(((T[[]]((.%%%++D,?,?@ &C $rT   )rk	  r  r   r	  r   r  r	  rm	  r  r	  r{	  r  rC  rX   r   )rX   r	  r  r   r  )r[   r\   r]   r^   r   rX   r	  r  r	  r	  r   rk	  r{	  rU  rI  r  r`	  r  rB	  r}  rE	  r  r	  r:  r  r  r_   r`   ra   rb   s   @@rR   r  r  Z  s      IHDLILEHM-9   ".`N=`"<7)rOA OArT   r  c                   4   a  ] tR tRt o R.tRtRtR tRtV t	R# )ro	  iV  r  Tc                   VP                  V P                  4       V P                  V4       V P                  P                  e   Q hV P                  P
                  pV F  pVP                  V4       K  	  VP                  R4       VP                  RV P                  4       ,          4       VP                  RV P                  4       : RV P                  4       : RV P                  : RRP                  R V 4       4      : R	2	4       R # )
Nz.// function evaluation code for numpy functionr*  r;  r<  r=  z{}(r  c              3   @   "   T F  qP                  4       x  K  	  R # 5irL   )r7  )rj   r  s   & rR   rm   ?NumPyMethodCallNode.generate_evaluation_code.<locals>.<genexpr>o  s     7$Q&&(($r  )};)r   r   r  r  r   r   r  r   r  rj	  r  )rX   r   r   r   s   &&  rR   r  ,NumPyMethodCallNode.generate_evaluation_code`  s    dhh!!$'~~))111~~""C((.  	

CD

/$++-?@

KKMKKMII7$77	9 	:rT   rV   N)
r[   r\   r]   r^   r   r  r7	  r  r_   r`   r  s   @rR   ro	  ro	  V  s"      }HGO: :rT   ro	  c                      a a ] tR tRt o. ROtRtRtRtRtRt	V 3R lt
R t]R 4       t]RR l4       t]R	 4       tV3R
 lR ltR tR tR tR tR tRtVtV ;t# )PyMethodCallNodeir  TFNc                B  < \         SV `  ! V3/ VB  V P                  4       '       d#   R V n        V P                  P
                  V n        V P                  '       dC   V P                  P                  '       d%   V P                  P                  V n
        RV n        R# R# R# r  )rN   r  can_avoid_attribute_lookupuse_method_vectorcallr  r  function_objkwdictr  rA	  kwargs_key_value_pairs)rX   r   kwrQ   s   &&,rR   r  PyMethodCallNode.__init__  sv    ##**,,)-D& $ 1 1D;;;4;;666*.++*E*ED'DK 7;rT   c                8   V P                   '       d#   \        V P                   \        4      '       g   R # V P                  pVP                  '       g   R # VP
                  '       g   R # VP                  '       d   R # \        P                  V4      '       g   R # R# r  )	r	  r   rD	  r  r  
is_py_attris_special_lookupr	  attribute_is_likely_method)rX   r  s   & rR   r	  +PyMethodCallNode.can_avoid_attribute_lookup  so     ;;;z$++x@@==$$$"""%%%::8DD rT   c                ~    V P                   pVP                  '       d   VP                  P                  '       d   R # R# r  )r  r   r   r  )rD  r  s   & rR   r	  +PyMethodCallNode.attribute_is_likely_method  s)    hh;;;399000rT   c                   \        V \        4      '       g   R# V P                  '       d   R# V P                  '       d   \	        V P
                  4      ^8  d   R# \	        V P
                  4      '       g   T;'       g    V'       * # R# )zf
Test whether the positional args given are compatible with
being translated into a PyMethodCallNode.
FT)r   r  r   r   r   r   )r7  
has_kwargshas_explicit_kwargss   &&&rR   can_be_used_for_posargs(PyMethodCallNode.can_be_used_for_posargs  sj     /955&&&%%%#o.B.B*Ca*G?''(( '88j.8rT   c                  a RpV P                   '       d=   V P                  '       d)   V P                  P                  P                  '       d   RpV# V P                  '       d   V P                  pVP                  P                  '       d   RpV# VP
                  '       d`   \        \        \        3o\        ;QJ d)    V3R lVP
                   4       F  '       g   K   RM	  RM! V3R lVP
                   4       4      pV# )zW
Test whether the function passed is suitable to be translated
into a PyMethodCallNode
TFc              3      <"   T F4  pVP                   ;'       d    \        VP                   S4      '       * x  K6  	  R # 5irL   )r   r   )rj   r  non_method_nodess   & rR   rm   <PyMethodCallNode.can_be_used_for_function.<locals>.<genexpr>  s6      &<&:
 NNWW:jnnFV+W'WW&:s   ?$?)
r  r   r   r  r   cf_assignmentsPyCFunctionNode	ClassNodePy3ClassNodert   )r  may_be_a_methodr   r	  s   &  @rR   can_be_used_for_function)PyMethodCallNode.can_be_used_for_function  s        ~~~(.."5"5"B"B"B"'  NNEzz&&&"'  %%%$3Y#M "%# &<&+&:&:&<### &<&+&:&:&< #< rT   c                    < V ^8  d   QhRS[ /# rc  rf  )r&  rc   s   "rR   rg  PyMethodCallNode.__annotate__  s      C rT   c                   V P                   '       d   V P                  P                  V4       VP                  V R V P                  P	                  4        R24       VP                  V\        4       VP                  V P                  P                  4      # VP                  V R24       V P                  P                  V4       V P                  P                  4       '       g3   V P                  '       g;   V P                  P                  4       '       d   V P                  P                  4       # VP                  P                  \        RR7      pV P                  P!                  V4       VP                  V: R V P                  P	                  4       : R24       V P                  P#                  V4       V P                  P%                  V4       V# )r9  r:   = NULL;Tr  r  )r	  r	  r  r   r   r  r   r  r  r  r  unpackr  r  r  r  r  r  r#  )rX   r   self_argr  s   &&& rR   generate_evaluate_function+PyMethodCallNode.generate_evaluate_function  sO   %%%66t<JJ(3t'8'8'B'B'D&EQGHOOHn5++DMM,C,CDD

hZx()..t4 ==''))$+++$--BdBdBfBf=='')) >>//4/P**40

(DMM,C,C,EFG,,T2  &rT   c                   V P                   '       d9   V P                  P                  V4       V P                  P                  V4       R # V P                  P                  4       '       g3   V P                  '       gY   V P                  P                  4       '       d9   V P                  P                  V4       V P                  P                  V4       R # VP                  V\        4       VP                  P                  V4       R # rL   )r	  r	  r  r#  r  r  r	  r  r  r   r  r  rX   r   r  s   &&&rR   generate_dispose_function*PyMethodCallNode.generate_dispose_function  s    %%%44T:((.]]))++DKKKDMMDfDfDhDhMM006MM$$T*!!(N;NN''1rT   c                j   V P                   '       g   V P                  '       g   R # V P                  P                  '       d'   V P	                  V P                  4      '       d   RMRpMV P                  P
                  '       d   V P                  P                  '       d   V P                  P                   F  pVP                  pV'       g   K  VP                  '       g   K-  VP                  P                  '       g   KK  VP                  P                  P                  '       g   Ks  V P	                  V4      '       g   K  Rp M	  RpMRpVP                  R4       VP                  RV: RV: R24       VP                  V RV R24       VP                  R	V R24       VP                  R
V R24       VP                  V\        4       VP                  R\        4       VP                  V\        R4       VP                  V R24       VP                  R4       VP                  R4       R # )Nlikelyunlikelyz#if CYTHON_UNPACK_METHODSr  z(PyMethod_Check(r  z = PyMethod_GET_SELF(r  zassert(z2PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx__function = 0;r   r  )r	  r	  r  r  r	  r   r   r   r  r   rx   r   r  r   r-  )rX   r   r	  space_for_selfarg_var
method_objlikely_methodr  r   s   &&&&&   rR   &generate_runtime_method_unpacking_code7PyMethodCallNode.generate_runtime_method_unpacking_code  s   %%%T[[[==%%%(,(G(G(V(VH\fM]]"""t}}'='='="mm44
"5U///EIINNNuyy~~GaGaGa66u==(0 5 !+&M 	

./

mZPQ

hZ4ZLCD

WXJb)*

G
|SUVW.1)>:J8IJ

+,E23

3

8rT   c                   VP                  V R \        V4       RVP                  W@P                  4       24       VP	                  V\
        4       \        V4       F  w  rVVP                  P                  \        P                  J ;'       d     VP                  P                  4       '       * pTP                  V P                  RV'       d   RMR RVP                  P                  4        RVP                  P                  4        RV R\        P                    R\        V4      ^,            RVR R	24       K  	  R
# )z# = __Pyx_MakeVectorcallBuilderKwds(rf  __Pyx_VectorcallBuilder_AddArgrN  _Checkr8  r  r   r  rb  N)r   r   r   r   r9  r   r  r?	  r   r   r   r  rC  r   r   r   callargs_cname)rX   r   r   r	  kwnames_temprJ  keyvalue
key_is_strs   &&&&&   rR   generate_keyvalue_args'PyMethodCallNode.generate_keyvalue_args  s   

n?DZ@[?\\_&&|XX>?A	
 	n5$%;<KA!**g.B.BBee8<<KcKcKeGeJ!!0zx0PPQ<<))+,B>>++-.b.(()3t9q=/Q%	 =rT   c                &   V P                   '       d   V P                  '       d   R pRpM7RpRpM2V P                  '       d   RpRpMV P                  '       d   RpRpMRpRpVP                  P	                  \
        P                  ! VR	4      4       V# )
!PyObjectVectorCallMethodKwBuilder-__Pyx_Object_VectorcallMethod_CallFromBuilderPyObjectFastCallMethod__Pyx_PyObject_FastCallMethodPyObjectVectorCallKwBuilder'__Pyx_Object_Vectorcall_CallFromBuilderPyObjectFastCall__Pyx_PyObject_FastCallDict__Pyx_PyObject_FastCallr  )r	  r	  r	  r   r   r   r   )rX   r   ry   r  s   &&  rR   select_utility_code$PyMethodCallNode.select_utility_code+  s    %%%***:G/7(((0D=E[[[%D1E%D-E))##D*<=	?rT   c                   VP                  V P                  4       V P                  V4       V P                  pV P                  pVP
                  P                  \        R R7      pV P                  W4      pV P                  P                  pV P                  P                  e   Q hV F  pVP                  V4       K  	  V'       d   V F  pVP                  V4       K  	  MV'       d   VP                  V4       VP
                  P                  \        P                  RR7      p	TP                  T	 RV P                   '       d   RMR R24       V P#                  VVV	VR7       V P%                  V4      p
VP                  R	4       V'       d   R
P'                  R V 4       4      MRpV'       d   R\)        V4       R2MRpTP                  R\*        P,                   RV'       d   \)        V4      ^,           M^R V RV R
V R2
4       RpV'       d5   VP
                  P                  \        R R7      pV P/                  WW-4       MV'       d   VP1                  4       pTP                  V P1                  4        RT
 RT R
\*        P,                   RT	 R\)        V4      ^,           R RT	 RV P                   '       d   RMT	 RV'       d   R
MR V R24       VP3                  V\        4       WI3 F  pVP
                  P5                  V4       K   	  V F%  pVP7                  V4       VP9                  V4       K'  	  V'       d^   V F%  pVP7                  V4       VP9                  V4       K'  	  VP;                  V\        4       VP
                  P5                  V4       M*V'       d#   VP7                  V4       VP9                  V4       V P=                  W4       VP                  VP?                  V P1                  4       V P                  4      4       V PA                  V4       VP                  R4       R# )Tr  NFr9  rk  rj  r:  )r	  r	  r	  r  r  c              3   @   "   T F  qP                  4       x  K  	  R # 5irL   r   r   s   & rR   rm   <PyMethodCallNode.generate_evaluation_code.<locals>.<genexpr>j  s     >#mmoor  rP  z + ((CYTHON_VECTORCALL) ? z : 0)rN  
PyObject *r  r  ] = {r>  r7  r   z, (r  z) | (z&*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)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  ra  r  r  r#  r  r	  r   r<  )rX   r   r	  r	  r	  r  r   r   r
  space_for_selfargfunction_caller	args_listextra_keyword_argskeyword_variabletmpkw_nodes   &&              rR   r  )PyMethodCallNode.generate_evaluation_codeB  s   dhh!!$'!%!<!<>>//4/P224B~~""~~))111C((.  "211$7 3++D1 !NN889Q9Q^c8d

'(43M3M3MCSV+WWXYZ33"3	 	4 	
 2248 	

3
 CGDII>>>F	`v9#>T:U9VV[\|~

../qD#d)a-aPQ0RSeRfflmulvvx  zC  yD  DG  H	
 !#~~;;NW[;\''4J]%}}

{{}oS 1 2"2$$%Q'8&9 :D	!Aa 12 34443:KLLr'tR01A0B	 	x80CNN'', 1 C&&t,NN4   "1..t4""4( 2 !!"2NCNN''(89))$/d#&&t6

4**4;;=$((CDT"

3rT   )r	  r	  r	  r	  )r  r  r	  r	  r  )r[   r\   r]   r^   r   r  r	  r	  r	  r	  r  r	  rZ  r	  r	  r	  r	  r	  r	  r
  r
  r  r_   r`   ra   rb   s   @@rR   r	  r	  r  s      MHG!F!L(    "  , .	2!H(.W WrT   r	  c                   J   a  ] tR tRt o RR.t^t]tRtRt	R t
R tR tRtV tR# )	InlinedDefNodeCallNodei  r   r	  Nc                   V P                   P                  pVP                  '       g   VP                  '       d   R # \	        VP
                  4      \	        V P
                  4      8w  d   R # VP                  '       d   R # R# r  )r  def_nodestar_argstarstar_argr   r   num_kwonly_argsrJ	  s   & rR   can_be_inlined%InlinedDefNodeCallNode.can_be_inlined  sY    ==))	!7!7!7y~~#dii.0$$$rT   c                :   V P                   P                  V4      V n         V P                   Uu. uF  q"P                  V4      NK  	  upV n        V P                  P                  p\        V P                  4      pR p\        V4       F  pVP                  V,          P                  pV P                  V,          P                  Wq4      pVP                  4       '       d   V^ 8  d   RpM_VP                  P                  '       dD   VP                  '       g2   VP                  4       '       d   MV^ 8  d   RpVP                  V4      pW P                  V&   K  	  V'       d   \        V^,
          4       F  pV P                  V,          pVP                  4       '       d   K.  VP                  P                  '       d   KL  VP                  '       d   VP                  P                  '       d   K|  V^ 8  g   K  \        VP                   R^ 4        V # 	  V # u upi )FTrz	  )r	  r}  r   r  r&
  r   r  r   r`  r  rx   r   r  r  r#  r   r   )rX   r{   r   r  r	  r	  r  r	  s   &&      rR   r}  $InlinedDefNodeCallNode.analyse_types  s   !//==cB8<		C	'',	C	MM**	499~ #|$A#..+00K))A,((:C!!##q5)-&%%%ciii++-- 1u-1*,,S1CIIaL' %*  <>*iil++--XX***YYY388#7#7#7  1u)  BC  D' +& i Ds   Hc                >   V P                   P                  4       pV P                  P                  P                  '       g   VP                  R 4       VP                  R4       VP                  R\        P                   RV R24       VP                  VP                  \        P                   R2V P                  4      4       VP                  R4       VP                  R\        P                   RV R24       VP                  R4       \        P                  pV.pV P                  P                  p\        V P                  VP                  4       Fl  w  rVVP                  P                  '       d-   VP                  VP                  VP                  4      4       KM  VP                  VP!                  4       4       Kn  	  R	P#                  V4      pVP                  V P!                  4       : R
V P                  P                  P$                  P&                  : RV: RVP)                  V P!                  4       V P                  4      : 24       V P                  P                  P                  '       g   VP                  R4       V P+                  V4       R# )r  ##if CYTHON_COMPILING_IN_LIMITED_APIr
  z = PyCFunction_GetSelf(r  z == NULL && PyErr_Occurred()r  z = PyCFunction_GET_SELF(r  r  r9  r8  rf  r   N)r	  r   r  r&
  is_cyfunctionr   r   r  r   r   r  r   r   rx   r  r/  r  r  r   pyfunc_cnamer   r<  )rX   r   	self_coder	  r  r   	proto_args   &&     rR   r  +InlinedDefNodeCallNode.generate_result_code  s   &&002	}}%%333 JJsOJJ<=JJV4455LYKWYZ\JJt))**++GH  JJwJJV4455Mi[XZ[]JJx //I;MM**	!$))Y^^<NCxx###inn =>

-	 =
 99X&

&&,,99''txx@	B	C }}%%333JJsOT"rT   )r   r	  )r[   r\   r]   r^   r   r  r   r   r  r	  r*
  r}  r  r_   r`   r  s   @rR   r$
  r$
    s:      (HGDHM7r%# %#rT   r$
  c                   @   a  ] tR tRt o . tRR ltR tR tR tRt	V t
R# )	PythonCapiFunctionNodei  Nc           	     6    \         P                  WW#WER 7       R# ))ry   r   r   r   Nr   r  )rX   r   py_namer   r  r   s   &&&&&&rR   r  PythonCapiFunctionNode.__init__  s    $'( 	 	ErT   c                    V # rL   rV   r   s   &&rR   r}  $PythonCapiFunctionNode.analyse_types  r&  rT   c                x    V P                   '       d(   VP                  P                  V P                   4       R # R # rL   )r   r   r   r  s   &&rR   r  +PythonCapiFunctionNode.generate_result_code  s-    --d.?.?@ rT   c                    V P                   # rL   r  rW   s   &rR   r  ,PythonCapiFunctionNode.calculate_result_code"  r)  rT   rV   rL   )r[   r\   r]   r^   r   r  r}  r  r  r_   r`   r  s   @rR   r6
  r6
    s%     HEA rT   r6
  c                   .   a  ] tR tRt o RtRR ltRtV tR# )PythonCapiCallNodei&  FNc                    VP                   V n        V P                  V n        \        WW#VR 7      V n        \
        P                  ! W3/ VB  R# ))r   N)r  r   rC  r6
  r  r  r  )rX   r   r	  r  r   r9
  r  s   &&&&&&,rR   r  PythonCapiCallNode.__init__/  sD    ))	 II.-')
 	4V4rT   )r  rC  r   rN  )r[   r\   r]   r^   r7	  r  r_   r`   r  s   @rR   rB
  rB
  &  s      O	5 	5rT   rB
  c                   J   a a ] tR tRt oRR.tRtV 3R ltR tR tRt	Vt
V ;t# )	CachedBuiltinMethodCallNodei;  r  r   Tc           	     l   < \         SV `  VP                  W#VVP                  VP                  R 7       R# ))r  r  r   r7	  r   N)rN   r  r   r7	  r   )rX   	call_noder  r  r   rQ   s   &&&&&rR   r  $CachedBuiltinMethodCallNode.__init__A  s1    MM4%55	 	 	!rT   c                `    V P                   e   V P                   # \        P                  V 4      # rL   )r7	  r   r  rW   s   &rR   r  'CachedBuiltinMethodCallNode.may_be_noneH  s+    +'''##D))rT   c           
        V P                   P                  P                  pV P                   P                  4       pV P                   Uu. uF  qDP                  4       NK  	  ppVP
                  P                  VP                  R 4      W2V P                  V4      pVP                  V P                  4       : RV: RVP                  V P                  4       V P                  4      : 24       V P                  V4       R# u upi )rN  r9  r  N)r  r   typeptr_cnamer   r   r   cached_unbound_method_call_coder  r  r   r  r   r   r<  )rX   r   
type_cname	obj_cnamer   r   	call_codes   &&     rR   r  0CachedBuiltinMethodCallNode.generate_result_codeM  s    XX]]00
HH&&(	+/9959C95$$DD%%b)4#3#3T;	 	

KKM9##DKKM488<
 	 	T" 6s   	C?rV   )r[   r\   r]   r^   r   r  r  r  r  r_   r`   ra   rb   s   @@rR   rF
  rF
  ;  s)      vHG!*
# #rT   rF
  c                   h   a  ] tR tRt o ]t. R
Ot]P                  t	R t
R tR tR tR tR tRtV tR	# )GeneralCallNodei[  c                
   V P                   P                  V4      pV P                  P                  V4      pV P                  P                  V4      p V! V/ VB #   \         d   pT P                  T4        R p?R # R p?ii ; irL   )r  rU  r7  r8  r  rZ  )rX   rT  r  r7  r8  rY  s   &&    rR   rU  "GeneralCallNode.compile_time_valuei  sx    ==33D9..AA$G((;;DA	-_=== 	-))!,,	-s   A B&A==Bc                   V P                   P                  '       Ed2   V P                   P                  P                  '       Ed	   V P                   P                  p\
        P                  ! V4      '       g   \
        P                  ! V4      '       d   VP                  pV P                   P                  P                  pV'       d   VP                  M\        VP                  4      P                  p\        P                  ! WB4      '       d<   V P                  P                  pV P                  P                  pV! V/ VB V n        R # R # R # R # R # rL   )r  r  r  r   r   r%   rU	  rV	  r[   r   ry   rW	  r   rX	  r7  r8  )rX   rY	  r  rZ	  r[	  r   r  s   &      rR   rI  )GeneralCallNode.calculate_constant_resultr  s    ==%%%$--*;*;*F*F*F]]22F  ((G,<,<V,D,D$oo"mm//447B;#3#3V__H]HfHf 667GUU//??D!..>>F+14+B6+BD( V -E +G%rT   c                   V P                   '       d   V P                   P                  '       d   V P                  P                  '       g   \	        V P
                  R 4      hV P                  P                  V P                   3# )z0Compile-time keyword arguments must be explicit.)r8  r  r7  r   r   r   r   rW   s   &rR   rB	  "GeneralCallNode.explicit_args_kwds  sf    d&7&7&G&G&G((@@@txxBD D##(($*;*;;;rT   c                   V P                  V4      ;pe   V# V P                  P                  V4      V n        V P                  P                  P                  '       g   V P                  P                  P
                  '       d   \        V n        V # \        V P                  R4      '       d   V P                  4       pVe   W0Jd   VP                  V4      # V P                  P                  P                  '       d"   V P                  P                  V4      V n        M=W0J d   \        V P                  R4       M!M V P                  P                  V4      V n        V P                  '       d!   V P                  P                  V4      V n        V P                  P                  V4      V n        V P                  P                  V4      V n        V P!                  V P                  4       ^V n        V # )Nr   zRNon-trivial keyword arguments and starred arguments not allowed in cdef functions.)rG	  r  r}  r   rx   rd  r2   rn  map_to_simple_call_noder   r  r  r   r   r8  r7  r;	  r  )rX   r{   rp	  r   s   &&  rR   r}  GeneralCallNode.analyse_types  s   #'#C#CC#HHU&&33C8}}!!---}}!!***&	t}}g..335#(8--c22]]((444$(MM$D$DS$IDM\$((EF
  $ @ @ E $ 1 1 ? ? DD#33AA#F  33C8 	.rT   c           	     
   \        V P                  \        4      '       g   V # V P                  P                  '       g   V # V P
                  p\        VRR4      pV'       g   V # VP                  pVP                  '       d   VP                  pVP                  '       g   V # V P                  P                  pV P                  pVP                  pVP                  '       d
   VR,          p\        V4      \        V4      8  d4   \        V P                  R\        V4      \        V4      3,          4       R# VR\        V4        Uu0 uF#  pVP                   '       g   K  VP                   kK%  	  ppV\        V4      R p	^ p
\#        V4      p\%        V4      pRpVP&                   FO  pVP(                  P*                  pW9   d    \        VP                  RV,          4       RpVP-                  V4       KQ  	  \/        WP&                  4       Fc  w  rVP(                  P*                  pVP                   V8X  d8   VP-                  V4       V
^,          p
VP1                  VP*                  4       Kc   M	  ^RIHpHp . p\        VP&                  4      V
8  Ed*   V\        V4      R p	\9        VP&                  4       UUu/ uF/  w  ppVP(                  P*                  V\        V4      ,           V3bK1  	  pppRpV	 EF  pVP                   pVV9  d   V'       g   TpK#  V'       d7   VP:                  '       d   V u # \        V P                  R	V,          4        R# VV,          w  ppVP-                  V4       V
^,          p
VP*                  P=                  4       '       d   VP1                  VP*                  4       K  V! VP*                  4      pVP=                  4       '       g   Q hVP1                  V4       VP1                  VV34       EK  	  V'       d   . p. pV^ ,          R,          pV F^  pVVJ d    MWVP=                  4       '       d   VP1                  V4       K4  V! V4      pVP1                  V4       VP1                  V4       K`  	  V'       d   TpT\?        V4       UUu. uF  w  pqwNK	  	  upp,           pVP&                   F@  pVP(                  P*                  pW9  g   K!  Rp\        VP                  R
V,          4       KB  	  V'       d   R# \A        V P                  WR7      pVRRR1,           F  pV! VV4      pK  	  V# u upi u uppi u uppi )z
Tries to map keyword arguments to declared positional arguments.
Returns self to try a Python call, None to report an error
or a SimpleCallNode if the mapping succeeds.
r   Nr  zDfunction call got too many positional arguments, expected %d, got %sFzargument '%s' passed twiceT)r  
LetRefNodez(C function call is missing argument '%s'z/C function got unexpected keyword argument '%s'r  r~  )!r   r7  r  r8  r  r  r  r   rX  rY  r  r   rl	  r   r   r   ry   r  r  rA	  r?	  r   r  r  r  r  r  r_
  r  r  r  r  r  )rX   r  r   rK	  pos_argsr  declared_argsr   matched_argsunmatched_argsmatched_kwargs_countr   seen
has_errorsry   decl_argr  r_
  tempsr  keywordsfirst_missing_keywordr   r4  
final_args	new_tempsfirst_temp_arg	arg_valuer   s   &                            rR   r\
  'GeneralCallNode.map_to_simple_call_node  s    $..	::K  000K=='40K

)33M)))K'',,""%**)"-Mx=3}--$(( 2585G58]5DD E  !.ns8} =
 =xx CHH = 	 
 's8}~6 H~ < 
))C77==D|cgg;dBC!
HHTN * !1G1GHMH77==D}}$  &$)$CII& I 	@v%%&)==*3t9:6N&/0F0F&GI&GFAs #h-'==&G  I$(!*}}x'004-*(((
  $$(( %46K%L M#D>S  &$)$99&&((KK		*%cii0D>>++++KK%LL#t-7 +: 
	!&q"!%I N2 **,,")))4))4!((."))$/ "& %D!ve}$F}eac}$FF ))C77==D'!
cggG	 *  dhhE$B$KKD'd3D  Q
HI` %Gs   U U 5U,Uc                6   V P                   P                  '       d   R # V P                  '       d   V P                  P                  4       pMRpVP                  P                  \        P                  ! RR4      4       VP                  V P                  4       : RV P                  P                  4       : RV P                  P                  4       : RV: RVP                  V P                  4       V P                  4      : 2	4       V P                  V4       R # )NrP  r{  r  r|  r  rf  )r   rd  r8  r   r   r   r   r   r   r  r  r7  r   r   r<  )rX   r   r  s   && rR   r  $GeneralCallNode.generate_result_code3  s    99v&&002FF))+*A*A.+0 	1

'')$$..0''txx@B	C 	T"rT   )r   r  r  r8  r7  r   N)r  r7  r8  )r[   r\   r]   r^   r   r   r   r.   r  r  rU  rI  rB	  r}  r\
  r  r_   r`   r  s   @rR   rT
  rT
  [  sA      D>H..K-C<@JX# #rT   rT
  c                   d   a  ] tR tRt o R.t^tR tR tR tR t	]
P                  tRtR tR	tV tR
# )AsTupleNodeiE  r   c                N    \        V P                  P                  4      V n        R # rL   )r   r   r   rW   s   &rR   rI  %AsTupleNode.calculate_constant_resultN  s    $TXX%=%=>rT   c                    V P                   P                  V4      p \        V4      #   \         d   pT P	                  T4        R p?R # R p?ii ; irL   )r   rU  r   r  rZ  )rX   rT  r   rY  s   &&  rR   rU  AsTupleNode.compile_time_valueQ  sF    hh))$/	-: 	-))!,,	-s   
( AA

Ac                    V P                   P                  V4      P                  V4      V n         V P                   P                  \        J d   V P                   P                  R 4      # \        V n        V # r  )r   r}  r  r   r   r  r   s   &&rR   r}  AsTupleNode.analyse_typesX  sU    88))#.AA#F88==J&88--.QRR	rT   c                    R # r  rV   rW   s   &rR   r  AsTupleNode.may_be_none_  r#  rT   Constructing Python tuplec                V   V P                   P                  \        \        39   d   R MRpVP	                  V P                  4       : RV: RV P                   P                  4       : RVP                  V P                  4       V P                  4      : 24       V P                  V4       R# )__Pyx_PySequence_TuplePySequence_Tupler9  r8  rf  N)
r   r   r   r   r   r  r   r   r   r<  )rX   r   r  s   && rR   r   AsTupleNode.generate_result_codee  sw    ,0HHMMnj=Y,Y(_q

txx))+''txx@B	C
 	T"rT   )r   r   r   N)r[   r\   r]   r^   r   r  rI  rU  r}  r  r.   r  r  ri  r  r_   r`   r  s   @rR   rs
  rs
  E  sA      wHG?- ..K-K# #rT   rs
  c                   f   a  ] tR tRt o R.t^t]tRtR t	R t
R tR tR tR	 tR
tR tR tRtV tR# )MergedDictNodeio  r8  Tc                2   / pV P                   pV P                   Fr  pVP                  '       d   R  VP                   4       pMVP                  P                  4       pV F)  w  rVV'       d   WQ9   d   \        RV,          4      hWaV&   K+  	  Kt  	  Wn        R# )c              3   V   "   T F  w  rVP                   VP                   3x  K!  	  R # 5irL   r  )rj   r?	  r   s   &  rR   rm   ;MergedDictNode.calculate_constant_result.<locals>.<genexpr>  s+      A+?ZS --u/D/DE+?s   ')$duplicate keyword argument found: %sN)reject_duplicatesr8  r  rA	  r   	iteritemsr   )rX   r  r
  r   r  r?	  r   s   &      rR   rI  (MergedDictNode.calculate_constant_resulty  s     22%%D###A+/+?+?A ,,668#
$$%Kc%QRR#s $ &  &rT   c           	        / pV P                   pV P                   F  pVP                  '       dA   VP                   UUu. uF'  w  rVVP	                  V4      VP	                  V4      3NK)  	  pppMVP	                  V4      P                  4       p V F)  w  rVV'       d   WR9   d   \        R V,          4      hWbV&   K+  	  K  	  V# u uppi   \         d   pT P                  T4        Rp?K  Rp?ii ; i)r
  N)	r
  r8  r  rA	  rU  r
  r   r  rZ  )	rX   rT  r  r
  r   r?	  r   r  rY  s	   &&       rR   rU  !MergedDictNode.compile_time_value  s     22%%D### ,0+?+?A+?ZS 0068P8PQU8VW+?  A //5??A1"'JC(S]()ORU)UVV"'3K #( & A  1--a001s   -C/CC2C--C2c                    R# r  rV   r   s   &&rR   r   MergedDictNode.type_dependencies      	rT   c                    \         # rL   r   r   s   &&rR   r   MergedDictNode.infer_type  s    rT   c                    V P                    Uu. uF2  pVP                  V4      P                  V4      P                  R 4      NK4  	  upV n         V # u upi )z1argument after ** must be a mapping, not NoneType)r8  r}  r  r  rX   r{   r   s   && rR   r}  MergedDictNode.analyse_types  s_    
 ((	
 ) c"55c:LLCE )	
 
s   8Ac                    R # r  rV   rW   s   &rR   r  MergedDictNode.may_be_none  r#  rT   Constructing Python dictc                >   VP                  V P                  4       V P                  V4       \        V P                  4      p\        V4      pVP                  V4       VP                  \        Jd'   VP                  R VP                  4       ,          4       VP                  '       dZ   VP                  V4       VP                  V P                  4       : RVP                  4       : R24       VP                  V4       EM}VP                  4       '       d   VP                  R4       VP                  RVP                  4        RVP!                  4        R24       VP                  V P                  4       : RVP                  4       : R24       VP                  V4       VP                  R4       VP                  R4       VP                  R	4       VP                  V P                  4       : R
VP                  4       : RVP#                  V P                  4       VP                  4      : 24       V P%                  V4       VP'                  V4       VP                  4       '       d   VP                  R4       VP                  \        Jd   VP                  R4       VP(                  P+                  \,        P.                  ! RR4      4       VP                  V P                  4       : RVP                  4       : RVP#                  V P                  4       V P                  4      : 24       V P%                  V4       VP'                  V4       VP                  R4       VP1                  V4       \3        4       pV EF  pVP                  '       Ed{   VP4                   EFf  pVP                  V4       V P6                  '       d   VP                  RV P                  4       : RVP8                  P                  4       : R24       VP;                  R4       VP                  RVP8                  P                  4       : RVP=                  V P                  4      : 24       VP                  R4       VP?                  VP8                  P                  RV P                  4       : RVP8                  P                  4       : RVP@                  P                  4       : R24       VP'                  V4       VP1                  V4       EKi  	  EK  VP                  V4       V P6                  '       dT   VP;                  R4       VP?                  VP                  RV P                  4       : RVP                  4       : R24       MVP;                  R4       VP                  RV P                  4       : RVP                  4       : R24       VP                  RVP                  4       ,          4       VP                  VP=                  VP                  4      4       VP                  R4       VP'                  V4       VP1                  V4       EK  	  \C        V4       F3  pVP(                  P+                  \,        P.                  ! VR4      4       K5  	  R# )z$if (likely(PyDict_CheckExact(%s))) {r9  r:  zB#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_APIz!if (__Pyx_IS_UNIQUELY_REFERENCED(r  r  z} elser  r  z = PyDict_Copy(rf  r   r  r	  r  z6 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, if (unlikely(PyDict_Contains(r  RaiseDoubleKeywords+__Pyx_RaiseDoubleKeywordsError("function", PyDict_SetItem(rb  MergeKeywordsz__Pyx_MergeKeywords(RaiseMappingExpectedzif (unlikely(PyDict_Update(z	) < 0)) {zVif (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseMappingExpectedError(%s);FunctionArguments.cN)"r   r   r  rg  r8  rh  r  r   r   r   r   r  r  r  r  r  rt  r   r<  r  r   r   r   r   r#  r  rA	  r
  r?	  r  r   rC  r   r  )rX   r   r   r   helpersr   helpers   &&     rR   r  'MergedDictNode.generate_evaluation_code  s   dhh!!$'D%%&Dz%%d+99I%JJ=~~'( ) %%d+JJT[[]DNN4DEF..t4""$$ 

_`

>t~~?O>PPRSWSlSlSnRootuv

8HIJ2248

8$

8$

3JJ ''txx@B C   &''-""$$

399I%JJz"--k.E.E$&8/: ;JJ ''txx@B C   &''-JJsO%D###//C006---

 KKMGG--/$1 2  $9:

GG--/ OODHH5$7 8 

3))#''++))+		++-8/ 0 ..t4NN4(# 0& --d3)))KK0))$((t~~'759 : KK 67JJt~~'7 9 :JJ  FHLHX Y ZJJttxx89JJsO++D1%M P WoF--k.E.EfNc.de &rT   c                N    V P                    F  pVP                  V4       K  	  R # rL   )r8  rK  rX   r   r   s   && rR   rK  MergedDictNode.annotate  s    %%DMM$ &rT   )r   r8  N)r[   r\   r]   r^   r   r  r   r   r
  rI  rU  r  r   r}  r  ri  r  rK  r_   r`   r  s   @rR   r
  r
  o  sV     
 HGD&$( -K\f|   rT   r
  c                      a  ] tR tRt o ^tR.tRt^ tRtRt	Rt
^ tR tR tR tR	 tR
 tR tR tR tR)R ltR tR tR tR tR tR tR tR tR*R ltR+R ltR tR t Rt!R t"R t#R t$R t%R  t&R! t'R" t(R# t)R,R$ lt*R-R% lt+R& t,R' t-R(t.V t/R# ).r  i  r  NTFc                "   \        V P                  \        4      '       d:   V P                  P                  '       d   V P                  R 8X  g   V P                  # V P                  P                  4       pV'       d   V: RV P                  : 2# R# )parallelr  N)r   r  r_  r  r  r  )rX   cys   & rR   r  !AttributeNode.as_cython_attribute0  s`    txx**)))*,>>!XX))+ $..11rT   c           	        V\         J Ed   V P                  pV'       dP   VP                  '       d>   VP                  '       d,   ^V n        VP                  V n        V P                  V4       V # V'       Ed^   VP                  '       EdK   V P                  P                  \        P                  JEd"   ^RI
HpHp V! V P                  V P                  P                  R7      pV P                  P                  Vn        W`n        \        P                  WV4      p\         P"                  ! RR4      p\$        P&                  ! \$        P                   \$        P(                  ! R\$        P                   R4      \$        P(                  ! R\$        P                   R4      .4      p	\+        V P,                  RV	Wv.VR	7      p
V! Wj4      pVP/                  V4      # \        P                  WV4      # )
r  r  rS  PyMethodNew2Argr  r  NrX   __Pyx_PyMethod_New2Arg)r	  r  r   r   )r   r   r  r  r  analyse_as_python_attributer  r   r   r   r  r  r  rC  r   r`  r   r   r   r]  r  rB
  r   r}  )rX   rw  r{   r   r  r  obj_nodeunbound_noder   r  binding_callcomplete_calls   &&&         rR   r`  AttributeNode.coerce_to;  s{    ~%JJE+++0A0A0A "..
0055---$((--wGXGX2X
 K(F(,(=(=%#'11$#F(44%'9 '00--"//
8Q8QSWX"//
8Q8QSWX0	  2HH":'&1!-  !5X L$22377!!$#66rT   c                    V P                   pVP                  R 4      '       d   VP                  R 4      '       d   R# \        V P                  P
                  V4      V n        R# )__N)r  
startswithendswithr  r  r   )rX   rD  s   & rR   rI  'AttributeNode.calculate_constant_resulte  sD    ~~??4  T]]4%8%8&txx'?'?FrT   c                V   V P                   pVP                  R 4      '       d7   VP                  R 4      '       d    \        V P                  RV,          4       R# V P
                  P                  V4      p \        W24      #   \         d   pT P                  T4        Rp?R# Rp?ii ; i)r
  z6Invalid attribute name '%s' in compile-time expressionN)
r  r
  r
  r   r   r  rU  r  r  rZ  )rX   rT  rD  r  rY  s   &&   rR   rU   AttributeNode.compile_time_valuek  s    ~~??4  T]]4%8%8$((JTQShh))$/	-3%% 	-))!,,	-s   6
B B(B##B(c                8    V P                   P                  V4      # rL   )r  r  r   s   &&rR   r  AttributeNode.type_dependenciesw      xx))#..rT   c                   V P                  VR R7      pVe   VP                  P                  '       dQ   VP                  P                  P                  '       d+   \        P
                  ! VP                  P                  4      # VP                  P                  # V P                  V4      pVe   VP                  P                  # V P                  P                  V4      pV P                  WR7       VP                  '       d#   V P                  P                  '       d   \        # V P                  '       d#   V P                  P                  '       d   \        # V P                  # )Ftarget)obj_type)#analyse_as_cimported_attribute_noder   r   r  r   r  analyse_as_type_attributer  r   analyse_attributer  r   rl	  )rX   r{   r   r
  s   &&  rR   r   AttributeNode.infer_typez  s    77E7Jzz4::??#?#?#?!**4::??;;zz&--c2::??"88&&s+s6###		(>(>(> "!ZZZDJJ111 "!yyrT   c                    R V n         R# r  r  r   s   &&rR   rw  (AttributeNode.analyse_target_declaration  r  rT   c                ,   V P                  V^R7      pVP                  P                  '       d(   \        V P                  RV P
                  ,          4       VP                  4       '       g(   \        V P                  RV P                  ,          4       V# )r  r
  z"Assignment to const attribute '%s'rj  )r}  r   r  r   r   r  r
  r  s   && rR   r  "AttributeNode.analyse_target_types  si    !!#!299$((@4>>QR~~$((CdiiOPrT   c                   V P                   '       g   \        P                  V n         VP                  R ,          V n        V P                  W4      pVf   V'       g   V P                  V4      pVf   V P                  W4      pVf   Q hVP                  '       g   VP                  '       d$   VP                  '       d   RVP                  n        VP                  '       d   VP                  V4       V# )r  T)r   r   r2   rs   r  r
  r
  "analyse_as_ordinary_attribute_noder  r   r   r\  wrap_obj_in_nonecheck)rX   r{   r
  r   s   &&& rR   r}  AttributeNode.analyse_types  s    yyy"--DI!$0B!C77D<11#6D<::3GD###4:::"DJJO&&s+rT   c                   V P                   P                  V4      pV'       d   VP                  V P                  4      pV'       dm   VP                  '       g[   VP
                  '       g7   VP                  '       g%   VP                  '       g   VP                  '       d   V P                  WV4      # V P                  V4      '       d*   \        V P                  R V P                  ,          4       V # R# )z&cimported module has no attribute '%s'N)r  r  r  r  r  r  r  r  r  as_name_noder  r   r   )rX   r{   r
  module_scoper   s   &&&  rR   r
  1AttributeNode.analyse_as_cimported_attribute_node  s    
 xx11#6 ,,T^^<EU@@@$$$(:(:(:}}}((V<<66s;;dhh H4>> YZrT   c                   V P                   P                  '       d   R # V P                   P                  V4      pV'       EdE   VP                  '       g%   VP                  '       g   VP
                  '       d   VP                  P                  V P                  4      pV'       d   VP                  '       g/   VP
                  '       d   VP                  P                  '       d   VP                  '       d   V P                  '       g   R # TpMCV P                  W#V4      pVP                   Uu. uF  pV P                  W%V4      NK  	  upVn        V P                  WRR7      # R # VP                   '       g   VP"                  '       d   V P                  VP$                  9   dw   VP&                  P(                   F3  pVP*                  V P                  8X  g   K   V P                  WRR7      u # 	  \-        V P.                  V P                  : RV: 24       R # V P                  P1                  R4      '       d$   V P                  P3                  R4      '       d   R # \-        V P.                  V P                  : RV: 24       R # u upi )NFr
  z not a known value of r
  )r  r   r  r  r  r#  rp  r  r  rl	  r   r  rf  _create_unbound_cmethod_entryoverloaded_alternativesr
  r  r  r  r   enum_valuesry   r   r   r
  r
  )rX   r{   r   r   
ubcm_entryoverloaded_alternatives   &&    rR   r
  'AttributeNode.analyse_as_type_attribute  s   
 88%%%xx'',4%%%)=)=)=ARARAR

..t~~>e...$2C2C2C

H_H_H_+++#~~~#'%*
%)%G%GUX%Y
 ;@:W:W>:W 6 !>>t]`a:W>
:  ,,SU,KK  !1!1!1>>T[[0!%!7!7 ::7#'#4#4S#4#NN "8 dhhX\(]^  ^^..t449P9PQU9V9V$((DNNTX$YZ#>s   /J	c                j   VP                   '       Ed&   VP                  P                  Ef   VP                   pVP                  P                  '       g/   VP                  '       d*   VP                  P
                  '       d   VP                  pMVP                  '       d9   \        V P                  VP                  : RV: 24       \        P                  pM\        P                  ! VP                  4      pVP                  R,          Vn        \        P                  ! RVRR 4      VP                  ^ &   M)VP                  : RVP                   : 2pVP                  p\"        P$                  ! VP                  WE4      p^Vn        VP                   Vn         ^Vn        VP*                  Vn        V# )Nz not a static member of r`  rX   r0  )
func_cnamer   r	  r|	  parent_scopeis_cpp_class_scoper#  r   r   ry   r   r2   r&   r   r  vtabptr_cnamer   r   r  r  r	  rp  )rX   r   r   r{   r   r=  r
  s   &&&&   rR   r
  +AttributeNode._create_unbound_cmethod_entry  s0    

 8 8 @$$Ezz***$$$)9)9)L)L)L

"""dhh%**d ST"-- 		%**-"ZZ]
 * 7 7fd S

1 $ 2 2EKK@EJJE\\%**e;
"#
 % 0 0
()
% ;;
rT   c                h   V P                   P                  V4      pV'       d   VP                  V P                  4      # V P                   P                  '       gX   V P                   P                  V4      pV'       d5   \        VR R4      e&   VP                  P                  V P                  4      # R# )rp  N)r  r  lookup_typer  r   r  r  rp  )rX   r{   r
  rY  s   &&  rR   r  AttributeNode.analyse_as_type   s    xx11#6++DNN;;xx)))005IWY>J 224>>BBrT   c                >   V P                   P                  V4      pV'       dz   VP                  V P                  4      pV'       dW   VP                  '       dE   VP
                  P                  '       g   VP
                  P                  '       d   VP
                  # R # rL   )r  r  r  r  r  r   r  r  rX   r{   r
  r   s   &&  rR   r  'AttributeNode.analyse_as_extension_type
  sf     xx11#6 ,,T^^<E::///5::3M3M3M ::%rT   c                    V P                   P                  V4      pV'       dB   VP                  V P                  4      pV'       d   VP                  '       d   VP                  # R # rL   )r  r  r  r  r  r
  s   &&  rR   r  AttributeNode.analyse_as_module  sG     xx11#6 ,,T^^<E&rT   c                    \         P                  W P                  VR 7      pV'       d   VP                  V4      pMVP	                  V4      p^VP
                  n        V# ))ry   r   )r_  r  r  r  r  r   r\  )rX   r{   r   r
  r   s   &&&& rR   r
  AttributeNode.as_name_node  sP     !!$^^5!I,,S1D,,S1D

rT   c                   V P                   P                  V4      V n         V P                  V4       V P                  '       d0   V P                  P                  '       d   V P
                  '       g    V P                  '       d   V'       g   ^V n        \        V n	        V # V'       d?   V P                   P                  P                  '       d   \        V P                  R4       V # V P                  '       d   V P                  P                  '       dc   V'       gE   \        P!                  V P                  V P                   V P                  4      P                  V4      # \        V P                  R4       V # )r  z'Assignment to an immutable object fieldz"Assignment to a read-only property)r  r}  r
  r   rl	  rf  r	  r  r   rC  r   r  r   r   is_cpropertyr  r`	  )rX   r{   r
  s   &&&rR   r
  0AttributeNode.analyse_as_ordinary_attribute_node*  s    88))#.s#:::$**/// ??? $2!  555$((EF  ZZZDJJ333%33DHHdhh

Saabeff$((@A rT   c                B   VR Jp^ V n         V P                  V n        Vf   V P                  P                  P
                  '       g'   V P                  P                  P                  '       d!   V P                  P                  V4      V n        V P                  P                  pM*VP
                  '       g   VP                  '       d   \        pVP                  '       g   VP                  '       d   VP                  pRV n        M_VP                  '       g   VP                  '       d	   RV n        M3VP                  '       d   VP                   '       d	   RV n        MRV n        VP"                  '       Ed   VP%                  4       '       Ed   VP&                  P)                  V P                  4      pVP*                  '       d   V'       g   V P                  R8X  dL   RV n        RV n        RV n        V P                  P                  P3                  V P4                  4      V n        R # VP7                  V P                  WP4                  4       VP&                  P)                  V P                  4      pV'       d   VP8                  '       d   R pM4\;        V P4                  RV,          4       \<        P>                  V n        R # W@n         V'       d   VP                  '       d(   VPB                  R8X  d   \;        V P4                  R4       VPD                  '       d   VP                  V n        R # VPF                  '       d   VPH                  '       d   VPJ                  '       d%   VP                  V n        VPL                  V n        R #  V PO                  WV4       R # )Nr0  r  TTz/Cannot select attribute of incomplete type '%s'__weakref__z,Illegal use of special attribute __weakref__)(r	  r  rF	  r  r   r  r  r  r   rX  r  rY  r,  r  r  r$  is_fake_referencehas_attributesattributes_knownrp  r  r  is_memslice_transposer  r  	transposer   declare_attributerB  r   r   r2   r   ry   r
  r  r  rl	  r   r
  )rX   r{   r
  immutable_objr   s   &&&  rR   r
  AttributeNode.analyse_attributeB  s    ,nnxx}}&&&$((--*H*H*H8866s;xx}}H!!!X%>%>%>)???h///))HDG'''8+C+C+CDG"""x'A'A'ADGDG"""((** 224>>B...u~~,592'+/3,$(HHMM$;$;DHH$E	 224>>3Q ( : :4>> JU___ EdhhE  '11	J---%**2M$(($RS %%% %

DI'''0E0E0E%JZJZJZ %

DI"'++DK
 
 	((FrT   c                   Vf   V P                   P                  pVP                  V P                  4      V n        V P                  V n        \
        V n        ^V n        VP                  '       Eg   VP                  '       Eg   VP                  '       g   VP                  '       g   VP                  '       gw   VP                  '       ge   VP                  '       gS   VP                  '       d   VP                  V4      '       g*   VP                   '       dD   VP                  V4      '       d-   V'       g#   V P                   P#                  V4      V n         R # R # VP$                  '       d   V P                   P&                  '       g   V P                   P(                  '       d   V P                   P*                  P,                  '       dg   V P                   P*                  P,                  P                  P                  '       d-   V'       g#   V P                   P#                  V4      V n         R # R # \/        V P0                  RV: RV P                  : R24       R # R # R # )NzObject of type 'z' has no attribute 'r  )r  r   mangle_class_private_namer  rF	  r   r	  rx   rd  r  r)  r  r  r  r  r  	is_structr  r  r   r  r   r  r   r   )rX   r{   r
  r
  s   &&&&rR   r
  )AttributeNode.analyse_as_python_attribute  s   xx}}H66t~~Fnn"	###H,=,=,="""h&<&<&<)))X-H-H-H*** ***x/N/Ns/S/S ***x/N/Ns/S/S$#xx::3?DH %'''TXX-=-=-=AVAVAV2222277CCC$#xx::3?DH % dhh12! ->#rT   c                   VP                   R ,          '       g   R# RpR	pV P                  P                  P                  '       d`   V P                  '       dN   V P
                  '       g<   RP                  \        V P                  4      ^8:  d   RMR4      pV P                  3pMV P                  P                  P                  '       df   V P                  '       d   RpMPV P                  P                  P                  P                  V P                  4      pV'       d   RpVP                  3pV'       d&   V P                  P                  VRVR7      V n        R# R# )
r  Nrv	  rw	  rN  z&Cannot transpose None memoryview slicez5Cannot access '%s' attribute of None memoryview slicerx	  ry	  rV   )rs   r  r   r  needs_none_checkr	  r&  r   r  r  r
  rp  r  ry   r  )rX   r{   r|  r  r   s   &&   rR   r
  #AttributeNode.wrap_obj_in_nonecheck  s    ~~k**HHMM+++0E0E0E=DDcRVR`R`NaegNgUmopC>>+KXX]]---)))>++77GQC#(::-Kxx11#7M>I 2 KDH rT   c                N    V P                   '       d   V P                  4        R # R # rL   )r	  r  r   s   &&rR   r  AttributeNode.nogil_check  s    ???NN rT   zAccessing Python attributec                8    V P                   P                  V4      # rL   )r  r  r   s   &&rR   r  0AttributeNode.is_cimported_module_without_shadow  s    xx::3??rT   c                    V P                   '       d3   V P                  4       ;'       g    V P                   P                  4       # \        P                  V 4      # rL   )r  r  r  r_  rW   s   &rR   r  AttributeNode.is_simple  s@    888&&(@@DHH,>,>,@@%%d++rT   c                T    V P                   '       d   R # \        P                  V 4      # r1  )r  r_  r
  rW   s   &rR   r
  AttributeNode.is_lvalue  s    888%%d++rT   c                    V P                   '       d   V P                   P                  4       # \        P                  V 4      # rL   )r  r  r_  rW   s   &rR   r  AttributeNode.is_ephemeral  s/    88888((**((..rT   c                    V P                  4       pV P                  '       d8   V P                  P                  '       d   V P                  '       g
   R V,          pV# r  )calculate_access_coder   r  r  )rX   r  s   & rR   r  #AttributeNode.calculate_result_code  s?    ++-:::$**444T^^^v%FrT   c                x   V P                   pVP                  VP                  4      pV P                  '       Ed/   V P                  P                  '       Ed   VP                  P
                  '       d   V P                  P                  '       g   V P                  P                  '       d   V P                  P                  # V P                  P                  '       d   V P                  P                  V n
        R VP                  P                  : RV: V P                  : VP                  P                  : RV P                  : 2# V P                  '       d   V P                  # R# VP                  P                  '       d$   RV P                  P!                  4       : RV: R2# VP                  P"                  '       dZ   V P                  '       dH   V P                  P$                  '       d,   VP                  P'                  VP)                  4       RR7      pV: V P                  : V P                  : 2# )	z	((struct z *))->N__Pyx_Cr8  rb  T)to_object_struct)r  r/  r   r   rl	  r  is_builtin_cmethodfinal_func_cname
from_fusedr   rF	  vtabstruct_cnamer,  vtabslot_cnamer  rq  upperr  r  	cast_coder  )rX   r  obj_codes   &  rR   r
  #AttributeNode.calculate_access_code  sn    hh==*:::$**///xx)))$**2O2O2O::...::66699'''
 #'**"2"2DK HH--xHH++T[[: : $$${{"
 XX   &*kk&7&7&98DDxx'''DJJJ4::;Q;Q;Q88--cjjlt-T'$++>>rT   c                   V P                   '       Ed   V P                  '       d4   VP                  P                  \        P
                  ! R R4      4       RpM2VP                  P                  \        P
                  ! RR4      4       RpVP                  V P                  4       : RV: RV P                  P                  4       : RVP                  V P                  4      : RVP                  V P                  4       V P                  4      : 2	4       V P                  V4       R# V P                  P                   '       EdW   V P"                  '       d   V P                  P$                   F%  w  r4VR	8X  g   K  \'        V P                  R
4        R# 	  VP                  V P                  4       : RV P                  P                  4       : R24       VP)                  V P                  4       V P                  RR7       RV P                  4       ,          pVP                  VP+                  WPP                  4      4       R# V P,                  '       dD   VP                  RV P                  4       : RVP/                  V P                  4      : R24       R# R# V P0                  P2                  '       d   V P,                  '       d   V P4                  '       d   V P                  4       pM$V P6                  '       d   Q hV P9                  4       pV P                  P;                  V4      pVP=                  V P                  V P0                  V P>                  VR7       R# V P                  P                  '       d)   V P                  P                  P@                  '       d   R# V P0                  '       dF   V P0                  PB                  '       d(   VP                  PE                  V P0                  4       R# R# R# )PyObjectLookupSpecialr  __Pyx_PyObject_LookupSpecialPyObjectGetAttrStr__Pyx_PyObject_GetAttrStrr9  r8  r  rf  r.  z=Transposing not supported for slices with indirect dimensionsNr:  Tr  z__pyx_memslice_transpose(&%s)zif (unlikely(!zR.memview)) {PyErr_SetString(PyExc_AttributeError,"Memoryview is not initialized");r   r  )#r	  r	  r   r   r   r   r   r  r  r   rE  r  r   r   r<  r   r  r
  rF  r   r  r  r  r   r   r  r  r  r
  r'  r)  r  r  rl	  r	  )rX   r   lookup_func_namerB  rC  r
  undereferenced_resultr  s   &&      rR   r  "AttributeNode.generate_result_code   s   ???%%%  11++,CEWXZ#A   11++,@BTUW#> JJKKM$HH&&(**4>>:++DKKM488DFG   &YY))))))'+yy~~OFdhh )C D	 (6 

8IJK//tyy)- 0 / 4dkkmC

411!XX>?'''


  ;;=$//$((*C	EF ( ZZ'''D,B,B,B~~~(,%<<<''(,(B(B(D%!%!K!KLa!b%%dhh

D<Q<Qfx%y xx}}}!@!@!@

 5 5 5  77

C !6rT   c                   V P                   '       d]   V P                  P                  '       dA   V P                  '       d/   VP	                  V P                  4       V P                  R R7       R# \        P                  W4       R# )Tr  N)r  r   r  r
  ra  r  r   r  r  s   &&rR   r  $AttributeNode.generate_disposal_code;   sR    <<<DII888T=W=W=W""4;;=$))d"K++D7rT   c                   V P                   P                  V4       V P                  '       d   VP                  P	                  \
        P                  ! R R4      4       VP                  V P                  RV P                   P                  4       : RVP                  V P                  4      : RVP                  4       : R24       VP                  V4       VP                  V4       EMHV P                   P                  P                  '       d   VP!                  RV P"                  P%                  4       : V P                   P                  P&                  : RV P                   P)                  V P                   P                  4      : RVP)                  V P+                  4       4      : R24       VP                  V4       VP                  V4       EM]V P-                  4       pV P                  P.                  '       dp   V P0                  '       d^   VP3                  V4       VP5                  V4       VP7                  W`P                  4       VP9                  W`P+                  4       4       MNV P                  P:                  '       d3   ^RIHp VPA                  WaVP-                  4       V P                  V4       V P                  P:                  '       g7   VP!                  V: R	VPC                  V P+                  4       4      : R
24       VPE                  V4       VP                  V4       V P                   P                  V4       V P                   P                  V4       R# )r]  r  z__Pyx_PyObject_SetAttrStr(r  rb  __Pyx_SET_Cr8  r  rO  r9  r:  N)#r  r  r	  r   r   r   r   rC  r   r   rE  r  r  r#  r   rq  r   rF	  r  implementation_suffixr/  r=  r  rx   r  r  rD  r9  
put_decrefr  rN  rP  put_assign_to_memviewslicer3  r  )rX   r   r   r  r   r   select_coderP  s   &&&&&&  rR   r  &AttributeNode.generate_assignment_codeB   sE   ))$/???--''(<>PQS!!$((HH&&(**4>>:MMO%&
 &&t,NN4 XX]]%%%JJ!!#33""488==1djjl+	- .
 &&t,NN4 ++-Kyy$$$)=)=)=((.$$T*YY7ZZ\:---(55##**,		4I 99///

#..tzz|<>?
 --d3NN4 ''-D!rT   c           	        V P                   P                  V4       V P                  '       gL   V P                  P                  P
                  '       d   R V P                  P                  P                  9   d   VP                  P                  \        P                  ! RR4      4       VP                  V P                  RV P                   P                  4       : RVP                  V P                  4      : R24       M\!        V P                  R4       V P                   P#                  V4       V P                   P%                  V4       R# )__del__r]  r  r^  r  rb  z+Cannot delete C attribute of extension typeN)r  r  r	  r   rp  is_property_scoper  r   r   r   r   rC  r   r   rE  r  r   r  r#  r  s   &&&rR   r   $AttributeNode.generate_deletion_coden   s    ))$/???tzz//AAA#,

0@0@0H0H#H--''(<>PQS!!$((HH&&(**4>>:<=
 $((IJ''-D!rT   c           
         V P                   '       d   R Rr2MRRr2VP                  V P                  \        W#V P                  ,          \        V P                  4      R7      4       R# )py_attrzpython attribute (%s)c_attrzc attribute (%s)ri  N)r	  rK  r   r6   r   r   r  )rX   r   rk  rl  s   &&  rR   rK  AttributeNode.annotate}   sI    ???#%<4"$64dhhuTYY6FSQUQ_Q_M` abrT   c                    V P                   P                  4       pV'       d(   \        P                  ! V: R V P                  : 24      # R# )r  N)r  r  r
   r  r  )rX   rz  s   & rR   r  /AttributeNode.get_known_standard_library_import   s4    hh@@B!//;0WXXrT   )r  r   r   r  r
  r	  r  r  rF	  r  r,  rC  r   r  r	  rL   r6	  r  r  )0r[   r\   r]   r^   r  r   r   rf  r
  r
  r	  r	  r  r`  rI  rU  r  r   rw  r  r}  r
  r
  r
  r  r  r  r
  r
  r
  r
  r
  r  ri  r  r  r
  r  r  r
  r  r  r  r   rK  r  r_   r`   r  s   @rR   r  r    s      LwHEI!J	(7TG
-/2 $$L4		0DGL2:K0 /K@,,/"?H7Dr8*"X"c rT   r  c                   f   a  ] tR tRt o R.t^t]t^tRt	R t
R tR tR tR tR	 tR
 tR tRtV tR# )StarredUnpackingNodei   r
  Fc                4    \         P                  WVR 7       R# )r
  Nr8
  )rX   r   r
  s   &&&rR   r  StarredUnpackingNode.__init__   s    $F3rT   c                    V P                   '       g   \        V P                  R 4       V P                  P	                  V4       R# )&starred expression is not allowed hereN)starred_expr_allowed_herer   r   r
  r  r   s   &&rR   r  )StarredUnpackingNode.analyse_declarations   s/    ---$((DE((-rT   c                8    V P                   P                  V4      # rL   )r
  r   r   s   &&rR   r   StarredUnpackingNode.infer_type   s    {{%%c**rT   c                    V P                   '       g   \        V P                  R 4       V P                  P	                  V4      V n        V P                  P
                  V n        V # )r9  )r:  r   r   r
  r}  r   r   s   &&rR   r}  "StarredUnpackingNode.analyse_types   sI    ---$((DEkk//4KK$$	rT   c                <    V P                   P                  V4       R # rL   )r
  rw  r   s   &&rR   rw  /StarredUnpackingNode.analyse_target_declaration   s    ..s3rT   c                |    V P                   P                  V4      V n         V P                   P                  V n        V # rL   )r
  r  r   r   s   &&rR   r  )StarredUnpackingNode.analyse_target_types   s.    kk66s;KK$$	rT   c                    R # r6  rV   rW   s   &rR   r  *StarredUnpackingNode.calculate_result_code       rT   c                    R # rL   rV   r  s   &&rR   r  )StarredUnpackingNode.generate_result_code   r  rT   r
  r   N)r[   r\   r]   r^   r   r   r   r   r  r:  r  r  r   r}  rw  r  r  r  r_   r`   r  s   @rR   r5  r5     sP      zHJDG %4.
+4
 rT   r5  c            
       X  a a ] tR tRt oRR.t^tRtRtRtRt	R t
R tR tRR	 ltR
 tR tR tR tR tR tRR ltV 3R ltRR lt]P0                  ! ]P2                  ! ]P4                  ]P6                  ! R]P4                  R4      .4      4      tR tR tRR ltR t R t!Rt"Vt#V ;t$# )SequenceNodei   r   r   NFc                `    V P                    Uu. uF  q"P                  V4      NK  	  up# u upi rL   )r   rU  )rX   rT  r   s   && rR   compile_time_value_list$SequenceNode.compile_time_value_list   s'    8<		B	&&t,	BBBs   +c                   R V n         . pV P                   Fh  pVP                  '       dC   V P                   '       d   \        VP                  R4       RV n         VP
                  pRVn        VP                  V4       Kj  	  Wn        R# )Fz,more than 1 starred expression in assignmentTN)starred_assignmentr   r   r   r   r
  r  rX   r   r   s   &  rR   replace_starred_target_node(SequenceNode.replace_starred_target_node   sl    "'99C~~~***#''#QR*.'jj!%KK  	rT   c                n    V P                  4        V P                   F  pVP                  V4       K  	  R # rL   )rR  r   rw  r
  s   && rR   rw  'SequenceNode.analyse_target_declaration   s*    ((*99C**3/ rT   c                P   \        V P                  4       F<  w  r4V'       g   VP                  V4      pVP                  V4      V P                  V&   K>  	  V P                  '       d_   V P                  P                  V4      pVP
                  P                  '       g   VP                  V4      pVP                  V4      V n        ^V n        VP                  '       gA   VP                  '       g/   VP                  '       d$   VP                  P                  '       d   RV n        V # )r  T)r  r   r}  r  r   r   rm  r  r  r  r  r  r  slow)rX   r{   skip_childrenr  r   r   s   &&&   rR   r}  SequenceNode.analyse_types   s    		*FA '',11#6DIIaL + **88=K##***)<<SA*;;C@D3#7#7#7&&&3??+J+J+JDIrT   c                    \         P                  ! VR R7      pV P                  V8X  d   V # V P                  '       d   Q h\	        V P
                  4      VP                  8w  d=   \        V P                  RVP                  \	        V P
                  4      3,          4       \        V P
                  VP                  4       UUu. uF  w  r4VP                  WB4      NK  	  ppp\        V P                  WQR R7      # u uppi )TrO  zHtrying to coerce sequence to ctuple of wrong length, expected %d, got %d)r   r   r  )r   rR  r   r   r   r   rj  r   r   r  r  r`  r  )rX   rw  r{   r   r   coerced_argss   &&&   rR   coerce_to_ctupleSequenceNode.coerce_to_ctuple !  s    ++HTJ99 K#####tyy>X]]*$((fs499~j/ / 0BEdiiQYQdQdBefBeYSd0BefTRR gs   C:c           
     p   V P                  4        \        ;QJ d&    R  V P                   4       F  '       g   K   RM	  RM! R  V P                   4       4      '       g   V # . p. pV P                   F  pVP                  '       df   V'       dA   VP	                  \        V^ ,          P                  VR7      P                  VRR7      4       . pVP	                  VP                  4       Kz  VP	                  V4       K  	  V'       d?   VP	                  \        V^ ,          P                  VR7      P                  VRR7      4       \        V P                  W P                  4      pV P                  '       d?   \        V P                  RWPP                  P                  V4      RV P                  RR7      pV# )c              3   8   "   T F  qP                   x  K  	  R # 5irL   )r   r   s   & rR   rm   ?SequenceNode._create_merge_node_if_necessary.<locals>.<genexpr>!  s     7Yc>>Y   TFrg	  rX  r   )inplacer   r  )_flatten_starred_argsrt   r   r   r  r  r   r}  r
  MergedSequenceNoder   r   
binop_noder  )rX   r{   r   r  r   r   s   &&    rR   _create_merge_node_if_necessary,SequenceNode._create_merge_node_if_necessary!  s7   ""$s7TYY7sss7TYY777K99C~~~KK	&)--f E S STWgk S lmFCJJ'c"  KK	&)--f=KKC_cKde!$((D))<#t%5%5%H%H%M499d<D rT   c                P   . pV P                    F  pVP                  '       d`   VP                  P                  '       dD   VP                  P                  '       g(   VP                  VP                  P                   4       Kt  VP                  V4       K  	  WP                   R &   R# )r`  N)r   r   r
  r   r   r  r  rQ  s   &  rR   rd  "SequenceNode._flatten_starred_args%!  si    99C~~~#**"D"D"DSZZMcMcMcCJJOO,C 	 
 		!rT   c                    R # r  rV   rW   s   &rR   r  SequenceNode.may_be_none.!  r#  rT   c                   V P                   '       d   \        V P                  R 4       . V n        . V n        RV n        \        V P                  4       EF  w  r#VP                  V4      ;q0P                  V&   VP                  '       d[   VP                  P                  \        4      '       g   \        VP                  R4       VP                  \        J d   \        Vn
        \        V P                  V4      pVP                  VP                  V4      pWEJd   RV n        V P                  P!                  V4       V P                  P!                  V4       EK  	  \        V n
        V # )z#can't assign to multiplied sequenceFz2starred target must have Python object (list) typeT)r   r   r   unpacked_itemscoerced_unpacked_itemsany_coerced_itemsr  r   r  r   r   rr  r   r   r  r`  r  )rX   r{   r  r   unpacked_itemcoerced_unpacked_items   &&    rR   r  !SequenceNode.analyse_target_types1!  s   $((AB &(#!&		*FA!$!9!9#!>>C))A,~~~xx//	::#''NP88~-(CH&txx5M$1$;$;CHHc$J!9)-&&&}5''../DE + #	rT   c                (    V P                  V4       R # rL   generate_operation_coder  s   &&rR   r  !SequenceNode.generate_result_codeH!      $$T*rT   c                   Vf   V P                  4       pR;rER pV P                  '       d   V'       g   V P                  pVP                  P                  '       d   VP                  4       p\	        VP
                  \        4      '       d&   VP
                  ^ 8  d   RVP
                  ,          pM/VP                  P                  '       d   RV: RV: R2pMRV: R2pV P                  \        J g   V P                  \        J Ed   V P                  '       g   V P                  '       d   V'       g   \        V P                  4      ^ 8  d   V P                  \        J d4   RpVP                  P                  \         P"                  ! RR	4      4       MR
pVP%                  RVV\        V P                  4      RP'                  R V P                   4       4      VP)                  W P*                  4      3,          4       VP-                  V\.        4       RV n        EMV P                  P2                  '       dL   \5        V P                  4       F0  w  rVP%                  V: RV: RV	P                  4       : R24       K2  	  EMJV P                  \        J d   RRrM4V P                  \        J d   RRrM\7        RV P                  ,          4      h\        V P                  4      pVP%                  V: RV
: RV: V: RVP)                  W P*                  4      : 24       VP-                  V\.        4       V'       df   \8        P:                  pVP%                  RV,          4       V^8X  d   TpM	V: RV: 2pVP%                  RV: RV: RV: RV: R2	4       RV n        MRp\=        V4       F  pV P                  V,          p	V'       g   V	P?                  4       '       g/   VPA                  V	P                  4       V	PC                  4       4       V	PE                  V4       TP%                  R V: RV: RT;'       d    T;'       d    V: R!V: 2;'       g    T;'       g    T: RV	PG                  4       : R"VPI                  V P*                  4      : R24       K  	  V'       d#   VP%                  R#4       VP%                  R#4       Ve   VP                  PJ                  '       d   VP%                  R$\8        P:                  : R%V: RVPG                  4       : RVP)                  \8        P:                  V P*                  4      : 24       VP-                  \8        P:                  \.        4       VPM                  V\.        4       VP%                  V: R\8        P:                  : R24       VP%                  R#4       R # R # R # )&NrN  z * %sz * ((z<0) ? 0:rb  z * (__Pyx_PyList_PackListPackr  PyTuple_Packz%s = %s(%d, %s); %sr  c              3   @   "   T F  qP                  4       x  K  	  R # 5irL   r
  r   s   & rR   rm   >SequenceNode.generate_sequence_packing_code.<locals>.<genexpr>m!  s     ?Yc--//Yr  Tr  r9  r:  
PyList_New__Pyx_PyList_SET_ITEMPyTuple_New__Pyx_PyTuple_SET_ITEMz'sequence packing for unexpected type %sr8  rf  z{ Py_ssize_t %s;r  zfor (z=0; z < r  z++) {r  r  z
) != (0)) r   z{ PyObject* z = PyNumber_InPlaceMultiply()'r  r   r   rm  r   r   r   r|  r   r   r   rW  r   r   r   r   r   r   r   r  r   r   r9  r   needs_subexpr_disposalr  r  r   r   r  r  r  r  r=  rD  r   r   rx   r&  )rX   r   r
  plainsize_factorc_multr   	pack_namer  r   create_funcset_item_func	arg_countcounteroffsets   &&&&           rR   generate_sequence_packing_code+SequenceNode.generate_sequence_packing_codeK!  s4   >[[]F!!E**K&&&$++-{::C@@#33a7")K,G,G"GK %%,,,:@&"IK - 06"7KYY*$		Y(>DIIIDII"yyI%/	  11++J8JK +	JJ,DII		?TYY??''90; ; < OOFN3*.D'YY   #DII.

Aszz|- . /
 yyI%-9;R]j(-:<T]#$MPTPYPY$YZZDIIIJJY''9; < OOFN3 !11

-78>$F*19=F

Wfg  /3+9%iil!3!3!5!5OOCJJL#))+>$$T*

!@\@@VQ(?QQV[[qQMMOOODHH-/ 0 & 

3

3"{'7'7'C'C'CJJ''1F1F1H''(?(?J  OOF33^DOOFN3JJVV-D-DEFJJsO (D"rT   c                   < V P                   '       d   \        SV `	  V4       R # V P                   F  pVP	                  V4       K  	  V P
                  '       d   V P
                  P                  V4       R # R # rL   )r  rN   r  r   r  r   r  )rX   r   r   rQ   s   && rR   r  +SequenceNode.generate_subexpr_disposal_code!  sa    &&&G248
 yy11$7 !   77=  rT   c                    V P                   '       d   V P                  W4       MV P                  W4       V P                   F  pVP	                  V4       K  	  VP                  V4       R # rL   )rP   generate_starred_assignment_code!generate_parallel_assignment_codern  r  r#  )rX   r   r   r  r   r   r   s   &&&&&& rR   r  %SequenceNode.generate_assignment_code!  sR    """11#<223=''DLL (trT   r  c                   V P                    F  pVP                  V4       K  	  VP                  \        J ;'       g=    VP                  \        \
        39   ;'       g    VP                  P                  '       * p\        V P                   4      ^8  pV'       d   V P                  W!VR7       M@VP                  R4       V P                  W!V P                   VR7       VP                  R4       V P                   F  pVP                  V4       K  	  \        \        V P                  4      4       F7  pV P                  V,          P                  V P                  V,          V4       K9  	  R# )   use_loopr  r   N)rn  r  r   r   r   r   r  r   (generate_special_parallel_unpacking_coder   (generate_generic_parallel_unpacking_codero  r  r  r   r  )rX   r   r   r   special_unpacklong_enough_for_a_loop
value_noder  s   &&&     rR   r  .SequenceNode.generate_parallel_assignment_code!  s/    ''DMM$ (((n4 : : XX*i)@@: :!$!9!99 	 "%T%8%8!9A!=99$: : < JJsO994..9O : QJJsO55J//5 6s499~&AIIaL11++A.6 'rT   c                   R pRVP                  4       ,          pVP                  \        J d   R.pRpVP                  4       '       d   TpMqVP                  \        J d   R.pRpVP                  4       '       d   TpM?RR.pRpRVP                  4       ,          pRVP                  4       ,          p	R	V: R
V	: R2pVP                  RV,          4       VP                  RVP                  4       ,          4       VP                  RV,          4       VP                  R\        V P                  4      ,          4       VP                  P                  \        P                  ! RR4      4       VP                  R\        V P                  4      \        V P                  4      3,          4       VP                  P                  \        P                  ! RR4      4       VP                  R4       VP                  VP                  V P                  4      4       VP                  R4       VP                  R4       \        V4      ^8X  d    VP                  RV^ ,          ,          4       \        V P                  4       EF  w  rV^ ,          R8X  d   VP                  VP!                  4        RV
 RV P#                  4        R24       VP                  VP%                  VP!                  4       V P                  4      4       VP'                  VP!                  4       VP)                  4       4       K  VP                  VP!                  4        RV
 R24       VP+                  VP!                  4       VP)                  4       4       EK	  	  \        V4      ^8X  EdC   VP                  R4       \        V P                  4       EF  w  rV^,          R8X  d   VP                  VP!                  4        RV
 RV P#                  4        R24       VP                  VP%                  VP!                  4       V P                  4      4       VP'                  VP!                  4       VP)                  4       4       K  VP                  VP!                  4        RV
 R24       VP+                  VP!                  4       VP)                  4       4       EK	  	  VP                  R4       VP                  R4       V'       g   \        V P                  4       F  w  rVP                  RVP!                  4       V
VP%                  VP!                  4       V P                  4      3,          4       VP-                  VP!                  4       VP                  4       K  	  EM3VP                  R4       VP                  R 4       TP                  R!\        V P                  4      : R"R#P/                  V P                   Uu. uF  pR$VP!                  4       ,          NK  	  up4      : R%24       VP                  R&\        V P                  4      ,          4       VP                  R'VP%                  R(V P                  4      ,          4       VP-                  R(\0        4       VP                  R)4       VP                  R4       VP                  R4       VP                  R*4       VP3                  V4       VR 8X  d   VP                  R4       R.# WE8X  d   VP                  R4       VP                  P                  \        P                  ! R+R4      4       VP                  R,VP                  V P                  4      ,          4       VP                  R4       R.# VP                  R4       V P5                  WV P                  VR-7       VP                  R4       R.# u upi )/rj  zlikely(%s != Py_None)r  r  r  r  __Pyx_PySequence_SIZEzlikely(PyTuple_CheckExact(%s))zPyList_CheckExact(%s)r8  z) || (rb  rz  zPyObject* sequence = %s;zPy_ssize_t size = %s(sequence);zif (unlikely(size != %d)) {RaiseTooManyValuesToUnpackr  z1if (size > %d) __Pyx_RaiseTooManyValuesError(%d);RaiseNeedMoreValuesToUnpackz9else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);r   r
  z(if (likely(Py%s_CheckExact(sequence))) {z) = __Pyx_PyList_GetItemRefFast(sequence, r  r  z = PyTuple_GET_ITEM(sequence, r  r  z,%s = __Pyx_PySequence_ITEM(sequence, %d); %sr  zPy_ssize_t i;PyObject** temps[r
  r  r  r>  zfor (i=0; i < %s; i++) {z7PyObject* item = __Pyx_PySequence_ITEM(sequence, i); %sr   z*(temps[i]) = item;r  RaiseNoneIterErrorz%__Pyx_RaiseNoneNotIterableError(); %sr  N)r   r   r   r  r   r   r   r   r   r   r   r   r   r   r  rn  r  rt  r   r?  r=  r  r9  r  r   r  r  )rX   r   r   r  sequence_type_test
none_checkr5   get_size_functuple_check
list_checkr  r   s   &&&&        rR   r  5SequenceNode.generate_special_parallel_unpacking_code!  s    ,s}}>
88y $XN3M  %/"XX#%YN4M  %/"%v.N3M:S]]_LK1CMMOCJ3>
!K

;!334

-?@ 	

4}DE

03tyy>AB))##$@BTU	W

F		NC		NJ, , 	-))##$ACUV	X

NO

4??488,-

3

QR~!#JJANSTDUUV !4!45GAa F*

dkkm_ -))*2d.G.G.I-J"N O

4224;;=$((KL  

=

dkkm_,J1#RPQtzz|< 6 ~!#JJz"$T%8%89!!$.JJ$++-0YZ[Y\\^_c_x_x_z^{{}~JJt66t{{}dhhOP$$T[[]DJJLAJJ$++-0NqcQSTUOODKKM4::<@ : JJsO

7$T%8%89

IKKM1++DKKM488DMF F G tyy9	 : JJsOJJ'JJD''(D<O<OP<OD%$++-//<OPQS T JJ1C8K8K4LLMJJP''9; <OOFN3JJ,-JJsOJJsO

8""4($JJsO-JJz"--''(<>PQSJJ>QUQYQYAZZ[JJsOJJz"994.. : CJJsO3 Qs   / _c                   VP                   P                  \        P                  ! R R4      4       VP                   P                  \        P                  ! RR4      4       VP	                  R4       V'       db   TP	                  R\        V P                  4      : RRP                  V Uu. uF  pRVP                  4       ,          NK  	  up4      : R24       VP                  P                  \        R	R
7      pVP	                  V: RVP                  4       : RVP                  WpP                  4      : 24       VP                  V\        4       VP!                  V4       VP                  P                  V P"                  RR
7      pVP	                  V RV R24       VP%                  R4      p	V: RV: R2p
V'       d   VP	                  R\        V4      ,          4       VP'                  RV
,          4       VP)                  V	4       VP                  R\        4       VP	                  R4       VP	                  R4       Mn\+        V4       F_  w  rVP'                  RVVP                  4       V
VP                  4       3,          4       VP)                  V	4       VP-                  V4       Ka  	  V'       d   VP                   P                  \        P                  ! RR4      4       VP/                  V P                  RV
\        V4      3,          4       VP	                  RV,          4       VP1                  V\        4       VP%                  R4      pVP)                  V4       VP3                  V	4       VP1                  V\        4       VP	                  RV,          4       VP	                  R4       VP	                  VP5                  V P                  4      4       VP3                  V4       VP                  P7                  V4       V'       d   VP                  P7                  V4       RpV# u upi )r  r  
IterFinishzPy_ssize_t index = -1;r  r
  r  r  r>  Tr  r  rf  Fr  r  unpacking_failedr8  rb  z$for (index=0; index < %s; index++) {z*PyObject* item = %s; if (unlikely(!item)) r   z*(temps[index]) = item;r   z(index = %d; %s = %s; if (unlikely(!%s)) UnpackItemEndCheckz$__Pyx_IternextUnpackEndCheck(%s, %d)r  unpacking_donezCif (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);N)r   r   r   r   r   r   rn  r  r  r  r  r   r   r   r   r9  r  r  r  r  r  r  r<  rC  r  r  r   r  )rX   r   r   rn  r  	terminater   iterator_tempiternext_funcunpacking_error_labelunpack_coder  unpacking_done_labels   &&&&&&       rR   r  5SequenceNode.generate_generic_parallel_unpacking_codeO"  se   ))##$ACUV	X))##L2DE	G

+,JJD''(NKND%$++-//NKLN O 44^PT4U

''xx@B	C
 	~6""4(44T5M5MZ_4`

o <<I?"N	

 !%/A B"/?JJ=N@SSTHHAKOPMM/0OOFN3JJ01JJsO$^4>#	B' '( 34$$T* 5 --''(<>PQS!!$((,RN#V% -% & JJ|m34!!-@#~~.>?*+,-m^<

<-/0

XY

4??488,-+,##M2NN''6 M{ Ls   , P;c                &   \        V P                  4       FQ  w  r4VP                  '       g   K  V P                  V,          pV P                  R V pV P                  V^,           R  p M	  Q hR pV'       d   V F  p	V	P	                  V4       K  	  VP                  R4       V P                  W!VRRR7      p\        V4       F)  w  r9V P                  V,          p
V
P                  V4       K+  	  VP                  R4       VP	                  V4       VP                  4       pTP                  V: RV'       g4   VP                  4       '       d   VP                  \        \        39   d   RMR: R	T;'       g    VP                  4       : R
VP                  WP                   4      : 24       VP#                  V4       V'       d3   VP%                  V\        4       VP&                  P)                  V4       MVP+                  V4       V'       Ed?   VP,                  P/                  \0        P2                  ! RR4      4       VP&                  P5                  \6        P8                  RR7      pVP                  V: RV: R24       VP                  RV\;        V4      3,          4       VP                  R\;        V4      VVP=                  V P                   4      3,          4       VP                  R4       VR R R1,           F  p	V	P	                  V4       K  	  \        \?        VR R R1,          V P                  R R R1,          4      4       F  w  pw  rVP                  R4       VP                  RV	P                  4       WV^,           3,          4       VP                  RV,          4       VP                  R4       VP                  RV	P                  4       WV^,           3,          4       VP                  R4       V	P#                  V4       VP                  V4       K  	  VP                  R4       VP&                  P5                  \        RR7      pVP                  RWV\;        V4      VP                  WP                   4      3,          4       VPA                  V\        4       VP&                  P)                  V4       VPC                  V\        4       VP                  V: RV: RV: R24       VP                  R4       VP                  RV,          4       VP&                  P)                  V4       VP                  R4       \        V P                  4       F(  w  r4VPE                  V P                  V,          V4       K*  	  R # )NFr  T)r  r  r   r9  __Pyx_PySequence_ListKeepNewPySequence_Listr8  rf  r  r  r  z = __Pyx_PyList_GET_SIZE(r  zif (unlikely(%s < %d)) {z)__Pyx_RaiseNeedMoreValuesError(%d+%s); %sz#if CYTHON_COMPILING_IN_CPYTHONz!%s = PyList_GET_ITEM(%s, %s-%d); z((PyVarObject*)%s)->ob_size--;r  z'%s = __Pyx_PySequence_ITEM(%s, %s-%d); r  z #if !CYTHON_COMPILING_IN_CPYTHONz*%s = PySequence_GetSlice(%s, 0, %s-%d); %sr  r	  zCYTHON_UNUSED_VAR(%s);r~  )#r  r   r   rn  r  r   r  ro  r  r  r  r   r   r   r   r   r   r<  r  r  r  r  r   r   r   r   r  r   r  r   r   r  r9  r&  r  )rX   r   r   r  r   starred_targetunpacked_fixed_items_leftunpacked_fixed_items_rightr  r   r  target_listlength_tempcoerced_argsublist_temps   &&&            rR   r  -SequenceNode.generate_starred_assignment_code"  s   		*FA~~~!%!4!4Q!7-1-@-@!-D)-1-@-@1-F* + 5$1d# 2JJsO II4 J 0M %%>?!88;
33D9 @ JJsO%$++-

%#*<*<*>*>388P^`iOjCj +&' ,,S]]_,##K:< 	= 	&&t,!!-@NN''6&&t,%%--''(EGYZ\..66z7S7S`e6fKJJKUVJJ1[#F`Ba4bbcJJB./*F, , - JJsO24R488d# 9*3C8RSWUWSW8X8<8S8STXVXTX8Y5[ +\&&D

<=

>NN$k!BE E F 

;kIJ

7#

DNN$k!HE E F

8$$$T*44T:+\ JJ9:>>77SW7XLJJC;<V8W''hh?GA A B OOL.9NN''4OOK8JJ\<XYJJwJJ/,>?NN''5JJx 		*FA(()D)DQ)GN +rT   c                   V P                    F  pVP                  V4       K  	  V P                  '       dK   V P                   F  pVP                  V4       K  	  V P                   F  pVP                  V4       K  	  R # R # rL   )r   rK  rn  ro  rX   r   r   s   && rR   rK  SequenceNode.annotate"  se    99CLL **T" +22T" 3 rT   )
rp  r   ro  r  r   r  rW  rP  r   rn  r  r6	  r  r1  )%r[   r\   r]   r^   r   r   rn  r   rW  r  rM  rR  rw  r}  r\  rg  rd  r  r  r  r  r  r  r   r  r]  r   r  r  r  r  r  r  rK  r_   r`   ra   rb   s   @@rR   rK  rK     s      &HNKD"
C0
$S0.+dL>	 %--j.B.B!!##D**C*CTJ$/ 
64dLGRROh# #rT   rK  c                   r   a  ] tR tRt o ]tRtRtR tRR lt	R t
R tR tR	 tR
 tR tR tR tR tRtV tR# )r  i"  Fr}
  c                ~   V P                   '       g   V P                  '       g   \        # V P                   Uu. uF  q"P                  V4      NK  	  pp\        ;QJ d    R  V 4       F  '       g   K   RM	  RM! R  V 4       4      '       d   \        # VP                  V P                  V4      P                  # u upi )c              3      "   T FM  pVP                   ;'       g5    VP                  ;'       g!    VP                  ;'       g    VP                  x  KO  	  R # 5irL   )rx   r  r  r  )rj   r   s   & rR   rm   'TupleNode.infer_type.<locals>.<genexpr>#  sK      &$4 bb4#:#:bbd>Q>QbbUYUbUbb$s   AAAATF)r   r   r   r   rt   r	  r   r   )rX   r{   r   r-	  s   &&  rR   r   TupleNode.infer_type"  s    499948II>IS^^C(I	>3 &$&333 &$& & &%%dhh	:???	 ?s   B:c                   V P                   '       d   R V n         V P                  '       d   R V n        \        V P                  4      ^ 8X  d   R V n        RV n         V # V'       gV   \        V P                  4       F<  w  r4VP                  '       d   RVn        VP                  V4      V P                  V&   K>  	  V P                  '       g   \        ;QJ d&    R V P                   4       F  '       g   K   RM	  R M! R V P                   4       4      '       gF   VP                  V P                  R V P                   4       4      P                  V n        ^V n        V # \        P                  WRR7      pVP                  V4      pVP                   '       g   V# \"        ;QJ d&    R VP                   4       F  '       d   K   R M	  RM! R VP                   4       4      '       g   V# VP                  '       dG   VP                  P                   '       d;   \%        VP                  P&                  \(        4      '       d   R Vn        RVn         V# VP                  P                  P*                  '       gG   VP                  P                  P,                  '       g!   VP                  P/                  V4      Vn	        RVn        RVn        V# )FTc              3      "   T Fk  pVP                   ;'       gS    VP                  P                  ;'       g5    VP                  P                  ;'       g    VP                  P                  x  Km  	  R # 5irL   )r   r   rx   r  r  r   s   & rR   rm   *TupleNode.analyse_types.<locals>.<genexpr>#  sW      .#,C ss388+?+?ss388C^C^ssbebjbjbsbss#,rT  c              3   8   "   T F  qP                   x  K  	  R # 5irL   rS  r   s   & rR   rm   r  #  s     9Xis((ira  rb  c              3   8   "   T F  qP                   x  K  	  R # 5irL   )r   )rj   childs   & rR   rm   r  $#  s     ;##ra  )r   is_partly_literalr   r   r  r  r   r:  r}  r   rt   r	  r   r   rK  rg  r   r   r   r   r   rx   rm  r  )rX   r{   rX  r  r   r   s   &&&   rR   r}  TupleNode.analyse_types#  s   ???#DO!!!%*D"tyy>Q DL"DOK#DII.>>>48C1"005		! /    C .#'99.CCC .#'99. . ...txx9Xdii9XY^^DIDLK))$4)H33C8+++Ks;;sss;;;;K  +++4++;;SAA DL"DO 	 ##((444T=M=M=R=R=Y=Y=Y#'#3#3#F#Fs#K DL%)D"rT   c                N   V P                   '       g   R # V P                    Uu. uF  q"P                  V4      NK  	  pp\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   R # VP                  V P                  V4      pVP
                  # u upi )Nc              3   (   "   T F  qR J x  K
  	  R # 5irL   rV   )rj   rk   s   & rR   rm   ,TupleNode.analyse_as_type.<locals>.<genexpr>7#  s     -*QDy*s   TF)r   r  rt   r	  r   r   )rX   r{   r   r   r   s   &&   rR   r  TupleNode.analyse_as_type2#  sy    yyy:>))D)3))#.)
D3-*-333-*---&&txx<zz	 Es   B"c                   V P                   P                  '       d   VP                  '       d7   V P                   P                  VP                  8X  d   V P                  W4      # V\        J g   V\
        J dc   V P                   Uu. uF  q3P                  V4      NK  	  pp\        V P                  V\        V P                  ^R7      P                  VRR7      # V P                  V4      P                  W4      # VP                  '       d$   V P                  '       g   V P                  W4      # \        P                  WV4      # u upi )r  )r   r   r   r  Trb  )r   r  rj  r\  r   r   r   r  r  r   r   r}  r`  rK  )rX   rw  r{   r   r[  s   &&&  rR   r`  TupleNode.coerce_to<#  s   99!!!diinn&E,,X;;Z'8~+EGKyyQy 6 6s ;yQ HH%# $ 0 0  -4-89 ..s3==hLL(8(8(8((77))$#>>  Rs   Ec                    \        V P                  V P                  V P                  R 7      p\	        V P
                  \        4      '       d   \        V P
                  4      Vn        V# )r   r   )r?  r   r   r   r   r   r   r  rX   rk   s   & rR   as_listTupleNode.as_listP#  sI    TXXDII4;K;KLd**E22 $T%9%9 :ArT   c                    R # r1  rV   rW   s   &rR   r  TupleNode.is_simpleV#      rT   c                    R # r1  rV   rW   s   &rR   r  TupleNode.nonlocally_immutableZ#  r  rT   c                    V P                   # rL   r  rW   s   &rR   r  TupleNode.calculate_result_code^#  r  rT   c                    V P                   '       d   \        4       h\        V P                   Uu. uF  qP                  NK  	  up4      V n        R # u upi rL   )r   r   r   r   r   rX   r   s   & rR   rI  #TupleNode.calculate_constant_resulta#  sG    ,$/3yy&:/8##y&:  ; &:s   Ac                    V P                  V4      pV P                  e   Q V P                  4       h \        V4      #   \         d   pT P	                  T4        R p?R # R p?ii ; irL   )rM  r   r   r  rZ  )rX   rT  r  rY  s   &&  rR   rU  TupleNode.compile_time_valueg#  s_    --d3'9)9)99'	-=  	-))!,,	-s   
= A$AA$c                   \        V P                  4      ^ 8X  d'   VP                  \        P                  4      V n        R# V P                  '       g   V P                  '       Ed4   \        V P                  V P                  '       d   V P                  MR.V P                  ,           4      pVP                  RVR7      pVP                  V4      pVeT   VP                  V P                  4       V P                  WCV P                  '       * R7       VP!                  V\"        4       V P                  '       d	   W0n        R# V P                  P                  P$                  '       d   VP&                  P)                  \*        P,                  ! RR4      4       VP/                  V P1                  4       : RV: RV P                  P1                  4       : R	VP3                  V P1                  4       V P                  4      : 24       V P5                  V4       R# VP/                  V P1                  4       : R
V: RV P                  P7                  4       : R	VP3                  V P1                  4       V P                  4      : 24       V P5                  V4       R# RV P                  P8                  n        V P                  V4       R# )r   Nr   r	  )r  PySequenceMultiplyr  z = __Pyx_PySequence_Multiply(r  rf  z = PyNumber_Multiply(T)r   r   r  r   empty_tupler  r   r  r   r   r   rA  rB  r   r   r  rC  r   rm  r   r   r   r   r   r  r   r<  r   r   r\  )rX   r   r	  tuple_targetrH  s   &&   rR   rv  !TupleNode.generate_operation_codeo#  s   tyy>Q#889K9KLD???d444 'tyyt43C3C\`2adhdmdm2mnI,,W	,JL99,GJ%##DHH-33JX\XgXgTg3h&&|^D#/ !!&&---  11++,@BTUW

KKM<1A1A1H1H1J++DKKM488D  $$T*

KKM<1A1A1K1K1M++DKKM488D  $$T*#'DIIOO //5rT   )r   r   r  r  r  r   Nr  )r[   r\   r]   r^   r   r   r  ri  r   r}  r  r`  r  r  r  r  rI  rU  rv  r_   r`   r  s   @rR   r  r  "  sU      D-K@)V?( ;-"6 "6rT   r  c                   r   a  ] tR tRt o . t]tRtRtR t	R t
R tR tR tR	 tR
 tR tR tR tR tRtV tR# )r?  i#  FzConstructing Python listc                    R# r  rV   r   s   &&rR   r  ListNode.type_dependencies#  r
  rT   c                    \         # rL   )r   r   s   &&rR   r   ListNode.infer_type#      rT   c                    V P                    F  pVP                  '       g   K  R Vn        K   	  \        P	                  W4      pVP                  V4      # r1  )r   r   r:  rK  r  r  )rX   r{   r   r   s   &&  rR   r  ListNode.analyse_expressions#  sD    99C~~~04-  //:&&s++rT   c                &   \        R R7      ;_uu_ 4       p\        V P                  4      V n        \        P                  W4      pRRR4       XXn        VP                  '       d   R V n        VP                  V4      pV#   + '       g   i     LC; iTr  N)
r   r  r   original_argsrK  r}  obj_conversion_errorsr  rA  rg  )rX   r{   errorsr   s   &&  rR   r}  ListNode.analyse_types#  sp    &&&!%diiD--d8D ' &,"#'D 33C8 '&s   0B  B	c                   VP                   '       df   V P                   F  p\        V4       K  	  . V n        V P                  P	                  V4      '       g   \        V P                  R V,          4       V # VP                  '       g   VP                  '       Ed   VP                  \        P                  JEdf   \        V P                  4      pV P                  '       d   \        V P                  P                   \"        4      '       dW   V P                  P                   ^ 8:  d   \        V P                  RV,          4       M:W@P                  P                   ,          pM\        V P                  RV,          4       VP                  p\        P$                  ! WT4      V n        \'        \        V P(                  4      4       FV  pV P                  V,          p\        V\*        4      '       d   VP,                  pVP/                  WR4      V P                  V&   KX  	  V # VP0                  '       d6   \3        V P                  V \        P4                  R7      P/                  W4      # V P                  '       d    \        V P                  RV,          4       V # VP6                  '       Ed{   \        V P                  4      \        VP8                  P:                  4      8  d    \        V P                  RV,          4       EM\        V P                  4      \        VP8                  P:                  4      8  d   \=        V P                  RV,          ^4       \?        \A        V P(                  V P                  VP8                  P:                  4      4       F  w  pw  rxp	\        V\*        4      '       d   VP,                  pM0V	P                  PB                  '       d   VPD                  '       d   TpVP/                  V	P                  V4      V P                  V&   K  	  Wn        V # VPF                  '       d   V PI                  W4      # \J        V n        \        V P                  R V,          4       V # )zCannot coerce list to type '%s'z4Cannot coerce non-positively multiplied list to '%s'z1Cannot coerce dynamically multiplied list to '%s')rd	  r   z%Cannot coerce multiplied list to '%s'zToo many members for '%s'zToo few members for '%s')&rx   r  r   r   rk  r   r   r  rX  rY  r   c_void_typer   r   r   r   r   r   rB  r  r  ro  r   r`  r#  TypecastNoder   r
  rp  r  r   r  r  r*	  r  r  r\  r2   )
rX   rw  r{   r|   r  rY  r  r   r  rF	  s
   &&&       rR   r`  ListNode.coerce_to#  s3   11S! 2)+D&99''11dhh AH LMT S 8???8J8JR\RhRh8htyy>Ld..>>DD''771<dhh(^ai(ij$(8(8(H(HH$(($WZb$bc **I"--iFDI3t1123iilc#566''C"}}Y<		!	 4: 1 """$Z=V=VWaabjpp$((ChNO( ' 499~HNN$>$> ??dhh ;h FGtyy>C(B(B$CCDHH&@8&KQO5>s4CUCUW[W`W`bjbpbpb|b|?}5~1A1&!#'9::!gg777K<W<W<W)#&==c#BDIIaL 6 !I  ((77"DI$((=HIrT   c                    V # rL   rV   rW   s   &rR   r  ListNode.as_list#  r&  rT   c                    \        V P                  V P                  V P                  R 7      p\	        V P
                  \        4      '       d   \        V P
                  4      Vn        V# r  )r  r   r   r   r   r   r  r   r  s   & rR   as_tupleListNode.as_tuple#  sI    dhhTYYD<L<LMd**D11 %d&:&: ;ArT   c                J   V P                   P                  '       dr   V P                  '       d1   VP                  P	                  V P                   R RR R7      V n        R# VP                  P	                  V P                   R R R7      V n        R# \        P                  W4       R# )FT)r  staticreusable)r  r  N)r   r  rA  r  r  r  rK  r  r  s   &&rR   r  ListNode.allocate_temp_result#  s    99###!%!=!=II%u "> "N "&!=!=II%% "> "A --d9rT   c                    V P                   '       d   \        4       hV P                   Uu. uF  qP                  NK  	  upV n        R # u upi rL   )r   r   r   r   r  s   & rR   rI  "ListNode.calculate_constant_result$  s?    ,+/99 6+4C9 6  6s   A	c                    V P                  V4      pV P                  '       d"   W P                  P                  V4      ,          pV# rL   )rM  r   rU  )rX   rT  ls   && rR   rU  ListNode.compile_time_value$  s<    ((.!!44T::ArT   c                   V P                   P                  '       d2   V P                   F  p\        V4       K  	  V P	                  V4       R# V P                   P
                  '       Ed   V P                  '       d   VP                  R 4       VP                  R\        P                  ,          4       VP                  RP                  \        P                  V P                  P                  4       R7      4       R\        V P                  4      \        P                  3,          pMRp\        V P                  4       F  w  rEVP                   P
                  '       d   VP                  P!                  \"        P$                  ! RR4      4       VP                  RV P                  4       : R	V: V: R
VP                  4       : RV P                  4       : R2
4       K  VP                  V P                  4       : R	V: V: RVP                  4       : R24       K  	  V P                  '       d%   VP                  R4       VP                  R4       R# R# V P                   P&                  '       d   \)        V P                  V P                   P*                  P,                  4       FH  w  rVVP                  V P                  4       : RVP.                  : RVP                  4       : R24       KJ  	  R# \1        R4      h)r  zPy_ssize_t %s;z&for ({i} = 0; {i} < {count}; {i}++) {{)r  countz+ (%d * %s)rN  r  r  r  r  r  r?  z[0]));z] = r:  r   r  r9  zList type never specifiedN)r   rx   r  r   r  r  r   r   r   r  r&  r  r   r   r  r   r   r   r   r
  r  rp  r  r   r   )rX   r   r|   r  r  r   rF	  s   &&     rR   rv   ListNode.generate_operation_code$  s   99   11S! 2//5YY

3

+f.E.EEF

CJJ--T5E5E5L5L5N K P Q&#dii.&:Q:Q)RR#DII.88$$$$$55k6M6MN^`o6pqJJq&

dkkm  
 JJ

	 & ' / 

3

3   YY   "499diioo.I.IJ

KKMLLJJL" #  K   ;<<rT   )r   rA  r  r  r  r   N)r[   r\   r]   r^   r  r   r   rA  ri  r  r   r  r}  r`  r  r  r  rI  rU  rv  r_   r`   r  s   @rR   r?  r?  #  sY      DO,K,0d:6%= %=rT   r?  c                   d   a  ] tR tRt o R.tRt]tR tR t	R t
R tR tR	 tR
 tR tR tRtV tR# )ComprehensionNodei5$  loopTc                    V P                   # rL   rS  r   s   &&rR   r   ComprehensionNode.infer_type=$      yyrT   c                   W P                   n        V P                  V4       \        V P                  \
        P                  4      '       dn   \        V P                  P                  \        4      '       g   Q V P                  P                  4       hV P                  P                  P                  R V4       R # \        V P                  \
        P                  4      '       g   Q V P                  4       hR # rL   )
r  r
  r  r   r  r   _ForInStatNoderF  r  ForFromStatNoder   s   &&rR   r  &ComprehensionNode.analyse_declarations@$  s    !dii!5!566dii00.AAU499CUCUUAII))$4dii)>)>??JJ?rT   c                <    V P                   P                  V4       R # rL   )r  r  r   s   &&rR   r  -ComprehensionNode.analyse_scoped_declarationsJ$  s    		&&s+rT   c                j    V P                   '       g!   V P                  P                  V4      V n        V # rL   r  r  r  r   s   &&rR   r}  ComprehensionNode.analyse_typesM$  s)    ###		55c:DIrT   c                j    V P                   '       d!   V P                  P                  V4      V n        V # rL   r  r   s   &&rR   r  ,ComprehensionNode.analyse_scoped_expressionsR$  s)    		55c:DIrT   c                    R # r  rV   rW   s   &rR   r  ComprehensionNode.may_be_noneW$  r#  rT   c                (    V P                  V4       R # rL   ru  r  s   &&rR   r  &ComprehensionNode.generate_result_codeZ$  rx  rT   c           
         V P                   \        P                  J d   R pM^V P                   \        P                  J d   RpM=V P                   \        P                  J d   RpM\        RV P                   ,          4      hVP                  V P                  4       : RV: RVP                  V P                  4       V P                  4      : 24       V P                  V4       V P                  P                  V4       R# )zPyList_New(0)zPySet_New(NULL)zPyDict_New()z"illegal type for comprehension: %sr9  r  N)r   r   r   r   r   r   r   r  r   r   r<  r  generate_execution_code)rX   r   create_codes   && rR   rv  )ComprehensionNode.generate_operation_code]$  s    99))))KYY'***+KYY'+++(K Dtyy PQQ

KKM;##DKKM488<> 	? 	T"		))$/rT   c                <    V P                   P                  V4       R # rL   )r  rK  r  s   &&rR   rK  ComprehensionNode.annotatem$      		4 rT   )r  N)r[   r\   r]   r^   r   r  rN  r   r   r  r  r}  r  r  r  rv  rK  r_   r`   r  s   @rR   r  r  5$  sK      (KG$OK,

+0 ! !rT   r  c                   Z   a  ] tR tRt o R.tRt]P                  tR t	R t
R tR tRtV tR# )	ComprehensionAppendNodeiq$  r  Nc                    V P                   P                  V4      V n         V P                   P                  P                  '       g!   V P                   P	                  V4      V n         V # rL   )r  r  r   rx   r  r   s   &&rR   r  +ComprehensionAppendNode.analyse_expressionsz$  sG    II11#6	yy~~)))		44S9DIrT   c           
        V P                   P                  \        J d4   VP                  P	                  \
        P                  ! R R4      4       RpMGV P                   P                  \        J d   RpM&\        RV P                   P                  ,          4      hV P                  P                  V4       VP                  VP                  V: RV P                   P                  4       : RV P                  P                  4       : R2V P                  4      4       V P                  P                  V4       V P                  P!                  V4       R# )	ListCompAppend
Optimize.c__Pyx_ListComp_Append	PySet_Addz'Invalid type for comprehension node: %sr8  , (PyObject*)rb  N)r
  r   r   r   r   r   r   r   r   r  r  r   r   r  r   r  r#  r	  s   && rR   r'  /ComprehensionAppendNode.generate_execution_code$  s    ;;y(--''(8,GI.H[[)"H9DKK<L<LLN N 			**40

4%%KK II' xx	 	
 			((.		T"rT   c                <    V P                   P                  W4       R # rL   )r  r*  r)  s   &&&rR   r*  5ComprehensionAppendNode.generate_function_definitions$  s    		//:rT   c                <    V P                   P                  V4       R # rL   )r  rK  r  s   &&rR   rK   ComprehensionAppendNode.annotate$  r,  rT   )r  )r[   r\   r]   r^   r   r
  r   r  r   r  r'  r*  rK  r_   r`   r  s   @rR   r.  r.  q$  s7      (KF  D#(;! !rT   r.  c                   @   a  ] tR tRt o RR.tR tR tR tR tRt	V t
R	# )
DictComprehensionAppendNodei$  key_expr
value_exprc                   V P                   P                  V4      V n         V P                   P                  P                  '       g!   V P                   P	                  V4      V n         V P
                  P                  V4      V n        V P
                  P                  P                  '       g!   V P
                  P	                  V4      V n        V # rL   )r>  r  r   rx   r  r?  r   s   &&rR   r  /DictComprehensionAppendNode.analyse_expressions$  s    99#>}}!!--- MM<<SADM//==cB##///"oo@@EDOrT   c                J   V P                   P                  V4       V P                  P                  V4       VP                  VP	                  R V P
                  P                  4       : RV P                   P                  4       : RV P                  P                  4       : R2V P                  4      4       V P                   P                  V4       V P                   P                  V4       V P                  P                  V4       V P                  P                  V4       R# )r
  r6  rb  N)
r>  r  r?  r   r   r
  r  r   r  r#  r  s   &&rR   r'  3DictComprehensionAppendNode.generate_execution_code$  s    ..t4006

4%%KK MM  "OO""$' xx	 	
 	,,T2  &..t4""4(rT   c                r    V P                   P                  W4       V P                  P                  W4       R # rL   )r>  r*  r?  r)  s   &&&rR   r*  9DictComprehensionAppendNode.generate_function_definitions$  s&    33C>55c@rT   c                r    V P                   P                  V4       V P                  P                  V4       R # rL   )r>  rK  r?  r  s   &&rR   rK  $DictComprehensionAppendNode.annotate$  s&    t$  &rT   )r>  r?  N)r[   r\   r]   r^   r   r  r'  r*  rK  r_   r`   r  s   @rR   r=  r=  $  s)     |,K)A' 'rT   r=  c                   d   a a ] tR tRt oR.tRtRtRt]t	RV 3R llt
R tR tR tR	 tR
tVtV ;t# )InlinedGeneratorExpressionNodei$  genNTc                  < VP                   P                  pR Vn        VeO   V\        \        \
        39   g   Q V4       hW5n        VP                  \        W\        P                  4      VR7       \        SV `0  ! V3RV/VB  R# )TNrI  rJ  )r&
  gbody
is_inlinedr   r   r   inlined_comprehension_typerX  r  r   retval_cnamerN   r  )rX   r   rJ  comprehension_typer  rL  rQ   s   &&&&, rR   r  'InlinedGeneratorExpressionNode.__init__$  s~    "")%)Xy)II]K]]I/A,MM'ATATU'   	0#00rT   c                     V P                   R9  # )rt   )rt   r   r  )	orig_funcrW   s   &rR   r  *InlinedGeneratorExpressionNode.may_be_none$  s    ~~%===rT   c                    V P                   # rL   rS  r   s   &&rR   r   )InlinedGeneratorExpressionNode.infer_type$  r  rT   c                F    V P                   P                  V4      V n         V # rL   )rJ  r  r   s   &&rR   r}  ,InlinedGeneratorExpressionNode.analyse_types$  s    88//4rT   c           
         VP                  V P                  4       : R V P                  P                  4       : RVP                  V P                  4       V P                  4      : 24       V P                  V4       R# )z$ = __Pyx_Generator_GetInlinedResult(rf  N)r   r  rJ  r   r   r<  r  s   &&rR   r  3InlinedGeneratorExpressionNode.generate_result_code$  sS    

KKM488??,##DKKM488<> 	? 	T"rT   )rJ  rL   )r[   r\   r]   r^   r   rS  r
  r  r   r   r  r  r   r}  r  r_   r`   ra   rb   s   @@rR   rI  rI  $  s@      wHIFGD
1># #rT   rI  c                   h   a  ] tR tRt o RtR.tRtRtR tR t	R t
R	 tR
 tR tR tR tR tRtV tR# )re  i$  z
Merge a sequence of iterables into a set/list/tuple.

The target collection is determined by self.type, which must be set externally.

args    [ExprNode]
r   TzConstructing Python collectionc                X   V\         \        39   d   V'       dz   V^ ,          P                  '       da   V^ ,          P                  \         JdF   \	        V^ ,          P
                  V^ ,          P                  RV^ ,          P                  R7      V^ &   \        P                  WW#R7       R# )r   T)r   r  r   )r   r   N)
r   r   r   r   r?  r   r   r   r   r  )rX   r   r   r   s   &&&&rR   r  MergedSequenceNode.__init__$  st    Iz**tQ8W8W8WAw||9,"47;;T!W\\4]abc]d]p]pqQ$$:rT   c                   . pV P                    F  pVP                  '       d0   VP                  '       d   VP                  P                  ^ 8:  d   KD  VP                  '       g   VP                  '       d   R VP                    4       pMVP                  pVP                  V4       K  	  V P                  \        J d   \        V4      pM6V P                  \        J d   \        V4      pMV P                  \        J g   Q hWn        R# )r   c              3   8   "   T F  qP                   x  K  	  R # 5irL   r  r   s   & rR   rm   ?MergedSequenceNode.calculate_constant_result.<locals>.<genexpr>%  s     B	,,	ra  N)r   r   r   r   r   r  r   r   r  r   r   r   )rX   r  r   r  s   &   rR   rI  ,MergedSequenceNode.calculate_constant_result$  s    IID+++0@0@0@##33q8"""d&B&B&BB		B,,MM%   99 [FYY*$6]F99	)))%rT   c                ~  a . pV P                    F  pVP                  '       d5   VP                  '       d#   VP                  P                  S4      ^ 8:  d   KI  VP                  '       g   VP                  '       d   V3R lVP                    4       pMVP                  S4      pVP                  V4       K  	  V P                  \        J d    \        V4      pV# V P                  \        J d   \        V4      pV# V P                  \        J g   Q hV#   \         d   pT P                  T4        Rp?T# Rp?ii ; i)r   c              3   D   <"   T F  qP                  S4      x  K  	  R # 5irL   )rU  )rj   r   rT  s   & rR   rm   8MergedSequenceNode.compile_time_value.<locals>.<genexpr>%  s     K#//55s    N)r   r   r   rU  r   r  r   r   r  r  rZ  r   r   r   )rX   rT  r  r   r  rY  s   &f    rR   rU  %MergedSequenceNode.compile_time_value%  s   IID+++0@0@0@##66t<A"""d&B&B&BKK//5MM%   99 1V 	 YY*$6]F  99	)))  1--a00
 1s   D D< D77D<c                    R# r  rV   r   s   &&rR   r  $MergedSequenceNode.type_dependencies)%  r
  rT   c                    V P                   # rL   rS  r   s   &&rR   r   MergedSequenceNode.infer_type,%  r  rT   c                d   V P                    Uu. uF2  pVP                  V4      P                  V4      P                  R 4      NK4  	  pp\	        V4      ^8X  d+   V^ ,          P
                  V P
                  J d
   V^ ,          # V P
                  \        \        \        39   g   Q hW0n         V # u upi )z2argument after * must be an iterable, not NoneType)	r   r}  r  r  r   r   r   r   r   )rX   r{   r   r   s   &&  rR   r}   MergedSequenceNode.analyse_types/%  s    
 yy	
 ! c"55c:LLDF !	 	 
 t9>d1glldii77NyyXy*====	
s   8B-c                    R # r  rV   rW   s   &rR   r  MergedSequenceNode.may_be_none@%  r#  rT   c                	   VP                  V P                  4       V P                  V4       V P                  \        J p\        V P                  4      p\        V4      pVP                  V4       V'       d   VP                  '       g/   V'       gn   VP                  '       d\   VP                  \        J dH   VP                  V P                  4       : R VP                  4       : R24       VP                  V4       MTP                  V P                  4       : R V'       d   RM4VP!                  4       '       d   VP                  \"        \        39   d   RMR: RVP                  4       : RVP%                  V P                  4       V P                  4      : 24       V P'                  V4       VP)                  V4       VP+                  V4       \-        4       pV'       d   RpRpMR	pR
pV EF  pV'       d%   VP                  '       g7   VP                  '       g%   VP                  '       d   VP.                  '       g   V'       g$   VP                  '       d   VP1                  R4       VP                   Fz  pVP                  V4       VP3                  VP                  V: RV P                  4       : RVP                  4       : R24       VP)                  V4       VP+                  V4       K|  	  EK  V'       d   VP1                  R4       MVP1                  R4       VP                  V4       VP3                  VP                  V: RV P                  4       : RVP                  4       : R24       VP)                  V4       VP+                  V4       EK  	  V P                  \4        J d   VP                  R4       VP                  R\6        P8                  : RV P                  4       : R24       VP;                  V P                  4       \"        4       VP                  V P                  4       : R \6        P8                  : RVP%                  V P                  4       V P                  4      : 24       V P'                  V4       VP                  R4       \=        V4       F0  p	VP>                  PA                  \B        PD                  ! V	!  4       K2  	  R# )r9  r:  	PySet_Newr  r  r8  rf  r5  __Pyx_PySet_Updater4  __Pyx_PyList_Extendr  rb  r  r
  z = PyList_AsTuple(r  r  r   N)r2  r3  )PySet_Updatez
Builtins.c)
ListExtendr3  )#r   r   r  r   r   rg  r   rh  r  r   r   r   r   r  r   r  r  r   r   r<  r  r#  r  r   r  rC  r   r   r  r&  r  r   r   r   r   )
rX   r   is_setr   r   r
  add_funcextend_funcr   r
  s
   &&        rR   r  +MergedSequenceNode.generate_evaluation_codeC%  so   dhh!!$'h&DIIDz%%d+t***t;;;		Y@VJJT[[]DNN4DEF..t4JJ%;?;N;N;P;PUYU^U^cqs|b}U}7*+  ''txx@B C   &''-%"H.K.H/KDD///43O3O3O111$:J:J:J$)))KK @A99C006))#'' 4) * ..t4NN4( % :;89))$/!!$(( -" # ''-OOD!5 8 99
"JJsOJJ''   OODKKM>:JJ''''txx@B C   &JJsOWoF--k.E.Ev.NO &rT   c                N    V P                    F  pVP                  V4       K  	  R # rL   )r   rK  r
  s   && rR   rK  MergedSequenceNode.annotate%  s    IIDMM$ rT   r   r   N)r[   r\   r]   r^   r  r   r  ri  r  rI  rU  r  r   r}  r  r  rK  r_   r`   r  s   @rR   re  re  $  sR      xHG2K;&*."KPZ   rT   re  c                   T   a  ] tR tRt o RtR.t]tRtRt	R t
R tR tR	 tR
 tRtV tR# )SetNodei%  z
Set constructor.
r   TzConstructing Python setc                    \        \        V P                  4      4       FE  pV P                  V,          pVP                  V4      pVP	                  V4      V P                  V&   KG  	  \
        V n        ^V n        V # r  )r  r   r   r}  r  r   r   r  )rX   r{   r  r   s   &&  rR   r}  SetNode.analyse_types%  sc    s499~&A))A,C##C(C11#6DIIaL ' 	rT   c                    R # r  rV   rW   s   &rR   r  SetNode.may_be_none%  r#  rT   c                d    V P                    Uu0 uF  qP                  kK  	  upV n        R # u upi rL   rz  r  s   & rR   rI  !SetNode.calculate_constant_result%  s$    ?CyyIy 3 3yIIs   -c                    V P                    Uu. uF  q"P                  V4      NK  	  pp \        V4      # u upi   \         d   pT P	                  T4        R p?R # R p?ii ; irL   )r   rU  r  r  rZ  )rX   rT  r   r  rY  s   &&   rR   rU  SetNode.compile_time_value%  s[    :>))D)3((.)D	-v; E  	-))!,,	-s   6
; A"AA"c           	        V P                    F  pVP                  V4       K  	  V P                  V4       VP                  V P	                  4       : R VP                  V P	                  4       V P                  4      : 24       V P                  V4       V P                    Ff  pVP                  V P                  RV P	                  4       : RVP                  4       : R24       VP                  V4       VP                  V4       Kh  	  R# )z = PySet_New(0); z
PySet_Add(r  rb  N)r   r  r  r   r  r   r   r<  rC  r   r  r#  r  s   && rR   r   SetNode.generate_evaluation_code%  s    99C((. !!$'

''txx@B	C 	T"99C!!'+{{}cmmoFH &&t,NN4  rT   )r   r  r   N)r[   r\   r]   r^   r  r   r   r   r   ri  r}  r  rI  rU  r  r_   r`   r  s   @rR   r|  r|  %  sA      xHDN+KJ-! !rT   r|  c                      a a ] tR tRt oR.t^tRt]tRt	Rt
. t]R 4       tR tR tR tR	 tR
 tR tV 3R ltR tRtR tR tR tRtVtV ;t# )rD	  i%  rA	  FTc                `    T ! TV UUu. uF  w  r4\        WVR 7      NK  	  uppR7      # u uppi )r>	  r@	  )rC	  )rP   r   pairskr  s   &&&  rR   
from_pairsDictNode.from_pairs%  s;    3>C)E>CdaSq1e)E F 	F )Es   *c                v    \        V P                   Uu. uF  qP                  NK  	  up4      V n        R # u upi rL   )r  rA	  r   )rX   r   s   & rR   rI  "DictNode.calculate_constant_result%  s:    #151E1E%G1E$$1E%G  H %Gs   6c                   V P                    Uu. uF9  pVP                  P                  V4      VP                  P                  V4      3NK;  	  pp \	        V4      # u upi   \
         d   pT P                  T4        R p?R # R p?ii ; irL   )rA	  r?	  rU  r   r  r  rZ  )rX   rT  r   r  rY  s   &&   rR   rU  DictNode.compile_time_value%  s    ,,., ((--d3TZZ5R5RSW5XY, 	 .	-;.  	-))!,,	-s   ?A
A! !B,BBc                    R# r  rV   r   s   &&rR   r  DictNode.type_dependencies%  r
  rT   c                    \         # rL   r
  r   s   &&rR   r   DictNode.infer_type%  r  rT   c                    \        R R7      ;_uu_ 4       pV P                   Uu. uF  pVP                  V4      NK  	  upV n        RRR4       XV n        V # u upi   + '       g   i     L; ir  )r   rA	  r}  r  )rX   r{   r  r   s   &&  rR   r}  DictNode.analyse_types%  sd    &&& !00$0D ""3'0$D  '
 &,"$ '&s   AAAAA,	c                    R # r  rV   rW   s   &rR   r  DictNode.may_be_none%  r#  rT   c                `  < \         P                  ! VR R7      pVP                  '       Ed   V P                  4        V P                  P
                  '       d   \        P                  ! V4      '       g   \        V P                  RV,          4       \        V P                  V P                   Uu. uFM  p\        VP                  VP                  P                  V4      VP                  P                  V4      R7      NKO  	  upR7      # V P                  P                  V4      '       g   \        V P                  RV,          4       V # VP
                  '       Ed?   Wn        VP                   '       g9   \#        V P                  4      ^8w  d   \        V P                  RV,          4       MgVP                   '       dV   \#        V P                  4      \#        VP$                  P&                  4      8  d   \)        V P                  RV,          ^4       V P                   EFt  p\+        VP                  \,        4      '       d   VP                  P.                  Vn        VP                  P0                  '       g]   \        VP                  P                  R4       \3        VP                  P                  \4        P6                  ! R	4      R
7      Vn        K  \9        VP                  P                  4      pVP$                  P;                  V4      pV'       g-   \        VP                  P                  RV: RV: R24       EK%  VP                  p\+        V\,        4      '       d   VP.                  pVP=                  VP                  V4      Vn        EKw  	  V # \>        SV `y  W4      # u upi )TrO  z-Cannot interpret struct as non-dict type '%s'r>	  r@	  z"Cannot interpret dict as type '%s'z<Exactly one field must be specified to convert to union '%s'z%Not all members given for struct '%s'zInvalid struct field identifierr  r  zstruct 'z' has no field 'r  ) r   rR  rx   release_errorsr   r*	  r   rk  r   r   rD	  rA	  rC	  r?	  r  r   r
  r   rp  r  r   r   ro  r   r   rW  r
   r  r   r  r`  rN   )rX   rw  r{   r   r?	  rF	  r   rQ   s   &&&    rR   r`  DictNode.coerce_to%  s   ++HTJ!yy+++ ++H55$(($SV^$^_ !% 4 4;6 !5 !txx/J/J3/O'+zz'D'DS'IK 4;6 7 7 99''11dhh Dx OP2 1 ((( I%%%#d.B.B*Cq*Hdhh ^ai ij###D,@,@(ACHbHbDc(c"IH"TVWX,,dhh(:;;#xx||DHxx111$((,,(IJ*488<<~?[?[\e?fgDHdhhnn-C%^^77<F!dhhllxY\,]^ $

%e-?@@$)IIE%*__V[[#%F
 -$  7$X33;;6s   0AN+
c                P    V P                    F  p\        V4       K  	  . V n         R # rL   )r  r   )rX   r|   s   & rR   r  DictNode.release_errors!&  s"    --C .%'"rT   r
  c                	   VP                  V P                  4       V P                  V4       V P                  P                  pV'       d   V P                  4        VP                  R V P                  4       \        V P                  4      VP                  V P                  4       V P                  4      3,          4       V P                  V4       RpMV P                  P                  p\        4       pRpRpV P                   EF  pVP                  V4       V'       Ed;   V P                  '       d1   VP                  RVP                   P#                  4       ,          4       VP$                  pV P&                  '       Ed'   Ve   VP(                  '       g   RpMVP                   V9   d   RpMlV\        VP                   4      Jd9   Vf2   \        VP                   4      pVP+                  VP                   4       MRpMVP+                  VP                   4       Vf   VP                  RV P                  4       : RVP#                  4       : R24       RpVP                  RVP#                  4       : R	VP-                  VP                  4      : 24       VP                  R
4       VP/                  V P                  RV P                  4       : RVP$                  P#                  4       : RVP                   P#                  4       : R24       V P&                  '       d   Vf   VP                  R4       V P                  '       d   VP                  R4       EMVP1                  VP$                  P                   4      p	V	f    Q RVP$                  P                    R24       hV	P2                  p
VP                   P                  4       pVP                   P                  P4                  '       d^   VP6                  P9                  \:        P<                  ! RR4      4       VP                  RV P                  4        RV
 RV RV R2	4       M(VP                  V P                  4        RV
 RV R24       VP?                  V4       VPA                  V4       EK  	  V'       d3   VP6                  P9                  \:        P<                  ! RR4      4       R# R# )z%%s = __Pyx_PyDict_NewPresized(%d); %sNFrz  r
  r  r  Tr
  rf  r  r
  rb  r   zstruct member z1 not found, error was not handled during coercionr  r  zmemcpy(r  r?  r  r9  r:  r
  r
  )!r   r   r  r   rx   r  r   r  r   rA	  r   r<  rp  r  r  exclude_null_valuesr   r   r?	  r
  r   r  r   rC  r  r   r  r   r   r   r   r  r#  )rX   r   is_dictstruct_scope	keys_seenkey_typeneeds_error_helperr   r?	  rF	  	key_cnamevalue_cnames   &&          rR   r  !DictNode.generate_evaluation_code(&  s    	dhh!!$'))''!JJ7KKM,,-++DKKM488D;F FG
   &L99??LE	"((D))$/w+++JJ{TZZ-A-A-CCDhh))) ,"444(,I YY)3(,I%T#))_<'/+/		? )cii 8 -1	%MM#))4 (

 KKM3==?$< = .2*

MMO OODHH5$7 8 

:.%%dhhKKMHH&&(JJ((*1, - )))i.?JJsO+++JJsO%11$((..A)}^DHHNN;KK|+}})"LL	"jj//1::??+++$$55k6M6MN^`o6pqJJq2k]R[\g[hhklmJJ$++-)C}ANO''-OOD!k )n --''(=?TUW rT   c                N    V P                    F  pVP                  V4       K  	  R # rL   )rA	  rK  r
  s   && rR   rK  DictNode.annotatez&  s    ((DMM$ )rT   c                d    V P                    UUu/ uF  w  rVP                  VbK  	  upp# u uppi rL   )rA	  r   )rX   r?	  r   s   &  rR   as_python_dictDictNode.as_python_dict~&  s/     483G3GH3GZS		5 3GHHHs   ,)r   rA	  r  r   )r[   r\   r]   r^   r   r  r  r   r   r  r
  r  r  r  rI  rU  r  r   r}  r  r`  r  ri  r  rK  r  r_   r`   ra   rb   s   @@rR   rD	  rD	  %  s      ""HGDOF FH-%N(
 -KPWd I IrT   rD	  c                   P   a  ] tR tRt o RR.tRtR tR tR tR t	R	 t
R
 tRtV tR# )rC	  i&  r?	  r   Nc                h    V P                   P                  V P                  P                  3V n        R # rL   )r?	  r   r   rW   s   &rR   rI  &DictItemNode.calculate_constant_result&  s&    HH$$djj&@&@ BrT   c                   V P                   P                  V4      V n         V P                  P                  V4      V n        V P                   P                  V4      V n         V P                  P                  V4      V n        V # rL   )r?	  r}  r   r  r   s   &&rR   r}  DictItemNode.analyse_types&  s_    88))#.ZZ--c2
88..s3ZZ2237
rT   c                r    V P                   P                  V4       V P                  P                  V4       R # rL   )r?	  r  r   r  s   &&rR   r  %DictItemNode.generate_evaluation_code&  s&    ))$/

++D1rT   c                r    V P                   P                  V4       V P                  P                  V4       R # rL   )r?	  r  r   r  s   &&rR   r  #DictItemNode.generate_disposal_code&  s&    ''-

))$/rT   c                r    V P                   P                  V4       V P                  P                  V4       R # rL   )r?	  r#  r   r  s   &&rR   r#  DictItemNode.free_temps&  s&    D!

d#rT   c                D    \        V P                  V P                  .4      # rL   )rg  r?	  r   rW   s   &rR   __iter__DictItemNode.__iter__&  s    TXXtzz*++rT   )r   r?	  r   )r[   r\   r]   r^   r   r  rI  r}  r  r  r#  r  r_   r`   r  s   @rR   rC	  rC	  &  s:     
 wHKB20$, ,rT   rC	  c                   B   a  ] tR tRt o R.tRtR tR tR tR t	Rt
V tR	# )
SortedDictKeysNodei&  r   Tc                r    \         P                  WP                  VR 7       \        P                  V n        R# r  )r   r  r   r   r   r   r  s   &&rR   r  SortedDictKeysNode.__init__&  s&    $S1%%	rT   c                    V P                   P                  V4      pVP                  \        P                  J d   VP                  R 4      pW n         V # ry
  )r   r}  r   r   r   r  r
  s   && rR   r}   SortedDictKeysNode.analyse_types&  sE    hh$$S)88w(((''35CrT   c                    R # r  rV   rW   s   &rR   r  SortedDictKeysNode.may_be_none&  r#  rT   c                ~   V P                   P                  4       pV P                   P                  \        P                  J df   VP                  V P                  4       : R V: RVP                  V P                  4       V P                  4      : 24       V P                  V4       EMdVP                  P                  \        P                  ! RR4      4       VP                  \        P                   ! R4      4      pVP                  V P                  4       : RV: RV: RVP                  V P                  4       V P                  4      : 24       V P                  V4       VP                  RV P                  4       ,          4       V P#                  VRV P                  4       ,          4       VP                  VP                  V P                  4       V P                  4      4       V P                  V4       VP                  R	4       VP%                  V P                  R
V P                  4       ,          4       R# )z = PyDict_Keys(rf  PyObjectCallMethod0r  keysz = __Pyx_PyObject_CallMethod0(r  z"if (unlikely(!PyList_Check(%s))) {zPySequence_List(%s)r   zPyList_Sort(%s)N)r   r   r   r   r   r   r  r   r   r<  r   r   r   r   rE  r
   r  r/  rC  )rX   r   dict_result
keys_cnames   &&  rR   r  'SortedDictKeysNode.generate_result_code&  s   hh((*88==G---JJ{''txx@B C   & --k.E.E%'9/; <//0L0LV0TUJJJ{J''txx@B C   &JJ;dkkmKL$$T+@4;;=+PQJJt..t{{}dhhGH  &JJsOHH'$..*::	<rT   r  N)r[   r\   r]   r^   r   r  r  r}  r  r  r_   r`   r  s   @rR   r  r  &  s*     wHG&< <rT   r  c                   .   a  ] tR tRt o Rt]tR tRtV t	R# )SortedListNodei&  z0Sorts a newly created Python list in place.
    c                    VP                  VP                  R V P                  P                  4        R2V P                  4      4       R# )zPyList_Sort(rb  N)r   r  r   r  r   r  s   &&rR   r  #SortedListNode.generate_result_code&  s4    

4))L9J8K1*MtxxXYrT   rV   N)
r[   r\   r]   r^   r  r   r   r  r_   r`   r  s   @rR   r  r  &  s     DZ ZrT   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )ModuleNameMixini&  c                <    VP                  V P                  R R7      # T
identifier)r  rz  r  s   &&rR   get_py_mod_nameModuleNameMixin.get_py_mod_name&  s%    '' ( / 	/rT   c                <    VP                  V P                  R R7      # r  )r  r  r  s   &&rR   get_py_qualified_name%ModuleNameMixin.get_py_qualified_name&  s#    ''MMd ( , 	,rT   rV   N)r[   r\   r]   r^   r  r  r_   r`   r  s   @rR   r  r  &  s     /, ,rT   r  c                   P   a  ] tR tRt o R.t]tRtR tR t	R t
R tRtR	 tR
tV tR# )r	  i&  docTc                    R # rL   rV   r   s   &&rR   r   ClassNode.analyse_annotations&  r  rT   c                    \         # rL   r]  r   s   &&rR   r   ClassNode.infer_type&      rT   c                    V P                   '       dA   V P                   P                  V4      V n         V P                   P                  V4      V n         VP                  \        P
                  ! R R4      4       V # )CreateClassr  )r  r}  r  r   r   r   r   s   &&rR   r}  ClassNode.analyse_types&  sX    888xx--c2DHxx2237DH[44]DVWXrT   c                    R # r1  rV   rW   s   &rR   r  ClassNode.may_be_none'  r  rT   Constructing Python classc                   V P                   pVP                  V P                  4      pV P                  '       d}   VP	                  V P
                  R VP                  P                  4       : RVP                  \        P                  ! R4      4      : RV P                  P                  4       : R24       V P                  V4      pV P                  V4      pVP                  V P                  4       : RVP                  P                  4       : RVP                  P                  4       : RV: RV: RV: RVP                  V P                  4       V P
                  4      : 24       V P!                  V4       R# )r
  r  r  rb  z = __Pyx_CreateClass(rf  N)class_def_noderE  ry   r  rC  r   r  r   r
   r  r  r  r   r  basesr   r<  )rX   r   r  r   py_mod_namer  s   &&    rR   r  ClassNode.generate_result_code
'  s   ,,&&tyy1888!!$(("''113**&44Y?AHH&&(	*+ **40--d3

$$..0##--/''txx@B	C 	T"rT   )r  N)r[   r\   r]   r^   r   r   r   r  r   r   r}  r  ri  r  r_   r`   r  s   @rR   r	  r	  &  s=      wHDG .K# #rT   r	  c                   R   a  ] tR tRt o . t]tRtRtR t	R t
R tRtR tR	 tR
tV tR# )r	  i#'  FTc                    \         # rL   r]  r   s   &&rR   r   Py3ClassNode.infer_type4'  r  rT   c                    V # rL   rV   r   s   &&rR   r}  Py3ClassNode.analyse_types8'  r&  rT   c                    R # r1  rV   rW   s   &rR   r  Py3ClassNode.may_be_none;'  r  rT   r  c                   ^RI Hp V P                  P                  pVP                  P                  4        Uu. uFa  qDP                  '       g   K  \        VP                  \        VP                  VP                  R7      VP                  P                  R7      NKc  	  ppV'       d   \        W5R7      p\        V\        P                  ! R4      R7      pVP                  VP                  4      ;'       g"    VP!                  VP                  \"        V4      Vn        \'        W7VR7      pVP)                  V4       V P                  P*                  P,                  P/                  ^ V4       R# R# u upi )	r  AnnotationWriterr  r>	  r@	  __annotations__r  )rJ  r   N)AutoDocTransformsr  r  r   r  r  r  rC	  rP  ry   stringrD	  r_  r
   r  r  r  r   r   r/   r  bodyr  insert)	rX   r{   r  positionr   
dict_itemsannotations_dictrJ  r   s	   &&       rR   r    Py3ClassNode.analyse_annotations@'  s   7&&** ++-
 .1A1AL		(%**E&&--
 . 	 
 'M8.*F*FGX*YZC1ccS__SXXyZb5cCI'?OPD%%c*$$**11!T: 
s   E2AE2c                .   VP                   P                  \        P                  ! R R4      4       VP	                  V P
                  4      pV P                  pVP                  '       d   VP                  P                  4       MRpVP                  '       d   VP                  P                  4       pMV P                  '       d   RpMRpVP                  RV P                  4       VVVP                  P                  4       VP                  P                  4       VV P                  V P                   VP#                  V P                  4       V P$                  4      3	,          4       V P'                  V4       VP)                  V P                  4       4       R# )Py3ClassCreater  rP  z((PyObject*)&PyType_Type)z$((PyObject*)&__Pyx_DefaultClassType)z9%s = __Pyx_Py3ClassCreate(%s, %s, %s, %s, %s, %d, %d); %sN)r   r   r   r   rE  ry   r  mkwr   	metaclass
force_typer   r  r  r  calculate_metaclassallow_py2_metaclassr   r   r<  put_make_object_deferred)rX   r   r   r  r  r   s   &&    rR   r  !Py3ClassNode.generate_result_codeT'  s;   ))+*A*ABRTf*gh&&tyy1,,0>0B0B0Bn  **,###&00::<I___3I>I

G$$..0##--/((((''txx@	KB 	B
	C 	T"%%dkkm4rT   rV   N)r[   r\   r]   r^   r   r   r   r  r  r   r}  r  ri  r   r  r_   r`   r  s   @rR   r	  r	  #'  s@      HDJG .K;(5 5rT   r	  c                   6   a  ] tR tRt o . tR tR tR tRtV t	R# )PyClassMetaclassNodein'  c                *    \         V n        R V n        V # r1  )r   r   r  r   s   &&rR   r}  "PyClassMetaclassNode.analyse_typesu'  s    "	rT   c                    R # r1  rV   rW   s   &rR   r   PyClassMetaclassNode.may_be_nonez'  r  rT   c           
     r   V P                   P                  pV P                   P                  pV'       dY   VP                  P	                  \
        P                  ! R R4      4       RVP                  4       : RVP                  4       : R2pMGVP                  P	                  \
        P                  ! RR4      4       RVP                  4       ,          pVP                  V P                  4       : RV: RVP                  V P                  4       V P                  4      : 24       V P                  V4       R	# )
Py3MetaclassGetr  z__Pyx_Py3MetaclassGet(r  rb  CalculateMetaclassz"__Pyx_CalculateMetaclass(NULL, %s)r9  r  N)r  r  r  r   r   r   r   r  r   r   r   r<  )rX   r   r  r  r  s   &&   rR   r  )PyClassMetaclassNode.generate_result_code}'  s    ##))!!%%--''(9;MNP 

D --''(<>PQS7 D

t''txx@B	C 	T"rT   r  r   N
r[   r\   r]   r^   r   r}  r  r  r_   r`   r  s   @rR   r  r  n'  s      
 H
# #rT   r  c                   8   a  ] tR tRt o R.tR tR tR tRtV t	R# )PyClassNamespaceNodei'  r  c                    V P                   '       d0   V P                   P                  V4      P                  V4      V n         \        V n        ^V n        V # r  )r  r}  r  r   r   r  r   s   &&rR   r}  "PyClassNamespaceNode.analyse_types'  s?    888xx--c2EEcJDH"	rT   c                    R # r1  rV   rW   s   &rR   r   PyClassNamespaceNode.may_be_none'  r  rT   c                   VP                  V P                  4      pV P                  V4      pV P                  V4      pV P                  pR pV P
                  '       d   V P
                  P                  4       MTpVP                  '       d   VP                  P                  4       MTpVP                  '       d   VP                  P                  4       MTp	VP                  V P                  4       : RV	: RVP                  P                  4       : RV: RV: RV: RV: RV: RVP                  V P                  4       V P                  4      : 24       V P                  V4       R# )z(PyObject *) NULLz = __Pyx_Py3MetaclassPrepare(r  rf  N)rE  ry   r  r  r  r  r  r  r   r   r   r  r   r   r<  )
rX   r   r   r  r  r  nulldoc_coder  r   s
   &&        rR   r  )PyClassNamespaceNode.generate_result_code'  s   &&tyy1**40--d3,,"(,488??$d0>0B0B0Bn  **,<J<T<T<TN,,668Z^	

$$++-''txx@	B
	C 	T"rT   )r  r  r   Nr  r  s   @rR   r  r  '  s"      wH# #rT   r  c                   B   a  ] tR tRt o Rt]t. tRtR t	R t
R tRtV tR# )	ClassCellInjectorNodei'  TFc                    V # rL   rV   r   s   &&rR   r  )ClassCellInjectorNode.analyse_expressions'  r&  rT   c                    V P                   '       g   Q hVP                  V P                  4       : R VP                  V P                  4       V P                  4      : 24       V P                  V4       R# )z = PyList_New(0); N)	is_activer   r  r   r   r<  r  s   &&rR   r  *ClassCellInjectorNode.generate_result_code'  sV    ~~~~

''txx@B	C 	T"rT   c                    V P                   '       g   Q hVP                  P                  \        P                  ! R R4      4       VP                  V P                  RV P                  4       : RV: R24       R# )CyFunctionClassCellCythonFunction.cz__Pyx_CyFunction_InitClassCell(r  rb  N)r!  r   r   r   r   rC  r   r  )rX   r   classobj_cnames   &&&rR   generate_injection_code-ClassCellInjectorNode.generate_injection_code'  s[    ~~~~))##$9;MN	PdhhKKM>)+ 	,rT   rV   N)r[   r\   r]   r^   r  r   r   r   r!  r  r  r'  r_   r`   r  s   @rR   r  r  '  s-     GDHI#, ,rT   r  c                   <   a  ] tR tRt o . tRtRt]tR t	R t
RtV tR# )ClassCellNodei'  TFc                    V # rL   rV   r   s   &&rR   r}  ClassCellNode.analyse_types'  r&  rT   c                   V P                   '       g7   VP                  V P                  4       : R \        P                  : R24       M5VP                  V P                  4       : R\        P
                  : R24       VP                  RV P                  4       : RVP                  V P                  4      : R24       VP                  V P                  4       \        4       R# )z  = __Pyx_CyFunction_GetClassObj(r  z =  z->classobj;zif (!zJ) { PyErr_SetString(PyExc_RuntimeError, "super(): empty __class__ cell"); r\  N)
is_generatorr   r  r   
self_cnamegenerator_cnamer   r   r  r   r  s   &&rR   r  "ClassCellNode.generate_result_code'  s       JJ!!# $ JJv557 8

 )+	,
 	~6rT   rV   N)r[   r\   r]   r^   r   r  r.  r   r   r}  r  r_   r`   r  s   @rR   r*  r*  '  s(     HGLD7 7rT   r*  c                      a  ] tR tRt o . ROtRtRtRtRtRt	Rt
Rt]t^tRtRt]R 4       t]R 4       tR tR tR tR	tR
 tR tR tR tRtV tR# )r	  i'  FNc                    T ! VP                   TVP                  P                  T;'       g    VP                  VP                  R 7      # ))r&
  pymethdef_cnamebindingspecialized_cpdefs)r   r   r4  r6  )rP   r   r5  s   &&&rR   from_defnodePyCFunctionNode.from_defnode
(  s@    HH JJ6666t66#66
 	
rT   c                .    V P                   P                  # rL   )r&
  code_objectrW   s   &rR   r:  PyCFunctionNode.code_object(  s    }}(((rT   c                L    V P                   '       d   V P                  V4       V # rL   )r5  analyse_default_argsr   s   &&rR   r}  PyCFunctionNode.analyse_types(  s    <<<%%c*rT   c                :   . p. p. p. p. pVP                   ;'       g+    V P                  P                  ;'       d    VP                  pV P                  P                   EF  pVP
                  '       EdT   V'       g   VP
                  P                  '       dn   \        VP                  VP
                  4      Vn        VP
                  P                  '       d,   VP
                  P                  VP                  V4      Vn        MFRVn        VP                  P                  '       d   VP                  V4       MVP                  V4       VP
                  P                  '       da   VP
                  P                  P                  V4      '       d6   VP                  '       d   VP                  V4       MVP                  V4       VP                   '       g   EK  VP                   P#                  V4      Vn        VP                  VP                  VP$                  VP                   P&                  34       EK  	  V P                  P(                  V P                  P*                  3 F}  pV'       g   K  VP                   '       g   K!  VP                   P#                  V4      Vn        VP                  VP                  VP$                  VP                   P&                  34       K  	  V P                  P,                  p	V	'       d]   V	P#                  V4      V P                  n        VP                  V	P                  \.        P0                  ! R4      V	P&                  34       V'       g
   V'       Ed   VP3                  4       p
. pV F>  pVP                  pVP4                  '       d   VP6                  pVP                  V4       K@  	  Y Uu. uF  qP                  NK  	  up,          pV
P9                  V P                  V4      V n        V P:                  P                  P<                  p\?        \A        VPB                  PE                  4       4      4      pV UUu. uF!  w  ppVPG                  R4      '       g   K  VNK#  	  ppp. V n$        \K        W#,           V4       F4  w  ppVPL                  Vn'        V PH                  P                  VV34       K6  	  \Q        V4      V n)        V PH                   F,  w  pp\T        PV                  : RVPL                  : 2Vn,        K.  	  VP$                  V P                  n-        V'       g
   V'       Ed   V P:                  f   V'       dV   \]        V P                  V Uu. uF  qP
                  NK  	  upR7      pVP#                  V4      P_                  V4      V n0        V'       d}   \c        V P                  V Uu. uFD  p\e        VP                  \g        VP                  VP$                  R7      VP
                  R7      NKF  	  upR	7      pVP#                  V4      V n4        EMV Pj                  '       Eg   V'       d6   \m        V P                  W@P:                  P                  P<                  4      pM\o        V P                  4      pV'       d6   \q        V P                  WPP:                  P                  P<                  4      pM\o        V P                  4      p\r        Pt                  ! V P                  . RR\r        Pv                  ! V P                  \x        \]        V P                  VV.R7      R
7      R\.        P0                  ! R4      R7      pVP3                  4       p
\r        Pz                  P}                  VV
4      pVP                  V
4       VP                  V
4      pVP                  pVP                  P                  VP                  4      VnA        RVnC        RVnD        VV P                  nE        V'       d_   \c        V P                  V UUUu. uF   w  ppp\e        V\g        VVR7      VR7      NK"  	  upppR	7      pVP#                  V4      V nF        R# R# u upi u uppi u upi u upi u upppi )z2
Handle non-literal function's default arguments.
Tre  r   r0  Nrg	  r  r>	  r@	  )r  r   __defaults__)r   r'
  r(
  r  
decoratorsry   F)Gr  r&
  
is_wrapperr  r   rz   r   DefaultLiteralArgNoder   r   r`  
is_dynamicrx   r  r  kw_onlyr  r}  ry   r  r'
  r(
  return_type_annotationr
   r  r  r  r  declare_defaults_c_classdefaults_entryrp  r  r  r  r  r
  defaultsr  r   defaults_class_keyr   defaults_pyobjectsr   dynamic_args_cnamer  defaults_structr  r  defaults_tuplerD	  rC	  rP  defaults_kwdictr6  DefaultsTupleNoderj  DefaultsKwDictNoder   DefNodeReturnStatNoder   CompilerDirectivesNodefor_internalr  r  r  local_scopepy_wrapper_requiredpymethdef_requireddefaults_getterr  )rX   r{   nonliteral_objectsnonliteral_otherdefault_argsdefault_kwargsannotationsmust_use_constantsr   r  r
  r  r6  defaults_class_scopearg_entriesry   rY  r   rN  rO  rY  directives_noder   r   r  s   &&                       rR   r=  $PyCFunctionNode.analyse_default_args(  s      !11ggdmm6N6N6f6fSVSfSf==%%C{{{){{---&;CGGS[[&Q;;+++*-++*?*?#*NCK)-88///.55c:,33C8;;###(8(8(O(OPS(T(T{{{&--c2$++C0~~~!$!=!=c!B""CGGSXXs~~7L7L#MN) &, MM**DMM,F,FGCss~~~!$!=!=c!B""CGGSXXs~~7L7L#MN H
 ]]99
3=3K3KC3PDMM0
0L0LX0V * 1 1 3 4 !1!1++-LE)???!JJEU#	 *
 +;=+;Cxx+;==E"."G"GRW"XD#'#6#6#;#;#A#A  !&:&B&B&H&H&J!KLK-8T['$DOOE<RAA[KTDM!"4"GU
U).&$$c5\2 V '**<&=D#"mm
U--u{{%<! , -A,E,EDMM)>>""*%.txx/;?=/;|?= &>N*8*F*Fs*K*^*^_b*cD'!&.txx
 $2J3
 $2C	 %GG 4SWWCHH M"%++/ $2J3 '4O ,;+H+H+MD(,,,%6,0C0C0H0H0N0N&PN &.dhh%7N!&8.2E2E2J2J2P2P'RO '/txx&8O"'--HH24--n' HHNO+LNO  $'55nE#G  #//1"'">">"K"KO]i"j44\B"1"E"El"S"1"6"6'6';';'O'O#//(1$6;35:20?-' )4	C5 )4$Cu 1#TB! )4	C5  6
 %5$B$B3$GD! C > U?=J3RC5s%   b bb=b
A
b
7&bc                    R # r  rV   rW   s   &rR   r  PyCFunctionNode.may_be_none(  r#  rT   zConstructing Python functionc                    R # )rP  rV   rW   s   &rR   closure_result_code#PyCFunctionNode.closure_result_code(  s    rT   c                r    V P                   '       d   V P                  V4       R # V P                  V4       R # rL   )r5  generate_cyfunction_codegenerate_pycfunction_coder  s   &&rR   r  $PyCFunctionNode.generate_result_code(  s'    <<<))$/**40rT   c                .   V P                  V4      pVP                  V P                  4       : R V P                  : RV P	                  4       : RV: RVP                  V P                  4       V P                  4      : 2	4       V P                  V4       R# )z = PyCFunction_NewEx(&r  rf  N)r  r   r  r4  rg  r   r   r<  )rX   r   r  s   && rR   rk  )PyCFunctionNode.generate_pycfunction_code(  sp    **40

$$((*''txx@B	C 	T"rT   c                *   V P                   '       d   V P                   ^ ,          pMV P                  pV P                   '       g   V P                  '       d4   VP                  P	                  \
        P                  ! RR4      4       RpM2VP                  P	                  \
        P                  ! RR4      4       Rp. pVP                  '       d   VP                  R4       M#VP                  '       d   VP                  R4       VP                  P                  P                  '       d.   VP                  P                  '       g   VP                  R4       VP                  '       d   VP                  R	4       V'       d   R
P!                  V4      pMRpVP#                  \$        P&                  4      pV P(                  P+                  V4       VP-                  V P/                  4       : RV: RV P0                  : RV: RV P3                  V4      : RV P5                  4       : RV P7                  V4      : RV: RV P(                  P9                  4       : RVP;                  V P/                  4       V P<                  4      : 24       V P?                  V4       VPA                  V P/                  4       4       VPB                  '       dm   VPD                  '       g   Q R4       hVPD                  R,          pVP-                  RVPF                  P/                  4       : RV P9                  4       : R24       V PH                  '       d   VP-                  RV P/                  4       : RVP#                  V PJ                  PL                  PN                  4      : RVPQ                  V P<                  4      : 24       RV PJ                  PL                  PR                  : RV P/                  4       : R2pV PH                   F)  w  rVPU                  VV: RV	PV                  : 2R7       K+  	  V PX                  '       dA   VP-                  RV P/                  4       : RV PX                  P9                  4       : R24       V P                   '       Eg   V PZ                  '       dA   VP-                  RV P/                  4       : RV PZ                  P9                  4       : R24       VP\                  '       dG   VP-                  RV P/                  4       : RVP\                  P                  P^                  : R24       V P`                  '       dC   VP-                  RV P/                  4       : RV P`                  P9                  4       : R24       R# R# R# )r   FusedFunctionr%  __pyx_FusedFunction_NewCythonFunction__Pyx_CyFunction_New__Pyx_CYFUNCTION_STATICMETHOD__Pyx_CYFUNCTION_CLASSMETHOD__Pyx_CYFUNCTION_CCLASS__Pyx_CYFUNCTION_COROUTINEr  rk  r9  z(&r  rf  zpyclass_stack is emptyzPyList_Append(r  z#if (!__Pyx_CyFunction_InitDefaults()) !__Pyx_CyFunction_Defaults(struct rb  r0  r
  z"__Pyx_CyFunction_SetDefaultsTuple(z#__Pyx_CyFunction_SetDefaultsKwDict(z#__Pyx_CyFunction_SetDefaultsGetter(z$__Pyx_CyFunction_SetAnnotationsDict(Nr~  )1r6  r&
  is_specializationr   r   r   r   is_staticmethodr  is_classmethodrV  r
  r  r   is_anonymousis_coroutiner  r  r   rC  r:  r  r   r  r4  r  rg  r  r   r   r   r<  r  requires_classobjpyclass_stack
class_cellrI  rH  r   rM
  r   objstruct_cnamer  r   rN  rO  rY  r1
  r  )
rX   r   r&
  rq  flagsrC  
class_noderI  r   r   s
   &&        rR   rj  (PyCFunctionNode.generate_cyfunction_code(  s   """..q1H}}H"""d&<&<&<--''9KLN3K--''(8:LMO0K###LL89$$$LL78,,===hnnFaFaFaLL23   LL56JJu%EE11&2F2FG--d3

$$**40((*$$T*  **,''txx@
B	C 	T"%%dkkm4%%%%%%?'??%++B/JJJ))002NN$&'
 ===JJKKM--d.A.A.F.F.T.TUOODHH-/0 ##((88$++-IH"mm
,,Tekk;+, , , JJt22<<>@ A&&& ###

KKM4#7#7#A#A#CE F'''

KKM8#;#;#A#A#N#NP Q$$$

KKM4#8#8#B#B#DF G % 'rT   )r  rI  rH  rO  rK  rN  )rN  rO  r  )r[   r\   r]   r^   r   r5  r&
  rI  rH  rN  rO  r  r   r   r  r6  rz  r  r7  r  r:  r}  r=  r  ri  rg  r  rk  rj  r_   r`   r  s   @rR   r	  r	  '  s      IHGHHNNODG
 
 ) )
AHF 1K1
#VG VGrT   r	  c                   .   a  ] tR tRt o RtRtR tRtV tR# )InnerFunctionNodei)  Tc                X    V P                   '       d   R \        P                  ,          # R# )z((PyObject*)%s)rP  )needs_closure_coder   cur_scope_cnamerW   s   &rR   rg  %InnerFunctionNode.closure_result_code)  s"    """$v'='===rT   rV   N)	r[   r\   r]   r^   r5  r  rg  r_   r`   r  s   @rR   r  r  )  s      G rT   r  c                   j   a  ] tR tRt o RtRtRtRtRt^ t	^ t
RtRtR t]R 4       t]R 4       tRtV tR# )	DefFuncLikeNodei)  zT
Adapter for CFuncDefNode to give it the same attributes as DefNode in CodeObjects.
FNc                    VP                   P                  V n        VP                   P                  V n        VP                  V n        VP
                  V n        Wn        R # rL   )r   ry   rp  rV  r   r   _cfuncdef_node)rX   cfuncdef_nodes   &&rR   r  DefFuncLikeNode.__init__-)  sI    !'',,	(..44!&&	 $$+rT   c                .    V P                   P                  # rL   )r  node_positionsrW   s   &rR   r  DefFuncLikeNode.node_positions4)  s    ""111rT   c                .    V P                   P                  # rL   )r  node_positions_to_offsetrW   s   &rR   r  (DefFuncLikeNode.node_positions_to_offset8)  s    "";;;rT   )r  r   rV  ry   r   )r[   r\   r]   r^   r  r.  r~  is_asyncgenis_generator_expressionnum_posonly_argsr)
  r'
  r(
  r  r  r  r  r_   r`   r  s   @rR   r  r  )  sc      LLK#OHL, 2 2 < <rT   r  c                   `   a  ] tR tRt o R.tRtRtR t]R 4       t	R t
RR ltR	 tR
 tRtV tR# )CodeObjectNodei=)  varnamesFNc                n   \         P                  WP                  VR 7       \        VP                  4      pVP
                  P                   Uu. uF  q3P                  '       g   K  VNK  	  ppW$,            Uu. uF$  p\        VP                  VP                  R7      NK&  	  upV n	        R# u upi u upi ))r&
  r  N)
r   r  r   r  r   rV  r  ry   rP  r  )rX   r&
  r   r   
local_varss   &&   rR   r  CodeObjectNode.__init__G)  s    $x@HMM"%-%9%9%E%ER%Eccc%E
R (
( !9(
 S
s   B-'B-9*B2c                $    V ! \        V4      4      # rL   )r  )rP   r  s   &&rR   	for_cfuncCodeObjectNode.for_cfuncQ)  s    ?=122rT   c                    R # r  rV   rW   s   &rR   r  CodeObjectNode.may_be_noneU)  r#  rT   c                b    V P                   f   VP                  V 4      V n         V P                   # rL   r  get_py_codeobj_constr  s   &&rR   r  $CodeObjectNode.calculate_result_codeX)  s-    ##88>DrT   c                R    V P                   f   VP                  V 4      V n         R # R # rL   r  r  s   &&rR   r  #CodeObjectNode.generate_result_code])  s&    ##88>D $rT   c                   V P                   pV P                  ^,          pVP                  VP                  RR7      pVP                  ^ ,          P	                  4       p\
        P                  P                  V4      '       d"   VP                  ^ ,          P                  4       p\        P                  ! \        P                  ! V4      P                  4       4      pVP                  V4      pVP                  '       dX   \        P                  ! \!        VP                  V4      P#                  R4      R4      pVP                  V4      p	\%        V4      p
MRp	^ p
RR.pVP&                  '       d   VP)                  R4       VP*                  '       d   VP)                  R4       VP,                  '       d   VP)                  R	4       MGVP.                  '       d   VP)                  R
4       M#VP0                  '       d   VP)                  R4       VP2                  '       d   ^ pM\%        VP4                  4      pVP6                  pVP8                  p\%        V P:                  4      pRRP=                  V4      ,          ;'       g    RpVP?                  R4       VP?                  RW,
           RV RV RV RV RV R24       V P:                   F  pVPA                  V4       K  	  V P:                   Uu. uF  pVPC                  4       NK  	  up;'       g    R.pVP?                  RRP=                  V4      ,          4       V P:                   F%  pVPE                  V4       VPG                  V4       K'  	  VP?                  V PH                   RV RV RV	 RV PH                   RV R24       VP?                  R4       R# u upi )r  Tr  z	iso8859-1rP  CO_OPTIMIZEDCO_NEWLOCALS
CO_VARARGSCO_VARKEYWORDSCO_ASYNC_GENERATORCO_COROUTINECO_GENERATORz(unsigned int)(%s)|rk  r  z5const __Pyx_PyCode_New_function_description descr = {r  r>  z"PyObject* const varnames[] = {%s};z% = __Pyx_PyCode_New(descr, varnames, z", tuple_dedup_map); if (unlikely(!z)) goto r:  r   N)%r&
  r   r  ry   get_filenametable_entryr'   r  isabsr  r
   r  r(   Pathas_posixr  r  r$   r+  r   r'
  r  r(
  r  r~  r.  r  r   r  r)
  r  r  r   r  r   r  r#  r  )rX   r   r  r  first_linenofunc_name_result	file_pathfile_path_result
line_tableline_table_resultline_table_lengthr  argcountr  kwonly_argcountnlocalsr  r  s   &&&               rR   generate_codeobjCodeObjectNode.generate_codeobja)  s5   }}xx{33DII$3OHHQK779	77==##335I"00i1H1Q1Q1ST	33I>'556FtGZGZ\h6i6p6pq|6}  @K  LJ $ 8 8 D #J & !  0===LL&LL)*LL-.LL(LL(''' H499~H00..dmm$$sxx6==# 	

3

C)*" rirgRn		
 ==C((. ! 04}}=}CMMO}=FF#

7$))H:MMN==C&&t,NN4  ! 	

  !     ! " "--.h{m1F
	
 	

3% >s   5O)r  r  rL   )r[   r\   r]   r^   r   r  r  r  r  r  r  r  r  r  r_   r`   r  s   @rR   r  r  =)  sL      |HGK
 3 3 
?Q QrT   r  c                   V   a a ] tR tRt o. tRtRtV 3R ltR tR t	R t
R tR	tVtV ;t# )
rC  i)  TFc                   < \         SV `  V4       W n        VP                  V n        V P                  P                  V n        R V n        R# r  )rN   r  r   r   r   	evaluatedr  s   &&&rR   r  DefaultLiteralArgNode.__init__)  s9    "22HHMM	rT   c                    V # rL   rV   r   s   &&rR   r}  #DefaultLiteralArgNode.analyse_types)  r&  rT   c                    R # rL   rV   r  s   &&rR   r  *DefaultLiteralArgNode.generate_result_code)  r  rT   c                r    V P                   '       g%   V P                  P                  V4       R V n         R# R# r  )r  r   r  r  s   &&rR   r  .DefaultLiteralArgNode.generate_evaluation_code)  s)    ~~~HH--d3!DN rT   c                h    V P                   P                  V P                  P                  4       4      # rL   )r   r  r   r  rW   s   &rR   r  DefaultLiteralArgNode.result)  s"    yy""488??#455rT   )r   r   r  r   )r[   r\   r]   r^   r   r   r  r  r}  r  r  r  r_   r`   ra   rb   s   @@rR   rC  rC  )  s4     
 HJG"
6 6rT   rC  c                   H   a a ] tR tRt o. tV 3R ltR tR tR tRt	Vt
V ;t# )DefaultNonLiteralArgNodei)  c                >   < \         SV `  V4       W n        W0n        R # rL   )rN   r  r   rM  )rX   r   r   rM  rQ   s   &&&&rR   r  !DefaultNonLiteralArgNode.__init__)  s    .rT   c                J    V P                   P                  V n        R V n        V # r  )r   r   r  r   s   &&rR   r}  &DefaultNonLiteralArgNode.analyse_types)  s    HHMM	rT   c                    R # rL   rV   r  s   &&rR   r  -DefaultNonLiteralArgNode.generate_result_code)  r  rT   c                    R V P                   P                  : R\        P                  : RV P                   P	                  V P
                  P                  4      P                  : 2# )ry  r  r  )rM  ry   r   r/  r  r   rJ  r   rW   s   &rR   r  DefaultNonLiteralArgNode.result)  sI      %%v'8'8  ''(C(CDJJL 	LrT   )r   rM  r  r   )r[   r\   r]   r^   r   r  r}  r  r  r_   r`   ra   rb   s   @@rR   r  r  )  s'      H/

L LrT   r  c                   B   a a ] tR tRt oV 3R ltRV 3R lltRtVtV ;t# )rP  i)  c                   < . pV FI  pVP                   P                  '       g   \        WV4      pMVP                   pVP                  V4       KK  	  \        SV `  WR 7       R# )rg	  N)rz   r   r  r  rN   r  )rX   r   rI  rM  r   r   rQ   s   &&&&  rR   r  DefaultsTupleNode.__init__)  sU    C;;))).sIkkKK  	(rT   c                @   < \         SV `  W4      P                  V4      # rL   )rN   r}  r  )rX   r{   rX  rQ   s   &&&rR   r}  DefaultsTupleNode.analyse_types)  s    w$S8KKCPPrT   rV   r  	r[   r\   r]   r^   r  r}  r_   r`   ra   rb   s   @@rR   rP  rP  )  s     )Q QrT   rP  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )rQ  i)  c           	     6  < . pV F  p\        VP                  VP                  R 7      pVP                  P                  '       g   \        WV4      pMVP                  pVP                  \        VP                  WeR7      4       K  	  \        SV `%  WR7       R# )r  r>	  r@	  N)
rP  r   ry   rz   r   r  r  rC	  rN   r  )rX   r   rI  rM  r  r   ry   rQ   s   &&&&   rR   r  DefaultsKwDictNode.__init__ *  st    C'sxx@D;;))).sIkkLLcgg4CD  	4rT   rV   )r[   r\   r]   r^   r  r_   r`   ra   rb   s   @@rR   rQ  rQ  )  s     	5 	5rT   rQ  c                   n   a a ] tR tRt oR.t]P                  ! R4      tR tV 3R lt	V 3R lt
RtVtV ;t# )
LambdaNodei*  r&
  z<lambda>c                   \        V R 4      '       d   R# VP                  R4      ;V n        V P                  n        RV P                  n        RV P                  n        RV P                  n        V P                  P                  V4       V P                  P                  P                  V n	        VP                  V P                  4       R# )lambda_nameNlambdaT)rn  next_idr  r&
  no_assignment_synthesisrX  r0
  r  r   r4  add_lambda_defr   s   &&rR   r  LambdaNode.analyse_declarations*  s    4''7:{{87LL4==404-+/(&*#**3/#}}22BB4==)rT   c                b   < V P                   P                  V4      V n         \        SV `  V4      # rL   )r&
  r  rN   r}  r  s   &&rR   r}  LambdaNode.analyse_types&*  s)    99#>w$S))rT   c                \   < V P                   P                  V4       \        SV `  V4       R # rL   )r&
  r'  rN   r  rX   r   rQ   s   &&rR   r  LambdaNode.generate_result_code**  s"    --d3$T*rT   )r&
  r  r4  )r[   r\   r]   r^   r   r
   r  ry   r  r}  r  r_   r`   ra   rb   s   @@rR   r  r  *  s2      ,K''
3D
**+ +rT   r  c                      a a ] tR tRt o]P
                  ! R4      tRt]P                  R.,           t	]P                  R.,           t
V 3R ltV 3R ltR tRtVtV ;t# )	GeneratorExpressionNodei/*  genexprFcall_parametersc                >   < \         SV `  ! V.VO5/ VB  . V n        R # rL   )rN   r  r  )rX   r   r   r  rQ   s   &&*,rR   r   GeneratorExpressionNode.__init__>*  s"    ,t,t,!rT   c                  < \        V R 4      '       d   R# VP                  R4      V n        \        SV `  V4       RV P
                  n        RV P
                  n        RV P
                  n        \        P                  V P
                  P                  n        \        V P                  \        P                   4      '       dU   \        V P                  P"                  \$        4      '       g   Q hV P                  P"                  P'                  RV4       R# \        V P                  \        P(                  4      '       g   Q hR# )genexpr_nameNr  F)rn  r  r  rN   r  r&
  rX  rW  r0
  r4   pyfunction_noargsr   r{  r   r  r   r  rF  r  r  r  r  s   &&rR   r  ,GeneratorExpressionNode.analyse_declarationsB*  s    4((KK	2$S)+0(,1)&+#(1(C(C%dii!5!566dii00.AAAAII))$4dii)>)>????rT   c                   V P                  4       .V P                   Uu. uF  q"P                  4       NK  	  up,           pR P                  V4      pVP	                  V P                  4       : RV P
                  P                  P                  : RV: RVP                  V P                  4       V P                  4      : 24       V P                  V4       R# u upi )r  r9  r8  rf  N)rg  r  r  r  r   r&
  r   r1
  r   r   r<  )rX   r   cpargs_to_calls   &&  rR   r  ,GeneratorExpressionNode.generate_result_codeU*  s    1134040D0DF0D"))+0DFGyy.

##00''txx@	B	C 	T" Gs   C)r  r  )r[   r\   r]   r^   r
   r  ry   r5  r  r   r   r  r  r  r_   r`   ra   rb   s   @@rR   r  r  /*  sY      ''	2DG((,=+>>K""&7%88H"@&
# 
#rT   r  c                   \   a  ] tR tRt o R.t]t^ tRtRt	Rt
RtR tR tR tR tR	 tR
tV tR# )YieldExprNodeib*  r   Fyieldc                   V P                   '       d%   V P                  '       d:   V P                  '       d(   \        V P                  R V P
                  ,          4       ^V n        V P                  eX   V P                  P                  V4      V n        V P                  P                  P                  '       g   V P                  V4       V # )z'%s' not supported here)	label_numis_yield_fromin_async_genr   r   expr_keywordr  r   r}  r   rx   coerce_yield_argumentr   s   &&rR   r}  YieldExprNode.analyse_typesq*  s    ~~~$"4"4"49J9J9J$((58I8IIJ88xx--c2DH88==,,,**3/rT   c                F    V P                   P                  V4      V n         R # rL   r   r  r   s   &&rR   r  #YieldExprNode.coerce_yield_argument{*  s    88..s3rT   c                   V P                   '       d   V P                   P                  V4       V P                   P                  V4       VP                  \        P
                  : R V P                   P                  \        4      : R24       V P                   P                  V4       V P                   P                  V4       M$VP                  \        P
                  \        4       V P                  V4       R# r9  r:  N)r   r  r  r   r   rO  r/  r   r  r#  put_init_to_py_nonegenerate_yield_coder  s   &&rR   r  &YieldExprNode.generate_evaluation_code~*  s    888HH--d3HH))$/JJ''HH&&~689 HH2248HH%$$V%8%8.I  &rT   c           	     	   VP                  V P                  P                  RR4      4      w  r#VP                  V4       . pVP                  P
                  P                  4        VP                  P                  4        F  w  rVpVP                  P
                  P                  V4      pVP                  WXV34       VP                  '       d;   VP                  P                  \        P                  ! RR4      4       RV,          pMVP                  WV4       VP!                  \"        P$                  : RV: RV: R24       K  	  VP                  P&                  R	,          p	VP                  P&                  R
,          p
V	'       g	   V
'       d,   VP)                  \"        P*                  V P,                  R7       VP                  \"        P*                  \.        4       VP1                  4        VP                  P2                  e(   VP!                  R\"        P4                  ,          4       M&VP!                  R\"        P4                  ,          4       TP!                  RV P6                  '       d   RMR: RV P8                  '       d   RMR: R24       VP!                  R\"        P4                  V3,          4       V P6                  '       d:   V P8                  '       g(   VP!                  R\"        P*                  ,          4       M&VP!                  R\"        P*                  ,          4       VP;                  V4       V	'       g	   V
'       d   VP=                  V P,                  4       V F  w  rXp\"        P$                  : RV: 2pVP                  '       d
   RV,          pVP!                  V: RV: R24       VP>                  '       d,   VP!                  RV,          4       VPA                  WV4       K  VPB                  '       g   K  VP!                  V: RV: R24       K  	  V PE                  V\"        PF                  4       V PH                  '       dm   V PK                  V4       VPM                  V PO                  4       : R\"        PF                  : R24       VPQ                  V PO                  4       \.        4       R# R# )zg
Generate the code to return the argument in 'Naming.retval_cname'
and to continue at the yield label.
r[  r  r  r  z__PYX_STD_MOVE_IF_SUPPORTED(%s)r0  r9  r:  profile	linetrace)r   Nz"__Pyx_Coroutine_SwapException(%s);z+__Pyx_Coroutine_ResetAndClearException(%s);z/* return from zasync rN  zgenerator, awaitr  zing value */z%s->resume_label = %d;z,return __Pyx__PyAsyncGenValueWrapperNew(%s);z
return %s;r  z.memview = NULL; z.data = NULL;r  ))new_yield_labelr  replace	use_labelr  closure_tempsresettemps_in_user  r  r#  r   r   r   r   rG  r   r   r  rs   put_trace_yieldrO  r   r   put_finish_refcount_contextcurrent_exceptr0  r  is_awaitr  put_trace_resumerx   r?  r  !generate_sent_value_handling_codesent_value_cnamer  r  r  r  r  )rX   r   r  resume_labelsavedr   r   r  
save_cnamer  r  s   &&         rR   r  !YieldExprNode.generate_yield_code*  sj   
 #'"6"6%%c3/#1	|$$$**,'+~~'B'B'D#E55CCDIJLL%T23     11++,=?OPR9EA!!%.JJ)?)?UST (E ""--i8$$//<	i  !4!4$(( C&--~>((*>>((4JJ;f>T>TTU JJDvG]G]]^

)))Hr1}}}G'13 	4 	

+""I// / 	0T]]]JJEH[H[[\JJ|f&9&99:|$i!!$((+',#Et%+%;%;ZHJ   >K
JJUJ78

9z12  -(((

:zZ[ (- 	..tV5L5LM%%d+HHDKKM63J3JKLOODKKM>: rT   c                Z    VP                  VP                  W P                  4      4       R # rL   )r   r   r   rX   r   r  s   &&&rR   r!  /YieldExprNode.generate_sent_value_handling_code*  s    

4**;ABrT   )r   r  N)r[   r\   r]   r^   r   r   r   r  r  r  r  r  r}  r  r  r  r!  r_   r`   r  s   @rR   r  r  b*  sN      wHDIMHLL4'C;JC CrT   r  c                   <   a  ] tR tRt o R tRR ltR tR tRtV t	R# )	_YieldDelegationExprNodei*  c                    \        4       hrL   )NotImplementedErrorr  s   &&rR   yield_from_func(_YieldDelegationExprNode.yield_from_func*  s    !##rT   Nc                f   Vf   V P                   P                  V4       VP                  P                  \        P
                  RR7      pTP                  V: RV P                  V4      : R\        P                  : RVf   V P                   P                  4       MT: R\        P                  : R2
4       Vf8   V P                   P                  V4       V P                   P                  V4       MV'       d   VP                  V\        4       VP                  RV,          4       VP!                  \        P                  \        4       VP                  P#                  V4       V P%                  V4       VP                  R	V,          4       VP!                  \        P                  \        4       V P&                  '       d   V P)                  V4       M$VP                  \        P                  \        4       VP                  R
4       V P+                  V4       VP                  R4       R # )NFr  r9  r8  r  , &r  zif (likely(%s == PYGEN_NEXT)) {z(} else if (likely(%s == PYGEN_RETURN)) {r  r   )r   r  r  r  r   PySendResult_typer   r.  r   r0  r   rO  r  r#  r  r   r9  r  r  r  fetch_iteration_resultpropagate_exception)rX   r   r}  r~  result_temps   &&&& rR   r  1_YieldDelegationExprNode.generate_evaluation_code*  s   HH--d3nn22:3O3O\a2b

  &""$0$8DHH lJ! 	" HH++D1HH%!!,?

4{BC++^<##K0  &

=KL++^<''-!!&"5"5~F

:  &

3rT   c                    VP                  \        P                  \        4       VP	                  VP                  V P                  4      4       R # rL   )r?  r   rO  r   r   r   r   r  s   &&rR   r4  ,_YieldDelegationExprNode.propagate_exception*  s1    ,,n=

4??488,-rT   c                    VP                  V P                  4       : R \        P                  : R\        P                  : R24       R# )r9  r  r	  N)r   r  r   rO  r  s   &&rR   r3  /_YieldDelegationExprNode.fetch_iteration_result*  s.    

KKM
 	rT   rV   r6	  )
r[   r\   r]   r^   r.  r  r4  r3  r_   r`   r  s   @rR   r+  r+  *  s     $>.
 rT   r+  c                   4   a  ] tR tRt o RtRtR tR tRtV t	R# )YieldFromExprNodei+  Tz
yield fromc                    V P                   P                  P                  '       g   \        V P                  R 4       V P                   P                  V4      V n         R# )z-yielding from non-Python object not supportedN)r   r   r  r   r   r  r   s   &&rR   r  'YieldFromExprNode.coerce_yield_argument+  s;    xx}}&&&$((KL88..s3rT   c                f    VP                   P                  \        P                  ! R R4      4       R# )GeneratorYieldFromrd  __Pyx_Generator_Yield_Fromr   r   r   r   r  s   &&rR   r.  !YieldFromExprNode.yield_from_func+  (    ))+*A*ABVXe*fg+rT   r  N)
r[   r\   r]   r^   r  r  r  r.  r_   r`   r  s   @rR   r<  r<  +  s     ML4, ,rT   r<  c                   4   a  ] tR tRt o RtRtR tR tRtV t	R# )AwaitExprNodei+  Tr  c                f    V P                   e#   V P                   P                  V4      V n         R # R # rL   r  r   s   &&rR   r  #AwaitExprNode.coerce_yield_argument+  s'    88xx2237DH  rT   c                f    VP                   P                  \        P                  ! R R4      4       R# )CoroutineYieldFromrd  __Pyx_Coroutine_Yield_FromrB  r  s   &&rR   r.  AwaitExprNode.yield_from_func$+  rD  rT   r  N)
r[   r\   r]   r^   r  r  r  r.  r_   r`   r  s   @rR   rF  rF  +  s       HL8
, ,rT   rF  c                   >   a a ] tR tRt oR tV 3R ltR tRtVtV ;t	# )AwaitIterNextExprNodei)+  c                    VP                  R 4       VP                  R4       VP                  R4       VP                  R4       VP                  R4       R# )z8PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();zif (unlikely(exc_type && (exc_type == PyExc_StopAsyncIteration || ( exc_type != PyExc_StopIteration && exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopAsyncIteration))))) {r  r  r   N)r   r  s   &&rR   _generate_break%AwaitIterNextExprNode._generate_break.+  sH    

MN

 b 	c 	

#$

8

3rT   c                H   < V P                  V4       \        SV `	  V4       R # rL   )rP  rN   r4  r  s   &&rR   r4  )AwaitIterNextExprNode.propagate_exception7+  s    T"#D)rT   c                    VP                   '       g   Q R 4       hVP                  RV,          4       V P                  V4       VP                  VP                  V P                  4      4       VP                  R4       R# )z1AwaitIterNextExprNode outside of 'async for' loopr  r   N)break_labelr   rP  r   r   r(  s   &&&rR   r!  7AwaitIterNextExprNode.generate_sent_value_handling_code;+  s^    T!TT

)K78T"

4??488,-

3rT   rV   )
r[   r\   r]   r^   rP  r4  r!  r_   r`   ra   rb   s   @@rR   rN  rN  )+  s     
* rT   rN  c                   >   a  ] tR tRt o ]t^tR tRtR t	R t
RtV tR# )GlobalsExprNodeiD+  c                D    VP                  \        P                  4       V # rL   )r   r   globals_utility_coder   s   &&rR   r}  GlobalsExprNode.analyse_typesH+  s    W99:rT   zConstructing globals dictc                    R # r  rV   rW   s   &rR   r  GlobalsExprNode.may_be_noneN+  r#  rT   c                    VP                  V P                  4       : R VP                  V P                  4       V P                  4      : 24       V P	                  V4       R# )z = __Pyx_Globals(); N)r   r  r   r   r<  r  s   &&rR   r  $GlobalsExprNode.generate_result_codeQ+  sF    

KKM##DKKM488<> 	? 	T"rT   rV   N)r[   r\   r]   r^   r   r   r  r}  ri  r  r  r_   r`   r  s   @rR   rX  rX  D+  s*     DG .K# #rT   rX  c                   &   a  ] tR tRt o R tRtV tR# )LocalsDictItemNodeiX+  c                n   V P                   P                  V4      V n         V P                  P                  V4      V n        V P                   P                  V4      V n         V P                  P                  P                  V4      '       d#   V P                  P                  V4      V n        V # R V n        V # rL   )r?	  r}  r   r  r   r  r   s   &&rR   r}   LocalsDictItemNode.analyse_typesY+  s    88))#.ZZ--c2
88..s3::??11#6666s;DJ  DJrT   r>	  N)r[   r\   r]   r^   r}  r_   r`   r  s   @rR   ra  ra  X+  s      rT   ra  c                   8   a a ] tR tRt oR tV 3R ltRtVtV ;t# )FuncLocalsExprNodeid+  c                N   \        VP                  P                  4        Uu. uF"  q3P                  '       g   K  VP                  NK$  	  up4      pV Uu. uF&  p\	        V\        WR 7      \        WRR7      R7      NK(  	  pp\        P                  WVRR7       R# u upi u upi )r  T)ry   r&  r>	  )rA	  r  N)	r  r  r  ry   ra  rP  r_  rD	  r  )rX   r   r{   r   r  r  r  s   &&&    rR   r  FuncLocalsExprNode.__init__e+  s    $'KK$6$6$8H$85JJJEJJ$8H I

 '( 'S $)#93T:< ' 	 ( 	$U.2 	 	4H(s   BB,B"c                   < \         SV `  V4      pVP                   Uu. uF  pVP                  f   K  VNK  	  upVn        V# u upi rL   )rN   r}  rA	  r   )rX   r{   r   r  rQ   s   &&  rR   r}   FuncLocalsExprNode.analyse_typeso+  sK    w$S),0,@,@  :,@q$%GG "#,@  : :s
   AArV   r  rb   s   @@rR   re  re  d+  s     4 rT   re  c                   >   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	PyClassLocalsExprNodeiv+  c                <    \         P                  W4       W n        R # rL   )r  r  pyclass_dict)rX   r   rm  s   &&&rR   r  PyClassLocalsExprNode.__init__w+  s    *(rT   c                J    V P                   P                  V n        R V n        V # r  )rm  r   r  r   s   &&rR   r}  #PyClassLocalsExprNode.analyse_types{+  s!    %%**	rT   c                    R # r  rV   rW   s   &rR   r  !PyClassLocalsExprNode.may_be_none+  r#  rT   c                6    V P                   P                  4       # rL   )rm  r  rW   s   &rR   r  PyClassLocalsExprNode.result+  s      ''))rT   c                    R # rL   rV   r  s   &&rR   r  *PyClassLocalsExprNode.generate_result_code+  r  rT   )r  rm  r   N)r[   r\   r]   r^   r  r}  r  r  r  r_   r`   r  s   @rR   rk  rk  v+  s#     )
* rT   rk  c                     VP                   '       d   \        V 4      # VP                  '       d   \        WP                  4      # \        W4      # rL   )r  rX  r  rk  r  re  )r   
scope_noder{   s   &&&rR   LocalsExprNodery  +  s?    
s##
$S//::c''rT   not~r  r   c                      a  ] tR tRt o R.tRtRtR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tRR ltRtV tR# )UnopNodei+  rd	  TFc                v    \         V P                  ,          pV! V P                  P                  4      V n        R # rL   )compile_time_unary_operatorsr   rd	  r   rX   r  s   & rR   rI  "UnopNode.calculate_constant_result+  s'    +DMM:#DLL$@$@ArT   c                :   \         P                  V P                  4      pV'       g(   \        V P                  R V P                  ,          4       V P
                  P                  V4      p V! V4      #   \         d   pT P                  T4        Rp?R# Rp?ii ; i)z3Unary '%s' not supported in compile-time expressionN)	r  rr   r   r   r   rd	  rU  r  rZ  )rX   rT  r  rd	  rY  s   &&   rR   rU  UnopNode.compile_time_value+  s|    +//>$((Emm$% ,,11$7	-=  	-))!,,	-s   +A3 3B>BBc                    V P                   P                  V4      pVP                  '       g   VP                  '       d"   VP	                  V P
                  4      pVe   V# V P                  W4      # rL   )rd	  r   r#  rX  find_cpp_operation_typer   infer_unop_type)rX   r{   operand_typecpp_types   &&  rR   r   UnopNode.infer_type+  s]    ||..s3$$$(;(;(;#;;DMMJH###C66rT   c                Z    VP                   '       d   VP                  '       g   \        # V# rL   )rx   r  r   rX   r{   r  s   &&&rR   r  UnopNode.infer_unop_type+  s%    ###L,H,H,H!!rT   c                    V P                   P                  '       dG   V P                   P                  P                  '       d!   V P                   P                  \        Jd   R # \        P                  V 4      # r  )rd	  r   r  r   r   r  rW   s   &rR   r  UnopNode.may_be_none+  sM    <<!2!2!B!B!B||  	1##D))rT   c                   V P                   P                  V4      V n         V P                  V4      '       dB   \        \	        V P
                  V P                   P                  4      4      V n        ^V n        V # V P                  4       '       d&   V P                  V4       \        V n        ^V n        V # V P                  4       '       d   V P                  V4       V # V P                  V4       V # r  )rd	  r}  is_pythran_operationrH   r?   r   r   r  is_py_operationcoerce_operand_to_pyobjectr   is_cpp_operationanalyse_cpp_operationanalyse_c_operationr   s   &&rR   r}  UnopNode.analyse_types+  s    ||11#6$$S))#$8HYHY$Z[DIDL  !!##++C0&DIDL
 	 ""$$&&s+  $$S)rT   c                6    V P                   P                  4       # rL   rd	  r~  rW   s   &rR   r~  UnopNode.check_const+      ||''))rT   c                    V P                   P                  P                  ;'       g!    V P                   P                  P                  # rL   )rd	  r   rx   r  rW   s   &rR   r  UnopNode.is_py_operation+  s0    ||  ,,KK0A0A0K0KKrT   c                    \        V4      pV P                  P                  pT;'       d!    VP                  ;'       g    VP                  # rL   )r@   rd	  r   r  r<   )rX   r{   
np_pythranop_types   &&  rR   r  UnopNode.is_pythran_operation+  s=    #C(
,,##LLw00KKG4K4KLrT   c                V    V P                  4       '       d   V P                  4        R # R # rL   r  r  r   s   &&rR   r  UnopNode.nogil_check+       !!NN "rT   c                F    V P                   P                  pVP                  # rL   )rd	  r   r#  r>  s   & rR   r  UnopNode.is_cpp_operation+  s    ||     rT   c                F    V P                   P                  V4      V n         R # rL   )rd	  r  r   s   &&rR   r  #UnopNode.coerce_operand_to_pyobject+  s    ||66s;rT   c           
         V P                   P                  '       d   VP                  R 4       VP                  RV P                  4       ,          4       VP                  RV P                  4       : RV P                  4       : RV P                  : V P
                  P                  4       : R24       R
# V P
                  P                   P                  '       d   V P                  V4       R
# V P                  '       Ed   V P                  4       '       d   V P                  R8X  d   \        YP                  V P                  4       : RV P                  : RV P
                  P                  4       : R	2V P                   P                  '       d   V P                  4       MR
V P                  V P                  4       R
# VP                  V P                  4       : RV P                  : RV P
                  P                  4       : R	24       R
# R
# )z// Pythran unaryopr*  r;  r<  r=  r>  r   r9  r[  r:  N)r   r<   r   r  r   rd	  r7  rx   generate_py_operation_coder  r  r   r   r   r   r  r  s   &&rR   r  UnopNode.generate_result_code+  sH   99$$$JJ+,JJ3dkkmCDJJ++-	/ 0
 \\***++D1\\\$$&&4+?+?3+F'hh%)[[]DMM4<<CVCVCXY%)YY%:%:%:DKKM(($*?*?A
 

DKKM4==$,,J]J]J_`a rT   c                &   V P                  V4      pVP                  V P                  4       : R V: RV P                  P	                  4       : RVP                  V P                  4       V P                  4      : 24       V P                  V4       R# )r9  r8  rf  N)py_operation_functionr   r  rd	  r   r   r   r<  r	  s   && rR   r  #UnopNode.generate_py_operation_code,  sk    --d3

&&(''txx@	B	C 	T"rT   c                    V P                   P                  P                  '       g>   \        V P                  R V P
                  : RV P                   P                  : R24       \        P                  V n        R# )zInvalid operand type for '' (rb  N)rd	  r   rd  r   r   r   r   r2   rW   s   &rR   
type_errorUnopNode.type_error,  sK    ||  )))$(( 1 13 4))	rT   c                J   V P                   P                  .pV P                  '       d2   V P                  '       g    VP	                  \
        P                  4       VP                  V P                  V P                  V4      pV'       d   V'       g   V P                  4        R # V'       d   VP                  P                  V n        VP                  P                  V n        V P                  R8X  d?   RV n        \        V 4      '       d'   VP                  \         P"                  ! RR4      4       MRV n        RV n        V P                  '       dS   V P                  '       gA   V P                   P                  P%                  V P                  \
        P                  R7      pM/V P                   P                  P%                  V P                  4      pV'       dC   Vf?   \'        V P                  RV P                  : R\        : 24       V P                  4        R # WPn        R # )	Nr   Tr  r  rN  )r  r  z' operator not defined for )rd	  r   is_inc_dec_op	is_prefixr  r   r  r*  r   r   r  r   r   r  r   r   r   r   r  r   )rX   r{   overload_checkoperand_typesr   r  s   &&&   rR   r  UnopNode.analyse_cpp_operation,  sx   **+dnnn  !6!67--dhh}U%OO#(::#=#=D #(::#=#=D ##s*#1$77(()@)@AY[k)lm#%D #%D dnnn||((@@J,A,A A H ||((@@OHh.$((t% &OO	rT   )r   r   r   r  rd	  r   Nr1  )r[   r\   r]   r^   r   infixr  rI  rU  r   r  r  r}  r~  r  r  r  r  r  r  r  r  r  r_   r`   r  s   @rR   r}  r}  +  sq      {HEMB
-7 **LM
!<b(#* rT   r}  c                   Z   a  ] tR tRt o Rt]P                  tR tR t	R t
R tR tRtV tR	# )
NotNodei<,  !c                F    V P                   P                  '       * V n        R # rL   )rd	  r   rW   s   &rR   rI  !NotNode.calculate_constant_resultD,  s    #'<<#?#??rT   c                    V P                   P                  V4      p V'       * #   \         d   pT P                  T4        R p?R # R p?ii ; irL   )rd	  rU  r  rZ  )rX   rT  rd	  rY  s   &&  rR   rU  NotNode.compile_time_valueG,  sD    ,,11$7	-; 	-))!,,	-s   $ AAAc                "    \         P                  # rL   )r   r  r  s   &&&rR   r  NotNode.infer_unop_typeN,  s    %%%rT   c                    V P                   P                  V4      V n         V P                   P                  pVP                  '       d   V P	                  V4       V # V P                   P                  V4      V n         V # rL   )rd	  r}  r   r#  r  r  r  s   && rR   r}  NotNode.analyse_typesQ,  se    ||11#6||(($$$&&s+   <<99#>DLrT   c                D    R V P                   P                  4       ,          # )z(!%s)rd	  r  rW   s   &rR   r  NotNode.calculate_result_codeZ,      ,,...rT   )r   rd	  N)r[   r\   r]   r^   r   r   r  r   rI  rU  r  r}  r  r_   r`   r  s   @rR   r  r  <,  s6      H!!D@-&/ /rT   r  c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )UnaryPlusNodei^,  r   c                    \         P                  ! V P                  P                  \         P                  4      V n        R # rL   )r   r  rd	  r   r  r   s   &&rR   r  !UnaryPlusNode.analyse_c_operationc,  s)    22LLz446	rT   c                    R # )PyNumber_PositiverV   r  s   &&rR   r  #UnaryPlusNode.py_operation_functiong,      "rT   c                    V P                  4       '       d"   R V P                  P                  4       ,          # V P                  P                  4       # )z(+%s))r  rd	  r  rW   s   &rR   r  #UnaryPlusNode.calculate_result_codej,  s<      ""T\\00222<<&&((rT   rS  N)
r[   r\   r]   r^   r   r  r  r  r_   r`   r  s   @rR   r  r  ^,  s       H6#) )rT   r  c                   <   a  ] tR tRt o RtR tR tR tR tRt	V t
R# )	UnaryMinusNodeiq,  r  c                   V P                   P                  P                  '       d@   \        P                  ! V P                   P                  \        P
                  4      V n        MLV P                   P                  P                  '       d   \        P
                  V n        MV P                  4        V P                  P                  '       d
   R V n	        R# R# r  )
rd	  r   r  r   r  r  r  r  rq  r  r   s   &&rR   r  "UnaryMinusNode.analyse_c_operationv,  s    <<'''"66!!:#8#8:DI\\&&&"--DIOO99DJ  rT   c                    R # )PyNumber_NegativerV   r  s   &&rR   r  $UnaryMinusNode.py_operation_function,  r  rT   c                    V P                   '       d"   R V P                  P                  4       ,          # V P                  P                  P	                  R4      : RV P                  P                  4       : R2# )(-%s)r  r8  rb  )r  rd	  r  r   unary_oprW   s   &rR   r  $UnaryMinusNode.calculate_result_code,  sP    :::T\\00222#||0099#>@S@S@UVVrT   c                \    V P                   P                  4       pV'       d
   R V,          # R# )r  N)rd	  rF  )rX   r   s   & rR   rF  )UnaryMinusNode.get_constant_c_result_code,  s&    779U?" rT   )r  r   N)r[   r\   r]   r^   r   r  r  r  rF  r_   r`   r  s   @rR   r  r  q,  s&      H	#W# #rT   r  c                   2   a  ] tR tRt o R tR tR tRtV tR# )	TildeNodei,  c                l   V P                   P                  P                  '       dA   \        P                  ! V P                   P                  \        P
                  4      V n        R # V P                   P                  P                  '       d   \        P
                  V n        R # V P                  4        R # rL   )rd	  r   rm  r   r  r  r  r  r   s   &&rR   r  TildeNode.analyse_c_operation,  sl    <<###"66!!:#8#8:DI\\&&&"--DIOOrT   c                    R # )PyNumber_InvertrV   r  s   &&rR   r  TildeNode.py_operation_function,  s     rT   c                D    R V P                   P                  4       ,          # )z(~%s)r  rW   s   &rR   r  TildeNode.calculate_result_code,  r  rT   rS  N)	r[   r\   r]   r^   r  r  r  r_   r`   r  s   @rR   r  r  ,  s     !/ /rT   r  c                   &   a  ] tR tRt o R tRtV tR# )	CUnopNodei,  c                    R # r  rV   rW   s   &rR   r  CUnopNode.is_py_operation,  r#  rT   rV   N)r[   r\   r]   r^   r  r_   r`   r  s   @rR   r  r  ,  s      rT   r  c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )DereferenceNodei,  r   c                ^    VP                   '       d   VP                  # \        P                  # rL   )rX  rY  r   r2   r  s   &&&rR   r  DereferenceNode.infer_unop_type,  s&    )))(((rT   c                Z   V P                   P                  P                  '       du   VP                  '       d<   \        P
                  ! V P                   P                  P                  4      V n        R # V P                   P                  P                  V n        R # V P                  4        R # rL   )rd	  r   rX  is_cppr   r  rY  r  r   s   &&rR   r  #DereferenceNode.analyse_c_operation,  sd    <<###zzz&55dll6G6G6Q6QR	 LL--77	OOrT   c                D    R V P                   P                  4       ,          # r  r  rW   s   &rR   r  %DereferenceNode.calculate_result_code,  r  rT   rS  N)
r[   r\   r]   r^   r   r  r  r  r_   r`   r  s   @rR   r  r  ,  s       H)/ /rT   r  c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )DecrementIncrementNodei,  Tc           
        V P                   P                  P                  '       g   V P                  '       d?   \	        V P
                  R V P                  : RV P                   P                  : R24       MK\	        V P
                  RV P                  : RV P                  : RV P                   P                  : R24       \        P                  V n        R# )zNo match for 'operatorz' (operand type is 'r  zNo 'operatorz(int)' declared for postfix 'N)	rd	  r   rd  r  r   r   r   r   r2   rW   s   &rR   r  !DecrementIncrementNode.type_error,  s    ||  )))~~~dhh]]DLL$5$5!7 8 dhh]]DMM4<<3D3D!F G))	rT   c                x   V P                   P                  P                  '       dA   \        P                  ! V P                   P                  \        P
                  4      V n        R # V P                   P                  P                  '       d   V P                   P                  V n        R # V P                  4        R # rL   )rd	  r   r  r   r  r  rX  r  r   s   &&rR   r  *DecrementIncrementNode.analyse_c_operation,  sp    <<'''"66!!:#8#8:DI\\%%%))DIOOrT   c                    V P                   '       d-   R V P                  : V P                  P                  4       : R2# R V P                  P                  4       : V P                  : R2# )r8  rb  )r  r   rd	  r  rW   s   &rR   r  ,DecrementIncrementNode.calculate_result_code,  sJ    >>>#}}dll.A.A.CDD   $||224dmmDDrT   rS  N)
r[   r\   r]   r^   r  r  r  r  r_   r`   r  s   @rR   r  r  ,  s      M*E ErT   r  c                    a a V V3R  l# )c                 $   < \        V 3R SRS/VB # r  r   )r  )r   r  r  r   s   &,rR   <lambda>%inc_dec_constructor.<locals>.<lambda>,  s    5cjYjYajeijrT   rV   r   s   ffrR   inc_dec_constructorr  ,  s	    jjrT   c                   H   a  ] tR tRt o RtR tR tR tR tR t	R t
R	tV tR
# )AmpersandNodei,  r1  c                .    \         P                  ! V4      # rL   )r   
c_ptr_typer  s   &&&rR   r  AmpersandNode.infer_unop_type,  s    $$\22rT   c                |   V P                   P                  V4      V n         V P                   P                  pVP                  '       d   V P	                  VR R7       VP
                  '       gr   VP                  '       g`   V P                   P                  4       '       g@   VP                  '       d   V P                  R4       V # V P                  RV,          4       V # VP                  '       d   T P                  RV P                   P                  '       d   RV P                   P                  ,          M:V P                   P                  '       d   RV P                   P                  ,          MR,          4       V # VP                  '       d   V P                  '       g   \        P                   ! V4      V n        V # )F)r  z'Cannot take address of memoryview slicez&Taking address of non-lvalue (type %s)z Cannot take address of Python %szvariable '%s'zobject attribute '%s'r  )rd	  r}  r   r#  r  r  r$  r  r  r   rx   r   ry   r  r  r   r  )rX   r{   argtypes   && rR   r}  AmpersandNode.analyse_types,  s@   ||11#6,,##&&s5&A$$$(<(<(<@[@[@]@])))

DE K 

CgMNKJJ97;||7K7K7K$,,"3"33DHLLD]D]D]'$,,*@*@@  K###4999"--g6DIrT   c                6    V P                   P                  4       # rL   )rd	  r  rW   s   &rR   r~  AmpersandNode.check_const,  s    ||,,..rT   c                j    \        V P                  V4       \        P                  V n        R V n        R# r  Nr   r   r   r2   r   r  rX   messs   &&rR   r   AmpersandNode.error-  %    dhh))	$rT   c                D    R V P                   P                  4       ,          # )z(&%s)r  rW   s   &rR   r  #AmpersandNode.calculate_result_code-  r  rT   c           
        V P                   P                  P                  '       d   V P                  R 8X  d   \	        YP
                  V P                  4       : RV P                  : RV P                   P                  4       : R2V P                  P                  '       d   V P                  4       MRV P                  V P                  4       R# R# R# )r   r9  r[  r:  N)rd	  r   r#  r   r   r   r  r   rx   r   r  r  s   &&rR   r  "AmpersandNode.generate_result_code	-  s    LL***t/C/Cs/J#D((!%t||?R?R?TU!%!6!6!6D$$d&;&;= 0K*rT   )rd	  r  r   N)r[   r\   r]   r^   r   r  r}  r~  r   r  r  r_   r`   r  s   @rR   r  r  ,  s/      H3*/%
/= =rT   r  c                    \        V\        4      '       d]   VR 8X  dV   \        VP                  \        \        P
                  ! VP                  4      ) 4      VP                  VP                  R7      # \        V\        4      '       d9   VP                  Tu;8X  d   R9   d    M M\        V RV3^,          ,          ^4       \        V,          ! V VVR7      # )r  )r   r   r  r  z+-zAPython has no increment/decrement operator: %s%sx == %s(%sx) == x)r   rd	  )r   r  r   r   r   r  r   r  r  r}  r   r   unop_node_classes)r   r   rd	  s   &&&rR   	unop_noder  -  s     '7##CW[[#u7J7J7==7Y6Y2Z ' 0 07;K;KM 	M	GX	&	&7+;+;x+O4+OX]e\ghi\ijlmnX&s rT   c                      a  ] tR tRt o R.tR;t;ttR tR t	R t
R tR tR	 tR
 tR tR tRR ltR tR tR tRtV tR# )r  i$-  rd	  Nc                    R# r  rV   r   s   &&rR   r  TypecastNode.type_dependencies2-  r
  rT   c                    V P                   f>   V P                  P                  V4      pV P                  P                  W!4      w  q0n         V P                   # rL   )r   rY  r=  
declarator)rX   r{   rY  r  s   &&  rR   r   TypecastNode.infer_type5-  sB    99..s3I??229BLAyyyrT   c                   V P                   f>   V P                  P                  V4      pV P                  P                  W!4      w  q0n         V P                  P                  4       '       d   V P                  4        V P                   P                  '       d,   \        V P                  R4       \        P                  V n         V P                  P                  V4      V n        V P                   \        P                  J d   V P                  P                  V4      # V P                   P                  pV P                  P                   P                  pV'       dw   V'       go   V P                  P!                  4       '       dO   V P                   P"                  '       g3   V P                   P$                  '       g   \        V P                  R4       V'       Ed   V'       Eg   V P                   \&        J d=   V P                  P                   P(                  '       d   \+        V P                  V4      # V P                  P                   P-                  V4      '       d9   \.        V n        V P                  P3                  V P                   V4      V n        EMgV P                  P                   P4                  '       dx   V P                  P                   P                  P6                  '       gG   V P                  P                   P                  P8                  '       g   \        V P                  R4       M=\;        V P                  RV P                  P                   : RV P                   : R24       V P                  P=                  V4      V n        EMkV'       Ed   V'       Eg   V P                   P?                  V4      '       d.   V P                  P3                  V P                   V4      V n        EMV P                   P4                  '       de   V P                   P                  P6                  '       g=   V P                   P                  P8                  '       g   \        V P                  R4       EM\;        V P                  RV P                   : RV P                  P                   : R24       EMLV'       d   V'       d   V P@                  '       d+   \C        V P                  V P                   VRR	7      V n        EM \E        V P                  \F        4      '       d,   V P                  P3                  V P                   V4      V n        MV P                   PH                  '       dH   V P                  P                   PH                  '       d"   V P                  P=                  V4      V n        MQV P                  P                   PJ                  '       d,   V P                  P3                  V P                   V4      V n        V P                   P4                  '       d   V P                   P                  P                  '       d   V P                   P                  PL                  '       dp   V P                  P                   pVP4                  '       d   VP                  pVP                  '       d*   VPL                  '       g   \;        V P                  R
^4       V # )NzCannot cast to a function typez>Casting temporary Python object to non-numeric non-Python typez>Python objects cannot be cast from pointers of primitive typeszNo conversion from z to z, python object pointer used.z<Python objects cannot be cast to pointers of primitive typesT)notnonezQCasting a GIL-requiring function into a nogil function circumvents GIL validation)'r   rY  r=  r   rd	  r   rI  r  r   r   r   r2   r}  r  r  rx   r  r  r#  r   rm  rn  r  r   rC  r`  rX  r  r
  r   r  create_from_py_utility_code	typecheckrl  r   r  rq  r  r   )rX   r{   rY  r  to_pyfrom_pyr  s   &&     rR   r}  TypecastNode.analyse_types;-  s:   99..s3I??229BLAy<<++--**,99!!!$((02"--DI||11#699
...<<11#66		%%,,##//5T\\%>%>%@%@99'''		0F0F0Fdhh `a5yyJ&4<<+<+<+C+C+C+DLL#>>""99#>>$2!#||55diiE<<$$+++ LL--77???4<<CTCTC^C^ChChChdhh(hi DHH))499'6 7#||<<SAWUUyy44S99#||55diiE!!!		++333tyy7J7J7T7T7T$(($bcIIt||00#2 3~~~-dllDIIsTXYDLL.99#||55diiEYY!!!dll&7&7&B&B&B<<88=DL\\'''<<11$))SADL99		 3 3 @ @ @TYYEXEXE^E^E^ll''G~~~!++###GMMMkmnprT   c                6    V P                   P                  4       # rL   )rd	  r  rW   s   &rR   r  TypecastNode.is_simple{-  s    ||%%''rT   c                6    V P                   P                  4       # rL   )rd	  r  rW   s   &rR   r  TypecastNode.is_ephemeral-  s    ||((**rT   c                ^    V P                   ;'       g    V P                  P                  4       # rL   )r  rd	  r  rW   s   &rR   r  !TypecastNode.nonlocally_immutable-  s!    ||BBt||@@BBrT   c                    V P                   '       dE   V P                   P                  '       d'   V P                  '       d   V P                  4        R # R # R # R # rL   )r   rx   r  r  r   s   &&rR   r  TypecastNode.nogil_check-  s7    999...4<<<NN 4@.9rT   c                6    V P                   P                  4       # rL   r  rW   s   &rR   r~  TypecastNode.check_const-  r  rT   c                Z    V P                  V P                  P                  4      V n        R # rL   )r  rd	  r   rW   s   &rR   rI  &TypecastNode.calculate_constant_result-  s    #99$,,:V:VWrT   c                   Vf   V P                   P                  4       pV P                  P                  '       Ed   V P                   P                  4       pV P                   P                  P                  '       d   V P                  P                  P                  V P                   P                  P                  V4      4      pV P                  P                  P                  V P                   P                  P                  V4      4      pM'V P                  P                  P                  V4      pRpV P                  P                  : RV: RV: R2# V P                  P                  V4      # )Nrk  r8  r  rb  )	rd	  r  r   rq  	real_typer  	real_code	imag_coderc  )rX   operand_result	real_part	imag_parts   &&  rR   r  "TypecastNode.calculate_result_code-  s   !!\\002N99!\\002N||  +++ II//99LL%%//?A	 II//99LL%%//?A	 !II//99.I		II(( 
 99&&~66rT   c                    V P                   P                  4       pV'       d   V P                  P                  V4      # R # rL   )rd	  rF  r   r  )rX   r9  s   & rR   rF  'TypecastNode.get_constant_c_result_code-  s1    @@B99&&~66 rT   c                    V P                   P                  '       d.   V P                  '       g   V P                  P	                  V4      # \
        P	                  W4      # rL   )r   rx   r  rd	  r/  r   r>  s   &&rR   r/  TypecastNode.result_as-  s@    99   <<))$//%%d11rT   c                   V P                   '       dp   VP                  V P                  4       : R V P                  P                  4       : R24       VP	                  V P                  4       V P                  4       4       R# R# )z = (PyObject *)r:  N)r  r   r  rd	  r  r=  r  s   &&rR   r  !TypecastNode.generate_result_code-  sV    <<<JJKKMLL'')+, OODKKM4::<8 rT   )r   rd	  rC  r   rL   )r[   r\   r]   r^   r   rY  r   r   r  r   r}  r  r  r  r  r~  rI  r  rF  r/  r  r_   r`   r  s   @rR   r  r  $-  sf      {H$((I(
T>@(+C*X7(7
29 9rT   r  zStart may not be givenz'Stop must be provided to indicate shapezVStrides may only be given to indicate contiguity. Consider slicing it after conversionz2Can only create cython.array from pointer or arrayz7Pointer base type does not match cython.array base typec                      a  ] tR tRt o RtRR.tRtRtRtRt	]
P                  tR tR	 tR
 tR tR t]R 4       tRtV tR# )rb  i-  a>  
Used when a pointer of base_type is cast to a memoryviewslice with that
base type. i.e.

    <int[:M:1, :N]> p

creates a fortran-contiguous cython.array.

We leave the type set to object so coercions to object are more efficient
and less work. Acquiring a memoryviewslice from this will be just as
efficient. ExprNode.coerce_to() will do the additional typecheck on
self.compile_time_type

This also handles <int[:, :]> my_c_array


operand             ExprNode                 the thing we're casting
base_type_node      MemoryViewSliceTypeNode  the cast expression node
rd	  shapesNTr  c                   ^RI Hp V P                  P                  V4      V n        V P                  '       d   V P                  pM%V P
                  P
                  P                  V4      pV P
                  P                  p\        V n	        . V n
        \        V4      pV P                  P                  pV P                  P                  P                  '       gM   V P                  P                  P                  '       g'   \        V P                  P                  \         4       V # . pVP                  '       d=   VP                  '       d*   VP#                  VP$                  4       VP&                  pK;  M>VP                  '       d   VP&                  pM\        V P                  RV,          4       V # VP)                  V4      '       g9   VP*                  '       g'   \        V P                  P                  \,        4       V # V P                  P                  P                  '       dE   \        V4      V8w  d5   \        V P                  P                  RV\        V4      3,          4       V # \/        V4       EF  w  rV	P0                  P2                  '       g)   \        V	P0                  P                  \4        4       V u # V	P6                  P2                  '       dR   V'       g   \        V	P                  \8        4       V u # \:        P=                  V P                  Wx,          4      V	n        V	P6                  P                  V4      V	n        V	P6                  P?                  V P@                  V4      p
V
PB                  '       g   V
PE                  V4       V P                  P#                  V
4       V^ V^,
          39   pV	PF                  P2                  '       Eg   V'       Ed	   V	PF                  P                  V4      V	n#        V	PF                  P                  PH                  '       gg   V	PF                  PB                  '       dK   V	PF                  P                  PJ                  '       g%   \        V	PF                  P                  R4       V u # V	PF                  PM                  V4      ^8w  d)   \        V	PF                  P                  \N        4       V u # V^ 8X  d   RV n(        EKt  EKw  V	PF                  P2                  '       d   EK  V'       d   EK  \        V	PF                  P                  \N        4       V u # 	  V P                  PR                  '       g!   V P                  PE                  V4      V n        R.\        V4      ,          pV PP                  R8X  d   RV^ &   MRVR&   \T        PV                  ! W44      V n,        V PX                  P[                  V P                  4       V P]                  V4      V n	        VP_                  V4       VPa                  VPc                  VPd                  Pf                  4      4       V # )	r  rO  zunexpected base type %s foundz/Expected %d dimensions, array has %d dimensionszExpected an integer literalfortran)r:  follow)r:  contigr~  )4rN  rP  rd	  r}  array_dtypebase_type_noder=  rF  r2   r   rD  r   rX  r  r   r   ERR_NOT_POINTERr  rj  rY  r[  r  ERR_BASE_TYPEr  r   r   	ERR_STARTr   ERR_NOT_STOPr  r  r`  
shape_typer   r  r   rm  rd  rU  	ERR_STEPSmoder   r   r@  r^  validate_memslice_dtypeget_cython_array_typeuse_cython_array_utility_coder   get_typeinfo_to_format_coder  r?  )rX   r{   rP  rI  rF  r\  rY  array_dimension_sizesaxis_noaxisshapefirst_or_lasts   &&          rR   r}  CythonArrayNode.analyse_types-  si    ||11#6**K--<<DDSIK""''	4y LL%%	||  '''0A0A0J0J0J$,,""O4K !#$$$%,,Y^^<%//	 % !++I$((;iGHK!!+..)2C2C2C$,,""M2K\\'''C0E,F$,N$,,""C-137L3M,NOP K
 't_MG::%%%djjnni0yy   ,$((L1K#OODHH6K6TU			//4DIII''=E###$$S)KKu%#4!8}4M99$$$ II33C8			---$))2F2F2F		///$))--)FGK99//49$))--3Ka< )DI   YY&&&}}diimmY/K -N ||###<<66s;DL$%D	199	!*DG+DH';;KN22488<..s3	005223;;3\3\]	
 rT   c                    V P                   '       d   \        R 4      hVP                  P                  V P                  R4      V n         R# )ztemp allocated multiple timesTN)r  r  r  r  r   r  s   &&rR   r  $CythonArrayNode.allocate_temp_resultE.  s3    >>>>??55diiFrT   c                $    V P                  V4      # rL   )rS  r   s   &&rR   r   CythonArrayNode.infer_typeK.  s    ))#..rT   c                    VP                   P                  pVP                  4        VP                  P	                  R 4      P
                  # )array)r  cython_scopeload_cythonscope	viewscoper  r   )rX   r{   rb  s   && rR   rS  %CythonArrayNode.get_cython_array_typeN.  s:    {{//%%'%%,,W5:::rT   c                <  a ^RI Hp V P                   Uu. uF,  pV P                  P	                  VP                  4       4      NK.  	  ppV P                  P                  pSP                  P                  \        R4      pSP                  P                  \        R4      pSP                  P                  \        R4      pRVP                  4       ,          p	VP                  SV4      p
V P                  P                  P                   '       d   SP#                  RV P                  P                  4       ,          4       SP#                  R4       SP#                  SP%                  V P                  P&                  4      4       SP#                  R4       SP#                  V: RV
: RSP)                  WpP&                  4      : 24       SP+                  V\        4       R	\-        V4      ,          pSP#                  V: R
V: RRP/                  V4      : RSP)                  W`P&                  4      : 24       SP+                  V\        4       SP#                  R4       SP#                  V: RV: RSP)                  WP&                  4      : 24       SP#                  R4       SP#                  V: RV: R24       SP#                  R4       SP#                  V P                  4       : RV: RV	: RV: RV P0                  : RV P                  P                  4       : RSP)                  V P                  4       V P&                  4      : 24       V P3                  S4       V3R lpV! V4       V! V4       SP                  P5                  V4       R# u upi )r  r  Tr  z
if (!%s) {zQPyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");r   z = __pyx_format_from_typeinfo(&rf  z __PYX_BUILD_PY_SSIZE_T z = Py_BuildValue("(" z ")", r  r/
  z = PyBytes_AsString(r  z = PyBytes_AS_STRING(r  r  z = __pyx_array_new(, "z", (char *) c                 j   < SP                  V \        4       SP                  P                  V 4       R # rL   )r  r   r  r  )r4  r   s   &rR   dispose5CythonArrayNode.generate_result_code.<locals>.dispose.  s%    !!$7NN''-rT   N)rN  r  rD  rO  r  r  r^  ri  r  r  r   r0   rz  get_type_information_cnamerd	  r   rX  r   r   r   r   r9  r   r  rQ  r<  r  )rX   r   r  rY  rD  ri  shapes_tempformat_tempformat_ptr_tempitemsize	type_infobuildvalue_fmtri  s   &f           rR   r  $CythonArrayNode.generate_result_codeS.  s    $(;;0#.% //++ELLN;#. 	 0""((nn22>4Hnn22>4H..66M%">">"@@55dEB	<<###JJ|dll&9&9&;;<JJ S TJJtt||'7'789JJsO

##K:
 	
 	^43c&kA

IIf##K:	
 	 	^4 	

89

[##OXX>
 	 	

7

[
 	 	

8

KKM?DIIt||?R?R?T##DKKM488<
 	
 	T"	. 	##O4w0s   2Nc           	     z   VP                   pVP                  p\        V4      p. pVP                  '       d,   VP	                  \        W5VVR7      4       VP                  pK=  \        P                  V^4      VR,          n	        \        P                  ! W6VR7      p\        W7WR7      pVP                  V4      pV# )z0
Given a C array type, return a CythonArrayNode
r  )rF  rJ  )rJ  rd	  rI  r~  )r   r   rj  r  r  r.  rY  r  r  r   r   MemoryViewSliceTypeNoderb  r}  )	rP   src_noder{   r   rY  r  rF  memslicenoder  s	   &&&      rR   rc  CythonArrayNode.from_carray.  s    
 llMM	SM	   KK	#Y,57 8!++IQ/R44SDMO )1J%%c*rT   )r^  rQ  rd	  rD  r  r   )r[   r\   r]   r^   r  r   rD  r  rQ  rI  r   r  rO  r}  r  r   rS  r  r  rc  r_   r`   r  s   @rR   rb  rb  -  sf     ( 8$HFGDK--JdLG/;
>5@  rT   rb  c                   D   a  ] tR tRt o ]P
                  tR tR tRt	V t
R# )
SizeofNodei.  c                    R # r1  rV   rW   s   &rR   r~  SizeofNode.check_const.  r  rT   c                    R # rL   rV   r  s   &&rR   r  SizeofNode.generate_result_code.  r  rT   rV   N)r[   r\   r]   r^   r   r  r   r~  r  r_   r`   r  s   @rR   ry  ry  .  s!      ##D rT   ry  c                   :   a  ] tR tRt o . tRtR tR tR tRt	V t
R# )r  i.  Nc                     T P                  f?   T P                   P                  T4      pT P                  P                  Yq4      w  rYn
        T P                  4        T # r	  )rY  module_pathr  r  r_  r   r  ry   SizeofVarNoder}  r  r=  r   
check_type)
rX   r{   r  r  rd	  rD  r   rY  r  r  s
   &&        rR   r}  SizeofTypeNode.analyse_types.  sQ      == ..s3I//11)AKA$MrT   c                h   V P                   pV'       g   R # VP                  '       d+   VP                  '       g   \        V P                  R4       R # VP
                  '       d   \        V P                  R4       R # VP                  4       '       g    \        V P                  RV,          4       R # R # )Nz Cannot take sizeof Python objectzCannot take sizeof voidz'Cannot take sizeof incomplete type '%s')r  rx   r  r   r   r  is_complete)rX   r  s   & rR   r  SizeofTypeNode.check_type.  sz    ==(B(B(B$((>?$((56%%''$((EPQ (rT   c                    V P                   P                  '       d'   V P                   P                  R ^R7      pRV,          # V P                   P                  4       pRV,          # )rN  )deref(sizeof(%s)))r  r  r   rz  )rX   r	  s   & rR   r  $SizeofTypeNode.calculate_result_code.  sY    ==*** }}55b5BH (( }};;=H((rT   )r  )r[   r\   r]   r^   r   r  r}  r  r  r_   r`   r  s   @rR   r  r  .  s&      HH(	R) )rT   r  c                   8   a  ] tR tRt o R.tR tR tR tRtV t	R# )r  i.  rd	  c                   V P                   P                  V4      pV'       dk   W n        V P                  P                  '       d,    V P                  P	                  VP
                  4      V n        \        V n
        V P                  4        V # V P                   P                  V4      V n         V #   \         d$    \        T P                   P                  R 4        Lli ; i)zLType cannot be specialized since it is not a fused argument to this function)rd	  r  r  r  r  r  r,   r   r   r  rQ   r  r}  )rX   r{   operand_as_types   && rR   r}  SizeofVarNode.analyse_types.  s     ,,66s;+M}}%%%j$(MM$<$<S=R=R$SDM ,DNOO   <<55c:DL ( j$,,**hjjs   *B0 0+CCc                D    R V P                   P                  4       ,          # )r  r  rW   s   &rR   r  #SizeofVarNode.calculate_result_code/  s     3 3 555rT   c                    R # rL   rV   r  s   &&rR   r  "SizeofVarNode.generate_result_code/  r  rT   )rQ   r  rd	  N)
r[   r\   r]   r^   r   r}  r  r  r_   r`   r  s   @rR   r  r  .  s"     
 {H$6 rT   r  c                   Z   a  ] tR tRt o R.tRtRt^tR tRt	R t
R tR tR	 tR
 tRtV tR# )
TypeidNodei	/  rd	  Nc                   TpVP                   '       g   VP                  pK   VP                  R V P                  4      pVP	                  R4      p\
        P                  ! \
        P                  ! VP                  RR7      4      # )zlibcpp.typeinforp  T)r  )	r  r  find_moduler   r  r   r	  r:  r   )rX   r{   
env_moduletypeinfo_moduletypeinfo_entrys   &&   rR   get_type_info_typeTypeidNode.get_type_info_type/  sk    
,,,#//J$001BDHHM(//<,,Z-P-PQ_QdQdos-tuurT   ztypeid operatorc                   V P                   '       g   \        P                  V n         V P                  V4       V P	                  V4      pV'       g   V P                  R 4       V # V P                  f   V # W n         V P                  P                  V4      pV'       d   W0n        RV n	        RV n        MV P                  P                  V4      V n        RV n	        RV n        V P                  P                   P                  '       d   V P                  R4       V # V P                  P                   P                  '       d   V P                  R4       V # V P                  P                   P                  4       '       g/   V P                  RV P                  P                   ,          4       V # VP                  \        P                   ! RR4      4       V # )	zKThe 'libcpp.typeinfo' module must be cimported to use the typeid() operatorNTFz$Cannot use typeid on a Python objectzCannot use typeid on voidz)Cannot use typeid on incomplete type '%s'r  r  )r   r   r2   rn  r  r   rd	  r  r  r  r}  rx   r  r  r   r   r   )rX   r{   rp  as_types   &&  rR   r}  TypeidNode.analyse_types /  sW   yyy"--DIs++C0	JJdeK<<K	,,::3?#MDLDL LL66s;DM DLDL}}!!---

AB##+++

67]]''3355

FI[I[[\[445MO_`arT   c                j    \        V P                  V4       \        P                  V n        R V n        R# r  r  r  s   &&rR   r   TypeidNode.error@/  r  rT   c                    R # r1  rV   rW   s   &rR   r~  TypeidNode.check_constE/  r  rT   c                    V P                   # rL   r  rW   s   &rR   r   TypeidNode.calculate_result_codeH/  r  rT   c                    V P                   '       d   V P                  P                  4       pMV P                  P                  4       p\	        WP
                  V P                  : R V: R2RRV P                  4       R# )z
 = typeid(r  N)r  r  rz  r  r   r   r  r  )rX   r   r	  s   && rR   r  TypeidNode.generate_result_codeK/  sV    <<<}};;=H}}++-Hhh"&..(;$--	/rT   )r  r  rd	  r  r   )r[   r\   r]   r^   r   r  r  r  r  cpp_messager}  r   r~  r  r  r_   r`   r  s   @rR   r  r  	/  sI      {HHKGv $K@%
/ /rT   r  c                   L   a  ] tR tRt o Rt]tR.tR tR t	R t
R tR tR	tV tR# )

TypeofNodeiT/  Nr  c                (   V P                   P                  V4      V n         \        P                  ! \	        V P                   P
                  4      4      p\        V P                  VR 7      pVP                  V4      pVP                  V4      V n	        V # rq  )
rd	  r}  r
   r  r   r   rW  r   r  r  )rX   r{   r   r  s   &&  rR   r}  TypeofNode.analyse_types_/  sn    ||11#6,,S1B1B-CDdhhe4'',11#6rT   c                n    V P                   P                  V4      V n         V P                   P                  # rL   )rd	  r}  r   r   s   &&rR   r  TypeofNode.analyse_as_typeg/  s(    ||11#6||   rT   c                    R # r  rV   rW   s   &rR   r  TypeofNode.may_be_nonek/  r#  rT   c                <    V P                   P                  V4       R # rL   )r  r  r  s   &&rR   r  #TypeofNode.generate_evaluation_coden/  s    --d3rT   c                6    V P                   P                  4       # rL   )r  r  rW   s   &rR   r   TypeofNode.calculate_result_codeq/  s    ||1133rT   )r  rd	  )r[   r\   r]   r^   r  r   r   r   r}  r  r  r  r  r_   r`   r  s   @rR   r  r  T/  s6      GD{H!44 4rT   r  c                 f     V P                   pV! W4      #   \         d    TP                  p L!i ; irL   )
__matmul__r   __rmatmul__)r  br  s   && rR   matmul_operatorr  }/  s6    	!<<D Az  	!==D	!s    00r  z<===r(  z>=r  r  is_notr1  ///<<%r   r  **>>^@inc                 
    W9   # rL   rV   xseqs   &&rR   r  r  /  s    rT   not_inc                 
    W9  # rL   rV   r  s   &&rR   r  r  /  s    Q\rT   c                     \         P                  V P                  4      pV'       g(   \        V P                  R V P                  ,          4       V# )z4Binary '%s' not supported in compile-time expression)compile_time_binary_operatorsrr   r   r   r   )r   r  s   & rR   get_compile_time_binopr  /  s=    (,,T]];DdhhB-- 	! KrT   c                      a a ] tR tRt oRR.tRtR tR tR tR t	R	 t
R
 tR tR tR tR tR tR tR tR tR tR tV 3R ltR tR tRtVtV ;t# )	BinopNodei/  r  r  Fc                    \         V P                  ,          pV! V P                  P                  V P                  P                  4      V n        R # rL   )r  r   r  r   r  r  s   & rR   rI  #BinopNode.calculate_constant_result/  s7    ,T]];#MM))MM)) +rT   c                    \        V 4      pV P                  P                  V4      pV P                  P                  V4      p V! W44      #   \         d   pT P                  T4        R p?R # R p?ii ; irL   )r  r  rU  r  r  rZ  )rX   rT  r  r  r  rY  s   &&    rR   rU  BinopNode.compile_time_value/  se    %d+==33D9==33D9	-++ 	-))!,,	-s   A A2A--A2c                    V P                  V P                  P                  V4      V P                  P                  V4      V4      # rL   )r,	  r  r   r  r   s   &&rR   r   BinopNode.infer_type/  s<     8 8 = $ 8 8 =sD 	DrT   c                    V P                   P                  V4      V n         V P                  P                  V4      V n        V P                  V4      # rL   )r  r}  r  r?  r   s   &&rR   r}  BinopNode.analyse_types/  s?    33C833C8%%c**rT   c                   V P                  V4      '       dh   V P                  V P                  P                  V P                  P                  V4      V n        V P                  P
                  '       g   Q h^V n        V # V P                  4       '       d   V P                  V4       V P                  V P                  P                  V P                  P                  V4      V n        ^V n        V P                  P                  '       g)   V P                  \        uq n        V P                  W!4      #  V # V P                  4       '       d   V P                  V4       V # V P                  V4       V # r  )r  r,	  r  r   r  r<   r  r  coerce_operands_to_pyobjectsrx   r   r`  r  r  r  )rX   r{   original_types   && rR   r?  BinopNode.analyse_operation/  s/   $$S))((););)-););SBDI99,,,,,DL  !!##--c2((););)-););SBDIDL99(((+/99n(y~~m99 ) 	 ""$$&&s+  $$S)rT   c                v    V P                  V P                  P                  V P                  P                  4      # rL   )is_py_operation_typesr  r   r  rW   s   &rR   r  BinopNode.is_py_operation/  s)    ))$--*<*<dmm>P>PQQrT   c                    VP                   ;'       g5    VP                   ;'       g!    VP                  ;'       g    VP                  # rL   )rx   r  rX   type1type2s   &&&rR   r  BinopNode.is_py_operation_types/  s4      [[E$5$5[[[[EOO[rT   c                x    V P                  V P                  P                  V P                  P                  V4      # rL   )is_pythran_operation_typesr  r   r  r   s   &&rR   r  BinopNode.is_pythran_operation/  s,    ..t}}/A/A4==CUCUWZ[[rT   c                    \        V4      ;'       dE    \        V4      ;'       d2    \        V4      ;'       d    \        V4      ;'       g    \        V4      # rL   )r@   r;   r<   )rX   r  r  r{   s   &&&&rR   r  $BinopNode.is_pythran_operation_types/  sW    c" B B3E:Bi?bch?iB B&@@/%*@	BrT   c                    V P                   P                  P                  ;'       g!    V P                  P                  P                  # rL   r  r   r#  r  rW   s   &rR   r  BinopNode.is_cpp_operation/  s7    ""// / /}}!!..	0rT   c                   VP                  V P                  V P                  V P                  .4      pV'       g   V P	                  4        R # VP
                  pVP                  V n        VP                  V n        V P                  R8X  d?   ^V n        \        V 4      '       d'   VP                  \        P                  ! RR4      4       VP                  '       d   VP                  p\        VP                   4      ^8X  d>   V P                  P#                  VP                   ^ ,          P
                  V4      V n        MxV P                  P#                  VP                   ^ ,          P
                  V4      V n        V P                  P#                  VP                   ^,          P
                  V4      V n        VP$                  V n        R # )Nr   r  r  )r]  r   r  r  r  r   r   r   r  r   r   r   r   rX  rY  r   r   r`  r  )rX   r{   r   r  s   &&  rR   r  BinopNode.analyse_cpp_operation/  sC   ##DMMDMM4==3QROOJJ	(88(883& DL-d33$$[%<%<=UWg%hi!++Iy~~!# MM33INN14E4J4JCPDM MM33INN14E4J4JCPDM MM33INN14E4J4JCPDM))	rT   c                   V P                  WV4      '       d    \        \        V P                  W4      4      # V P	                  W4      '       d   VP
                  '       d   \        P                  pM"VP                  '       d   \        P                  pVP
                  '       d   \        P                  pM"VP                  '       d   \        P                  pVP                  '       g   VP                  '       d:   WJ d   V\        Jd   V P                  R 9   d   V# V P                  W4      pVe   V# \        # VP                  '       g   VP                  '       d   \        P                   # V P#                  W4      # )z**%+|&^)r  rH   r>   r   r  r  r   r   r  r   r  r   infer_builtin_types_operationr   rd  r   r2   compute_c_result_type)rX   r  r  r{   r,	  s   &&&& rR   r,	  BinopNode.result_type0  s   **5==1$--NOO%%e33**''',,**''',,$$$(=(=(=>e9&<R[A[ L"@@N*&&!!^^^u~~~(((--e;;rT   c                    R # rL   rV   r  s   &&&rR   r  'BinopNode.infer_builtin_types_operation*0  r  rT   c                V    V P                  4       '       d   V P                  4        R # R # rL   r  r   s   &&rR   r  BinopNode.nogil_check-0  r  rT   c                    V P                   P                  V4      V n         V P                  P                  V4      V n        R # rL   )r  r  r  r   s   &&rR   r  &BinopNode.coerce_operands_to_pyobjects10  s.    88=88=rT   c                z    V P                   P                  4       ;'       d    V P                  P                  4       # rL   r  r~  r  rW   s   &rR   r~  BinopNode.check_const50  *    }}((*JJt}}/H/H/JJrT   c                   < \         SV `  4       ;'       g=    V P                  P                  4       ;'       g    V P                  P                  4       # rL   )rN   r  r  r  )rX   rQ   s   &rR   r  BinopNode.is_ephemeral80  sL    $& M M**,M M040J0J0L	NrT   c                p   V P                   P                  pV P                  P                  pV P                  P                  '       Ed7   VP	                  R 4       VP	                  RV P                  4       ,          4       V P                  R8X  dq   VP	                  RV P                  4       : RV P                  4       : RV P                   P                  4       : RV P                  P                  4       : R2	4       R# VP	                  RV P                  4       : RV P                  4       : RV P                   P                  4       : R	V P                  : R	V P                  P                  4       : R
24       R# VP                  '       g   VP                  '       Ed#   V P                  V4      pV P                  R8X  d   RMRpVP                  '       d   V P                   P                  4       MV P                   P                  4       pVP                  '       d   V P                  P                  4       MV P                  P                  4       pVP	                  V P                  4       : RV: RV: RV: V: RVP                  V P                  4       V P                  4      : 2
4       V P                  V4       R# V P                  '       d   V P                  4       '       d   V P                   R8X  d   \#        YP                  V P                  4       : RV P%                  4       : R2V P                  P                  '       d   V P                  4       MRV P&                  V P(                  4       R# VP	                  V P                  4       : RV P%                  4       : R24       R# R# )z// Pythran binopr*  r  r;  r<  z$){pythonic::numpy::functor::power{}(r  r	  r=  r[  r>  z	, Py_NonerN  r9  r8  rf  r   r:  N)r  r   r  r<   r   r  r   r7  rx   r  r   r   r   r<  r  r  r   r   r  r   r  )rX   r   r  r  r  
extra_args
op1_result
op2_results   &&      rR   r  BinopNode.generate_result_code<0  su   """"99$$$JJ)*JJ3dkkmCD}}$

KKMKKMMM002MM002	4 5 

KKMKKMMM002MMMM0024 5 %"3"3"311$7H(,(=2J6;6G6G6G002T]]MaMaMcJ6;6G6G6G002T]]MaMaMcJJJKKM++DKKM488DFG   &\\\ $$&&4+?+?3+F'hh6:kkmTE_E_Ea(b9=9N9N9NTX(,(<(<d>S>SU
 

8R8R8TUV rT   c           
     r   V P                   P                  P                  '       g|   V P                  P                  P                  '       gV   \	        V P
                  R V P                  : RV P                   P                  : RV P                  P                  : R24       \        P                  V n        R# )zInvalid operand types for 'r  r  rb  N)	r  r   rd  r  r   r   r   r   r2   rW   s   &rR   r  BinopNode.type_errorh0  sp    ""+++==%%...$(( 2 2MM&&( ) ))	rT   )r   r   r   r  r  r  r   )r[   r\   r]   r^   r   rc  rI  rU  r   r}  r?  r  r  r  r  r  r  r,	  r  r  r  r~  r  r  r  r_   r`   ra   rb   s   @@rR   r  r  /  s      J'HG+-D+
0R\\B0*.<2>KN*WX* *rT   r  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )
CBinopNodeiq0  c                    \         P                  W4      pVP                  4       '       d   \        P                  Vn        V# rL   )r  r}  r  r   r2   r   r  s   && rR   r}  CBinopNode.analyse_typess0  s3    &&t1!!"--DIrT   c                    R # r6  rV   r  s   &&rR   r   CBinopNode.py_operation_functiony0  rF  rT   c                    R V P                   P                  4       : RV P                  : RV P                  P                  4       : R2# )r8  r[  rb  )r  r  r   r  rW   s   &rR   r   CBinopNode.calculate_result_code|0  s3    MM  "MMMM  "$ 	$rT   c                   R pVP                   '       g   VP                  '       d   VP                  V P                  V4      pVfA   VP                   '       g   VP                  '       d   VP                  V P                  V4      pV# rL   )r#  rX  r  r   )rX   r  r  r  s   &&& rR   r   CBinopNode.compute_c_result_type0  se    44T]]EJH!3!3!3u|||44T]]EJHrT   rV   N)
r[   r\   r]   r^   r}  r  r  r  r_   r`   r  s   @rR   r  r  q0  s     $ rT   r  c                    a  V 3R  lpV# )c                     < \        V 3R S/VB # )r   )r  )r   r_  r   s   &,rR   make_binop_node,c_binop_constructor.<locals>.make_binop_node0  s    #==H==rT   rV   )r   r  s   f rR   c_binop_constructorr  0  s    >rT   c                      a a ] tR tRt oRtRtRtR tR tR t	V 3R lt
R	 tR
 tV 3R ltR tR tR t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(/tRR)RR*RR+RR,/tR-tVtV ;t# ).NumBinopNodei0  TFNc                   V P                   P                  pV P                  P                  pV P                  W#4      V n        V P                  '       g   V P	                  4        R # V P                  P
                  '       d   RV n        V P                  P                  '       Ed&   VP                  R,          '       Ed   V P                  V P                  9   d   V P                  R9   dd   V P                   P                  4       '       dD   V P                  P                  4       '       g$   V P                  V P                   uV n         V n        RV n        VP                  R,          V n        V P                  P                  V P                  V P                  ,          VV P                  P                  4       R7      V n        RV n        V P                  '       d%   VP"                  '       dm   VP"                  '       dY   V P                   P%                  V P                  V4      V n         V P                  P%                  V P                  V4      V n        R # R # R # )NFr{	  Tzoverflowcheck.fold)	const_rhs)r   r   )r  r   r  r  r  rq  r  rm  rs   r   overflow_op_namesr   overflow_checkoverflow_foldoverflow_check_binopr  r  r  r`  rX   r{   r  r  s   &&  rR   r   NumBinopNode.analyse_c_operation0  s   """"..u<	yyyOO99DJIINN?33MMT%;%;;+99;; MM==??/3}}dmm,t}"&D!$0D!ED		66&&t}}5 MM==? 7 ADI  DLzzze...53C3C3C MM33DIIsCDM MM33DIIsCDM 4D.rT   c                   V P                  W4      '       du   \        P                  ! W4      pV\        P                  J d$   V P                  R 9  d   \        P
                  pV# \        P                  ! V\        P
                  4      pV# R# )z|^&N)c_types_okayr   r  r  r   r  rX   r  r  widest_types   &&& rR   r  "NumBinopNode.compute_c_result_type0  sv    U**$88FKj444==-","7"7K  )<<!6!68rT   c                ~    VP                   '       d   \        P                  ! W4      # \        P                  ! W!4      # rL   )r  r    result_type_of_builtin_operationr  s   &&&rR   r  *NumBinopNode.infer_builtin_types_operation0  s0       >>uLL>>uLLrT   c                D  < V P                   '       d   V P                   P                  '       d   R # V P                  P                   pV P                  P                   pV'       d/   VP                  '       d   V'       d   VP                  '       d   R # \        SV `  4       # r  )r   r  r  r  rN   r  rX   r  r  rQ   s   &  rR   r  NumBinopNode.may_be_none0  sj    999222""""U***u9N9N9N w"$$rT   c                    V P                   P                  4       pV P                  P                  4       pV'       d"   V'       d   R V: RV P                  : RV: R2# R# )r8  r[  rb  N)r  rF  r  r   )rX   value1value2s   &  rR   rF  'NumBinopNode.get_constant_c_result_code0  sA    99;99;ff#)4==&AArT   c                    VP                   ;'       g    VP                  ;'       d!    VP                   ;'       g    VP                  # rL   )r  r  r  s   &&&rR   r  NumBinopNode.c_types_okay0  s;      11EMM 4 4!!22U]]	4rT   c                H  < V P                   '       dY   W n        VP                  P                  \        P
                  R R7      V n        VP                  RV P                  ,          4       \        SV `%  V4       V P                   '       d   VP                  RV P                  ,          4       VP                  R4       VP                  VP                  V P                  4      4       VP                  R4       VP                  P                  V P                  4       R# R# )Fr  r  r  z8PyErr_SetString(PyExc_OverflowError, "value too large");r   N)r  overflow_bit_noder  r  r   r  overflow_bitr   rN   r  r   r   r  r  s   &&rR   r  %NumBinopNode.generate_evaluation_code0  s    %)" $ < <Z=R=R_d < eDJJy4#4#445(.JJ,t/@/@@AJJQRJJttxx01JJsONN''(9(9: rT   c                   V P                   ea   V P                  : RV P                  P                  4       : RV P                  P                  4       : RV P                   P
                  : R2# V P                  P                  '       g   V P                  '       d   \        V P                  4      '       d5   V P                  P                  4       V P                  P                  4       r!M3V P                  P                  4       V P                  P                  4       r!RV: RV P                  : RV: R2# V P                  P                  V P                  4      pVf3   \        V P                  RV P                  : RV P                  : 24       V: RV P                  P                  4       : RV P                  P                  4       : R2# )Nr8  r  r1  rb  r[  zbinary operator z not supported for )r/  r  r  r  r  r0  r   r#  r  r<   r7  r   	binary_opr   r   )rX   result1result2r  s   &   rR   r  "NumBinopNode.calculate_result_code0  s3   !!-		$$&$$&&&33	5 5
 YY###tzzztyy))#'==#?#?#A4==C_C_Ca#'==#7#7#94==;O;O;Q#*DMM7CC99&&t}}5D|dhhT]]\`\e\e fg$$&$$&( (rT   c                ~    VP                   ;'       g+    VP                   ;'       g    \        P                  WV4      # rL   )r  r  r  r  s   &&&rR   r  "NumBinopNode.is_py_operation_types1  sB    %% D D%%D D//UC	ErT   c                    V P                   V P                  ,          pV P                  '       d   VP                  R R4      pV# )	PyNumber_PyNumber_InPlace)py_functionsr   rc  r  )rX   r   r	  s   && rR   r  "NumBinopNode.py_operation_function	1  s8    ))$--8<<<)11+?QRMrT   r  PyNumber_Orr  PyNumber_Xorr1  PyNumber_Andr  PyNumber_Lshiftr  PyNumber_Rshiftr   PyNumber_Addr  PyNumber_Subtractr   PyNumber_Multiplyr  __Pyx_PyNumber_MatrixMultiplyr  __Pyx_PyNumber_Divider  PyNumber_FloorDivider  PyNumber_Remainderr  PyNumber_Powerr  r&  mullshift)
r  r  r  r  r  r0  r/  r  r  r   )r[   r\   r]   r^   r  r  r/  r  r  r  r  rF  r  r  r  r  r  r<  r  r_   r`   ra   rb   s   @@rR   r  r  0  s      END6M%4
;(,E
 	MNN%%N''3+*($L" 	eeex	rT   r  c                   &   a  ] tR tRt o R tRtV tR# )IntBinopNodei'1  c                    VP                   ;'       g    VP                  ;'       d!    VP                   ;'       g    VP                  # rL   )rm  r  r  s   &&&rR   r  IntBinopNode.c_types_okay*1  s7    -- 0 0..	0rT   rV   N)r[   r\   r]   r^   r  r_   r`   r  s   @rR   rN  rN  '1  s     0 0rT   rN  c                   2   a  ] tR tRt o R tR tR tRtV tR# )BitwiseOrNodei01  c                |    V P                   P                  '       g   V P                  P                  '       d   R .# R# )rI  N)r  r   r  r   s   &&rR   rN  (BitwiseOrNode.analyse_pytyping_modifiers31  s/    ==   DMM$9$9$9%&& %:rT   c                l   VP                  R4      ;_uu_ 4        VP                  V4      pRRR4       X'       g   R# VP                  4       '       gN   VP                  '       d#   VP	                  4       '       g   VP                  # \        VP                  RV 24       V#   + '       g   i     L; i)z=Analyse annotations in form `[...] | None` and `None | [...]`FNz)'[...] | None' cannot be applied to type )new_c_type_contextr  can_be_optionalr   r  r   r   )rX   r{   operand_nodettypes   &&& rR   _analyse_bitwise_or_none&BitwiseOrNode._analyse_bitwise_or_none71  s    ##E** 005E +$$&& $$$\-M-M-O-O,,,l&&*STYSZ([\ +*s   B##B3	c                    V P                   P                  '       d   V P                  WP                  4      # V P                  P                  '       d   V P                  WP                   4      # R # rL   )r  r   rZ  r  r   s   &&rR   r  BitwiseOrNode.analyse_as_typeF1  sO    ==   00mmDD]]"""00mmDDrT   rV   N)	r[   r\   r]   r^   rN  rZ  r  r_   r`   r  s   @rR   rR  rR  01  s     ' rT   rR  c                   J   a a ] tR tRt oR tV 3R ltR tV 3R ltRtVt	V ;t
# )AddNodeiN1  c                    VP                   '       d   VP                   '       g%   VP                  '       d   VP                  '       d   ^# \        P                  WV4      # r  )r  r  r  r  r  s   &&&rR   r  AddNode.is_py_operation_typesQ1  s?    ???u%2H2H2HUMcMcMc55d5IIrT   c                   < \         \        \        3pW9   d8   W#9   d2   V\        VP	                  V4      VP	                  V4      4      ,          # \
        SV `  W4      # rL   )r   r    r   r8  r  rN   r  )rX   r  r  string_typesrQ   s   &&& rR   r  %AddNode.infer_builtin_types_operationW1  s]     #NLA U%:L$6$6u$=$0$6$6u$=!? @ @w4UBBrT   c                V   VP                   '       g   VP                  '       d'   VP                  '       g   VP                  '       d   V# VP                   '       g   VP                  '       d'   VP                  '       g   VP                  '       d   V# \        P                  WV4      # rL   )rX  r  rm  r  r  r  r  s   &&&rR   r  AddNode.compute_c_result_type`1  sf    LLLENNNLlllennn5<<<5===L55U$ $rT   c                |  < V P                   P                  V P                  P                  r2R pV\        J g   V\        J d   V\        J d   V\        J d   RpME\	        V P                   \
        4      '       g!   \	        V P                  \
        4      '       d   RpMRpV'       d{   RpV P                  '       g!   V P                   P                  4       '       dG   VP                  P                  \        P                  ! RR4      4       W@P                  4       ,          pV'       d   V P                  '       g!   V P                   P                  4       '       d
   VR,          pV P                   P                  4       '       g!   V P                  P                  4       '       d
   VR,          pV# \        SV `=  V4      # )NTF__Pyx_PyUnicode_ConcatUnicodeConcatInPlacer  InPlaceSafe)r  r   r  r   r   r  rc  r  r   r   r   r   rt  r  rN   r  )rX   r   r  r  r  is_unicode_concatrQ   s   &&    rR   r  AddNode.py_operation_functionj1  s>   }}))4==+=+=uL E\$9$,)>$(!DMM+=>>*T]]\nBoBo$(! %*! /<<<4==#?#?#A#A$$55#//0FHZ[]5577D|||t}};;==	!}}((**dmm.G.G.I.IKw,T22rT   rV   )r[   r\   r]   r^   r  r  r  r  r_   r`   ra   rb   s   @@rR   r_  r_  N1  s      JC$3 3rT   r_  c                   &   a  ] tR tRt o R tRtV tR# )SubNodei1  c                r   VP                   '       g   VP                  '       d'   VP                  '       g   VP                  '       d   V# VP                   '       g   VP                  '       d5   VP                   '       g   VP                  '       d   \        P
                  # \        P                  WV4      # rL   )rX  r  rm  r  r   c_ptrdiff_t_typer  r  r  s   &&&rR   r  SubNode.compute_c_result_type1  sm    LLLENNNLlllennn5<<<5>>>...55U$ $rT   rV   N)r[   r\   r]   r^   r  r_   r`   r  s   @rR   ro  ro  1  s     $ $rT   ro  c                   |   a a ] tR tRt oRtR t]R 4       tR tR t	V 3R lt
V 3R ltV 3R	 ltV 3R
 ltRtVtV ;t# )MulNodei1  Fc                   V P                   P                  V4      V n         V P                  P                  V4      V n        V P                  4       V n        V P                  '       d   V P                   pV P                  pVP
                  '       d!   VP                  f   V P                  WV4      # VP
                  '       d!   VP                  f   V P                  WV4      # VP                  \        9   d   VP                  V4      V n        M+VP                  \        9   d   VP                  V4      V n         V P                  V4      # rL   )r  r}  r  calculate_is_sequence_mulis_sequence_mulr   r   analyse_sequence_mulr   r#   r  r?  rX   r{   r  r  s   &&  rR   r}  MulNode.analyse_types1  s   33C833C8#==? }}H}}H///H4H4H4P00II111h6J6J6R00II"88 ( 8 8 ="88 ( 8 8 =%%c**rT   c                \    V P                   ;'       d    V \        9   ;'       d	    V \        J# rL   )r  r#   r"   rS  s   &rR   is_builtin_seqmul_typeMulNode.is_builtin_seqmul_type1  s*    ##ff0F(Fff4WfKffrT   c                x   V P                   P                  pV P                  P                  pV\        P                  J g   VP
                  '       d   Y!r!V\        P                  J g   VP
                  '       d@   VP                  '       g   VP                  '       d   R # V P                  V4      '       d   R # R# r  )	r  r   r  r   r  rm  r  r  r|  r  s   &  rR   rv  !MulNode.calculate_is_sequence_mul1  s|    """"G$$$ 5G$$$%///**511rT   c                    VP                   e   Q hVP                  V4      pVP                  V4      Vn         VP                  V4      # rL   )r   r  r  r}  )rX   r{   r  mults   &&&&rR   rx  MulNode.analyse_sequence_mul1  sE    &&&$$S)..s3  %%rT   c                j  < V P                   '       d   V P                  P                  P                  '       d#   V P                  P	                  V4      V n        R # V P
                  P                  P                  '       d!   V P
                  P	                  V4      V n        R # \        SV `  V4       R # rL   )rw  r  r   r  r  r  rN   r  r  s   &&rR   r  $MulNode.coerce_operands_to_pyobjects1  s~    }}!!+++ $ @ @ E  ##--- $ @ @ E,S1rT   c                J   < V P                   ;'       g    \        SV `	  W4      # rL   )rw  rN   r  r&  s   &&&rR   r  MulNode.is_py_operation_types1  s!    ##RRuw'DU'RRrT   c                   < V P                   '       d[   VP                  P                  \        P                  ! R R4      4       V P
                  P                  P                  '       d   R# R# \        SV `%  V4      # )r  r  __Pyx_PySequence_Multiply__Pyx_PySequence_Multiply_Left)
rw  r   r   r   r   r  r   rx   rN   r  r  s   &&rR   r  MulNode.py_operation_function1  sh    --''(<>PQS26--2D2D2P2P2P.vVvvw,T22rT   c                  < VP                   '       dE   VP                   '       d3   V P                  V4      '       d   V# V P                  V4      '       d   V# VP                  '       d   V# VP                  '       d   V# \        SV `  W4      # rL   )r  r|  rm  rN   r  r&  s   &&&rR   r  %MulNode.infer_builtin_types_operation1  sv        U%:%:%:**511**511 <<<L<<<Lw4UBBrT   )rw  r  r  )r[   r\   r]   r^   rw  r}  rZ  r|  rv  rx  r  r  r  r  r_   r`   ra   rb   s   @@rR   rt  rt  1  sK     O+( g g&2S3C CrT   rt  c                   >   a a ] tR tRt oR tR tV 3R ltRtVtV ;t	# )MatMultNodei1  c                    R # r1  rV   r  s   &&&rR   r  !MatMultNode.is_py_operation_types1  r  rT   c                    R # rL   rV   r  s   &&&rR   r  )MatMultNode.infer_builtin_types_operation1  r  rT   c                   < VP                   P                  \        P                  ! R R4      4       \        SV `  V4       R# )MatrixMultiplyr  N)r   r   r   r   rN   r  r  s   &&rR   r  $MatMultNode.generate_evaluation_code1  s3    ))+*A*ABRTf*gh(.rT   rV   )
r[   r\   r]   r^   r  r  r  r_   r`   ra   rb   s   @@rR   r  r  1  s     / /rT   r  c                      a a ] tR tRt oRtRtRtRtRtR t	R t
R tR tR tV 3R	 ltR
 tR tR tR tR tR tRtVtV ;t# )DivNodei1  NFc                    \         V P                  ,          pV P                  R 8X  dH   V P                  f:   \        V\        4      '       d$   \        V\        4      '       d   \         R,          pV# )r  r  )r  r   truedivisionr   r   rX   op1op2r  s   &&& rR   !find_compile_time_binary_operator)DivNode.find_compile_time_binary_operator2  sO    ,T]];==CD$5$5$=#s##
3(<(<4T:rT   c                    V P                   P                  pV P                  P                  pV P                  W4      pV! W4      V n        R # rL   )r  r   r  r  r  s   &   rR   rI  !DivNode.calculate_constant_result
2  s<    mm++mm++55c?#C~rT   c                    V P                   P                  V4      pV P                  P                  V4      pV P                  W#4      p V! W#4      #   \         d   pT P                  T4        R p?R # R p?ii ; irL   )r  rU  r  r  r  rZ  )rX   rT  r  r  r  rY  s   &&    rR   rU  DivNode.compile_time_value2  sk    ==33D9==33D955hI	-++ 	-))!,,	-s   	A A8A33A8c                    V P                   '       g   VP                  R ,          '       d
   RV n        R# V P                  V n        R# )	cdivisionFN)r  rs   ctruedivisionr  r   s   &&rR   _check_truedivisionDivNode._check_truedivision2  s/    >>>S^^K88!&D!%!2!2DrT   c                    V P                  V4       V P                  V P                  P                  V4      V P                  P                  V4      V4      # rL   )r  r,	  r  r   r  r   s   &&rR   r   DivNode.infer_type2  sI      %MM$$S)MM$$S)30 	0rT   c                  < \         SV `  W4      pVe   V P                  R8X  d   V P                  '       g   V P                  '       d_   V\
        P                  J d   \        P                  # VP                  '       d&   \        P                  ! \        P                  V4      #  V# V\
        P                  J g   VP                  '       d   R pV# )Nr  )rN   r  r   r  r  r   r  r   r  rm  r  )rX   r  r  r,	  rQ   s   &&& rR   r  %DivNode.infer_builtin_types_operation%2  s    g;EI"t}}';   D$6$6$6'"2"22%333 '''%99*:R:RT_`` (
   0 00K4F4F4F"rT   c                   V P                  V4       \        P                  W4      pV P                  4       '       d   R V n        V P
                  P                  '       g   V P                  RJ ;'       da    VP                  R,          '       * ;'       dA    V P                  P                  4       '       * ;'       g    V P                  P                  ^ 8H  V n        V P                  '       g   VP                  R,          '       dA   V P                  P                  V4      V n        V P                  P                  V4      V n        V# )TNr  cdivision_warnings)r  r  r?  r  r  r   rx   rs   r  r   r   zerodivision_checkr  r  rX   r{   r  s   && rR   r?  DivNode.analyse_operation32  s      %//:   ""!DNyy$$$$& 9 9s~~k/J+J 9 9::<< 8 8]]22a7 # &&&#..9M*N*N $ > >s C $ > >s CrT   c                ~   V P                   R 8X  d   V P                  '       d   VP                  '       gt   VP                  '       gb   VP                  '       gP   VP                  '       g>   \        P
                  ! V\        P                  4      p\        P
                  ! W#4      pV# \        P                  WV4      # )r  )	r   r  r#  r  r   r  r  r  r  r  s   &&& rR   r  DivNode.compute_c_result_typeH2  s    ==CD$6$6$6u?Q?Q?QZ_ZlZlZl>>>%...(<<UJD\D\](<<UP""11$uEErT   c                B    V P                   P                  '       d   R # R# )"integer division or modulo by zerozfloat divisionr  rW   s   &rR   zero_division_messageDivNode.zero_division_messageP2      997#rT   c                   V P                   P                  '       Eg&   V P                   P                  '       Eg	   V P                  f   VP                  P
                  R,          ;'       gv    V P                   P                  ;'       gX    V P                   P                  ;'       g    V P                   P                  ;'       d    V P                   P                  '       * V n        V P                  '       gJ   VP                  P                  \        P                  ! RR4      P                  V P                   4      4       \        P                  W4       V P!                  V4       R # )Nr  DivIntCMath.c)r   rx   rq  r  r   rs   r  r  r  r|  r   r   r   r  r  r  generate_div_warning_coder  s   &&rR   r   DivNode.generate_evaluation_codeV2  s    yy$$$TYY-A-A-A~~%$$//< ^ ^yy))^ ^--BB1B1B\\DIIL\L\H\ 
 >>>  11++Hi@KKDIIVX--d9&&t,rT   c           	     
   V P                   pV P                  P                  '       Eg   V P                  '       Ed   V P                  '       g=   V P                  P                  R 4      : RV P                  P                  4       : R2pM!RV P                  P                  4       ,          pVP                  RV,          4       V'       d   VP                  4        VP                  RV P                  4       ,          4       V'       d   VP                  4        VP                  VP                  V P                  4      4       VP                  R4       V P                  P                  '       Ed   V P                  P                  '       Ed   V P                   R8w  Ed   VP"                  P%                  \&        P(                  ! RR	4      4       V P                  P                  P                  ^8X  d#   R
V P                  P                  4       ,          pMKV P                  P                  P+                  4       pRV: RV P                  P                  4       : RV: R2pVP                  RV P                  P+                  4       : RV: RV P,                  P                  4       : R24       V'       d   VP                  4        VP                  R4       V'       d   VP                  4        VP                  VP                  V P                  4      4       VP                  R4       VP"                  P.                  R,          '       Ed   V P                   R8w  Ed   VP"                  P%                  \&        P(                  ! RR4      4       VP                  RV P,                  P                  4       : RV P                  P                  4       : R24       RR\0        P2                  R\0        P4                  /,          pV'       d   RpVP                  RV,          4       VP                  4        VP                  VP7                  V P                  R R!7      4       VP                  V: R"V: R#24       VP                  4        M.TpVP                  VP7                  V P                  R R!7      4       VP9                  R$V,          4       VP;                  VP<                  4       VP                  R4       R%# R%# R%# R%# )&zeror8  rb  z%s == 0r  z/PyErr_SetString(PyExc_ZeroDivisionError, "%s");r   r  UnaryNegOverflowsr	  zunlikely(%s == -1)z(!(((z)-1) > 0)) && unlikely(z == (z)-1)zelse if (sizeof(z) == sizeof(long) && z-  && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(r  zLPyErr_SetString(PyExc_OverflowError, "value too large to perform division");r  r  CDivisionWarningr  r  z	 < 0) ^ (z	 < 0))) {z1__Pyx_cdivision_warning(%(FILENAME)s, %(LINENO)s)FILENAMELINENOr  zint %s;T)r\  r9  r:  zif (unlikely(%s)) N)r  r   rx   r  r  r  r  r  r   r   r  r   r   r   rm  r|  r   r   r   r   r   rz  r  rs   r   filename_cnamelineno_cnameset_error_infor  r  r  )rX   r   in_nogil	zero_testminus1_checktype_of_op2warning_coder  s   &&      rR   r  !DivNode.generate_div_warning_coded2  s   ((yy$$$&&&zzz,0II,>,>v,FH\H\H^ _I )DMM,@,@,B BI

09<='')

LtOiOiOkkl002

4??48845

399###		(8(8(8T]]c=Q$$55k6M6MNaco6pq}}))00A5';dmm>R>R>T'T&*mm&8&8&O&O&Q')=)=)?(NJJ#yy??A+#}}335	 7 8
  ++-JJmn446JJttxx89JJsO**+?@@T]]VYEY  11++,>	JL

 $ 4 4 6 $ 4 4 68 9  S 5 5v22V  
 "*KJJy;67'')JJt22488$2GHJJ[,GH002".KJJt22488$2GH-;<d../

31 FZ@G %rT   c           
     x   V P                   P                  '       g   V P                  4       '       d   \        P	                  V 4      # V P
                  P                  4       pV P                  P                  4       pV P                   P                  '       d   V P                  R 8X  d
   RV RV R2# V P                  '       g   V P                  '       d   V P                  '       d   V P                   V P
                  P                   8w  d   V P                   P                  V4      pV P                   V P                  P                   8w  d   V P                   P                  V4      pRV RV R2# V P                  P                  4       pRV P                   P                  4        RV RV R\        V4      R R2	# )r  zfloor(z / rb  r8  
__Pyx_div_r  r  )r   rq  r  r  r  r  r  r  r  r   r  r  r  r   specialization_namer  rX   r  r  b_is_constants   &   rR   r  DivNode.calculate_result_code2  s[   994#8#8#:#:55d;;mm""$mm""$99$--4"7C5C5**$...   99 2 22))--c2C99 2 22))--c2Cse3se1%% MM==?M		 = = ?@#bRPTUbPcdeOffghhrT   )r  r   r  r  r  r  )r[   r\   r]   r^   r  r  r  r  r  r  rI  rU  r  r   r  r?  r  r  r  r  r  r_   r`   ra   rb   s   @@rR   r  r  1  sg      ILM.-30*F$-= ~i irT   r  s'   %(?:%|(?:\([^)]+\))?[-+#,0-9 ]*([a-z]))c                   \   a a ] tR tRt oR tV 3R ltR tR tR tR t	V 3R lt
R	tVtV ;t# )
ModNodei2  c                ~    VP                   ;'       g+    VP                   ;'       g    \        P                  WV4      # rL   )r  r  r  r  s   &&&rR   r  ModNode.is_py_operation_types2  s>     J J??J J55d5I	KrT   c                   < V\         \        \        39   dG   VP                  '       g3   VP                  '       d!   V P
                  P                  4       '       g   V# \        SV `!  W4      # rL   )	r   r   r    r  rx   r  r  rN   r  r&  s   &&&rR   r  %ModNode.infer_builtin_types_operation2  sP    \:~>>$$$E,=,=,=T]]E^E^E`E`w4UBBrT   c                B    V P                   P                  '       d   R # R# )r  zfloat divmod()r  rW   s   &rR   r  ModNode.zero_division_message2  r  rT   c                   \         P                  W4      pV P                  P                  '       g   V P                  f<   VP
                  R,          ;'       g    V P                  P                  '       * V n        V P                  '       g`   V P                  P                  '       gD   V P                  P                  '       g(   \        V P                  RV P                  ,          4       V# )Nr  z(mod operator not supported for type '%s')r  r?  r   rx   r  rs   r|  rm  r  r   r   r  s   && rR   r?  ModNode.analyse_operation2  s    **45 yy$$$~~%!$!<!T!TDIIDTDT@T>>>$))*:*:*:499CUCUCUdhh JTYY VWrT   c                8   V P                   P                  '       g   V P                  '       g   V P                   P                  '       dK   VP                  P                  \        P                  ! R R4      P                  V P                   4      4       M_VP                  P                  \        P                  ! RR4      P                  V P                   V P                   P                  R7      4       \        P                  W4       V P                  V4       R# )ModIntr  ModFloat)math_h_modifierN)r   rx   r  rm  r   r   r   r   r  r  r  r  r  r  s   &&rR   r   ModNode.generate_evaluation_code2  s    yy$$$T^^^yy  11++Hi@KKDIIVX   11++J	BMM		4993L3L N NO 	--d9&&t,rT   c           
        V P                   P                  4       pV P                  P                  4       pV P                  '       dF   V P                  P
                  '       d!   R V P                  P                   RV RV R2# RV RV R2# V P                  P                  4       pRV P                  P                  4        RV RV R\        V4      R R2	# )fmodr8  r  rb  z % 
__Pyx_mod_r  )
r  r  r  r  r   r  r  r   r  r  r  s   &   rR   r  ModNode.calculate_result_code2  s    mm""$mm""$>>>yy!!!dii778#bQGG3%s3%q)) MM==?M		 = = ?@#bRPTUbPcdeOffghhrT   c                z  < V P                   P                  V P                  P                  r2V\        J dx   V P                   P	                  4       '       gT   VP
                  '       d   VP                  V4      '       g+   V\        J d#   \        V P                  \        4      '       g   R # R# \        SV `-  V4      # )__Pyx_PyUnicode_FormatSafePyUnicode_Format)r  r   r  r   r  r  rk  r   r   ro  rN   r  )rX   r   r  r  rQ   s   &&  rR   r  ModNode.py_operation_function3  s    }}))4==+=+=uL }}((**+++0@0@0G0G^+Jt}}N`4a4a3)w,T22rT   )r  )r[   r\   r]   r^   r  r  r  r?  r  r  r  r_   r`   ra   rb   s   @@rR   r  r  2  s0     K
C$
-i
3 
3rT   r  c                      a a ] tR tRt oRtRtR tV 3R ltV 3R ltR t	R t
V 3R	 ltR
 tV 3R ltV 3R ltRtVtV ;t# )PowNodei3  NFc                V    V P                   e   R # VP                  R,          V n         R # )Ncpow)is_cpowrs   r   s   &&rR   _check_cpowPowNode._check_cpow3  s    <<#~~f-rT   c                D   < V P                  V4       \        SV `	  V4      # rL   )r  rN   r   r  s   &&rR   r   PowNode.infer_type3  s!    w!#&&rT   c                D   < V P                  V4       \        SV `	  V4      # rL   )r  rN   r}  r  s   &&rR   r}  PowNode.analyse_types3  s!    w$S))rT   c                    R # rL   rV   r  s   &&&rR   r  %PowNode.infer_builtin_types_operation"3  r  rT   c                   \         P                  W4       V P                  P                  '       d   V P                  P                  P
                  '       dy   V P                  P                  V P                  V4      V n        V P                  P                  V P                  V4      V n        V P                  P                  R 4      V n
        R# \        V P                  R4       RV n
        R# V P                  P
                  '       d%   RV P                  P                  ,           V n
        R# V P                  P                  '       d   RV P                  P                  4       P!                  RR4      ,          V n
        TP#                  \$        P&                  ! RR4      P)                  V P                  V P                  P                  4       V P                  P*                  ;'       d    ^;'       g    ^ R	7      4       R# V P                  P,                  '       gI   \        V P                  R
V P                  P                  : RV P                  P                  : 24       R# R# )r  z complex int powers not supportedr  powz__Pyx_pow_%sr[  r  IntPowr  )r/	  r   r|  z+got unexpected types for C power operator: r  N)r  r  r   rq  r6  r  r  r`  r  r3  pow_funcr   r   r  rm  rz  r  r   r   r   r  r|  rd  r   s   &&rR   r  PowNode.analyse_c_operation&3  s   ((399yy""+++ $ 7 7		3 G $ 7 7		3 G $		 3 3D 9dhh BC )YY!DII$=$==DMYY*TYY-M-M-O-W-WX[]`-aaDM  '')<GG"mm99;99++1166Q H 89
 ###$((!]]//1C1CE F $rT   c                J  < ^ RI Hp Rp\        V P                  P                  V4      ;'       d"    V P                  P                  ^ 8  ;'       g$    VP
                  ;'       d    VP                  ^ 8H  pVP
                  ;'       g    V P                  P                  4       ;'       d_    \        V P                  P                  V4      ;'       d7    \        V P                  P                  4      V P                  P                  8H  pRpV P                  '       dv   \        SV `1  W4      pV P                  P                  4       '       gF   \        V P                  P                  \        4      ;'       d    V P                  P                  ^ 8  pMV'       g	   V'       d   \        SV `1  W4      pV P                  P                  4       '       g1   VP
                  ;'       d    VP                  pV'       d   RV n        Mt\        V P                  P                  \        4      ;'       d    V P                  P                  ^ 8  pM.V P                  W4      '       d   \        P                   pRV n        V'       d&   \        P"                  ! V\        P$                  4      pV# )r   )RealNFT)numbersr  r   r  r   rm  r|  r  r   r   r  rN   r  type_was_inferredr  r   rt  r  r  )	rX   r  r  r  c_result_typeop1_is_definitely_positivetype2_is_intneeds_wideningrQ   s	   &&&     rR   r  PowNode.compute_c_result_type=3  s    t}}44d; 3 3--2&
 &
 LL..U\\Q.	 	# || 
 
MM--/ P Pt}}44d;P P--.$--2O2OO 	
 <<<!G9%GM==4466t}}<<cBhht}}GdGdghGh  (<!G9%GM==4466!&!>!>%,,!-1D* t}}<<cBhht}}GdGdghGh  u,, '88M%)D"&::=*JbJbcMrT   c                   a  V 3R  lpS P                   : RV! S P                  4      : RV! S P                  4      : R2# )c                    < SP                   V P                   8X  d   V P                  4       # SP                   P                  V P                  4       4      # rL   )r   r  r  )rd	  rX   s   &rR   r1   /PowNode.calculate_result_code.<locals>.typecasti3  s<    yyGLL(~~''yy**7>>+;<<rT   r8  r  rb  )r  r  r  )rX   r1   s   f rR   r  PowNode.calculate_result_codeg3  s3    	= MMT]]#T]]#% 	%rT   c                  < V P                   P                  '       d   V P                  P                  ^8X  d   \	        V P                  P                  \
        4      '       de   V P                  P                   \        J dG   VP                  P                  \        P                  ! RR4      4       V P                  '       d   R# R# \        SV `9  V4      # )rd  PyNumberPow2r3  __Pyx_PyNumber_InPlacePowerOf2__Pyx_PyNumber_PowerOf2)r   rx   r  r   r   r   r  r   r   r   r   r   rc  rN   r  r  s   &&rR   r  PowNode.py_operation_functions3  s    II!!!--24==88#>>""n4--k.E.EnVb.cd|||70w,T22rT   c                  <a	 WP                   8X  d   V # V P                  Ef   V P                  '       Ed   VP                  '       g   VP                  '       d   V P                   \
        P                  J d   RV	3R llo	RpMVP                  '       d   R o	RpMR o	S	! V P                  4      w  rES	! V P                  4      w  rgV'       dn   V'       df   \        V P                  RX,          4       RV n        WPn        Wpn        V P                  V4      pVP                   V8w  d   VP                  W4      pV# \        S
V `1  W4      # )	NTc                    < V P                   P                  '       g   V P                   P                  '       d   R V 3# V'       d7   \        V \        4      '       d!   S! V P
                  RR7      V P
                  3# R# )TF)recurser  )r   r  rm  r   rs  r   )rd	  r  check_typess   &&rR   r  &PowNode.coerce_to.<locals>.check_types3  s\    ||,,,0C0C0C#W},:g7J#K#K*7;;FSS&&rT   za non-complex C numeric typec                 F    V P                   P                  '       d   R V 3# R# )Tr  r  rd	  s   &rR   r  r  3  s$    ||***#W},  +*rT   zan integer C numeric typec                     R# )Fr  rV   r  s   &rR   r  r  3  s    &&rT   zTreating '**' as if 'cython.cpow(True)' since it is directly assigned to a %s. This is likely to be fragile and we recommend setting 'cython.cpow' explicitly.r1  )r   r  r  r  rm  r   rt  r  r  r   r   r}  r`  rN   )rX   rw  r{   
msg_detail	check_op1r  	check_op2r  r  r  rQ   s   &&&      @rR   r`  PowNode.coerce_to3  s   yy KLL T%;%;%;"""hooo
 yyJ888' <
+ 9
'(7NI(7NIY #0 3=#= >  $ # #++C0;;(*#--h<Fw //rT   )r  r  r  r  r  )r[   r\   r]   r^   r  r  r  r   r}  r  r  r  r  r  r`  r_   r`   ra   rb   s   @@rR   r  r  3  sF      G.
'*F.(T
%
3*0 *0rT   r  c                      a  ] tR tRt o RtRR.tRtRtRtRt	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tRtR tR tR tR tRtV tR# )BoolBinopNodei3  aK  
Short-circuiting boolean operation.

Note that this node provides the same code generation method as
BoolBinopResultNode to simplify expression nesting.

operator  string                              "and"/"or"
operand1  BoolBinopNode/BoolBinopResultNode   left operand
operand2  BoolBinopNode/BoolBinopResultNode   right operand
r  r  TNc                    V P                   P                  V4      pV P                  P                  V4      p\        P                  ! W#4      # rL   )r  r   r  r   independent_spanning_typer  s   &&  rR   r   BoolBinopNode.infer_type3  s;    ((-((-33EAArT   c                    V P                   R 8X  d   V P                  P                  4       # V P                  P                  4       ;'       g    V P                  P                  4       # )or)r   r  r  r  rW   s   &rR   r  BoolBinopNode.may_be_none3  sI    ==D ==,,..==,,.MM$--2K2K2MMrT   c                    V P                   P                  pV P                  P                  pV P                  R 8X  d   T;'       d    TV n        R# T;'       g    TV n        R# )andN)r  r   r  r   )rX   r  r  s   &  rR   rI  'BoolBinopNode.calculate_constant_result3  sL    ==00==00==E!#+#8#8D #+#7#7xD rT   c                    V P                   P                  V4      pV P                  P                  V4      pV P                  R 8X  d   T;'       d    T# T;'       g    T# )r"  )r  rU  r  r   )rX   rT  r  r  s   &&  rR   rU   BoolBinopNode.compile_time_value3  sR    ==33D9==33D9==E!(((''x'rT   c                z    V P                   P                  4       ;'       g    V P                  P                  4       # rL   )r  r  r  rW   s   &rR   r  BoolBinopNode.is_ephemeral3  s*    }}))+KKt}}/I/I/KKrT   c                *   V P                   P                  V4      pV P                  P                  V4      p\        P                  ! VP
                  VP
                  4      V n        V P                  W!4      V n         V P                  W14      V n        V # rL   )r  r}  r  r   r  r   _wrap_operandry  s   &&  rR   r}  BoolBinopNode.analyse_types3  st     ==..s3==..s388MM8==*	**89**89rT   c                j    \        V\        \        34      '       g   \        WP                  V4      pV# rL   )r   r  BoolBinopResultNoder   )rX   rd	  r{   s   &&&rR   r)  BoolBinopNode._wrap_operand3  s*    'M3F#GHH)'99cBGrT   c                    V P                  V P                  V4      V n        V P                  V P                  V4      V n        R# )zj
Must get called by transforms that want to create a correct BoolBinopNode
after the type analysis phase.
N)r)  r  r  r   s   &&rR   wrap_operandsBoolBinopNode.wrap_operands3  s4    
 **4==#>**4==#>rT   c                B    V P                  \        P                  V4      # rL   r`  r   r  r   s   &&rR   r  BoolBinopNode.coerce_to_boolean3      ~~j44c::rT   c                    V P                   P                  W4      pV P                  P                  W4      p\        P	                  WV P
                  W4R 7      # ))r   r   r  r  )r  r`  r  r  r  r   )rX   rw  r{   r  r  s   &&&  rR   r`  BoolBinopNode.coerce_to3  sO    ==**89==**89&&]] ' 2 	2rT   c           	     P   VP                  V P                  4       WE3pV P                  R 8X  d   VP                  R4      ;rMVP                  R4      ;rV P                  P                  WW4WVV	4       Vw  rEVP                  V	4       V P                  P                  WW4WVV4       R# )r"  next_andnext_orN)r   r   r   r  r  generate_bool_evaluation_coder  r  )
rX   r   final_result_tempfinal_result_type	and_labelor_label	end_labelfall_throughouter_labelsmy_labels
   &&&&&&&&  rR   r:  +BoolBinopNode.generate_bool_evaluation_code3  s    dhh!,==E!#'>>*#==Hy"&..";;H33%68X`	b +	x 33%68Xd	frT   c           	     &   V P                  V4       V P                  P                  '       d   \        P                  MV P                  pR ;r4VP                  R4      pV P                  WP                  4       W$W5V4       VP                  V4       R # )Nbool_binop_done)	r  r   rx   r   r   r  r:  r  r  )rX   r   r,	  r>  r=  r?  s   &&    rR   r  &BoolBinopNode.generate_evaluation_code4  so    !!$'37993H3H3Hj//dii##NN#45	**4X`mvwy!rT   Truth-testing Python objectc                z    V P                   P                  4       ;'       d    V P                  P                  4       # rL   r  rW   s   &rR   r~  BoolBinopNode.check_const4  r  rT   c                    R # rL   rV   r  s   &&rR   r  ,BoolBinopNode.generate_subexpr_disposal_code4  r  rT   c                    R # rL   rV   r  s   &&rR   r   BoolBinopNode.free_subexpr_temps 4  r  rT   c           
        V P                   P                  '       dz   VP                  P                  \        P
                  R R7      pVP                  V: RV P                  P                  4       : RVP                  W P                  4      : 24       MV P                  P                  4       pW P                   P                  3# Fr  r  rf  )r   rx   r  r  r   r  r   r  r   r  r   r  rX   r   test_results   && rR   generate_operand1_test$BoolBinopNode.generate_operand1_test#4  s    99   ..66&&5 7 :KJJMM++-**;ACD --..0KYY2233rT   )r   r  r  r   )r[   r\   r]   r^   r  r   r  r   r  r  r   r  rI  rU  r  r}  r)  r/  r  r`  r:  r  ri  r~  r  r  rR  r_   r`   r  s   @rR   r  r  3  s     	 J'HGHHHB
N8(L

?;2f"" 0KK4 4rT   r  c                   n   a a ] tR tRt oRtRR.tRtRtRtV 3R lt	R t
R	 tR
 tR tR tR tRtVtV ;t# )r,  i24  a  
Intermediate result of a short-circuiting and/or expression.
Tests the result for 'truthiness' and takes care of coercing the final result
of the overall expression to the target type.

Note that this node provides the same code generation method as
BoolBinopNode to simplify expression nesting.

arg     ExprNode    the argument to test
value   ExprNode    the coerced result value node
r   r   TNc           	        < VP                  V4      p\        V4      p\        SV `  VP                  W\        V4      P                  W#4      R 7       R# ))r   r   r   N)r  	ProxyNoderN   r  r   r  r`  )rX   r   r,	  r{   rQ   s   &&&&rR   r  BoolBinopResultNode.__init__D4  sI    ""3'nGGC.**;< 	 	>rT   c                B    V P                  \        P                  V4      # rL   r2  r   s   &&rR   r  %BoolBinopResultNode.coerce_to_booleanM4  r4  rT   c                    V P                   P                   pV\        P                  J d   VP                  V4      p\	        W1V4      # rL   )r   r   r  r  r,  )rX   rw  r{   r   s   &&& rR   r`  BoolBinopResultNode.coerce_toP4  s:    hhllz---'',C"3#66rT   c                    R # rL   rV   r   s   &&rR   r  BoolBinopResultNode.nogil_checkX4  r  rT   c           
        V P                   P                  P                  '       dz   VP                  P	                  \
        P                  R R7      pVP                  V: RV P                   P                  4       : RVP                  W P                  4      : 24       MV P                   P                  4       pW P                   P                  P                  3# rO  )r   r   rx   r  r  r   r  r   r   r  r   r  rP  s   && rR   generate_operand_test)BoolBinopResultNode.generate_operand_test\4  s    88==$$$..66&&5 7 :KJJHH&&(**;ACD ((//+KXX]]6677rT   c                   VP                  V P                  4       V P                  P                  V4       V'       g
   V'       Ed<   V P	                  V4      w  rV	'       d,   V'       d$   V'       d   V P                  P                  V4       V'       d   R MRp
VP                  RV
: V: R24       V	'       d   VP                  P                  V4       V	'       d   V'       d	   V'       g   V P                  P                  V4       V'       d   WW8w  d   VP                  V4       V'       dT   V'       d5   VP                  R4       V	'       g   V P                  P                  V4       WG8w  d   VP                  V4       V'       d	   V'       g   V'       g	   V'       d   VP                  R4       V P                  P                  V4       V P                  P                  V4       VP                  V: RV P                  P                  V4      : R24       V P                  P                  V4       V P                  P                  V4       V P                  P                  V4       Wg8w  d   VP                  V4       V'       g	   V'       d   VP                  R4       V P                  P                  V4       R# )	r  rN  r  z) {r  r9  r:  r   N)r   r   r   r  r_  r  r   r  r  r  r   r  r/  r  r#  )rX   r   r;  r<  r=  r>  r?  r@  rQ  	uses_tempsenses   &&&&&&&&   rR   r:  1BoolBinopResultNode.generate_bool_evaluation_codej4  s   dhh 	))$/%)%?%?%E"KiH //5#CEJJ{;<++K8Y8//5H4h'JJz*$77=,MM),H

:&JJ//5JJ++D1JJ%6

8L8LM^8_`aJJ44T:HH++D1JJ!!$'(i(JJsOD!rT   c                    V # rL   rV   r   s   &&rR   r}  !BoolBinopResultNode.analyse_types4  r&  rT   rV   )r[   r\   r]   r^   r  r   r  r   r   r  r  r`  r  r_  r:  r}  r_   r`   ra   rb   s   @@rR   r,  r,  24  sN     
 wHG
CE>;785"n rT   r,  c                      a a ] tR tRt oRtRtRt. ROtR tR t	R t
R tR tR	 tV 3R
 ltV 3R ltR tR tR tR tR tR tRtVtV ;t# )r  i4  NTc                x    V P                   P                  V4      V P                  P                  V4      ,           # rL   )r  r  r  r   s   &&rR   r  CondExprNode.type_dependencies4  s,    }}..s3dnn6V6VWZ6[[[rT   c                    \         P                  ! V P                  P                  V4      V P                  P                  V4      4      # rL   )r   r  r  r   r  r   s   &&rR   r   CondExprNode.infer_type4  s9    33MM$$S)NN%%c*, 	,rT   c                    V P                   P                  '       d   V P                  P                  V n        R # V P                  P                  V n        R # rL   )r  r   r  r  rW   s   &rR   rI  &CondExprNode.calculate_constant_result4  s6    99$$$#'==#@#@D #'>>#A#AD rT   c                z    V P                   P                  4       ;'       g    V P                  P                  4       # rL   )r  r  r  rW   s   &rR   r  CondExprNode.is_ephemeral4  s*    }}))+LLt~~/J/J/LLrT   c                    V P                   P                  V4      V n         V P                  P                  V4      V n        V P                  P                  V4      V n        V P                  V4      # rL   )r  r  r  r}  r  r  r   s   &&rR   r}  CondExprNode.analyse_types4  sU    II==cB	33C855c:'',,rT   c                v   V P                   P                  pV P                  P                  p\        P                  ! W#4      V n        V P                  P
                  '       d0   \        P                  ! V P                  P                  4      V n        V P                  P                  '       d   \        V n
        MV P                  P                  '       d   V P                   P                  4       '       d!   \        V P                   P                  R 4       V P                  P                  4       '       d!   \        V P                  P                  R 4       VP                  '       g/   VP                  '       g   V P                  P                  '       dw   W P                  8w  d,   V P                   P                  V P                  V4      V n         W0P                  8w  d,   V P                  P                  V P                  V4      V n        V P                  P                   '       d   V P#                  4        V # )zPUnsafe C derivative of temporary Python reference used in conditional expression)r  r   r  r   r  r$  r	  rU  rx   r   rC  rX  r  r   r   r`  rd  r  )rX   r{   true_val_typefalse_val_types   &&  rR   r   CondExprNode.analyse_result_type4  sg   **,,88W	99!!!"55dii6M6MNDI99    .DYY}}))++dmm''){|~~**,,dnn((*|}$$$(B(B(BdiiF[F[F[		) $ 7 7		3 G*!%!9!9$))S!I99OOrT   c                  < V P                   P                  P                  '       g!   V P                   P                  V4      V n         V P                  P                  P                  '       g!   V P                  P                  V4      V n        R V n        V P                  V4      pVP                  P                  '       g,   W J d   \        \        V`  V4      pV# VP                  V4      pV# rL   )	r  r   rm  r  r  rC  r  rN   r  )rX   r{   outrQ   s   && rR   r  CondExprNode.coerce_to_index4  s    }}!!((( MM99#>DM~~"")))!^^;;C@DN &&s+xx{L#>sC
 
 ))#.
rT   c                  < V P                   P                  V8w  d!   V P                   P                  W4      V n         V P                  P                  V8w  d!   V P                  P                  W4      V n        R V n        V P                  V4      pVP                  V8w  d,   W0J d   \        \        V`  W4      pV# VP                  W4      pV# rL   )r  r   r`  r  rC  r  rN   r  )rX   rw  r{   rw  rQ   s   &&& rR   r`  CondExprNode.coerce_to4  s    ==) MM33HBDM>>(*!^^55hDDN &&s+88x{L#8G
 
 mmH2
rT   c                V   V P                   P                  P                  '       gn   V P                  P                  P                  '       gH   \	        V P
                  R V P                   P                  : RV P                  P                  : R24       \        P                  V n        R# )z.Incompatible types in conditional expression (r  rb  N)r  r   rd  r  r   r   r   r2   rW   s   &rR   r  CondExprNode.type_error5  sf    ""+++t~~/B/B/K/K/K$((##T^^%8%8: ;))	rT   c                    V P                   P                  4       ;'       d=    V P                  P                  4       ;'       d    V P                  P                  4       # rL   )r  r~  r  r  rW   s   &rR   r~  CondExprNode.check_const
5  sK    		%%' - -))+- -**,	.rT   c                   VP                  V P                  4       V P                  V4       V P                  P	                  V4       VP                  R V P                  P                  4       ,          4       V P                  WP                  4       VP                  R4       V P                  WP                  4       VP                  R4       V P                  P                  V4       V P                  P                  V4       R# )rz  r  r   N)r   r   r  r  r  r   r  eval_and_getr  r  r  r#  r  s   &&rR   r  %CondExprNode.generate_evaluation_code5  s     	dhh!!$'		**40

;!1!1!334$.

:$/

3		((.		T"rT   c                r   VP                  V4       V P                  P                  '       d   VP                  V4       MVP	                  V4       VP                  V P                  4       : R VP                  V P                  4       4      : R24       VP                  V4       VP                  V4       R# r  )r  r   r  r  r  r   r  r/  r=  r  r#  )rX   r   r  s   &&&rR   r  CondExprNode.eval_and_get5  s|    %%d+99'''++D1%%d+

tzz|0LMN**40rT   c                    R # rL   rV   r  s   &&rR   r  +CondExprNode.generate_subexpr_disposal_code(5  r  rT   c                    R # rL   rV   r  s   &&rR   r  CondExprNode.free_subexpr_temps+5  r  rT   )r   r  rC  r  r  r   )r  r  r  )r[   r\   r]   r^   r  r  r  r   r  r   rI  r  r}  r  r  r`  r  r~  r  r  r  r  r_   r`   ra   rb   s   @@rR   r  r  4  si      HIG0H\,
BM-2""*.
# rT   r  Py_LTPy_LEPy_EQPy_NEz<>Py_GTPy_GEc                      a  ] tR tRt o RtRt. tR tR tR t	R t
R tRR ltR	 tR
 tR tR tR tR tRR ltR tR tRtV tR# )CmpNodei<5  Nc                    \         # rL   r]  r   s   &&rR   r   CmpNode.infer_typeD5  r  rT   c                .   \         V P                  ,          pV P                  P                  p\	        V\
        4      '       d2   \	        V\
        4      '       d   \        V4      \        V4      8w  d   R # V P                  R9   Ed   \	        V P                  \        \        \        34      '       d   V P                  P                  '       g   V P                  R8H  V n        R # \	        V P                  \        4      '       d2   V P                  '       g    V P                  P                  4       V n        MR\	        V P                  \        4      '       d3   V P                  P                  '       g   V P                  R8H  V n        R # V! W4      V n        R # )Nr  r  r  )r  r   r  r   r   any_string_typer   r?  r  r|  r   cascader  rD	  rA	  )rX   operand1_resultr  operand2_results   &&  rR   "calculate_cascaded_constant_result*CmpNode.calculate_cascaded_constant_resultH5  s   ,T]];--7788?O<<_%o)>>==,,$--(Iw)GHH}})))+/==H+DD(x88$(MM$:$:$<DMDMM844}}444+/==H+DD(#OErT   c                (   \        V 4      pV P                  P                  V4      p V! W4      pV'       d0   V P
                  pV'       d   T;'       d    VP                  WB4      pV#   \         d   pT P	                  T4       R p R p?L\R p?ii ; irL   )r  r  rU  r  rZ  r  cascaded_compile_time_value)rX   r  rT  r  r  r  rY  r  s   &&&     rR   r  #CmpNode.cascaded_compile_time_value`5  s    %d+==33D9	(-F llGWWG$G$G$W  	))!,F	s   A) )B4BBc                    V P                   P                  P                  ;'       g!    V P                  P                  P                  # rL   r  rW   s   &rR   is_cpp_comparisonCmpNode.is_cpp_comparisonn5  s0    }}!!..QQ$--2D2D2Q2QQrT   c                   VP                   pVP                   pR pR pVP                  '       d   VP                  4       '       d   RpVP                  '       d   VP                  4       '       d   RpVP                  '       d   V'       d   V#  R# VP                  '       d   V'       d   V#  R# V'       d?   V'       d7   \        P
                  WV39   d   \        P                  # \        P                  # R# )FTN)	r   r   r   rm  r   r   r   r   r   )	rX   r{   r,  r  r  r  r  type1_can_be_inttype2_can_be_ints	   &&&&&    rR   find_common_int_typeCmpNode.find_common_int_typeq5  s      %%%(*M*M*O*O#%%%(*M*M*O*O#<<<    \\\    ''E>9%444%222rT   c                "   V P                   pVP                  pVP                  pR pVP                  '       g   VP                  '       Ed!   VR9  dg   VP                  '       g   VP                  '       dC   VP                  '       g   VP                  '       d   \	        V P
                  R4       \        pEMVP                  '       d=   VP                  \        P                  4      '       d   \        P                  M\        pMVP                  '       d=   VP                  \        P                  4      '       d   \        P                  M\        pMz\        P                  ! Wg4      pMcVP                  '       d*   VP                  '       d   \        P                  ! Wg4      pM(Ve   VP                  '       g   V P                  WW54      pVEf   VP                  '       g   VP                  '       d	   \        pEMdWg8X  d   TpEMZVP                  '       g   VP                  '       d   VP                  '       g   VP                   '       d&   VP#                  Wa4      '       d   \        pM\        pMVP                  '       g   VP                   '       d&   VP#                  Wq4      '       d   \        pM\        pM\        P$                  ! V4      '       d$   \        P$                  ! V4      '       d   \        pMeV P'                  W2V4       \        pMLVP%                  V4      '       d   TpM2VP%                  V4      '       d   TpMV P'                  W2V4       \        pVP                   '       d3   \)        V\*        4      '       g   \)        V\*        4      '       d   \,        pVe   VP.                  '       d   TpM\        P0                  ! WH4      pV P2                  '       d'   V P2                  P5                  WP6                  WT4      pV# )Nzcomplex types are unorderedr  r(  )r  r   rq  r  r   r   r2   rx   rk  r   r_  r   r   r  r  r  r  rT  rr  invalid_types_errorr   rV  r   rd  spanning_typer  find_common_typer   )	rX   r{   r,  r  common_typer  r  r  new_common_types	   &&&&&    rR   r  CmpNode.find_common_type5  s   == u///,&)))U-=-=-=)))U-=-=-=dhh =>",""":?:J:J7K_K_:`:`'"6"6ft""":?:J:J7K_K_:`:`'"6"6ft","@"@"N%"2"2"2(<<UJO (?(?(?"77TO"%///"0"'"""e&7&7&7###u88DD*4*8%%%88DD*4*8#33E::~?]?]^c?d?d&4O ,,X8D&0O&&u--"'&&u--"' ((x@",$$$*Xy*I*I*4Xy*I*I )O /":":":)K
 %22;PK<<<,,77]]HbKrT   c           
     t    \        V P                  R V: RVP                  : RVP                  : R24       R# )Invalid types for 'r  r  rb  N)r   r   r   )rX   r  r,  r  s   &&&&rR   r  CmpNode.invalid_types_error5  s$    dhh8==(--1 	2rT   c                0   V P                  4       '       * ;'       d{    V P                  4       '       * ;'       d^    V P                  4       ;'       gF    V P                  ;'       d#    V P                  P	                  4       ;'       g    V P
                  R9   # r  r  )is_ptr_containsis_c_string_containshas_python_operandsr  is_python_comparisonr   rW   s   &rR   r  CmpNode.is_python_comparison5  s    ((** 7 7--//7 7))+ 6 6\\IIdll&G&G&I6 6MM%55		8rT   c                    V P                   pVP                  V8w  d   VP                  W4      V n         V P                  '       d   V P                  P	                  W4       R # R # rL   )r  r   r`  r  coerce_operands_to)rX   rw  r{   r  s   &&& rR   r  CmpNode.coerce_operands_to5  sI    ====H$$..x=DM<<<LL++H: rT   c                \   V P                  4       ;'       dh    V P                  R J ;'       dR    V P                  R9  ;'       d;    V P                  4       '       * ;'       d    V P	                  4       '       * ;'       g/    V P
                  ;'       d    V P
                  P                  4       # )N)r  r  r  r  )r  special_bool_cmp_functionr   r  r  r  is_python_resultrW   s   &rR   r  CmpNode.is_python_result5  s    ))+ , ,//47, ,&FF, , ..00, , ))++	B B
 @@!>!>!@	CrT   c                   V P                   R9   ;'       d    V P                  P                  P                  ;'       dM    V P                  P                  P
                  ;'       gi    V P                  P                  \        J ;'       gE    V P                  P                  P                  ;'       d    V P                  P                  \        J # r  )	r   r  r   rm  r  r  r   r  r   rW   s   &rR   r  CmpNode.is_c_string_contains5  s    }} 00 : :##** X Xmm((229Vdmm6H6HJ6V9 9##33 8 8]]''<7		:rT   c                    V P                   R9   dP   V P                  P                  pVP                  ;'       g    VP                  ;'       d    VP
                  '       * # R# )r  Nr  )r   r  r   rX  r  r  )rX   container_types   & rR   r  CmpNode.is_ptr_contains5  sU    ==,,!]]//N"))DD^-D-D 1 1&0001 -rT   c                R   V P                   R9   EdQ   VP                  V P                  P                  rTV'       g'   VP                  '       Ed   VP                  '       Ed    V\        P
                  J g   V\        P
                  J d&   \        P                  ! RR4      V n        RV n	        R# V\        P                  J g   V\        P                  J d&   \        P                  ! RR4      V n        RV n	        R# V'       d^   ^RIHp T! V P                   R 8X  d   RMR	V \        P                  VV P                  4      pV'       d   Vw  V n	        V n        V n        pR# R# V P                   R9   Ed   V P                  P                  \        P                   J dF   V P                  P#                  R
4      V n        \        P                  ! RR4      V n        RV n	        R# V P                  P                  \        P$                  J dF   V P                  P#                  R
4      V n        \        P                  ! RR4      V n        RV n	        R# V P                  P                  \        P
                  J dF   V P                  P#                  R
4      V n        \        P                  ! RR4      V n        RV n	        R# V P                  P                  P&                  '       g!   V P                  P)                  V4      V n        \        P                  ! RR4      V n        RV n	        R# R# )r  UnicodeEqualsr  __Pyx_PyUnicode_EqualsTBytesEquals__Pyx_PyBytes_Equals)optimise_numeric_binopEqNer  PyDictContainsr  __Pyx_PyDict_ContainsTFPySetContains__Pyx_PySet_ContainsTFPyUnicodeContains__Pyx_PyUnicode_ContainsTFPySequenceContains__Pyx_PySequence_ContainsTFFr  r  )r   r   r  r  r   r   r   r   special_bool_cmp_utility_coder  r   Optimizer  r   r  special_bool_extra_argsr   r  r   rx   r  )	rX   r{   r  result_is_boolr  r  r  r  r  s	   &&&&     rR   "find_special_bool_compare_function*CmpNode.find_special_bool_compare_function 6  si   ==L(#==$--*<*<5%"7"7"7E<Q<Q<QG000EW=Q=Q4Q9D9P9PQ`bq9rD65MD2g000EW=O=O4O9D9P9PQ^`o9pD65KD2#@3 $ 54".. F  %7;5#. - ]]..}}!!W%6%66 $ ? ?@c d5@5L5LM]_q5r21J.##w'7'77 $ ? ?@c d5@5L5L_^p5q21I.##w';';; $ ? ?@c d5@5L5LM`bq5r21M.}}))555$(MM$D$DS$IDM5@5L5LMacu5v21N.rT   c                	   V P                   P                  '       d^   VP                  pR V,          pV P                  '       d4   VP                  P                  \        P                  ! RR4      4       RpMRpMVP                  pRpRpV P                  '       EdT   VP                   P                  '       d   VP                  4       p	MVP                  4       p	VP                   P                  '       d   VP                  4       p
MVP                  4       p
RP                  V P                   Uu. uF  qP                  4       NK  	  up4      pV P                  '       d&   VP                  P                  V P                  4       TP                  V: RV: RV P                  : RV	: RV
: RV P                  '       d   TM\        V,          : R	V: V! W P                   4      : 24       R# VP                   P                  '       d   VR9  d   VR9  g   Q V4       hV P                   P                  '       g!   V P                   \"        P$                  J g   Q hTP                  V: R
V P                   P                  '       d   RMR: RVP                  4       : RVP                  4       : R\        V,          : RV: V! W P                   4      : 24       R# VP                   P&                  '       dw   TP                  V: RV: RVR8H  ;'       d    R;'       g    R: VP                   P)                  R4      : RVP                  4       : RVP                  4       : R24       R# VP                   pVP                   pVP*                  '       g   VP*                  '       d   VP-                  V4      '       g   \.        pM+VP0                  '       d   \"        P2                  ! W4      pMTpVP5                  V4      pVP5                  V4      pV: RV: RV: RV P7                  V4      : RV: R2
pV P9                  4       '       d`   V P:                  R8X  dO   \=        TV P                   TV P                   P                  '       d   TMRV P>                  V P@                  4       R# VP                  V4       R# u upi )z__Pyx_XGOTREF(%s); PyBoolOrNullFromLongr  __Pyx_PyBoolOrNull_FromLong__Pyx_PyBool_FromLongrN  r  r9  r8  z)); z = PyObject_RichCompareBoolrf  r(  r  eqr  r[  r  r   N)r  r  r  )!r   rx   r   r  r   r   r   r   r  r   r  r  r  r  r   richcmp_constantsr   r   r  rq  r  r  r[  r   r  r  r/  
c_operatorr  r   r   r   r  )rX   r   r  r  r,  r  error_clausegot_refcoerce_resultr4  r5  	extra_argspecial_bool_extra_args_resultr  r  r  code1code2	statements   &&&&&&             rR   rv  CmpNode.generate_operation_code46  s   99   22L+k9G---  11++,BDVWY = 711LGM)))}}(((",,."//+}}(((",,."//+-1YY484P4P84Py  "4P8 .* 111  11$2T2TUJJ!22W6:6R6R6R2XijlXmm hh79: ]]&&&25E+E--1r1-99(((DII9O9O,OOOJJ))///BV;&&(&&(%b)) hh79 : ]]%%%JJd
""s((b(&&t,!!# $ MMEMME'''5+B+B+B!MM%00,!!!(<<UJ#&&{3E&&{3E#I %%''D,@,@C,G'HH#'99#8#8#8Kd(())+ 

9%8s   0Sc                *    VR 8X  d   R# VR8X  d   R# V# )r  r  r  r(  rV   )rX   r,  s   &&rR   r  CmpNode.c_operator6  s    :8^IrT   )r   r  r  r  r  rL   r  )r[   r\   r]   r^   r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  rv  r  r_   r`   r  s   @rR   r  r  <5  sq      !%$(! F0R6KZ28;C:12hX&t rT   r  c                      a  ] tR tRt o . ROtRtRtRtR tR t	R t
R tR tR	 tR
 tR tR tR tR tR tR tR tR tR tRtV tR# )r  i6  NFc                @   V P                   P                  V4      pV P                  P                  V4      p\        V4      '       g   \        V4      '       dB   \	        V4      '       d1   \	        V4      '       d    \        \        V P                  W#4      4      # \        # rL   )	r  r   r  r<   r:   rH   r>   r   r   r  s   &&  rR   r   PrimaryCmpNode.infer_type6  st    ((-((-5!!_U%;%;(//4Me4T4T"#5dmmU#RSS rT   c                    R# r  rV   r   s   &&rR   r   PrimaryCmpNode.type_dependencies6  r
  rT   c                x    V P                   '       d   Q hV P                  V P                  P                  4       R # rL   )r  r  r  r   rW   s   &rR   rI  (PrimaryCmpNode.calculate_constant_result6  s)    <<<//0M0MNrT   c                Z    V P                   P                  V4      pV P                  W!4      # rL   )r  rU  r  )rX   rT  r  s   && rR   rU  !PrimaryCmpNode.compile_time_value6  s'    ==33D9//??rT   c                l    V P                   pV'       d    V P                  Vn        VP                   pK'  R # rL   )r  r   )rX   cdrs   & rR   unify_cascade_type!PrimaryCmpNode.unify_cascade_type6  s'    llyyCH++C rT   c                   V P                   P                  V4      V n         V P                  P                  V4      V n        V P                  4       '       d<   V P	                  V4       V P
                  '       d   \        V P                  R 4       V # V P                   P                  pV P                  P                  p\        V4      '       g   \        V4      '       dP   \        V4      '       d?   \        V4      '       d.   \        \        V P                  W#4      4      V n        RV n        V # V P                  V4      '       d   V # V P
                  '       d!   V P
                  P                  V4      V n        V P                  R
9   EdF   V P!                  4       '       Ed[   RV n        RpV P
                  '       d   \        V P                  R4       V # V P                  P                  \"        J d(   VP%                  \&        P(                  ! RR4      4       MV P                   P                  \*        P,                  J d0   V P                   P/                  \*        P0                  V4      V n         V P                  P                  \2        Jd&   V P                  P/                  \2        V4      V n        VP%                  \&        P(                  ! RR4      4       V P                  P5                  R4      V n        EM|V P7                  4       '       d@   V P
                  '       d   \        V P                  R4       \*        P8                  V n        V # V P;                  WP                   4      '       dQ   V P                   P                  P<                  '       g!   V P                   P?                  V4      V n         RpRV n        M\@        pR	V n        MV P;                  WP                   4      '       dQ   V P                   P                  P<                  '       g!   V P                   P?                  V4      V n         RpRV n        M7V PC                  WP                  V P                   4      pVP<                  V n        Ve_   VPD                  '       gM   V P                   P                  V8w  d!   V P                   P/                  WA4      V n         V PG                  WA4       V P
                  '       dw   V P                  PI                  V4      V n        V P
                  PK                  V4       V P
                  PM                  V P                  V4      pWPP                  Jd   WPn'        V PQ                  4       '       d   \*        P@                  V n        M\*        P8                  V n        V PS                  4        V P                  '       g%   V P
                  '       g   V PT                  '       d   ^V n+        V # )z5Cascading comparison not yet supported for cpp types.FNz?Cascading comparison not yet supported for 'int_val in string'.PyUCS4InUnicoder  BytesContainsz+argument of type 'NoneType' is not iterablez?Cascading comparison not supported for 'val in sliced pointer'.Tr  ),r  r}  r  r  analyse_cpp_comparisonr  r   r   r   r<   r:   rH   r>   r   is_pycmp"analyse_memoryviewslice_comparisonr  r   r   r   r   r   r   r`  r   r   r  r  r  r  rx   r  r   r  rd  r  r   coerce_cascaded_operands_to_tempoptimise_comparisoncoerced_operand2r  r  r  r  )rX   r{   r  r  r  r  s   &&    rR   r}  PrimaryCmpNode.analyse_types6  s   33C833C8!!##'',|||dhh WXK""""5!!_U%;%;(//4Me4T4T'(:4==%(WX	 %22377K<<<<<55c:DL==,,((** %"<<<$(($efK==%%5(()@)@ARTc)de}}))Z-D-DD(,(?(?
@V@VX[(\}}));(,(?(?
C(P(()@)@Ra)bc $ ? ?A!C%%''<<<$(($ef&22	88mmLL}}))555$(MM$D$DS$IDM" %, $44S--HH==%%111 $ @ @ EK!DM//]]DMMRK'33DM";+?+?+?}}!![0 $ 7 7 I##K5<<< MM::3?DMLL99#>||77sKH}},(0%  """11DI"..DI!===DLLLD,J,J,JDLrT   c           
     d   V P                   P                  pV P                  P                  pR V n        VP	                  V P
                  V P                   V P                  .4      pVfL   \        V P                  RV P
                  : RV: RV: R24       \        P                  V n        RV n
        R# VP                  pVP                  '       d   VP                  pVP                  V n        VP                  V n        V P                  R8X  d?   RV n        \!        V 4      '       d'   VP#                  \$        P&                  ! R	R
4      4       \)        VP*                  4      ^8X  d>   V P                  P-                  VP*                  ^ ,          P                  V4      V n        MxV P                   P-                  VP*                  ^ ,          P                  V4      V n         V P                  P-                  VP*                  ^,          P                  V4      V n        VP.                  V n        R# )FNr  r  r  rb  r  r   Tr  r  )r  r   r  r  r]  r   r   r   r   r2   r  rX  rY  r   r   r  r   r   r   r   r   r   r`  r  )rX   r{   r  r  r   r  s   &&    rR   r  %PrimaryCmpNode.analyse_cpp_comparison7  s   """"##DMMDMM4==3QR=$((u. /"--DI(DJJ	!++I(88(883&DL-d33$$[%<%<=UWg%hiy~~!# MM33INN14E4J4JCPDM MM33INN14E4J4JCPDM MM33INN14E4J4JCPDM))	rT   c                   V P                   P                  ;'       g    V P                  P                  pV P                   P                  P                  ;'       g!    V P                  P                  P                  pRpV'       d?   V'       d7   V P
                  V9   d&   RV n        \        P                  V n        RV n	        R# R# )r  FT)r  r(  r  r  )
r  r   r  r   r  r   r  r   r  is_memslice_nonecheck)rX   r{   	have_none
have_sliceopss   &&   rR   r  1PrimaryCmpNode.analyse_memoryviewslice_comparison67  s    MM))BBT]]-B-B	mm((;; < <mm((;; 	*)(<!DM"..DI)-D&rT   c                   V P                   '       d   V P                  WP                  R R7      '       d   RV n         \        P                  V n        ^V n        V P                  '       d>   V P                  P                  V P                  VR R7      pW P                  Jd   W n
        V P                  4        V # \        P                  W4      # )T)r  F)r  r  r  r   r  r   r  r  r   r  r  r  r   r  )rX   r{   r  s   && rR   r   PrimaryCmpNode.coerce_to_booleanC7  s    ===66t 7 = = %&22	 <<<#||??s4  @  AH}}408-'')))$44rT   c                    V P                   P                  P                  ;'       g!    V P                  P                  P                  # rL   )r  r   rx   r  rW   s   &rR   r  "PrimaryCmpNode.has_python_operandsU7  s7    "".. . .}}!!--	/rT   c                    V P                   '       d   V P                  4        R # V P                  P                  4       ;'       d    V P                  P                  4       # r  )r  r  r  r~  r  rW   s   &rR   r~  PrimaryCmpNode.check_constY7  s@    <<<NN==,,.NN4==3L3L3NNrT   c                   V P                   V P                  r!VP                  P                  '       d^   V P                  R 8X  d   RpMRpRV: VP                  P                  R4      : RVP                  4       : RVP                  4       : R2# V P                  4       '       d^   VP                  \        J d   RpMRpV P                  R	8X  d   RpMRpRV: V: RVP                  4       : RVP                  4       : R2# \        V P                  4      '       d!   VP                  4       VP                  4       reM`VP                  4       VP                  4       reV P                  '       d0   VP                  P                  '       d   R
V,          pM	R
V,          pRV: RV P                  V P                  4      : RV: R2# )r(  r  rN  r8  r  r  z))__Pyx_UnicodeContainsUCS4__Pyx_BytesContainsr  ((PyObject *) %s.memview)r[  rb  )r  r  r   rq  r   r3  r  r  r   r<   r7  r  r  r  )rX   r  r  negationrY	  r4  r5  s   &      rR   r  $PrimaryCmpNode.calculate_result_code`7  s_   !]]DMM(==###}}$''-!!	# #
 &&((}},4.}}(!!	# # tyy))#+#:#:#<h>U>U>W#+??#4hoo6G---}}777"="G"="G . rT   c                .   V P                   P                  V4       V P                  P                  V4       V P                   F  pVP                  V4       K  	  V P                  '       Ed(   V P                  V4       V P                  WP                  4       V P                   V P                  V P                  4       V P                  '       dW   V P                  P                  YP                  4       V P                  ;'       g    V P                  V P                  R JR7       V P                   P                  V4       V P                   P                  V4       V P                  P                  V4       V P                  P                  V4       R # R # )Nneeds_evaluation)r  r  r  r  r  r  rv  r  r   r  r  r  r#  )rX   r   r  s   && rR   r  'PrimaryCmpNode.generate_evaluation_code7  s   ..t4..t455I..t4 6<<<%%d+(({{}t}}dmm=|||55++-)>)>)O)O$--%)%:%:$%F 6 H MM006MM$$T*MM006MM$$T* rT   c                r    V P                   P                  V4       V P                  P                  V4       R # rL   )r  r  r  r  s   &&rR   r  -PrimaryCmpNode.generate_subexpr_disposal_code7  s(     	,,T2,,T2rT   c                r    V P                   P                  V4       V P                  P                  V4       R # rL   )r  r#  r  r  s   &&rR   r  !PrimaryCmpNode.free_subexpr_temps7  s(     	  &  &rT   c                    V P                   P                  V4       V P                  P                  V4       V P                  '       d   V P                  P                  V4       R # R # rL   )r  rK  r  r  r  s   &&rR   rK  PrimaryCmpNode.annotate7  sF    t$t$<<<LL!!$' rT   )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  rI  rU  r  r}  r  r  r  r  r~  r  r  r  r  rK  r_   r`   r  s   @rR   r  r  6  sz     .K G!	O@Rh*65$/O(T+$3'( (rT   r  c                   ~   a  ] tR tRt o . ROtRtRt]tR t	R t
R tR tR tR tRR	 ltR
 tR tRR ltR tRtV tR# )CascadedCmpNodei7  Nc                    \         # rL   r]  r   s   &&rR   r   CascadedCmpNode.infer_type7  r  rT   c                    R# r  rV   r   s   &&rR   r  !CascadedCmpNode.type_dependencies7  r
  rT   c                Z    V P                   \        J;'       d    V P                   \        J# rL   rL  rW   s   &rR   r   #CascadedCmpNode.has_constant_result7  rP  rT   c                    V P                   P                  V4      V n         V P                  '       d!   V P                  P                  V4      V n        V # rL   )r  r}  r  r   s   &&rR   r}  CascadedCmpNode.analyse_types7  s<    33C8<<<<<55c:DLrT   c                B    V P                   P                  P                  # rL   )r  r   rx   rW   s   &rR   r  #CascadedCmpNode.has_python_operands7  s    }}!!---rT   c                    R # r  rV   rW   s   &rR   r  !CascadedCmpNode.is_cpp_comparison7  r  rT   c                b   V P                  W!V4      '       dJ   R V n        \        P                  V n        VP                  P
                  '       g   VP                  V4      pV P                  '       d<   V P                  P                  V P                  W#4      pW@P                  Jd   W@n
        V# r  )r  r  r   r  r   rx   r  r  r   r  r  )rX   r  r{   r  r  s   &&&& rR   r   #CascadedCmpNode.optimise_comparison7  s    223.QQ!DM"..DI==,,,#66s;<<<||77s[H}},(0%rT   c                B   V P                   P                  V4      V n         V P                   P                  \        J d2   V P                  R9   d!   V P                   P                  R4      V n         V P                  '       d   V P                  P                  V4       R# R# )r  r  Nr  )r  r  r   r   r   r  r  r  r   s   &&rR   r  ,CascadedCmpNode.coerce_operands_to_pyobjects7  sm    88===*t}}@P/P MM;;<_`DM<<<LL55c: rT   c                    V P                   '       d>   V P                  P                  V4      V n        V P                   P                  V4       R # R # rL   )r  r  r  r  r   s   &&rR   r  0CascadedCmpNode.coerce_cascaded_operands_to_temp7  s8    <<< MM::3?DMLL99#> rT   c                j   V P                   P                  '       d5   VP                  R V,          4       VP                  W P                   4       MVP                  RV,          4       V'       d   VP	                  V4       V P
                  P	                  V4       V P                   F  pVP	                  V4       K  	  V P                  WW0P                  V P
                  4       V P                  '       dI   V P                  P	                  YV P                  ;'       g    V P
                  V P                  RJR7       V'       d#   VP                  V4       VP                  V4       V P
                  P                  V4       V P
                  P                  V4       VP                  R4       R# )z if (__Pyx_PyObject_IsTrue(%s)) {rz  Nr  r   )r   rx   r   r&  r  r  r  rv  r   r  r  r  r#  )rX   r   r  r  r  r  s   &&&&& rR   r  (CascadedCmpNode.generate_evaluation_code7  s9   99   JJ9FBCOOFII.JJ{V+,--d3..t455I..t4 6$$TmmT]]	4<<<LL11d33DDt}}!%!6!6d!B 2 D ++D1%,,T2  &

3rT   c                    V P                   P                  V4       V P                  '       d   V P                  P                  V4       R # R # rL   )r  rK  r  r  s   &&rR   rK  CascadedCmpNode.annotate
8  s4    t$<<<LL!!$' rT   )r  r  r  r  r   )r  r  r  r  r  )r[   r\   r]   r^   r   r  r  rM  r   r   r  r   r}  r  r  r   r  r  r  rK  r_   r`   r  s   @rR   r"  r"  7  sZ     .K G,O:.
;?2( (rT   r"  r  r"  c                 :    \         V,          ! V 3R VRVRVRV/VB # )r   r  r  rc  )binop_node_classes)r   r   r  r  rc  r  s   &&&&&,rR   rf  rf  #8  sI     h'  	
   rT   c                   N   a a ] tR tRt oR.t]tV 3R ltR tR t	R t
RtVtV ;t# )r  i:8  r   c                   < \         SV `  VP                  4       Wn        \        '       d   \        V : R V P                  : 24       R# R# )z
 Coercing N)rN   r  r   r   r   rD  rX   r   rQ   s   &&rR   r  CoercionNode.__init__B8  s4    !>dDHH56 rT   c                    R # rL   rV   rW   s   &rR   rI  &CoercionNode.calculate_constant_resultH8  r  rT   c                D   V P                   P                  V4       V P                   P                  V P                  8w  d`   V P                  w  r#pVP                  W#V^,
          3\	        RRRV P                   P                  : RV P                  : R2R7      4       R# R# )r  coercer  z] to [])rk  tagrl  N)r   rK  r   r   r6   )rX   r   filelinecols   &&   rR   rK  CoercionNode.annotateL8  su    $88==DII%"hhODMM4s1u-~HTXX]]TXT]T]3^0` a &rT   c                    V # rL   rV   r   s   &&rR   r}  CoercionNode.analyse_typesS8  r&  rT   r  )r[   r\   r]   r^   r   rN  r   r  rI  rK  r}  r_   r`   ra   rb   s   @@rR   r  r  :8  s-     
 wH$O7a rT   r  c                   0   a  ] tR tRt o RtR tR tRtV tR# )ra  iW8  zW
Coerce an object to a memoryview slice. This holds a new reference in
a managed temp.
c                    VP                   '       g   Q hVP                  P                   '       d   Q h\        P                  W4       W n        ^V n        RV n        Wn        V P                  P                  V4       R# )r  TN)r  r   r  r  r  r  r   r$  rX   r   rw  r{   s   &&&&rR   r  !CoerceToMemViewSliceNode.__init__]8  sc    *****88.....d(	#		--c2rT   c                    VP                  V P                  P                  V P                  P	                  4       V P                  4       V P                  V4      4       R # rL   )r   r   from_py_call_coder   r   r  r   r  s   &&rR   r  -CoerceToMemViewSliceNode.generate_result_codeg8  sB    

499..HH KKMHH	
 	rT   )r   r  r   r  N)	r[   r\   r]   r^   r  r  r  r_   r`   r  s   @rR   ra  ra  W8  s     
3 rT   ra  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )r  ip8  c                <    \         P                  W4       W n        R # rL   )r  r  r   )rX   r   new_types   &&&rR   r  CastNode.__init__s8  s    d(	rT   c                6    V P                   P                  4       # rL   r  rW   s   &rR   r  CastNode.may_be_nonew8  r  rT   c                L    V P                   P                  V P                  4      # rL   )r   r/  r   rW   s   &rR   r  CastNode.calculate_result_codez8  s    xx!!$)),,rT   c                    R # rL   rV   r  s   &&rR   r  CastNode.generate_result_code}8  r  rT   rS  N)
r[   r\   r]   r^   r  r  r  r  r_   r`   r  s   @rR   r  r  p8  s     &- rT   r  c                      a  ] tR tRt o RtRR lt]P                  tRt	R t
R tR tR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tRtV tR# )rl  i8  Tc                2   VP                   '       g,   VP                  '       g   Q R VP                  : RV: 24       hVP                  '       d   VP                  V4      p\        P                  W4       W n        VP                  4       V n        W@n        R# )zPyTypeTest for z against non extension type N)	r  r  r   r  r  r  r=  rC  r#  )rX   r   rw  r{   r#  s   &&&&&rR   r  PyTypeTestNode.__init__8  sx     )))X-E-E-E 	UAD8T	UE###$$S)Cd(	IIKrT   zPython type testc                    V # rL   rV   r   s   &&rR   r}  PyTypeTestNode.analyse_types8  r&  rT   c                ^    V P                   '       d   R # V P                  P                  4       # r  )r#  r   r  rW   s   &rR   r  PyTypeTestNode.may_be_none8  s!    <<<xx##%%rT   c                6    V P                   P                  4       # rL   r  rW   s   &rR   r  PyTypeTestNode.is_simple8  r  rT   c                6    V P                   P                  4       # rL   r  rW   s   &rR   r  PyTypeTestNode.result_in_temp8  r   rT   c                6    V P                   P                  4       # rL   )r   r  rW   s   &rR   r  PyTypeTestNode.is_ephemeral8  s    xx$$&&rT   c                6    V P                   P                  4       # rL   r  rW   s   &rR   r  #PyTypeTestNode.nonlocally_immutable8  r  rT   c                F    V P                   P                  V4      V n         V # rL   )r   r  r   s   &&rR   r  PyTypeTestNode.coerce_to_temp8  s    88**3/rT   c                   V P                   V P                  P                   8w  g!   V P                  P                  4       '       g   V # V P                   P                  4       '       g   V # V P                  P	                  4       '       dI   V P
                  '       d7   V P                  P                  R V P                   P                  ,          4      # V P                  # )z!Cannot convert NoneType to %.200s)r   r   r  typeobj_is_availabler  r#  r  ry   rW   s   &rR   	reanalysePyTypeTestNode.reanalyse8  s    99%TXX-D-D-F-FKyy--//K88!!dlll88--.QTXT]T]TbTb.bccxxrT   c                    R # rL   rV   rW   s   &rR   rI  (PyTypeTestNode.calculate_constant_result8  r  rT   c                6    V P                   P                  4       # rL   r  rW   s   &rR   r  $PyTypeTestNode.calculate_result_code8  r  rT   c                   V P                   P                  4       '       g   \        V P                  R 4       R# V P                  '       * pV P                   P
                  pV P                  '       dJ   V'       dB   V P                   P                  WP                  V P                  P                  4       V4       R# V P                   P                  VP                  P                  V P                  P                  4       TV'       d   V P                  MRR7      pVP                  P                  \        P                   ! V'       d   RMRR4      4       VP#                  RV RVP%                  V P                  4       24       R# )	zICannot test type of extern C class without type object name specificationNF)exactRaiseUnexpectedTypeErrorExtTypeTestr  zif (!(rx  )r   rn  r   r   r#  r  r	  convert_to_basetyper   r   type_test_coder  rp  r   r   r   r   r   r   )rX   r   r  r  	type_tests   &&   rR   r  #PyTypeTestNode.generate_result_code8  s   yy--//$((gh%
))33"""II))$$((:L:L:NPZ[II,,NN  HH -<$))%	 - 
	 	))+*A*A*9&}+  	! 	

VI;c$//$((*C)DEFrT   c                <    V P                   P                  V4       R # rL   r  r  s   &&rR   r  ,PyTypeTestNode.generate_post_assignment_code8  r  rT   c                    R # rL   rV   r  s   &&rR   r  #PyTypeTestNode.allocate_temp_result8  r  rT   c                    R # rL   rV   r  s   &&rR   r  "PyTypeTestNode.release_temp_result8  r  rT   c                <    V P                   P                  V4       R # rL   r  r  s   &&rR   r#  PyTypeTestNode.free_temps8  r  rT   c                <    V P                   P                  V4       R # rL   )r   r  r  s   &&rR   r  !PyTypeTestNode.free_subexpr_temps8  s    ##D)rT   )r   r#  rC  r   Nr  )r[   r\   r]   r^   r	  r  r.   r  r  ri  r}  r  r  r  r  r  r  ro  rI  r  r  r  r  r  r#  r  r_   r`   r  s   @rR   rl  rl  8  sx       ..K$K&
$)'/!G05"* *rT   rl  c                      a a ] tR tRt oRtRtRV 3R lltRtR tR t	R t
R t]RR	 l4       t]RR
 l4       tR tR tRtVtV ;t# )r  i8  TNc                   < \         SV `  VP                  V4       VP                  V n        VP	                  4       V n        W n        W0n        \        T;'       g    R4      V n	        R # r  )
rN   r  r   r   r=  rC  exception_type_cnameexception_messager   exception_format_args)rX   r   r  r  r  rQ   s   &&&&&rR   r  NoneCheckNode.__init__8  sQ    #&HH	IIK$8!!2%*+@+F+FB%G"rT   c                    V # rL   rV   r   s   &&rR   r}  NoneCheckNode.analyse_types8  s	     rT   c                    R # r  rV   rW   s   &rR   r  NoneCheckNode.may_be_none9  r#  rT   c                6    V P                   P                  4       # rL   )r   rt  rW   s   &rR   rt  "NoneCheckNode.may_be_unsafe_shared9  r  rT   c                    V P                   P                  '       d   V P                  P                  4       # V P                   P                  '       d"   R V P                  P                  4       ,          # \        R4      h)r  zunsupported type)r   rx   r   r   r  r  r  rW   s   &rR   	conditionNoneCheckNode.condition	9  sW    99   88%%''YY))).1BBB.//rT   c                F    V ! WW54      pWgn         VP                  V4       R # rL   )r  put_nonecheck)rP   r   r   r  r  r  r  r   s   &&&&&&& rR   generateNoneCheckNode.generate9  s%     3.?W 04 rT   c                \    VP                  4       '       d   V P                  WW4WV4       R # R # rL   )r  r  )rP   r   r   r  r  r  r  s   &&&&&&&rR   generate_if_needed NoneCheckNode.generate_if_needed9  s(     ??LL$5Mbu rT   c                l   VP                  R V P                  4       ,          4       V P                  '       d   VP                  4        \        P
                  pV P                  '       d   TP                  RV P                  : R\        P
                  ! V P                  P                  R4      4      : RRP                  V P                   Uu. uF*  pRV! \        V4      P                  R4      4      ,          NK,  	  up4      : R24       MCVP                  RV P                  : RV! V P                  P                  R4      4      : R	24       V P                  '       d   VP                  4        VP                  VP                  V P                  4      4       VP                  R
4       R# u upi )zif (unlikely(%s == Py_None)) {zPyErr_Format(rg  zUTF-8z", r  z"%s"r  zPyErr_SetString(z");r   N)r   r  r  r   r
   escape_byte_stringr  r  r  r+  r  r   r   r   r   )rX   r   escaper   s   &&  rR   r  NoneCheckNode.put_nonecheck9  sR   

,t~~/??	A    !22%%%JJ))11**11':<		'+'A'AD'A #VCHOOG,D%EEE'AD E	F G JJ))t--44W=>@ A    ((*

4??488,-

3Ds   0F1c                (    V P                  V4       R # rL   )r  r  s   &&rR   r  "NoneCheckNode.generate_result_code89  s    4 rT   )r  r  r  rC  r   )rV   )r  rV   F)r[   r\   r]   r^   r  r   r  r  r}  r  rt  r  r  r  r  r  r  r_   r`   ra   rb   s   @@rR   r  r  8  sk     
 LDH K
/0 ! ! v v
4! !rT   r  c                   Z   a  ] tR tRt o ]t]t^t]3R ltRt	R t
R tR tR tR tR	tV tR
# )ro  i<9  c                   VP                   P                  V4      '       g)   \        VP                  R VP                   ,          4       M-VP                   P                  '       d   VP                  V4      p\        P                  W4       V\        J d   VP                   P                  '       g   VP                   P                  '       d   \        V4      V n         MuVP                   P                  '       g   VP                   P                  '       d   \        V n         M1VP                   P                  '       d   \        P                   V n         V P                   V n        R# VP                   P                  '       g   VP                   P                  '       dd   V\$        \&        39  dC   VP(                  R,          '       g*   \        VP                  RVP                   : RV: R24       V;V n         V n        R# W0n        R# )z$Cannot convert '%s' to Python objectrh   r  r  r  N)r   r}  r   r   rq  r  r  r  r   r  r)  r   r  r  r   r   r_  target_typer   r    rs   )rX   r   r{   r   s   &&&&rR   r  CoerceToPyTypeNode.__init__D9  sR   xx11#66#''ACHHLMXX    &&s+Cd(>!xx!!!SXX%;%;%;,S1	***chh.F.F.F(	$$$#00	#yyDXX388#9#9#9Z88NN+>??cggXXt%& ,0/DI(  $rT   zConverting to Python objectc                    R # r  rV   rW   s   &rR   r  CoerceToPyTypeNode.may_be_nonec9  r  rT   c                   V P                   P                  pV\        P                  J g   V\        P
                  J d   V P                   P                  V4      # VP                  '       d   \        V P                   V4      # VP                  '       g%   VP                  '       g   VP                  '       d   \        V P                   V4      # \        W4      # rL   )r   r   r   r  r   r`  r  r  CoerceCStringToBooleanNoderm  r  rX  r  )rX   r{   r  s   && rR   r  $CoerceToPyTypeNode.coerce_to_booleang9  s    88==z---W=N=N1N88**3// .dhh<<___ 1 1 1X___&txx55&t11rT   c                8    V P                   P                  V4      # rL   )r   r  r   s   &&rR   r  "CoerceToPyTypeNode.coerce_to_indexw9  s    xx'',,rT   c                    V # rL   rV   r   s   &&rR   r}   CoerceToPyTypeNode.analyse_typesz9  r  rT   c                R   VP                  V P                  P                  P                  V P                  P	                  4       V P	                  4       V P
                  4      : R VP                  V P	                  4       V P                  4      : 24       V P                  V4       R# )r  N)	r   r   r   to_py_call_coder  r  r   r   r<  r  s   &&rR   r  'CoerceToPyTypeNode.generate_result_code~9  su    

HHMM))!  " ##DKKM488<> 	? 	T"rT   )r  r   N)r[   r\   r]   r^   r   r   r  r  r  ri  r  r  r  r}  r  r_   r`   r  s   @rR   ro  ro  <9  sC      D KG&4 $: 0K2 -# #rT   ro  c                   0   a  ] tR tRt o ^tR tR tRtV tR# )rn  i9  c                |    VP                  V4      p\        P                  W4       \        P                  V n        R # rL   )r  r  r  r   r   r   rX   r   r{   s   &&&rR   r  CoerceIntToBytesNode.__init__9  s-    ""3'd(&&	rT   c           
        V P                   pVP                  4       pVP                  \        P                  \        P
                  \        P                  39  d   VP                  P                  '       d   VP                  R V: RV: R24       MVP                  RV,          4       VP                  RVP                  V P                  4      ,          4       VP                  R4       RpVP                  \        P                  JdG   VP                  P                  \        P                  RR7      pVP                  V: R	V: R
24       TpVP                  V P                  4       : RV: RVP                  V P                  4       V P                  4      : 24       Ve   VP                  P                  V4       V P                  V4       R# )zif ((z
 < 0) || (z
 > 255)) {zif (%s > 255) {zOPyErr_SetString(PyExc_OverflowError, "value too large to pack into a byte"); %sr   NFr  z	 = (char)r:  z = PyBytes_FromStringAndSize(&z, 1); )r   r  r   r   r   r   r  r|  r   r   r   r  r  r   r  r<  )rX   r   r   
arg_resultr4  s   &&   rR   r  )CoerceIntToBytesNode.generate_result_code9  sZ   hhZZ\
88J22&33&335 5 xx


, - 

,z9:JJ D??48846 7 JJsO88:111>>//
0F0FSX/YDJJ4<=J

KKM##DKKM488<> 	? NN''-T"rT   rS  N)	r[   r\   r]   r^   r  r  r  r_   r`   r  s   @rR   rn  rn  9  s      G'
# #rT   rn  c                   B   a  ] tR tRt o RtR tR tR tR tR t	Rt
V tR# )	rp  i9  Nc                   \         P                  W4       Wn        ^V n        VP	                  V4      '       g   \        VP                  RV,          4       V P                  P                  '       g   V P                  P                  '       d   V P                  P                  '       db   V P                  P                  '       dF   V P                  P                  P                  '       d    \        VP                  RV,          ^R7       V P                  P                  '       d   \        VP                  R^R7       R# R# R# )r  z$Cannot convert Python object to '%s'z=Obtaining '%s' from externally modifiable global Python valuer   a  Py_UNICODE* has been removed in Python 3.12. This conversion to a Py_UNICODE* will no longer compile in the latest Python versions. Use Python C API functions like PyUnicode_AsWideCharString if you need to obtain a wchar_t* on Windows (and free the string manually after use).N)r  r  r   r  r$  r   r   r  r  r   r   r   r  r   )rX   r,	  r   r{   s   &&&&rR   r  CoerceFromPyTypeNode.__init__9  s    d(	66s;;#''8;FH99$))"<"<"<xxDHHNNNtxx~~7Q7Q7QWZee! yy)))i  ! * #=rT   c                    V # rL   rV   r   s   &&rR   r}  "CoerceFromPyTypeNode.analyse_types9  r  rT   c                    V P                   P                  ;'       d>    V P                   P                  '       * ;'       d    V P                  P	                  4       # rL   )r   is_unowned_viewr  r   r  rW   s   &rR   r  !CoerceFromPyTypeNode.is_ephemeral9  s<    		))aD$))2D2D.Daa$((J_J_JaarT   c                   R pV P                   P                  '       d   V P                  P                   \        J dv   V P                   P                  P                  R4      '       dK   RV P                   P                  \        R4      R  ,           p\        P                  V P                  VR4       VP                  V P                   P                  V P                  P                  4       V P                  4       V P                  VVV P                  R7      4       V P                   P                  '       d   V P!                  V4       R # R # )N__Pyx_PyObject_As__Pyx_PyBytes__Pyx_PyObjectzexpected bytes, NoneType found)from_py_functionspecial_none_cvalue)r   r  r   r   r  r
  r   r  r  r   rP  r   r  r   r  rx   r<  )rX   r   r  s   && rR   r  )CoerceFromPyTypeNode.generate_result_code9  s    99488==J#>yy))445HII#2TYY5O5OPSTdPePf5g#g 004Aab

499..HH $++-4- $ 8 8 / 
 	
 99     & !rT   c                2    \        V P                  R 4       R# )z0Coercion from Python not allowed without the GILNrR  r   s   &&rR   r   CoerceFromPyTypeNode.nogil_check9  s    dhhJKrT   r  )r[   r\   r]   r^   r  r  r}  r  r  r  r_   r`   r  s   @rR   rp  rp  9  s.     
 !(b' L LrT   rp  c                     a  ] tR tRt o ]P
                  t]P                  R]P                  R]P                  R]P                  R]P                  R]P                  R]P                  R/tR tR	 tR
tR tR tR tR tRtV tR# )r  i9  r  r  __Pyx_PySet_GET_SIZE__Pyx_PyBytes_GET_SIZE__Pyx_PyByteArray_GET_SIZE__Pyx_PyUnicode_IS_TRUEc                z    \         P                  W4       VP                  P                  '       d
   ^V n        R# R# r  )r  r  r   rx   r  r  s   &&&rR   r  CoerceToBooleanNode.__init__9  s,    d(88DL  rT   c                    V P                   P                  P                  '       dF   V P                  P	                  V P                   P                  4      f   V P                  4        R # R # R # rL   )r   r   rx   _special_builtinsrr   r  r   s   &&rR   r  CoerceToBooleanNode.nogil_check9  sG    88==$$$)?)?)C)CDHHMM)R)ZNN *[$rT   rG  c                ~    V P                   '       d   V P                  4        R # V P                  P                  4       # r  )r  r  r   r~  rW   s   &rR   r~  CoerceToBooleanNode.check_const:  s+    <<<NNxx##%%rT   c                D    R V P                   P                  4       ,          # )z	(%s != 0)r  rW   s   &rR   r  )CoerceToBooleanNode.calculate_result_code:  s    TXX__...rT   c           
        V P                   '       g   R # V P                  P                  V P                  P                  4      pVEeU   V P                  P                  4       '       dP   VP                  RV P                  P                  4        RV P                  4        R24       VP                  R4       VP                  R4       VP                  R\        P                   RV RV P                  P                  4        R	24       VP                  VP                  R
\        P                   R2V P                  4      4       VP                  V P                  4        R\        P                   R24       VP                  R4       VP                  4        R # VP                  V P                  4       : RV P                  P                  4       : RVP                  V P                  4       V P                  4      : 24       R # )Nr  z == Py_None) r	  elser  r  r9  r8  r  z((!CYTHON_ASSUME_SAFE_SIZE) && z < 0)z = (z != 0);r   r  rf  )r  r  rr   r   r   r  r   r   r  r   r  r   r   r  )rX   r   	test_funcs   && rR   r  (CoerceToBooleanNode.generate_result_code:  s|   |||**..txx}}=	 xx##%%

T$(("4"4"6!7}T[[]OSXYZ

6"JJsO JJV%<%<$=S1TXXM_M_MaLbbdefJJt))1&2I2I1J%PRVRZRZ\ ]JJ$++-V-D-D,EWMNJJsOJJLJJKKMHH&&(**4;;=$((CEFrT   c                    V # rL   rV   r   s   &&rR   r}  !CoerceToBooleanNode.analyse_types&:  r&  rT   r  N)r[   r\   r]   r^   r   r  r   r   r   r   r   frozenset_typer   r    r   r  r  r  ri  r~  r  r  r}  r_   r`   r  s   @rR   r  r  9  s      !!D 	!8!9!7!7!9!=!:
 0K&/F0 rT   r  c                   <   a a ] tR tRt oRtV 3R ltR tRtVtV ;t	# )r  i*:  zSpecial 'CoerceToBooleanNode' for C string arguments which checks the pointer
and additionally that the C string is non-empty.
c                   < VP                   P                  '       g   Q VP                   4       hVP                  V4      p\        SV `  W4       R # rL   )r   r  r  rN   r  )rX   r   r{   rQ   s   &&&rR   r  #CoerceCStringToBooleanNode.__init__.:  s?    xx!!!+388+!""3'"rT   c                    V P                   P                  4       pV P                   P                  P                  '       d   R V R2# RV RV R2# )z((z
)[0] != 0)r8  z
 != 0 && ()r   r  r   r  r  s   & rR   r  0CoerceCStringToBooleanNode.calculate_result_code3:  sJ    hhoo88==!!!uJ''se:cU*55rT   rV   )
r[   r\   r]   r^   r  r  r  r_   r`   ra   rb   s   @@rR   r  r  *:  s     #
6 6rT   r  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )rs  i;:  c                    VP                   P                  '       d   VP                  V4      pW n         \        P	                  W4       VP                  V4       R # rL   )r   rq  r  r  r  rZ  rM  s   &&&&rR   r  CoerceToComplexNode.__init__=:  sC    88&&s+C	d(005rT   c                   V P                   P                  P                  '       d|   V P                   P                  P                  V P                   P	                  4       4      pV P                   P                  P                  V P                   P	                  4       4      pMV P                   P	                  4       pR pV P                  P                  : RV: RV: R2# )rk  r8  r  rb  )r   r   rq  r7  r  r8  rc  )rX   r:  r;  s   &  rR   r  )CoerceToComplexNode.calculate_result_codeD:  s    88==###//0ABI//0ABI)II		$$ 	rT   c                    R # rL   rV   r  s   &&rR   r  (CoerceToComplexNode.generate_result_codeP:  r  rT   c                    V # rL   rV   r   s   &&rR   r}  !CoerceToComplexNode.analyse_typesS:  r&  rT   rS  N)
r[   r\   r]   r^   r  r  r  r}  r_   r`   r  s   @rR   rs  rs  ;:  s     6
 rT   rs  c           
         ^RI Hp \        P                  ! \        P                  \        P
                  ! R\        P                  R4      \        P
                  ! R\        P                  R4      .RRRR7      p\        V P                  RV\        P                  ! RR	4      W! V P                  4      .R
7      pVP                  V4      pVP                  V8w  d   VP                  W4      pV# )r  )HasNoGilNoder   Nr  T)r   r   r   __Pyx_SoftComplexToDoubleSoftComplexToDoublez	Complex.c)r   r   r~  )r  r  r   r]  r  r  rt  r  rB
  r   r   r   r}  r   r`  )r   rw  r{   r  
cfunc_typer  s   &&&   rR   ru  ru  W:  s    '%%  

!
!':+G+G
N

!
!*j.D.Dd
K	NJ #"../DkR\#''*+D c"DyyH~~h,KrT   c                   B   a  ] tR tRt o R tRtR tR tR tR t	Rt
V tR	# )
r  in:  c                   \         P                  W4       V P                  P                  P	                  4       V n        V P                  P
                  V n        ^V n        V P                  P                  '       d   \        V n	        R# R# r  )
r  r  r   r   as_argument_typer   r  rx   r   rC  r  s   &&&rR   r  CoerceToTempNode.__init__s:  s^    d(HHMM224	#xx7799    .D !rT   z#Creating temporary Python referencec                    V # rL   rV   r   s   &&rR   r}  CoerceToTempNode.analyse_types}:  r  rT   c                6    V P                   P                  4       # rL   r  rW   s   &rR   r  CoerceToTempNode.may_be_none:  r  rT   c                    V P                   P                  V4      V n         V P                   P                  4       '       d   V P                   # V P                   P                  V n        V P                  V n        V # rL   )r   r  r  r   rC  r   s   &&rR   r  "CoerceToTempNode.coerce_to_boolean:  sT    88--c28888OHHMM	 IIrT   c                   VP                  V P                  4       : R V P                  P                  V P	                  4       4      : R24       V P
                  '       d   V P                  P                  '       g1   VP                  V P                  4       V P	                  4       4       R# VP                  V P                  4       V P                  V P                  '       * R7       R# R# )r9  r:  r  N)r   r  r   r/  r=  r  r   r  r  r  r  r  s   &&rR   r  %CoerceToTempNode.generate_result_code:  s     	

KKM488--djjl;= 	>99///tzz|<//tyy9=9N9N5N 0 P	  rT   )r   r   r  rC  r   N)r[   r\   r]   r^   r  ri  r}  r  r  r  r_   r`   r  s   @rR   r  r  n:  s,     
/ 8K&
P 
PrT   r  c                   v   a a ] tR tRt oRtRtV 3R ltR tR tR t	R t
R	 tR
 tR tR tR tR tRtVtV ;t# )rV  i:  z
A node that should not be replaced by transforms or other means,
and hence can be useful to wrap the argument to a clone node

MyNode    -> ProxyNode -> ArgNode
CloneNode -^
Nc                h   < \         SV `  V4       VP                  V n        V P                  4        R # rL   )rN   r  r   update_type_and_entryr=  s   &&rR   r  ProxyNode.__init__:  s*    "22""$rT   c                f    V P                   P                  V4      V n         V P                  4        V # rL   )r   r  r  r   s   &&rR   r}  ProxyNode.analyse_types:  s)    88//4""$rT   c                8    V P                   P                  V4      # rL   r  r   s   &&rR   r   ProxyNode.infer_type:  r  rT   c                    \        V P                  R R4      pV'       d"   Wn        V P                  P                  V n        \        V P                  RR4      pV'       d	   W n        R# R# r   Nr   )r  r   r   rC  r   )rX   r   	arg_entrys   &  rR   r  ProxyNode.update_type_and_entry:  sM    txx.I $ 5 5DDHHgt4	"J rT   c                <    V P                   P                  V4       R # rL   )r   r  r  s   &&rR   r  ProxyNode.generate_result_code:  s    %%d+rT   c                6    V P                   P                  4       # rL   r  rW   s   &rR   r  ProxyNode.result:  r  rT   c                6    V P                   P                  4       # rL   r  rW   s   &rR   r  ProxyNode.is_simple:  r  rT   c                6    V P                   P                  4       # rL   r  rW   s   &rR   r  ProxyNode.may_be_none:  r  rT   c                <    V P                   P                  V4       R # rL   )r   r  r  s   &&rR   r  "ProxyNode.generate_evaluation_code:  s    ))$/rT   c                <    V P                   P                  V4       R # rL   )r   r  r  s   &&rR   r   ProxyNode.generate_disposal_code:  s    ''-rT   c                <    V P                   P                  V4       R # rL   r  r  s   &&rR   r#  ProxyNode.free_temps:  r  rT   )r   r   r   rC  r   )r[   r\   r]   r^   r  r  r  r}  r   r  r  r  r  r  r  r  r#  r_   r`   ra   rb   s   @@rR   rV  rV  :  sM      K%

(#,!$&0." "rT   rV  c                      a a ] tR tRt o. tRtR tR tR tR t	R t
R tV 3R	 ltR
 tR tR tR tR tR tRtVtV ;t# )r  i:  Nc                    \         P                  W4       VP                  V n        \        VR R4      pV'       d   W n        VP
                  V n        \        VRR4      pV'       d	   W0n        R# R# r  )r  r  r   r  r   rC  r   )rX   r   r   r	  s   &&  rR   r  CloneNode.__init__:  s]    d("22sFD)I # 0 0DC$/	"J rT   c                6    V P                   P                  4       # rL   r  rW   s   &rR   r  CloneNode.result:  r  rT   c                6    V P                   P                  4       # rL   r  rW   s   &rR   r  CloneNode.may_be_none:  r  rT   c                8    V P                   P                  V4      # rL   )r   r  r   s   &&rR   r  CloneNode.type_dependencies:  r
  rT   c                8    V P                   P                  V4      # rL   r  r   s   &&rR   r   CloneNode.infer_type:  r  rT   c                    V P                   P                  V n        V P                   P                  V n        ^V n        \	        V P                   RR4      pV'       d   W n        V # )r  r   N)r   r   rC  r  r  r   )rX   r{   r	  s   && rR   r}  CloneNode.analyse_types:  sI    HHMM	 HH11DHHgt4	"JrT   c                   < V P                   P                  '       d   V P                   P                  W4      # \        SV `	  W4      # rL   )r   r   r`  rN   )rX   	dest_typer{   rQ   s   &&&rR   r`  CloneNode.coerce_to:  s8    8888%%i55w 00rT   c                    R # r1  rV   rW   s   &rR   r  CloneNode.is_simple:  r  rT   c                    R # rL   rV   r  s   &&rR   r  "CloneNode.generate_evaluation_code;  r  rT   c                    R # rL   rV   r  s   &&rR   r  CloneNode.generate_result_code;  r  rT   c                    R # rL   rV   r  s   &&rR   r   CloneNode.generate_disposal_code;  r  rT   c                    V P                   '       d1   VP                  V P                  4       V P                  4       4       R # R # rL   )r  r  r  r=  r  s   &&rR   r  'CloneNode.generate_post_assignment_code;  s,     <<<OODKKM4::<8 rT   c                    R # rL   rV   r  s   &&rR   r#  CloneNode.free_temps;  r  rT   )r   r   r  rC  r   )r[   r\   r]   r^   r   r  r  r  r  r  r   r}  r`  r  r  r  r  r  r#  r_   r`   ra   rb   s   @@rR   r  r  :  sW      HK	#!&/(1
9 rT   r  c                   `   a a ] tR tRt oRtRt]R 4       tR tR t	R t
R
V 3R lltR	tVtV ;t# )CppOptionalTempCoercioni;  z
Used only in CoerceCppTemps - handles cases the temp is actually a OptionalCppClassType (and thus needs dereferencing when on the rhs)
Fc                .    V P                   P                  # rL   r  rW   s   &rR   r   CppOptionalTempCoercion.type;  r  rT   c                D    R V P                   P                  4       ,          # r  r  rW   s   &rR   r  -CppOptionalTempCoercion.calculate_result_code;  s    ***rT   c                    R # rL   rV   r  s   &&rR   r  ,CppOptionalTempCoercion.generate_result_code";  r  rT   c                2    \        V P                  R 4       R# )ziUsing C++ classes in boolean binary operators with the 'cpp_locals' directive is not currently supported.NrR  )rX   r   r  s   &*,rR   r:  5CppOptionalTempCoercion.generate_bool_evaluation_code%;  s     	dhh I 	JrT   c                &   < \         SV `  VR R7      # )Fr+  )rN   r(  )rX   r  r'  rQ   s   &&&rR   r(  -CppOptionalTempCoercion._make_move_result_rhs+;  s     w,Ve,DDrT   rV   r  )r[   r\   r]   r^   r  r  r  r   r  r  r:  r(  r_   r`   ra   rb   s   @@rR   r6  r6  ;  s?      G +JE ErT   r6  c                   &   a  ] tR tRt o R tRtV tR# )r	  i1;  c                    VP                   '       d$   V P                  P                  V4      '       d   V # \        P	                  WV4      # rL   )r  r   rk  r  r`  rt  s   &&&rR   r`  CMethodSelfCloneNode.coerce_to7;  s:    ###		(<(<X(F(FK""4377rT   rV   N)r[   r\   r]   r^   r`  r_   r`   r  s   @rR   r	  r	  1;  s     8 8rT   r	  c                   D   a  ] tR tRt o ]tRt. tR tR t	R t
R tRtV tR# )	ModuleRefNodei=;  Fc                    V # rL   rV   r   s   &&rR   r}  ModuleRefNode.analyse_typesD;  r&  rT   c                    R # r  rV   rW   s   &rR   r  ModuleRefNode.may_be_noneG;  r#  rT   c                "    \         P                  # rL   )r   r`  rW   s   &rR   r  #ModuleRefNode.calculate_result_codeJ;  s    """rT   c                    R # rL   rV   r  s   &&rR   r  "ModuleRefNode.generate_result_codeM;  r  rT   rV   N)r[   r\   r]   r^   r   r   r  r   r}  r  r  r  r_   r`   r  s   @rR   rE  rE  =;  s/      DGH# rT   rE  c                   @   a  ] tR tRt o R.t]tRtR tR t	R t
RtV tR# )	DocstringRefNodeiP;  r  Tc                x    \         P                  W4       VP                  P                  '       g   Q hW n        R # rL   )r   r  r   rx   r  )rX   r   r  s   &&&rR   r  DocstringRefNode.__init__W;  s+    $$yy$$$$$	rT   c                    V # rL   rV   r   s   &&rR   r}  DocstringRefNode.analyse_types\;  r&  rT   c                J   VP                  V P                  4       : R V P                  P                  4       : RVP                  \        P
                  ! R4      4      : RVP                  V P                  4       V P                  4      : 24       V P                  V4       R# )z = __Pyx_GetAttr(r  r  rf  N)	r   r  r  rE  r
   r  r   r   r<  r  s   &&rR   r  %DocstringRefNode.generate_result_code_;  sn    

KKM499++-"">#?#?	#JK##DKKM488<> 	? 	T"rT   )r  N)r[   r\   r]   r^   r   r   r   r  r  r}  r  r_   r`   r  s   @rR   rO  rO  P;  s,      xHDG
# #rT   rO  c                   R   a  ] tR tRt o . tRtRtRR ltR tR t	R t
RR	 ltR
tV tR# )AnnotationNodeig;  TFNc                    \         P                  W4       Vf?   ^RIHp \        P
                  ! V! RR7      P                  V4      4      p\        WR7      pW0n        W n	        R# )z6string is expected to already be a UnicodeNode or NoneNr  r  )descriptionr  )
r   r  r  r  r
   r  writerW  r  r  )rX   r   r  r  r  string_values   &&&&  rR   r  AnnotationNode.__init__y;  sP    $$>;)77 \:@@FHL 9F	rT   c                    V # rL   rV   r   s   &&rR   r}  AnnotationNode.analyse_types;  r&  rT   c                2    V P                  V4      ^,          # r  )r  r   s   &&rR   r  AnnotationNode.analyse_as_type;  s    ++C033rT   c                t   \        V\        4      '       d   VP                  pVP                  '       dY   VP	                  VP
                  4      '       g6   \        VP                  RV P                  P                  ,          ^R7       R# R# VP                  '       Ed   VP                  P                  '       Edf   VP	                  VP                  P
                  4      '       g6   \        VP                  RV P                  P                  ,          ^R7       R# VP                  P                  '       d|   VP                  P                  V4      pV'       dW   VP                  VP                  4      '       g4   \!        VP                  RV P                  P                  ,          4       R# R# R# VP                  P                  V4      pV'       dJ   VP"                  '       d6   \        VP                  RV P                  P                  ,          ^R7       R# R# R# \        VP                  R4       R# )zZMethod checks for cases when user should be warned that annotation contains unknown types.z5Unknown type declaration '%s' in annotation, ignoringr   z+Unknown type declaration '%s' in annotationz0Unknown type declaration in annotation, ignoringN)r   r  r  r   r  ry   r   r   r  r   r  r  r  r  r
  r  r   pxd_file_loaded)rX   r{   r  r
  s   &&& rR   _warn_on_unknown_annotation*AnnotationNode._warn_on_unknown_annotation;  s   j.11#J::joo..
ORVR]R]RcRcckln / $$$)?)?)?::jnn1122
ORVR]R]RcRcckln000)~~??D(@(@AUAU(V(V*..IDKKL]L]]_ )W<  *~~??DL$@$@$@JNNSVZVaVaVgVggopr %A< JNN$VWrT   c                   V P                   '       d   . R 3# V P                  pR;rEVP                  '       d   \        VP                  R^R7       VP
                   FQ  w  rgVP                  '       g   K  VP                  R
9   d   RpV'       g   TpK8  K:  VP                  R9   g   KM  RpTpKS  	  V'       d!   V'       d   \        VP                  R^R7       M2\        V\        4      '       d   \        VP                  R^R7       . R 3# VP                  VR7      ;_uu_ 4        VP                  V4      pVf    V P                  W4       . V3uuR R R 4       # VP                  '       d   \        VP                  R^R7       V'       dC   V'       g;   VP                  '       g)   VP                  '       g   \        VP                  R	4       VP                  '       d   VP!                  V4       VP"                  '       g   \        V\$        4      '       d   VP'                  V4      M. p	R R R 4       W3#   + '       g   i     X	X3# ; i)NFzSDicts should no longer be used as type annotations. Use 'cython.int' etc. directly.r   Tz9Duplicate type declarations found in signature annotationzTTuples cannot be declared as simple tuples of types. Use 'tuple[type1, type2, ...]'.)r  zWStrings should no longer be used for type declarations. Use 'cython.int' etc. directly.zOPython type declaration in signature annotation does not refer to a Python type)r   s   type)r=  s   ctype)untypedr  r  r   r   rA	  r   r   r   r  rV  r  rc  rx   r   rq  rZ  r  rR  rN  )
rX   r{   assigned_valuer  explicit_pytypeexplicit_ctypery   r   r  r  s
   &&&       rR   r  &AnnotationNode.analyse_type_annotation;  s   <<<t8OYY
+00%%%JNNiqrt)99---::!22&*O)%*
 *ZZ#66%)N!&J  : >
(cklm
I..JNNjrsut8O##n#EE!11#6H00A8| FE +++
q! ~x?S?S?SW_WoWoWo
ik"""88= GQF]F]F]aklv  yF  bG  bG
==cB  MOI' F* ""+ FE* (""s<   &*H8H8-H8H8H8'H89'H8!"H8)H88I	)r  r  rL   )r[   r\   r]   r^   r   r  rf  r  r}  r  rc  r  r_   r`   r  s   @rR   rW  rW  g;  s7      HM
 G
4X:/# /#rT   rW  c                      a a ] tR tRt oRtR.tRR.tRtRtRt	V3R lV 3R llt
]R	 4       t]R
 4       tR tR tR tV 3R ltR tR tV3R ltRtVtV ;t# )AssignmentExpressionNodei;  z
Also known as a named expression or the walrus operator

Arguments
lhs - NameNode - not stored directly as an attribute of the node
rhs - ExprNode

Attributes
rhs        - ExprNode
assignment - SingleAssignmentNode
r   r  FNc                &   < V ^8  d   QhRS[ RS[/# )rd  rJ  r   )r_  r   )r&  rc   s   "rR   rg  %AssignmentExpressionNode.__annotate__;  s     B B B BrT   c                P   < \         SV `  ! V3/ VB  \        WVR R7      V n        R# )T)rJ  r   r  N)rN   r  r/   r  )rX   r   rJ  r   r  rQ   s   &&&&,rR   r  !AssignmentExpressionNode.__init__;  s)    %%.cDBrT   c                    V P                   e   V P                   P                  # V P                  P                   P                  # rL   )r   r   r  rW   s   &rR   r   AssignmentExpressionNode.type;  s0    8888== ""'''rT   c                B    V P                   P                  P                  # rL   )r  rJ  ry   rW   s   &rR   target_name$AssignmentExpressionNode.target_name;  s    ""'''rT   c                x    V P                   ;'       g    V P                  P                   pVP                  V4      # rL   )r   r  r   r  s   && rR   r   #AssignmentExpressionNode.infer_type;  s,    hh--$//--~~c""rT   c                <    V P                   P                  V4       R # rL   )r  r  r   s   &&rR   r  -AssignmentExpressionNode.analyse_declarations<  s    ,,S1rT   c                   V P                   P                  V4      V n         V P                   P                  pVP                  4       '       g[   VP                  '       d8   \
        P
                  ! V P                   P                  4      V n        R V n        MVP                  V4      pV P                  '       gi   \        V4      V n        \        V P                  4      V P                   n        V P                  P                  P                  V4      V P                  n
        V P                  P                  '       d.   V P                  '       d   RV P                   P                  n        V # r  )r  r}  r   r  r   r&   assignment_is_independentr  rV  r  r   r   r  r  r  s   && rR   r}  &AssignmentExpressionNode.analyse_types<  s     //77<oo!!!!##~~~  99T__%8%8915. ((---- ~DH"+DHH"5DOO88<<66s;DHHL 99'''D,J,J,J
 +0DOO'rT   c                t  < V P                   '       d#   V P                  P                  W4      V n        V # WP                  P                  P                  8X  EdQ   V P                  f   Q hV P                  P
                  p\        V\        4      '       d   VP
                  pVP                  W4      pWCJd   W@P                  n        V P                  P                  4        \        V P                  P                  \        4      '       d   \        V P                  P                  \        4      '       gs   V P                  P                  P
                  V P                  n        V P                  P                  P
                  P                  V P                  P                  n        V # \        SV `	  W4      # rL   )r{  r   r`  r  r   r   r   r  r  r  r  rN   )rX   rw  r{   old_rhs_argrhs_argrQ   s   &&&  rR   r`  "AssignmentExpressionNode.coerce_to0<  s,   )))xx))(8DHK**///88''' ((,,K+'788)oo!++H:G)&..0t22LAA *4??+>+>	 J J*.//*=*=*A*ADOO'/3/B/B/F/F/K/KDOO'',w //rT   c                6    V P                   P                  4       # rL   )r   r  rW   s   &rR   r  .AssignmentExpressionNode.calculate_result_codeI<  r  rT   c                <    V P                   P                  V4       R # rL   )r  r'  r  s   &&rR   r  -AssignmentExpressionNode.generate_result_codeL<  s    //5rT   c                Z   < V ^8  d   Qh/ S[ ;R&   S[S[,          ;R&   S[;R&   S[ ;R&   # )rd  r  r   r  r{  )r  r+   r   r/   )r&  rc   s   "rR   rg  rn  ;  s>       ! " 
(	"# $ %$% &  $+' rT   )r  r{  r   )r[   r\   r]   r^   r  r   r   r  r   r{  r  r  r   rt  r   r  r}  r`  r  r  __annotate_func__r_   r`   ra   rb   s   @@rR   rl  rl  ;  s     
 wH,'KG"C&+B B
 ( (
 ( (#2(T02!6c  rT   rl  c                   N   a  ] tR tRt o R.tRt]P                  tR t	R t
RtV tR# )#FirstArgumentForCriticalSectionNodeiQ<  	name_nodeNc                t   \        V P                  P                  4      ^8  d   \        V P                  R4       R# \        V P                  V P                  P                  ^ ,          P                  4       R7      V n        V P                  P                  V4       V P                  P                  V n	        R# )r  zbcritical_section directive can only be applied to a function with one or more positional argumentsNr  )
r   	func_noder   r   r   r_  declared_namer  r  r   r   s   &&rR   r  8FirstArgumentForCriticalSectionNode.analyse_declarations^<  s~    t~~""#a'$((  A  B!$((1D1DQ1G1U1U1WX++C0NN''	rT   c                `    V P                   '       d   V P                   P                  V4      # V # rL   )r  r  r   s   &&rR   r  7FirstArgumentForCriticalSectionNode.analyse_expressionsf<  s%    >>>>>55c::rT   )r  r   )r[   r\   r]   r^   r   r  r   r   r   r  r  r_   r`   r  s   @rR   r  r  Q<  s-      }HI$$D( rT   r  c                   T   a a ] tR tRt o. ROtRt]tV 3R ltR t	R t
R tRtVtV ;t# )	TStringInterpolationNodeim<  Tc                   < \         SV `  ! V3/ VB  V P                  e/   \        V P                  \        P
                  4      '       g   Q hR # R # rL   )rN   r  r  r   r
   r  )rX   r   r  rQ   s   &&,rR   r  !TStringInterpolationNode.__init__s<  sN    %%$$,4//1M1MNN	P ON -rT   c                    V P                   P                  V4       V P                  e   V P                  P                  V4       V P                  P                  V4       R # rL   )r   r  r  expression_strr   s   &&rR   r  -TStringInterpolationNode.analyse_declarationsx<  sH    

'','11#6005rT   c                   V P                   P                  V4      P                  V4      V n         V P                  e?   V P                  f1   \        V P                  \        P                  ! R4      R7      V n        V P                  e!   V P                  P                  V4      V n        V P                  P                  V4      V n	        V # )NrN  r  )
r   r}  r  r  r  rW  r   r
   r  r  r   s   &&rR   r}  &TStringInterpolationNode.analyse_types~<  s    ZZ--c2EEcJ
+0@0@0H* < <R @ BD'#//==cBD"11??DrT   c                   VP                   P                  \        P                  ! R R4      4       V P                  P                  4       pV P                  P                  4       pV P                  '       d   VP                  V P                  4      MRpV P                  e   V P                  P                  4       MVP                  \        P                  4      pVP                  V P                  4        RV RV RV RV R2
4       VP                  VP                  V P                  4       V P                  4      4       VP!                  V P                  4       \"        4       R# )MakeTemplateLibInterpolation	TString.cr-  Nz& = __Pyx_MakeTemplateLibInterpolation(r  r  )r   r   r   r   r   r  r  r  r  r  r  r   r  r   r   r   r9  r   )rX   r   r   
expressionr  r  s   &&    rR   r  -TStringInterpolationNode.generate_result_code<  s4   ))##$BKP	R

!!#((//1
>B>R>R>RD$$T%9%9: 	 *.)9)9)ED##%**6+?+?@ 	 	

dkkm_$J5'QST^S__abqarrt  vA  uB  BD  E  	F

4**4;;=$((CD~6rT   )r  r  r   )r   r  r  )r[   r\   r]   r^   r   r  r   r   r  r  r}  r  r_   r`   ra   rb   s   @@rR   r  r  m<  s.     9HGDP
67 7rT   r  c                   d   a a ] tR tRt oRtRR.tRt]tV3R lV 3R llt	R t
R	 tR
 tRtVtV ;t# )TemplateStringNodei<  zt-stringstringsinterpolationsTc                    < V ^8  d   QhRS[ /# )rd  r  )r  )r&  rc   s   "rR   rg  TemplateStringNode.__annotate__<  s     N Nt NrT   c          	       < R p. p. pV F  p\        V\        4      '       df   Vf<   VP                  \        VP                  \
        P                  ! R4      R7      4       MVP                  V4       R pVP                  V4       K~  \        V\        4      '       dQ   Vf   TpK  \        VP                  \
        P                  ! VP                  VP                  ,           4      R7      pK  Q \        T4      4       h	  Vf"   \        V\
        P                  ! R4      R7      pVP                  V4       \        SV `)  WVR7       R # )NrN  r  )r   r   )r  r  )r   r  r  rW  r   r
   r  r   r   rN   r  )rX   r   r  last_string_noder  r  r  rQ   s   &&$    rR   r  TemplateStringNode.__init__<  s   A!566#+NN;^%A%A"%E$  NN#34'+$%%a(A{++#+'($'2.22 . < <,22QWW<!($ &d1g%u) * #*3n6R6RSU6VW'(nMrT   c                    V P                    F  pVP                  V4       K  	  V P                   F  pVP                  V4       K  	  R # rL   )r  r  r  )rX   r{   r  r  s   &&  rR   r  'TemplateStringNode.analyse_declarations<  s<    A""3' $$A""3' %rT   c                    \        V P                  V P                  R 7      P                  V4      V n        \        V P                  V P                  R 7      P                  V4      V n        V # )rg	  )r  r   r  r}  r  r   s   &&rR   r}   TemplateStringNode.analyse_types<  sZ     HH4<<

-
 	 (HH4..

-
 	 rT   c                   VP                   P                  \        P                  ! R R4      4       V P                  P                  4       pV P                  P                  4       pVP                  V P                  4        RV RV R24       VP                  VP                  V P                  4       V P                  4      4       VP                  V P                  4       \        4       R# )MakeTemplateLibTemplater  z! = __Pyx_MakeTemplateLibTemplate(r  r  N)r   r   r   r   r  r  r  r   r   r   r9  r   )rX   r   r  r  s   &&  rR   r  'TemplateStringNode.generate_result_code<  s    ))##$={K	M,,%%',,335

dkkm_$EgYbQ_P``bcd

4**4;;=$((CD~6rT   )r  r  )r[   r\   r]   r^   r  r   r  r   r   r  r  r}  r  r_   r`   ra   rb   s   @@rR   r  r  <  s=     +,HGDN N<(7 7rT   r  rV   rN  >      E   F   G   X   a   b   c   d   e   f   g   i   o   u   xr  (7  cythondeclarer  r&   r%   r   os.pathr'   r(   r)   r*   typingr+   Errorsr   r   r   r   r   r   r,   r-   Coder   r	   	LineTabler$   rN  r
   r   r   r.   r/   r   r0   r   r1   r2   r3   r4   r   r   r   r   r   r   r   r   r    r!   r5   r#   r"   r   r   Annotater6   r7   	Debuggingr8   
DebugFlagsr   r   Pythranr9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   r~   r   r  rJ   rN  rM  rf   rv   ru   rw   c_py_unicode_ptr_typer  get_cy_pymutex_typeget_cy_pythread_type_lock_typerq   r   r   r   r   r   r   r   r   r   r   r   r  r  r  rj  r7  r=  r  rT  r   r  rU  r  rV  rW  rP  rR  rk  r_  rq  ry  r  r  r  rC  r[  rj  CopyWithUpTreeRefsMixinrt  r  r  r  r  r  r  r  r  r  r  r  r  r  rq  r]  r\  r  r.  r  r%	  r  ro	  r	  r$
  r6
  rB
  rF
  rT
  rs
  r
  r  r5  rK  r  r?  r  r.  r=  rI  re  r|  rD	  rC	  r  r  r  r	  r	  r  r  r  r*  r	  r  r  r  rC  r  rP  rQ  r  r  r  r+  r<  rF  rN  rX  ra  re  rk  ry  not_invnegr   r  r}  r  r  r  r  r  r  r  r  r  r  r  r  rM  rN  rP  rK  rL  rb  ry  r  r  r  r  matmulr  r   ltler  negegtis_r  r  and_truedivfloordivrL  modrK  or_r  rshiftr&  xorr  r  r  r  r  r  rN  rR  r_  ro  rt  r  r  compilefindall_find_formatting_types	frozenset_safe_bytes_formatsr  r  r  r,  r  r  r  r  r"  r:  rf  r  ra  r  rl  r  ro  rn  rp  r  r  rs  ru  r  rV  r  r6  r	  rE  rO  rW  rl  r  r  r  rV   rT   rR   <module>r     s     V V v V "06KQ$/5DJY_  %+ 8> OU  	 -3	 >D	 PV	
 #
 06
 BH  '- 5; QW $* =C TZ % 28 JP '- @F  %+ 06 @F KQ W]      	 
 ( ( ( 2 '    -      
    $  ( ;V V V V V $#,
  
    : i:--.0g:3346m:../1h:4457n d1124n778B.0q%%|4I  ,/1r&&5IJ2245)J==?@4) ."+*.b(6.D ":st sl0" 0"r
X 
. .0{ 0*; 8 8v*8y *8Zy 
?y 
?]/i ]/~0'	 0'fBT 	 T n~) ~B; 
/'~ /'p!A. !AHE~ EP#H #Fc& c&LX2X X2vc(> c(LV(h V(r3J~ 3Jl# #L#N #<:x!>!> :z> *.x .`E Ex 8f"H f"R[# [#H> :> < <h&! h&VF)' F)Rk/ k\O- OdX .n 44~ 4nSX SlA( A(F49 4na3x a3HyAX yAx:( :8gx gT	u#X u#pX $5 5*#( #@g#h g#T'#( '#Te X e Pq	H q	t08 0fo#8 o#d[6 [6|^=| ^=B9! 9!x'!d '!R'"9 'D+#X +#\h  h V-!h -!`|Ix |I~!,8 !,H+< +<\Z& Z, ,7#/ 7#tH58 H5V!#8 !#H'#8_ '#T,H ,47H 74`Gh `GF		 	< <<uX up6H 6>Lx L0Q	 Q"5 5 +"  +F0#j 0#fpCH pCf.} .b,0 , ,, ,&M 6#n #(	 	 $N (( 
8==	  Zx Zz/h /D)H )&#X #</ /& 
/i /0EY E:k.=I .=d -.) 
R98 R9j %	84	FIhh hT	 	/)Z /)dJ @I/ I/V4 4LooO!!(++! 	(++! 	(++	!
 	(++! ! 	(,,! hoo! ! ! 		! 	(

! 	(//! ! !  !!" 	(,,#!$ 	(//
!)/! 4G* G*T 6
S9 Sl0< 0L <83l 83v
$l 
$QCl QCh/, /|il |i~ 

 7    !  E3g E3P[0l [0|C4H C4Lp( pfG8 GV '''''''gg X Xt
V(Xw V(r^(dG ^(D 		 &	.8 :| 2| "g*\ g*TN!% N!bJ# J#Z%#- %#P3L< 3Ll@, @F6!4 6", 8.(P| (PV4" 4"lC CLEl E8	89 	8H &#x #.q#X q#hs6x s6l( 8(7x (7V;7 ;7yh  s   q q$#q$