
    h                    z   S SK r S SKrS SKrS SKrSSKJr  SSKJrJrJ	r	J
r
  SSKJr  SSKJrJr  SSKJr  SS	KJrJr  SS
KJrJrJrJrJr  SSKJr  SSKJr  S rS7S jr " S S5      r " S S5      r " S S\5      r " S S5      r  " S S\ 5      r! " S S\ 5      r"Sr# " S S\ 5      r$ " S S\ 5      r% " S S \ 5      r& " S! S"\%5      r' " S# S$\'5      r( " S% S&\ 5      r) " S' S(\ 5      r* " S) S*\*5      r+ " S+ S,\*5      r, " S- S.\ 5      r- " S/ S0\ 5      r. " S1 S2\ 5      r/ " S3 S4\ 5      r0 " S5 S6\ 5      r1g)8    N   )try_finally_contextmanager   )warningerrorInternalErrorperformance_hint)EncodedString)OptionsNaming)
PyrexTypes)py_object_typeunspecified_type)pyfunction_signaturepymethod_signaturerichcmp_special_methodsget_slot_tableget_property_accessor_signature)
DebugFlags)Codec                     U S S S:X  a*  U R                  [        R                  5      (       d  U S;   a  U [        R                  ;   a  [        R                  U -   n U $ )Nr   __)__weakref____dict__)
startswithr   pyrex_prefixreserved_cnames)cnames    P/var/www/fran/franai/venv/lib/python3.13/site-packages/Cython/Compiler/Symtab.pyc_safe_identifierr       sR    	rd	E$4$4V5H5H$I$I',0K'K...##e+L    c                 ^   U R                  5       (       a  U $ U R                  S5      R                  SS5      R                  S5      n U(       a  U< SU < 3n U $ U R	                  [
        R                  5      (       a/  U R                  [
        R                  [
        R                  S5      n U $ )Npunycode   -   _ascii_r   )isasciiencodereplacedecoder   r   r   pyunicode_identifier_prefix)r   mangle_withs     r   punycodify_namer.   "   s     }}LL$,,T48??HE '. L 
		&--	.	. f11$@@!E Lr!   c                   $    \ rS rSrSrS rS rSrg)	BufferAux7   Fc                     Xl         X l        g Nbuflocal_nd_var	rcbuf_var)selfr5   r6   s      r   __init__BufferAux.__init__:   s    ."r!   c                      SU R                   -  $ )Nz<BufferAux %r>r   r7   s    r   __repr__BufferAux.__repr__>   s    $--//r!   r4   N)__name__
__module____qualname____firstlineno__writable_neededr8   r=   __static_attributes__ r!   r   r0   r0   7   s    O#0r!   r0   c                      \ rS rSrSrSrSrSrSrSr	Sr
SrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!Sr"Sr#Sr$Sr%Sr&Sr'Sr(Sr)/ r*Sr+Sr,Sr-Sr.Sr/Sr0Sr1Sr2Sr3Sr4Sr5Sr6Sr7Sr8Sr9Sr:Sr;Sr<Sr=Sr>Sr?Sr@SrASrBSrCSrDSrESrFSrGSrHSrISrJSrKSrLSrMSrNSS jrO\PR                  (       a  \RS	 5       rS\SR                  S
 5       rSS rUS rVS rWS rXSS jrYS rZS r[\RS 5       r\S r]S r^Sr_g)EntryB   Fr    NprivateTc                     Xl         X l        X0l        X@l        XPl        / U l        / U l        / U l        / U l        X l	        g r3   )
namer   typeposinitoverloaded_alternativescf_assignmentscf_referencesinner_entriesdefining_entry)r7   rL   r   rM   rN   rO   s         r   r8   Entry.__init__   sA    	
		')$ "r!   c                      U R                   S   $ )NrM   r;   r<   s    r   rM   
Entry.type   s    ==((r!   c           
          [        SU R                   SU R                   SU R                  R	                  S5       SU 35        XR                  S'   g )NzENTRY [z] TYPE: rM   z -> )printrL   r   r   get)r7   new_types     r   rM   rW     sJ    F499+Qtzzl(4==;L;LV;T:UUYZbYcde$,MM&!r!   c                 t    S[        U 5      R                  [        U 5      U R                  U R                   4-  $ )Nz%s(<%x>, name=%s, type=%s))rM   r?   idrL   r<   s    r   r=   Entry.__repr__  s/    +tDz/B/BBtHdiiY]YbYb.cccr!   c                 0    [        U R                  S5        g )NPrevious declaration is here)r   rN   r<   s    r   already_declared_hereEntry.already_declared_here	  s    dhh67r!   c                 V    [        USU R                  -  5        U R                  5         g )Nz('%s' does not match previous declaration)r   rL   rb   )r7   rN   s     r   
redeclaredEntry.redeclared  s"    c=		IJ""$r!   c                 "    U /U R                   -   $ r3   )rP   r<   s    r   all_alternativesEntry.all_alternatives  s    v4444r!   c                 B   S nU R                   b  U R                  X5      nUcv  U R                  R                  (       a6  U R                  R                  5       nU Vs/ s H  owR                  PM     nnOU R                  5       n[        R                  " X(X4S9nU$ s  snf )N)fail_if_emptyarg_is_lvalue_array)specialiserrM   is_fused"get_all_specialized_function_typesentryrh   r   
best_match)	r7   scope	arg_typesrk   rl   
func_entry	functypesfalternativess	            r   best_function_matchEntry.best_function_match  s    
'))%;Jyy!! IIHHJ	1:;A;#446#..}oJ  <s   Bc                 "    U /U R                   -   $ r3   )rS   r<   s    r   all_entriesEntry.all_entries!  s    v****r!   c                     [        U [        5      (       aF  [        U[        5      (       a1  U R                  U R                  4UR                  UR                  4:  $ [        $ r3   )
isinstancerG   rL   r   NotImplemented)leftrights     r   __lt__Entry.__lt__$  sF    dE""z%'?'?IItzz*ejj%++-FFF!!r!   c                 2    [        U R                  5      S:  $ Nr   )lenrQ   r<   s    r   cf_is_reassignedEntry.cf_is_reassigned*  s    4&&'!++r!   c                     U R                   R                  (       d   eSU l        U R                  (       a   e[        R
                  R                  SS5      U l        g )NTOptionalLocalsCppSupport.cpp)rM   is_cpp_classis_cpp_optionalutility_coder   UtilityCodeload_cachedutility_code_definitionr<   s    r   make_cpp_optionalEntry.make_cpp_optional.  sI    yy%%%%#$$$$'+'7'7'C'CDTVf'g$r!   c                 D    U R                   (       a  XR                   ;   $ S$ NF)pytyping_modifiers)r7   modifier_names     r   declared_with_pytyping_modifier%Entry.declared_with_pytyping_modifier4  s    ;?;R;R} 7 77]X]]r!   )rQ   rR   r   rT   rO   rS   r   rL   rP   rN   rM   r   NN)FN)`r?   r@   rA   rB   inline_func_in_pxdborrowedrO   
annotation
visibility
is_builtin
is_cglobalis_pyglobal	is_memberis_pyclass_attris_variableis_cfunction
is_cmethodis_builtin_cmethodis_unbound_cmethodis_final_cmethodis_inline_cmethodis_anonymousis_type	is_cclassis_cclass_var_entryr   is_constis_propertyis_cproperty	doc_cnamegetter_cnamesetter_cnameis_self_argis_argis_local
in_closurefrom_closurein_subscopeis_declared_genericis_readonlypyfunc_cname
func_cnamefunc_modifiersfinal_func_cnamedocas_variablexdecref_cleanupin_cinclude	as_moduleis_inheritedpystring_cnameis_identifieris_internedused
is_specialdefined_in_pxdis_implementedapir   rm   is_overridable
buffer_aux
prev_entrymight_overflowfused_cfunctionis_fused_specializedr   needs_propertyin_with_gil_blockfrom_cython_utility_codeerror_on_uninitializedcf_usedouter_entry
is_cgetterr   known_standard_library_importr   enum_int_valuevtable_typer8   r   debug_verbose_entry_typespropertyrM   setterr=   rb   re   rh   rx   r{   r   r   r   r   rD   rE   r!   r   rG   rG   B   s	   B HDJJJJKIOKLJLGILHKLILLKFHJLKKLJN
CKOKILNMKDJNN
CLKNJJNO "N#"GKJO$(!NK
# ++		) 
	) 
	- 
	-d8%5+" , ,h^r!   rG   c                   .    \ rS rSrSrSrS rS rS rSr	g)	
InnerEntryi8  zC
An entry in a closure scope that represents the real outer Entry.
Tc                    [         R                  XR                  UR                  UR                  UR
                  5        Xl        X l        UnUR                  (       a  UR                  nUR                  (       a  M  X0l        UR                  U l	        UR                  U l
        UR                  U l        UR                  U l        UR                  U l        U R                  R                  U 5        g r3   )rG   r8   rL   r   rM   rN   r   rr   rT   rS   rQ   rR   rP   r   append)r7   r   rr   outermost_entrys       r   r8   InnerEntry.__init__>  s    t--"(("''"	( '
 &))-99O )))-,::-<<,::'6'N'N$.>>!!$'r!   c                 p    UR                  S5      (       a  [        U5      e[        U R                  U5      $ )Nr   )r   AttributeErrorgetattrrT   r7   rL   s     r   __getattr__InnerEntry.__getattr__R  s/    ??4   &&t**D11r!   c                 6    U R                   R                  5       $ r3   )rT   r{   r<   s    r   r{   InnerEntry.all_entriesX  s    ""..00r!   )rQ   rR   rT   rS   r   r   rP   rr   N)
r?   r@   rA   rB   __doc__r   r8   r   r{   rD   rE   r!   r   r   r   8  s     L((21r!   r   c                   R   \ rS rSrSrSrSrSrSrSr	Sr
SrSrSrSrSrSrSrSrSrSrSr/ rSr0 rS rS rSCS	 jrS
 rS rSDS jrS rS r SDS jr!\"S 5       r#S r$S r%S r&\'SDS j5       r(SES jr)SFS jr*S r+SGS jr,  SHS jr-  SIS jr.   SJS jr/  SKS jr0S r1S r2 SLS jr3S  r4  SMS! jr5SNS" jr6S# r7S$ r8SOS% jr9SPS& jr:S' r;S( r<S) r=  SQS* jr>  SRS+ jr?SES, jr@S- rAS. rBS/ rCS0 rDS1 rES2 rFS3 rGS4 rHS5 rIS6 rJS7 rKS8 rLS9 rMS: rNS; rOS< rPS= rQS> rRSSS? jrSS@ rTSDSA jrUSBrVg)TScopei\  r   FrI   NTc                    Xl         X l        X0l        S[        U5      UR	                  SS5      4-  nU R                  5       nU(       a+  UR                  U5      U l        UR                  U-   U l        O[        U5      U l        X@l        0 U l
        [        5       U l        / U l        / U l        / U l        / U l        / U l        / U l        / U l        / U l        / U l        0 U l        0 U l        0 U l        0 U l        0 U l        / U l        / U l        0 U l        U R<                   H!  nU R?                  [        U5      [@        S S9  M#     g )Nz%d%s_._dot_rN   )!rL   outer_scopeparent_scoper   r*   qualifying_scopequalify_namequalified_namescope_prefixr
   entriesset	subscopesconst_entriestype_entriessue_entriesarg_entriesvar_entriespyfunc_entriescfunc_entriesc_class_entriesdefined_c_classesimported_c_classescname_to_entryidentifier_to_entrynum_to_entryobj_to_entrybuffer_entrieslambda_defsid_countersscope_predefined_namesdeclare_varr   )r7   rL   r   r   mangled_name
qual_scopevar_names          r   r8   Scope.__init__  s?    	&(#d)T\\#w-G!HH**,
","9"9$"?D * 7 7, FD"/"5D , !!#"$ #%  33H]84n$O 4r!   c                     U $ r3   rE   )r7   memos     r   __deepcopy__Scope.__deepcopy__      r!   c                    / nUR                   R                  5        H?  u  pVU(       a  XS;   d  M  UR                  (       d	  U(       d  M-  UR                  XV45        MA     U R                   R	                  U5        S Hx  n[        X5      nU V	s1 s H  oR                  iM     n
n	[        X5       H@  nUR                  (       d	  U(       d  M  UR                  U
;  d  M/  UR                  U5        MB     Mz     g s  sn	f )N)r   r  r  r  r  r  r  r  )r   itemsr   r   updater   rL   )r7   othermerge_unused	allowlistr   rL   rp   attrself_entriesenamess              r   merge_inScope.merge_in  s     ==..0KD 1::NND=1 1
 	G$(D #4.L%12\VV\E2 -JJ,,EJJe4K ''. .( 3s   C:c                 T    SU R                   R                  < SU R                  < S3$ )N< >)	__class__r?   r   r<   s    r   __str__Scope.__str__  s     NN33T5H5HIIr!   c                     U R                   $ r3   r   r<   s    r   r   Scope.qualifying_scope  s       r!   c                     U(       a  [        U< U R                  < U< 35      $ U R                  R                  XR                  5      $ r3   )r.   r   r   manglerL   r7   prefixrL   s      r   r3  Scope.mangle  s8    "vt7H7H$#OPP$$++FII>>r!   c                 R    [         R                  < U< S3nU R                  U5      $ )Nr'   )r   r   r3  )r7   rL   r5  s      r   mangle_internalScope.mangle_internal  s#     #//6{{6""r!   c                 ^    U R                   (       a  U R                   R                  U5      $ U$ r3   )r   mangle_class_private_namer   s     r   r;  Scope.mangle_class_private_name  s'    $$>>tDDr!   c                     U R                  5       R                  n X!   S-   nX2U'   U(       a  U(       d  U$ SX4-  $ SU-  $ ! [         a    Sn N-f = f)Nr   r   z%s%dz%d)global_scoper  KeyError)r7   rL   counterscounts       r   next_idScope.next_id  sh    $$&22	NQ&E TM))%<  	E	s   A AAc                 6    U R                  5       R                  $ r3   )r>  contextr<   s    r   rE  Scope.context  s      "***r!   c                 6    U R                   R                  5       $ z5Return the module-level scope containing this scope. )r   r>  r<   s    r   r>  Scope.global_scope  s    ,,..r!   c                 6    U R                   R                  5       $ rH  )r   builtin_scoper<   s    r   rK  Scope.builtin_scope  s    --//r!   c              #      #    U v   U R                   (       a1  [        U R                   [        R                  " S5      S9 S h  vN   g g  N7f)Nr   )key)r   sortedoperator
attrgetterr<   s    r   iter_local_scopesScope.iter_local_scopes
  s8     
>>dnn(2E2En2UVVV Vs   AAA
Ac              #   J   #    U R                   nUb  Xl         S v   X l         g 7fr3   )in_c_type_context)r7   rU  old_c_type_contexts      r   new_c_type_contextScope.new_c_type_context  s&     !33(%6"!3s   !#c                    SnU R                   nX   n	Sn
UR                  (       a  U	R                  R                  (       a  U R                  5       (       a  U	R	                  5        H  nUR                  UR                  5      (       d  M%  US:X  a  UR                  (       d  Sn
OUR                  (       a  Sn
U
(       a8  UnU(       a  [        R                  " U5      nX7l        SUl        X'l	        XGl
          O   Sn
U
(       a   U$ X   R                  (       a   U$ US:X  a$  [        USU-  U R                  (       a  SOS5        gUS	:w  a,  [        USU-  5        U R                   U   R                  5         g)
z
Returns an entry or None

If it returns an entry, it makes sense for "declare" to keep using that
entry and not to declare its own.

May be overridden (e.g. for builtin scope,
which always allows redeclarations)
NF<init>Textern'%s' redeclared r   r   ignore)r   r   rM   is_cpprh   compatible_signature_withargsr   copyr   rN   r   r   r   rb   )r7   rL   r   rM   rN   r   
copy_entryrp   r   	old_entrycpp_override_allowed	alt_entrys               r   handle_already_declared_name"Scope.handle_already_declared_name  sN    ,,M	  %!<!< '779	11)..AAx'		/3,"///3,+ )%$(IIi$8E &*
-2*&+$'	) :, (,$  ]''  X% /$6T=M=MSTU  x'c-45T"88:r!   c	                    UR                   (       a!  [        U [        5      (       d  [        US5        U R                  (       d3  U(       a,  [
        R                  " SU5      (       a  [        USU-  S5        U R                  n	S n
U(       a  X;   a  U(       d  U R                  XX4U5      n
U
(       d  [        XX4S9n
U R                  U
l        Xl        U(       a}  U R                  U5      U
l        U(       d`  X;   aW  U R                  5       (       aB  UR                  (       a1  X   R                   (       d  X   R"                  R%                  U
5        OXU'   UR&                  (       a  UR(                  U
l        X
l        XZl        U
$ )Nz5Buffer types only allowed as function local variablesz
^_[_A-Z]+$z'%s' is a reserved name in C.r   )	is_bufferr~   
LocalScoper   r   rematchr   r   rf  rG   create_wrapperr   r   r^  r   r   rP   r   is_memoryviewslicedefault_valuerO   rr   r   )r7   rL   r   rM   rN   r   shadowr   rn  r   rp   s              r   declareScope.declareV  s    >>*T:">">#NOEbhh|U.K.KC85@"E,,DOF55d4jYE$t7E $ 0 0E#1 '+'8'8'>$4;;==T=N=NW^WdWoWo==DDUK(-""++EJ%r!   c                 :    [        U R                  < SU< 35      $ Nr   )r
   r   r   s     r   r   Scope.qualify_namez  s    (;(;TBCCr!   c	           	          U(       dA  U R                   (       d  US:X  d  U(       a  UnO U R                  [        R                  U5      nU R	                  XX$XhS9n	SU	l        X9l        U	$ )Npublic)rn  r   )r   r3  r   enum_prefixrr  r   
value_node)
r7   rL   rM   valuerN   r   r   r   rn  rp   s
             r   declare_constScope.declare_const}  sX    J($:cF$6$6=T$Za r!   c
           
          U(       d  UnU R                  XX#XXSS9n
SU
l        Xjl        U(       a  U R                  R	                  U
5        U	(       d  [        USS 5      c  Xl        U
$ )NT)r   r   rp   )rr  r   r   r  r   r   rp   )r7   rL   rM   rN   r   r   r   definingrq  templaterp   s              r   declare_typeScope.declare_type  sj     ET$Z%)  +	$$U+ GD'48@J r!   c           	         U(       dA  U R                   (       d  US:w  d  U(       a  UnO U R                  [        R                  U5      n U R                  (       a0  U R
                  R                  U R                  5      R                  nOS n[        R                  " XUUS:H  U5      nU R                  XX4XVS9n
U
R                   Ul        U
$ ! [         a2  n	[        X9R                  S   5        [        R                  n S n	A	N[S n	A	ff = f)NrJ   r[  r   )r   r   )r   r3  r   type_prefixis_cpp_class_scoper   lookuprL   rM   r   create_typedef_type
ValueErrorr   r`  
error_typer  r   )r7   rL   	base_typerN   r   r   r   	namespacerM   r$  rp   s              r   declare_typedefScope.declare_typedef  s    J)$;sF$6$6=
	)&& ,,33DII>CC	 	11$53=3I2;=D !!$c/9 " F#22  	)#vvay!((D	)s   
AC 
D	(DD	c
           
         U(       dA  U R                   (       d  US:X  d  U(       a  UnO U R                  [        R                  U5      nU R	                  U5      n
U
(       d]  U R                  5       n[        R                  " XX4XiUS9nU R                  XXVXxUS LS9n
U R                  R                  U
5        Xl        OU
R                  (       a5  U
R                  R                  (       a  U
R                  R                  U:X  d  [!        USU-  S5        OU(       a,  U
R                  R"                  (       a  [!        USU-  S5        OVU R%                  XU5        U R'                  XU5        U(       a+  X:R                  l        U R(                  R                  U
5        U R*                  (       a>  U R,                  R/                  U R0                  5      R                  U
R                  l        U
$ )Nrx  )in_cpp)r   r   r  '%s' redeclared  r   2'%s' already defined  (ignoring second definition))r   r3  r   r  lookup_herer^  r   CStructOrUnionTyper  r  r   rp   r   rM   is_struct_or_unionkindr   rr   check_previous_typedef_flagcheck_previous_visibilityr  r  r   r  rL   r  )r7   rL   r  rr   typedef_flagrN   r   r   r   packedrp   r  rM   s                r   declare_struct_or_unionScope.declare_struct_or_union  s{   
 J($:cF$6$6=  &[[]F00E!D %%d#' , & .E ##E*JMMejj&C&C

4/047;5::++QTXXZ[\00cJ..u#F',JJ$%%,,U3""#'#3#3#:#:499#E#J#JEJJ r!   c           	      x  ^^
 Uc:  U R                   (       d  US:w  a  UnO U R                  [        R                  U5      n[	        U5      nU R                  U5      nU(       dG  [        R                  " XXEUS9n	U R                  XTUXbS LS9nU R                  R                  U5        GOqUR                  (       a  UR                  R                  (       d   [        TSU-  5        UR                  5         g U(       a,  UR                  R                   (       a  [#        TSU-  S5        O2U(       a+  X(R                  l        U R$                  R                  U5        U(       ab  UR                  R&                  (       a7  UR                  R&                  U:w  a  [        TS5        UR                  5         OXXR                  l        U(       d  UR                  R(                  (       a5  XxR                  R(                  :w  a  [        TS5        UR                  5         U
U4S	 jm
U(       aB  T
" X5        UR+                  S
S
[        R,                  " UR                  5      UR.                  S9  U R0                  (       a>  U R2                  R5                  U R6                  5      R                  UR                  l        U$ )NrJ   )	templates)r   r  r\  r  r   -Base type does not match previous declarationz5Template parameters do not match previous declarationc                    > U Hj  nU[         R                  L a  M  UR                  c  [        TS5        M3  T" XR                  5        U R
                  R                  R                  U5        Ml     g )Nz#Cannot inherit from incomplete type)r   r  rr   r   base_classesrM    declare_inherited_cpp_attributes)rp   r  
base_classdeclare_inherited_attributesrN   s      r   r  =Scope.declare_cpp_class.<locals>.declare_inherited_attributes  s[    *
!6!66##+#DE08O8OPJJ$$EEjQ +r!   this)rL   r   rM   rN   )r   r3  r   r  listr  r   CppClassTyper  r  r   r   rM   r   r   rb   rr   r   r  r  r  r  CPtrTyperN   r  r   r  rL   r  )r7   rL   rr   rN   r   r  r   r  rp   rM   r  s      `      @r   declare_cpp_classScope.declare_cpp_class  s    =J)$;F$6$6=L)  &**UiID%%d#u'4E & GE##E*MMejj&=&=c-45++-5::++QTXXZ[\',JJ$%%,,U3::**uzz/F/F,/V#NO//1.:JJ+EJJ00

 4 44#VW//1	R (=6j>Q>QRWR\R\>]chclclm""#'#3#3#:#:499#E#J#JEJJ r!   c                     X!R                   R                  :w  a7  [        USUR                  < SSUR                   R                     < S35        g g )N'z' previously declared using ')cdefctypedef)rM   r  r   rL   )r7   rp   r  rN   s       r   r  !Scope.check_previous_typedef_flag  sA    ::222#

01H1HIK L 3r!   c                 x    UR                   U:w  a*  [        USUR                  < SUR                   < S35        g g )Nr  ' previously declared as ')r   r   rL   )r7   rp   r   rN   s       r   r  Scope.check_previous_visibility  s3    z)#

E,,. / *r!   c
           	         U(       a  U(       dG  U R                   (       d  US:X  d  US:X  d  U(       a  UnO U R                  [        R                  U5      nU R                  (       a0  U R
                  R                  U R                  5      R                  n
OS n
U(       a  [        R                  " XXS9nO'[        R                  " XXZU	S9nO[        R                  nU R                  XX#XgS9nU(       a6  [        R                  R!                  SS5      Ul        U R%                  U5        Xl        / Ul        U R*                  R-                  U5        U$ )Nrx  r[  )r   )r   r   r   EnumClassDeclr   )r   r3  r   r  r  r   r  rL   rM   r   CppScopedEnumType	CEnumTypec_anon_enum_typer  r   r   r   r   use_entry_utility_codern  enum_valuesr  r   )r7   rL   rN   r   scopedr  r   r   rn  r   r  rM   rp   s                r   declare_enumScope.declare_enum  s   $$
h(>%1S E KK(:(:DAE&& ,,33DII>CC	 	!33DT!++DVYZ..D!!$c# " 0!%!1!1!=!=oO_!`E''.-&r!   c                 8    U R                   R                  X5      $ r3   )r   declare_tuple_type)r7   rN   
componentss      r   r  Scope.declare_tuple_type8  s    223CCr!   c
                    U(       d0  US:w  d  U(       a  UnO U R                  [        R                  U5      nU R                  XX#U5      n
SU
l        UR
                  (       a<  US:w  a6  U R                  S   (       a  U
R                  5         OUR                  U5        U(       a  US:w  a  SU
l	        SU
l
        U(       a  SU
l        SU
l
        U	(       a  Xl        U
$ )NrJ   r   r[  
cpp_locals)r3  r   
var_prefixrr  r   r   
directivesr   check_nullary_constructorr   r   r   r   r7   rL   rM   rN   r   r   r   in_pxdis_cdefr   rp   s              r   r  Scope.declare_var;  s     Y&#F$5$5t<T$Z@x!7|,'')..s3jH,#$E EJEIEJ'9$r!   c                 R    U(       d  g U H  nXC;  d  M
  [        USU-  5        M     g )Nz"Modifier '%s' is not allowed here.)r   )r7   rN   	modifiersallowedmodifiers        r   _reject_pytyping_modifiers Scope._reject_pytyping_modifiersU  s(    !H&c?(JK "r!   c                 &    U R                  XU5      $ r3   r  r7   rL   rM   rN   s       r   $declare_assignment_expression_target*Scope.declare_assignment_expression_target\  s     C00r!   c                 Z    U R                  U5      nU R                  R                  X5      $ r3   )r;  r   declare_builtinr7   rL   rN   s      r   r  Scope.declare_builtina  s)    --d3//::r!   c                 
   U(       a@  UR                   R                  (       d%  [        USU-  5        [        UR                  S5        U R	                  U[
        X#S9n[        Ul        U R                  R                  U5        U$ )Nz'%s' already declaredra   r   )
rM   r   r   rN   r  r   r   	signaturer  r   )r7   rL   rN   r   rp   s        r   _declare_pyfunctionScope._declare_pyfunctione  sg    00#.56%));<  ~s R.""5)r!   c                    U R                  U5      nU(       d  U R                  XXES9$ U(       aK  UR                  R                  (       a  [        Ul        O9UR                  [        La  U R                  XXES9$ OU R                  U[        X$S9  U R                  S [        UUSS9n[        U5      Ul        U R                  U5      Ul	        [        Ul        SUl        U$ )N)r   rp   r  rJ   r   r   T)r  r  rM   is_unspecifiedr   r  r
   rL   r   r   r   r  r   )r7   rL   rN   allow_redefiner   rp   s         r   declare_pyfunctionScope.declare_pyfunctionn  s      &++D*+ZZzz((+
>1//j/^^ 2 T>3N  ~s'+	 ! C"4(
#006.!r!   c                 N   U R                  [        R                  S-   U5      nU R                  [        R                  S-   U5      nU R                  U5      nU R	                  S U[
        US5      n[        U5      Ul        XVl        XFl	        X6l
        [        Ul        SUl        U$ )Nfuncdef_methdef_rJ   T)r3  r   lambda_func_prefixr   rr  r   r
   rL   r   pymethdef_cnamer   r   r  r   )r7   lambda_namerN   r   r  r   rp   s          r   declare_lambda_functionScope.declare_lambda_function  s    [[!:!:Z!GU
++f&?&?*&LkZ**;7T:~sIN";/
- /%.!r!   c                 :    U R                   R                  U5        g r3   )r  r   r7   def_nodes     r   add_lambda_defScope.add_lambda_def  s    )r!   c                 :    U R                   R                  U5        g r3   )r  r   r7   rp   s     r   register_pyfunctionScope.register_pyfunction  s    ""5)r!   c           
      	   U(       d0  US:w  d  U(       a  UnO U R                  [        R                  U5      nSU	;   =(       a    U=(       a    UnU(       a  SnU R                  U5      nU(       Ga  U(       d/  X]R                  :w  a   US:X  a  SnUR                  nXMl        XMl        US:w  a3  X]R                  :w  a$  [        USU< SUR                  < SU< S	3S
5        XR                  :w  a  [        USU< SU(       a  SOS< S	3S
5        UR                  R                  U5      (       a,  UR                  R                  UR                  5      Ul	        GOUS:X  a  UR                  S:X  a  U R                  nU R                  5       (       a  SnOIU(       aB  U(       d;  UR                  5        H%  nUR
                  (       a  XOR
                  :X  d  M%    O   SnU(       aI  U R!                  XX4XY5      nUR                  5       Ul        UR$                  b  UR$                  Ul        UnO[        USS
5        X-l	        OU(       d  UR&                  (       a  UR)                  UR                  5      (       ao  UR                  R*                  (       aM  UR                  R,                  c6  UR,                  (       a%  [/        UR0                  SUR2                   S3U 5        X-l	        O,[5        US5        OU R!                  XX4XY5      nXMl        Xl        U(       a  SUl        U(       a  US:w  a  S
Ul        U(       a  S
Ul        U(       d  U(       d  US:w  a  [5        USU-  5        U(       a  SUl        U	(       a  Xl        U
(       a'  UR>                  (       a   SU< SU< S35       eXl        U(       aL  [A        X[B        5      nU RE                  U5      Ul#        S
Ul$        S
Ul%        URL                  Ul&        UUl'        Xl(        URR                  (       ap  UR,                  cc  UR*                  (       aR  US   RT                  (       d>  U(       a7  U(       d0  U(       d)  [V        RX                  " X0XRZ                  R\                  S9  U$ )NrJ   inlineFr[  Tz
Function 'r  z', now as 'r  r   cpdefr  6Function signature does not match previous declarationz!No exception value declared for 'z' in pxd file.
Users cimporting this function and calling it without the gil will always require an exception check.
Suggest adding an explicit exception value.3Non-extern C function '%s' declared but not definedz+duplicate utility code definition in entry z ()r   )function_namevoid_return)/r3  r   func_prefixr  r   r   r   r   r   rM   same_aswith_with_gilwith_gilis_builtin_scoper^  rh   add_cfunctionrP   rm   r   r_  nogilexception_valuer	   rN   rL   r   r   r   r   r   r   rG   r   r   r   r   r   rr   r   rp   exception_checkin_utility_coder   write_noexcept_performance_hintreturn_typeis_void)r7   rL   rM   rN   r   r   r   r  r  r  r   overridableinline_in_pxdrp   can_overridere  temp	var_entrys                     r   declare_cfunctionScope.declare_cfunction  s    Y&#F$6$6= I-E&EXF  &j,<,<<xAW  "--
##( Y&:9I9I+I%**J89:<222['f<>?@Bzz!!$''"ZZ55dmmD
)e.>.>(.J#'#8#8L{{}}'+| */)?)?)AI#,??e6N % *B ,0L##11$c*`7<7M7M7O4 ,,8/4/@/@D, $%]_`a%)
E$8$8T=[=[\a\f\f=g=g zz''EJJ,F,F,NSWSgSg(!II?

| LJ J !" "&J#WX&&t3zUE$#. '+E$jH,#$E EI:+A#LtST#'E #, ))ocgin+oo)!-d>:I'+'8'8'>I$$%I!$%I!#kkIO )E
  T%9%9%AdjjF**66;K;K;S;SUr!   c           
          [        S U 5       5      (       d   e[        R                  " U[        R                  " SU R                  S 5      /40 UD6n	U R                  XUS XVUS9n
SU
l        Ub  XJl        U
$ )Nc              3   ,   #    U  H
  nUS ;   v   M     g7f))r  r  r  r   is_const_methodis_static_methodNrE   ).0ks     r   	<genexpr>(Scope.declare_cgetter.<locals>.<genexpr>  s      
& ss&s   r7   )r   r   r  r  T)allr   	CFuncTypeCFuncTypeArgparent_typer  r   r   )r7   rL   r  rN   r   r   r  r  cfunc_type_config
cfunc_typerp   s              r   declare_cgetterScope.declare_cgetter  s     
&
 
 
 	
 
  ))$$VT-=-=tDE!  !
 &&c*dl ' n$r!   c                    U R                  XX#U5      nSUl        U(       a  Xhl        U(       d  UR                  (       a  U R                  R                  U5        U$ [        U R                  5      n	[        U R                  5       H6  n
U
R                  (       d  U
R                  R                  (       d    O	U	S-  n	M8     U R                  R                  X5        U$ r   )rr  r   r   rn   r  r   r   reversedr   rM   insert)r7   rL   rM   rN   r   r   r  	inheritedrp   icfunc_entrys              r   r  Scope.add_cfunction  s    T$Z@#, %%e,  D&&'A'(:(:;++;3C3C3L3LQ  < %%a/r!   c                 V    U R                  U5      nU(       a  U$ [        USU-  5        g )Nz'%s' is not declared)r  r   r7   rL   rN   rp   s       r   find
Scope.find%  s(    D!L#-45r!   c                     U nU HZ  nUR                  XB5      nU(       d    g UR                  (       a  UR                  nM<  [        USSR                  U5      -  5          g    U$ )Nz'%s' is not a cimported moduler   )r*  r   r   join)r7   pathrN   rr   rL   rp   s         r   find_imported_moduleScope.find_imported_module-  sY     DJJt)Ec;chhtnLM  r!   c                    U R                  U5      nU R                  U5      =(       d7    U R                  =(       a    U R                  R                  U5      =(       d    S nU(       a  U$ U R                  =(       a    U R                  R                  U5      =(       d    S nU(       a-  UR                  (       a  U R                  UR                  U5        U$ r3   )r;  r  r   r  r   _emit_class_private_warningrN   )r7   rL   r  rp   s       r   r  Scope.lookup<  s     55d;!!$' $$N)9)9)@)@)N 	 L !!Cd&6&6&=&=d&CLU&&,,UYY=r!   c                     U R                   R                  U R                  U5      S 5      nU(       a  U$ U R                   R                  US 5      $ r3   )r   r[   r;  r7   rL   rp   s      r   r  Scope.lookup_hereN  sF       !?!?!EtLL ||d++r!   c                 :    U R                   R                  US 5      $ r3   )r   r[   r   s     r   lookup_here_unmangledScope.lookup_here_unmangledY  s    ||d++r!   c                 $    U R                  U5      $ r3   )r  r   s     r   #lookup_assignment_expression_target)Scope.lookup_assignment_expression_target\  s     %%r!   c                     U R                  U5      nU(       dE  U R                  U5      nU(       a-  UR                  (       a  U R                  UR                  U5        U(       d  U R                  U[        S 5      nU$ r3   )r  r8  r   r2  rN   r  r   r5  s      r   lookup_targetScope.lookup_targeta  sb       &..t4E**00DA$$T>4@Er!   c                     U(       ao  UR                   (       a]  UR                  R                  (       a6  U R                  (       a%  UR                  R	                  U R                  5      $ UR                  $ g g r3   )r   rM   rn   fused_to_specific
specializer  s     r   $_type_or_specialized_type_from_entry*Scope._type_or_specialized_type_from_entrym  sL    U]]zz""t'='=zz,,T-C-CDD:: #5r!   c                     U R                  U5      nU R                  U5      nU(       a  U$ U(       a)  UR                  (       a  SSKJn  U" UR                  5      nU R                  U5      $ )Nr   ) get_known_standard_library_entry)r  rC  r   BuiltinrF  )r7   rL   rp   tprF  s        r   lookup_typeScope.lookup_types  sY    D! 66u=IU88A4U5X5XYE88??r!   c                 H   US   R                   R                  (       aw  US   R                   nUR                  R                  SU-  5      nUbG  USS   Vs/ s H  oUR                   PM     nn[        R
                  " XdR                  5       5      nUb  U$ U R                  SU-  5      n/ n	Ub  UR                  5       n	/ n
[        U5      S:X  at  [        S5       He  nX+   R                   R                  (       d  M"  X+   R                   nUR                  R                  SU-  5      nUc  MS  XR                  5       -  n
Mg     U
(       d  U	(       d  g [        [        X-   5      5      n[        R
                  " U Vs/ s H  oUR                   PM     snU5      $ s  snf s  snf )Nr   z
operator%sr   r   )rM   r   rr   r  r   rq   rh   r   ranger  r   )r7   rP  operandsobj_typemethodargrs   resfunctionfunction_alternativesmethod_alternativesnrh   s                r   lookup_operatorScope.lookup_operator  sy   A;(({''H^^**<(+BCF!19!">#XX	> ++I7N7N7PQ?J;;|h67 "$,$=$=$?! !x=A1X;##000'{//H%^^22<(3JKF)+/F/F/HH+  $.C  $7$O PQ$$(%C(3hh(%C%57 	73 ?2 &Ds   F=Fc                 z    SSK Jn   " S SU5      nU Vs/ s H  oe" XS9PM
     nnU R                  X'5      $ s  snf )Nr   )Nodec                       \ rS rSrSrg)4Scope.lookup_operator_for_types.<locals>.FakeOperandi  rE   N)r?   r@   rA   rB   rD   rE   r!   r   FakeOperandr[    s    r!   r\  )rM   )NodesrY  rV  )r7   rN   rP  typesrY  r\  rM   rM  s           r   lookup_operator_for_typesScope.lookup_operator_for_types  sA    	$ 	<ABEDK/EB##H77 Cs   8c                 $    [        USU-  S5        g )NzGlobal name %s matched from within class scope in contradiction to Python 'class private name' rules. This may change in a future release.r   )r   )r7   rN   rL   s      r   r2  !Scope._emit_class_private_warning  s     CEIJKL	Nr!   c                 B    U R                  5       R                  U5        g r3   )r>  use_utility_coder7   new_codes     r   rd  Scope.use_utility_code  s    ,,X6r!   c                 B    U R                  5       R                  U5        g r3   )r>  r  r  s     r   r  Scope.use_entry_utility_code  s    2259r!   c                 8    U H  nX R                   ;   d  M    g   gNr   r   )r   r7   r%  rL   s      r   defines_anyScope.defines_any  s    D||#  r!   c                 x    U H4  nX R                   ;   d  M  U R                   U   R                  (       d  M4    g   grk  )r   r   rl  s      r   defines_any_specialScope.defines_any_special  s2    D||#T(:(E(E(E  r!   c                 <    SSK Jn  U" 5       R                  U 5        g )Nr   )get_type_inferer)TypeInferencers  infer_types)r7   rs  s     r   ru  Scope.infer_types  s    3&&t,r!   c                 B    U R                   nUc  gUR                  5       $ r   )r   r^  )r7   outers     r   r^  Scope.is_cpp  s!      =<<>!r!   c                 <    U R                   R                  XU5        g r3   )r   add_include_file)r7   filenameverbatim_includelates       r   r{  Scope.add_include_file  s    ))(dKr!   c                 ,    [         R                   SU 3$ )N->)r   modulestateglobal_cname)r7   r   s     r   name_in_module_stateScope.name_in_module_state  s     001E7;;r!   c                   ^ Uc
  [        5       nU R                  (       + nU R                  R                  5        H  nU(       d4  UR                  (       d#  UR
                  S:X  d  UR                  (       d  M>  [        R                  " UR                  5      n[        U4S jU 5       5      (       a    g[        UR                  SS 5      nUb  Xb;   a  M  UR                  U5        UR                  TU5      (       d  M    g   g)Nrx  c              3   4   >#    U  H  nT" U5      v   M     g 7fr3   rE   )r  sub_tptype_check_predicates     r   r  3Scope.find_shared_usages_of_type.<locals>.<genexpr>  s     MnF'//ns   Trr   F)r   is_module_scoper   valuesr   r   r   r   get_all_subtypesrM   anyr   addfind_shared_usages_of_type)r7   r  _seen_scopesinclude_all_entriesrp   entry_subtypes
type_scopes    `     r   r   Scope.find_shared_usages_of_type  s    5L"&"6"66\\((*E'5+?+?5CSCSW_C_chclcl'88DNMnMMM Wd;J!Z%?Z(445I<XX + r!   )r  r  r  r  r
  r   r  r   r  r  r	  rU  r  rL   r  r  r   r   r  r   r   r   r  r  r  )TNr3   F)r   r   r   )NrJ   r   r   )NrJ   r   r   r   r   )NrJ   r   )NrJ   r   F)NrE   r[  N)rJ   r   r   NNrJ   FFFN)rE   )r[  N)Fr[  NrJ   r   r   r   rE   NF)NNrJ   rE   Fr   )Wr?   r@   rA   rB   r  is_py_class_scopeis_c_class_scopeis_closure_scopeis_local_scopeis_generator_expression_scopeis_comprehension_scopeis_passthroughr  is_property_scoper  is_c_dataclass_scopeis_internalr   r   r  rA  r  r  rU  node_positions_to_offsetr8   r  r&  r-  r   r3  r8  r;  rB  r   rE  r>  rK  rR  r   rW  rf  rr  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  r8  r;  r>  rC  rI  rV  r_  r2  rd  r  rm  rp  ru  r^  r{  r  r  rD   rE   r!   r   r   r   \  s   H N$%!NO KLKEK!"PH/0J!?#
   + +/0W
  4  4<~"HD
 GH#$( =A670 <@>?).#L /1/34lL
/ @D>D ,5OS4L1
;(** KLSXhT BFEJ"&6$	,,&

@ 7B8N
7:-"L<
r!   r   c                   8    \ rS rSr\R
                  rS rS rSr	g)PreImportScopei  c                 P    [         R                  U [        R                  S S 5        g r3   )r   r8   r   
pre_importr<   s    r   r8   PreImportScope.__init__  s    tW//t<r!   c                 R    U R                  X[        US5      nSUl        SUl        U$ )NrJ   T)rr  r   r   r   r)  s       r   r  PreImportScope.declare_builtin  s+    TiH  r!   rE   N)
r?   r@   rA   rB   r   preimport_cnamenamespace_cnamer8   r  rD   rE   r!   r   r  r    s    ,,O=r!   r  c                   j    \ rS rSrSrS rSS jrS rSS jrS\	R                  4S jrS	 rSS
 jrSrg)BuiltinScopei  Tc                     [         R                  c  [        R                  U SS S 5        O [        R                  U S[	        5       S 5        0 U l        g )N__builtin__)r   r  r   r8   r  
type_namesr<   s    r   r8   BuiltinScope.__init__  s<    %NN4d;NN40@$Gr!   Nc                 f    US:X  d  US:X  a  SnOUS:X  a  US:X  a  Sn[         R                  X5      $ )Nunicode
basestringstrlongr   int)r   r  )r7   rL   language_levels      r   r  BuiltinScope.lookup  s8    9 4DV^! 3D||D''r!   c                     U[         R                  ;  a^  U R                  b  U R                  R                  X5      $ [        R
                  (       a  [        USU-  5        g [        USU-  S5        g g )Nundeclared name not builtin: %sr   )r   KNOWN_PYTHON_BUILTINSr   r  r   error_on_unknown_namesr   r   r  s      r   r  BuiltinScope.declare_builtin  sc    t111+''77BB11#@4GHC!BT!I1M 2r!   c           	      ,   [        U5      nU R                  XS USUS9nUb  Xgl        U(       ae  US:X  a  UnO[        U5      n[        XD[        5      nU R                  U5      Ul        SUl        SUl        XXl	        UR                  Ul
        Xl        U$ )Nr[  )r   r   *r   )r
   r  rm   rG   r   r   r   r   r   r   rr   r   )	r7   rL   rM   r   python_equivr   rm   rp   r  s	            r   declare_builtin_cfunction&BuiltinScope.declare_builtin_cfunction  s     T"&&t48bn&o" +s"#,\:l.II'+'8'8'>I$$%I!#$I %1"#kkIO )r!   c                    [        U5      nU" XU5      n[        US SUS9n0 Ul        UR                  U5        SU R                  U'   U R                  XS SS9n[        UR                  U R                  S5      R                  UR                  UR                  R                  S9nU R                  U5      Ul        SUl        SUl        SUl        SUl        Xl        [&        R(                  (       a  SUl        Xl        U$ )Nr[  )r   r   r  r   r  rM   rL   rM   rN   r   T)r
   CClassScoper  	set_scoper  r  rG   rL   r  rM   rN   typeptr_cnamer   r   r   r   r   r   rr   r   cache_builtinsr   r   )	r7   rL   r   objstruct_cname
type_classrM   rr   rp   r  s	            r   declare_builtin_type!BuiltinScope.declare_builtin_type-  s    T"$7DdxUYZu !!!$dx!HV$))		****	
	 $(#4#4T#:	  !	 	 !	 	!!!%I%r!   c                     U $ r3   rE   r<   s    r   rK  BuiltinScope.builtin_scopeI  r  r!   c                     g r3   rE   )r7   rL   r   rM   rN   r   rb  s          r   rf  )BuiltinScope.handle_already_declared_nameL  s    r!   )r  r3   )NNNr  )r?   r@   rA   rB   r  r8   r  r  r  r   BuiltinObjectTyper  rK  rf  rD   rE   r!   r   r  r    s;     (N, .2j>Z>Z8r!   r  c                       \ rS rSrSrSrSrSrSr/ SQr	S&S jr
S r\S 5       rS	 rS'S jrS rS rS rS(S jrS&S jrS rS)S jrS rS rS rS r  S*S jr  S+S jrS rS rS r     S,S jr S r!S r"S r#S  r$S! r%S" r&S# r'S$ r(S%r)g
)-ModuleScopeiS  r   r   F)	__builtins__r?   __file__r   __path____spec__
__loader____package__
__cached__c                    SSK Jn  X l        UR                  n[        R                  XXb5        X@l        Xl        [        U R                  5      U l        X0l	        [        R                  U l        [        R                  U l        [        R                  U l        SU l        [        R"                  U l        / U l        0 U l        0 U l        [-        UR.                  5      U l        SU l        / U l        [5        5       U l        / U l        SU l        / U l        / U l        U R                  U l         0 U l!        0 U l"        U RG                  [H        RJ                  " SSS95        g )Nr   rG  rI   r   zPython.hT)initial)&rI   rG  parent_modulerK  r   r8   
is_packagemodule_namer
   _contextr   module_cnamemoddict_cnamemodule_dict_cnamemethtable_cnamemethod_table_cnamer   moddoc_cnamer   utility_code_listmodule_entries
c_includesdictr  pxd_file_loadedcimported_modulesr   types_importedincluded_fileshas_extern_classcached_builtinsundeclared_cached_builtinsr  _cached_tuple_types _cached_defaults_c_class_entriesprocess_includer   IncludeCode)r7   rL   r  rE  r  rG  r   s          r   r8   ModuleScope.__init__u  s!   *++t;>$()9)9:"//!'!5!5"("8"8,,!# {556 !#!e  !!*,'#00#% 02-T--j$GHr!   c                     U R                   $ r3   )r  r<   s    r   r   ModuleScope.qualifying_scope  s    !!!r!   c                     U R                   $ r3   )r  r<   s    r   rE  ModuleScope.context  s    }}r!   c                     U $ r3   rE   r<   s    r   r>  ModuleScope.global_scope  r  r!   Nc                     U R                  U5      nUb  U$ Uc%  U R                  b  U R                  R                  OSnU R                  R	                  XS9$ )N   )r  )r  rE  r  r   r  )r7   rL   r  rp   s       r   r  ModuleScope.lookup  sX      &L!<@LL<TT\\88Z[N&&t&KKr!   c           	         [        U5      n U R                  U   nUR
                  nU R                  U5      nU(       d{  [        U5      n[        U5       H  u  pxUR                  SU-  XS9  M     U R                  US-   SUSXS9n	U R                  R                  U	5        Xl        U R                  XCX5      nXSl        U$ ! [         a'    [        R                  " U5      =o0R                  U'    Nf = f)Nzf%s)rL   rM   rN   _structstructT)r  rN   r   )tupler  r?  r   c_tuple_typer   r  StructOrUnionScope	enumerater  r  r  removestruct_entryr  rp   )
r7   rN   r  ttyper   rp   rr   ix	componentr
  s
             r   r  ModuleScope.declare_tuple_type  s    :&
	_,,Z8E   '&u-E!*:!6!!urz	!K "777	!8U3 8 ]L$$\2!-%%eC?E  	_;E;R;RS];^^E,,Z8	_s   C .C43C4c                 @   [        U5      n U R                  U   $ ! [         a     Of = fU R                  [        R
                  5      n[        U5      nU R                  X1SSUS9=o@R                  U'   U R                  U5        SUR                  l
        UR                  R                  nSUl        SUl        [        [        [        U5      5      5      nSU-  R                   n[#        U5       H'  u  p[        U" U5      5      n
UR%                  XS SS9  M)     U$ )NT)r  implementingr  zarg{:0>%dd})rN   r  )r  r  r?  rB  r   defaults_struct_prefixr
   declare_c_classcheck_c_classrM   is_final_typerr   r  is_defaults_class_scoper   r  formatr  r  )r7   rN   r  r   rp   rr   	num_zerosbuild_argnamerU  type_arg_names              r   declare_defaults_c_class$ModuleScope.declare_defaults_c_class  s"   :&
	88DD 		 V::;e$DHDXDXD! EY E# 	#55jA 	5!#'

 

   (,% C
O,-	&2::!*-HA$]1%56Hh4F . s    
))c                    U[         R                  ;  a  U[         R                  ;  a  U[         R                  ;  a  U R                  (       a  U R                  U[        U5      nU$ [        R                  (       a  [        USU-  5        O[        USU-  S5        U R                  US [        US5      nSUl        U$ [        R                  (       a'  U R                   H  nUR                  U:X  d  M  Us  $    US:X  a,  U R                   (       d  U R"                  R%                  S5      $ U R                  S S [        US5      n[        R                  (       aw  U[         R                  ;  ac  SUl        SUl        Xl        [(        R*                  U-   Ul        U R                  R/                  U5        U R0                  R/                  U5        OSUl        Xl        U R3                  5       R5                  U5      Ul        U$ )Nr  r   rJ   r   globals__Pyx_Globals)r   r  renamed_py2_builtins_mapuncachable_builtinshas_import_starr  r   r   r  r   r   rr  r   r  r  rL   old_style_globalsr   r  r   r   builtin_prefixr   r   r  rK  r   r   r)  s       r   r  ModuleScope.declare_builtin  s   t111t<<<t777##((~sC11#@4GHC!BT!I1MT4iP#$ !!--::% L . 9T%;%;##**?;;LLt^S)LE!!d$2J2J&J EENJ //$6EK  ''.++2259 EJ#113@@Fr!   c                 @   US L=(       a    US:  nS nSnUbI  US:  aC  U nU R                   (       a  SOSnX7:  a&  U(       a  UR                  nUS-  nX7:  a	  U(       a  M  OUS:w  a  U R                  nSnU R                  5       nUR                  R	                  XX&US9$ )Nr   Fr   T)from_modulerN   absolute_fallbackrelative_import)r  r  r>  rE  find_module)	r7   r  rN   relative_levelis_relative_importr'  r(  	top_levelmodule_scopes	            r   r*  ModuleScope.find_module  s    
 ,47NNQ<N!%.1*< K!__!I
 !,)77!# !, q ,,K $((*##//c  qC 0 D 	Dr!   c                     SU;   a  UR                  SS5      u  pOS nU R                  U5      nU(       d,  [        XU R                  U(       a  SOUS9nX@R                  U'   U(       a  UR                  X2S9nU$ )Nr   r   T)r  rE  r  )
as_package)splitlookup_submoduler  rE  r  find_submodule)r7   rL   r1  	submodulerr   s        r   r4  ModuleScope.find_submodule  sy     $;"jja0OD)I%%d+$,,cl[_r|}E(-%(((JEr!   c                     SU;   a  UR                  SS5      u  pOS nU R                  R                  US 5      nU(       a  Ub  UR                  U5      nU$ )Nr   r   )r2  r  r[   r3  )r7   rL   r5  modules       r   r3  ModuleScope.lookup_submodule(  sW    $;"jja0OD)I$$((t4+,,Y7Fr!   c                 P    [         R                  " XUS9nU R                  U5        g)z
Add `filename` as include file. Add `verbatim_include` as
verbatim text in the C file.
Both `filename` and `verbatim_include` can be `None` or empty.
)r~  N)r   r  r  )r7   r|  r}  r~  incs        r   r{  ModuleScope.add_include_file3  s$     xES!r!   c                     UR                  5       nUc  UR                  5       nUR                  U R                  U5        U R                  U   ng)a:  
Add `inc`, which is an instance of `IncludeCode`, to this
`ModuleScope`. This either adds a new element to the
`c_includes` dict or it updates an existing entry.

In detail: the values of the dict `self.c_includes` are
instances of `IncludeCode` containing the code to be put in the
generated C file. The keys of the dict are needed to ensure
uniqueness in two ways: if an include file is specified in
multiple "cdef extern" blocks, only one `#include` statement is
generated. Second, the same include might occur multiple times
if we find it through multiple "cimport" paths. So we use the
generated code (of the form `#include "header.h"`) as dict key.

If verbatim code does not belong to any include file (i.e. it
was put in a `cdef extern from *` block), then we use a unique
dict key: namely, the `sortkey()`.

One `IncludeCode` object can contain multiple pieces of C code:
one optional "main piece" for the include file and several other
pieces for the verbatim code. The `IncludeCode.dict_update`
method merges the pieces of two different `IncludeCode` objects
if needed.
N)	mainpiecesortkeydict_updater  )r7   r;  rN  s      r   r  ModuleScope.process_include<  s?    2 mmo;++-C-ooc"r!   c                    XR                   ;  ar  UR                  R                  5        H  nU R                  U5        M     U R                   R	                  U5        UR                    H  nU R                  U5        M     g g r3   )r  r  r  r  r   add_imported_module)r7   rr   r;  ms       r   rC  ModuleScope.add_imported_module[  sl    ...''..0$$S) 1""))%0,,((+ -	 /r!   c                     UR                   (       a  SUl        X R                  ;  a  X R                  U'   g [        USU-  S5        g )NTr  r   )r   r   r   r   )r7   rL   rp   rN   s       r   add_imported_entryModuleScope.add_imported_entryc  s;     $E$!&LLC,t3Q7r!   c                 .   U R                  U5      nU(       aG  UR                  (       a  UR                  UL a  U$ UR                  (       a  UR                  (       a  U$ OU R                  U[        U5      nSUl        X$l        U R                  U5        U$ )Nr   )r  r   r   r  r   r   rC  )r7   rL   rr   rN   rp   s        r   declare_moduleModuleScope.declare_modulel  s    
   &  U__%=%%eoo  /> $$T>3?E !E  'r!   c
                    US;  a  [        USU-  5        U R                  X9S5        U(       d<  U[        L a  [        nUR                  (       a  UR
                  (       a  [        S5      eU(       aR  US:w  aL  U R                  S   S:w  a9  Sn
SnUR                  (       a  S	n
S
n[        USU S3U
-   SU
(       a  SOS-   5        U(       d=  U(       + nUS:X  d  US:X  a
  U(       a  UnO U R                  [        R                  U5      nU R                  U5      nU(       a  UR                  (       a  UR                  R                  U5      (       d,  US:X  a&  UR                   S:X  a  [        USU-  S5        X-l        UR                   S:w  a8  U R                  [        R                  U5      nUR"                  U:X  a  UnXl        UR$                  (       d	  SUl        U$ [&        R)                  XX#XEXgXS9
nU(       aY  SUl        UR                  R,                  (       a  UR                  R,                  Ul        U R0                  R3                  U5        OSUl        [6        R8                  (       a  SUl        U$ )N)rJ   rx  r[  z+Module-level variable cannot be declared %s)ztyping.Optionalz7Non-cdef global variable is not a generic Python objectr[  subinterpreters_compatiblenorI   z9
Python objects should not be shared between interpreterszPython zGlobal cdef zvariable used with subinterpreter support enabled.
This variable is not currently in the per-interpreter module state but this will likely change in future releases.r   r   r   rx  z6Variable '%s' type does not match previous declarationrJ   Tr   r   r   r  r  r   )r   r  r   r   is_pyobjectis_extension_typer   r  r   r3  r   r  r  r   rM   r  r   r   r   r   r  r   declaration_valuerO   r  r   r   r   cimport_from_pyxr   )r7   rL   rM   rN   r   r   r   r  r  r   extra_warningpyobject_warningr  rp   mangled_cnames                  r   r  ModuleScope.declare_var  s=    <<#DzQR''AUV''%$$T-C-C#MO O
h.OO$@ATIM! \#, /0 1B B  11-/ !zHX%**@XF$5$5t<  &U)) ::%%d++)e.>.>(.JC!Y\`!`bcd!%J 9, $F,=,=t D;;-/ E"&K'''+$!!$d(-&)' " r  Ezz++"ZZ99
##E* !E##EJr!   c                    U(       d  SU	;   a  [        USS5        U(       d6  US:X  d  US:X  a
  U(       a  UnO U R                  [        R                  U5      nUS:X  a  UR                  (       a  [        US5        U R                  U5      nU(       a_  UR                  (       aN  UR                  S:w  a>  U R                  [        R                  U5      nUR                  U:X  a  UnXLl	        XLl
        [        R                  XX#XEXgXU
US9nU$ )	Nr  z+Declarations should not be declared inline.r   r[  rx  z6Extern functions cannot have default arguments values.rJ   )r   r   r   r  r  r  r   r
  )r   r3  r   r  optional_arg_countr   r  r   r   r   r   r   r  )r7   rL   rM   rN   r   r   r   r  r  r  r   r
  rp   rV  s                 r   r  ModuleScope.declare_cfunction  s     H	1CFJX%**@XF$6$6=!d&=&=#OP  &U))9, $F,>,> E;;-/ E"'K',$''C#	 ( %
 r!   c                 d    U R                  U5      nU(       d  U R                  U[        U5        g g r3   )r  r  r   r)  s       r   declare_globalModuleScope.declare_global  s,      &T>37 r!   c                 B    Ub  U R                   R                  U5        g g r3   )r  r   re  s     r   rd  ModuleScope.use_utility_code  s!    ""))(3  r!   c                     Uc  g UR                   (       a%  U R                  R                  UR                   5        UR                  (       a&  U R                  R                  UR                  5        g g r3   )r   r  r   r   r  s     r   r  "ModuleScope.use_entry_utility_code  sU    =""))%*<*<=((""))%*G*GH )r!   c           	      	   U(       a%  U
S:w  a  U
S:X  d  U(       d  [        USS5        UnSnOS nU R                  U5      nU(       a  U(       d  UR                  nUR                  (       a  UR                  (       d  S nOUR
                  nU(       a*  U(       a  UR                  (       a  U R                  UX5        U(       a  UR                  (       d  U(       a3  UR                  (       a"  U(       a  UUR                  La  [        US5        U(       a  UR                  (       d  UUl        U(       a  U(       Ga&  [        R                  " XXjS:H  US9nUUl        UUl        Ub  UUl        U
S:X  a  UUl        OU R                   Ul        U	(       a  U	Ul        O%U R%                  [&        R(                  U5      Ul        U R+                  UUX*SUS9nS	Ul        U(       a  UUl        OMUR0                  (       d&  U R%                  [&        R2                  U5      Ul        O[        UR                  S
5        U R5                  U5        U R6                  R9                  U5        WR
                  (       d  U(       d  U(       a  [;        XU
US9nU R<                  R?                  5       Ul        U(       a,  UR
                  (       a  URA                  UR
                  5        URC                  U5        U RD                  R9                  U5        OcU(       a+  UR
                  R                  (       a  [        USU-  5        O1U(       a*  UR
                  RF                  (       a  [        USU-  5        U(       a  SUl$        U(       a  UUl        U
S:w  a/  URJ                  U
:w  a  [        USU< SURJ                  < S35        U(       a  SUl&        U(       a4  UR.                  (       a  UR.                  U:w  a  [        US5        UUl        U(       a4  URN                  (       a  URN                  U:w  a  [        US5        UUl'        U R<                  RQ                  S5      (       a  S	UR                  l)        U R<                  RQ                  S5      nU(       a#  SSK*J+n  [Y        U U5      (       d  [        US5        US:X  a  S	UR                  l-        S	Ul.        U$ )Nr[  rx  z6ctypedef only valid for 'extern' , 'public', and 'api'r   r   r  )
check_size)r   r  rq  Tz5Object name required for 'public' or 'extern' C class)rL   r   r   r  zC class '%s' already definedz C class '%s' already implementedr   rJ   zClass 'r  r  z4Object struct name differs from previous declarationz2Type object name differs from previous declarationfinalcollection_type)NonManglingModuleScopez2'collection_type' is not a public cython directivesequence)/r   r  rM   r   rQ  rr   definedr  r  r   r   PyExtensionTyperN   buffer_defaultsobjtypedef_cnamer  r   r  r3  r   typeptr_prefixr  r   r  r   objstruct_prefixattach_var_entry_to_c_classr  r   r  r  ra  declare_inherited_c_attributesr  r  implementedr   r   r   typeobj_cnamer[   r  r   rf  r~   has_sequence_flagr   )r7   rL   rN   r  r  r  r  r  rq  r  r   r  r   rc  rj  rq  rk  rp   rM   rr   re  rf  s                         r   r  ModuleScope.declare_c_class  s    J(2(*cUWXY.L#   &::DMMd&<&<

%--44ULNemmt~~ Ydnn%Dc#RST^^%.DN --IX/ER\^DDH#2D +(8%X%#. #'#6#6 %2"%)[[1F1F%M"%%dD#v & /E"EO'6$&&'+{{63J3JD'Q$eiiKM,,U3  ''. zz<#4) $& $(??#7#7#9 88Iu%!!((/DJJ..c9D@A$**"8"8c=DE #$E EI"u'7'7:'E#))+ ,EI##(<(<(OcQR#2D !!d&8&8M&I#ST!.D??w'''+EJJ$//--.?@;d$:;; cOPj(+/EJJ( 

 r!   c                 T   UR                   nUR                  (       aL  UR                  R                  (       a1  [        R                  < SUR                  R                  < 3Ul        OUR
                  (       a  UR
                  R                  (       a  [        UR
                  R                  5      nUR                  nU(       a\  UR
                  (       a#  U[        UR
                  R                  5      :  a  O'UR                  (       a  g UR                  nU(       a  M\  [        R                  Ul        UR                  (       a_  U R                  [        R                  UR                  5      Ul        U R                  [        R                  UR                  5      Ul        g g ru  )rM   r  vtabslot_cnamer   obj_base_cnamerr   r  r   is_builtin_typer3  vtabstruct_prefixrL   vtabstruct_cnamevtabptr_prefixvtabptr_cname)r7   rp   rM   entry_countr  s        r   allocate_vtable_names!ModuleScope.allocate_vtable_namest  s    zz>>dnn;; %%t~~'D'D#FDZZDJJ44 djj667KI +IOO<Y<Y8Z*Z,,%//	 ) #)"7"7D$(KK0H0H%**$UD!!%V-B-BEJJ!OD r!   c                     U R                    HC  nUR                  R                  (       a  M   [        UR                  SUR
                  -  5        ME     g )N(C class '%s' is declared but not defined)r  rM   rr   r   rN   rL   r  s     r   check_c_classes_pxdModuleScope.check_c_classes_pxd  s<     ))E::###eii!Kejj!XY *r!   c                    UR                   nUR                  nUR                  nUR                  (       d  [	        UR
                  SU-  5        US:w  a6  UR                  (       d%  U R                  [        R                  U5      Ul        UR                  (       af  UR                  R                   HL  nUR                  (       a  M  UR                  (       a  M)  [	        UR
                  SUR                  -  5        MN     UR                  (       a0  U R                  [        R                  UR                  5      Ul        g g )Nr  r[  z)C method '%s' is declared but not defined)rM   rL   r   rr   r   rN   rq  r3  r   typeobj_prefixr  r   r   ru  vtable_prefixvtable_cname)r7   rp   rM   rL   r   method_entrys         r   r  ModuleScope.check_c_class  s    zzzz%%
zz%))G$NO!$*<*<!%V-B-BD!ID :: $

 8 8#0009P9P9P,**,W$))-* + !9
  $F,@,@%** MD r!   c                 .   SnU(       a  [        SU R                  -   5        U R                   Hd  nU(       aI  [        SUR                  < SU< 35        [        SUR                  5        [        SUR
                  5        U R                  U5        Mf     g )Nr   z&Scope.check_c_classes: checking scope z	...entry r*  z......type = z......visibility = )rZ   r   r  rL   rM   r   r  )r7   debug_check_c_classesrp   s      r   check_c_classesModuleScope.check_c_classes  sr     !" :T=P=PPQ))E$%**e<=o

3+U-=-=>u% *r!   c                 Z   U R                   R                  5        H  u  pUR                  (       d  M  UR                  (       d  M+  UR                  U L d  M<  UR
                  S:w  d  MN  UR                  (       a  Ma  UR                  (       a  Mt  [        UR                  SU-  5        M     g )Nr[  r  )
r   r  r   r   rr   r   r   r   r   rN   r5  s      r   check_c_functionsModuleScope.check_c_functions  s|      <<--/KD!!!(((!KK4/!,,8 % 1 1 1 % 4 4 4%))%Z]a%ab 0r!   c                    SSK Jn  [        UR                  UR                  UR
                  UR                  R                  S9nUR                  Ul        SUl	        SUl
        SUl        SUl        UR                  Ul        X1l        g )Nr   r  r  T)rI   rG  rG   rL   	type_typerN   rM   r  r   r   r   r   r   rr   r   )r7   rp   rG  r  s       r   rn  'ModuleScope.attach_var_entry_to_c_class  su     	$$))JJ,,.	 $)#7#7	  !	 	 !	(,	%++	%r!   c                     U R                   $ r3   )cppr<   s    r   r^  ModuleScope.is_cpp  s    xxr!   c                 <    SSK Jn  U" 5       R                  U 5        g )Nr   )PyObjectTypeInferer)rt  r  ru  )r7   r  s     r   ru  ModuleScope.infer_types  s    6))$/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   )ri  r   r  r  )r   r   NNNNNrJ   r   r   NNr   )*r?   r@   rA   rB   r  r"  is_cython_builtinr#  namespace_cname_is_typer  r8   r   r   rE  r>  r  r  r  r  r*  r4  r3  r{  r  rC  rG  rJ  r  r  r\  rd  r  r  r}  r  r  r  r  rn  r^  ru  rD   rE   r!   r   r  r  S  s    0 OO#
I<"  L(6#JD>	"#>,84 ,5OSEP KLSX:8
4I CD>B?H.2)*	xtP:Z N.&0
c&(0r!   r  c                   b    \ rS rSrSrSrSrSS jrS rS r	  SS jr
S	 rS
 rS rS rS rSrg)rk  i  TFNc                 :    Uc  Un[         R                  XX#5        g r3   r   r8   )r7   rL   r   r   s       r   r8   LocalScope.__init__  s    &Lt;=r!   c                     [        X-   5      $ r3   )r.   r4  s      r   r3  LocalScope.mangle  s    v}--r!   c                    U R                  U5      nU R                  [        R                  U5      nU R	                  XX#S5      nSUl        UR                  (       a  SUl        SUl        U R                  R                  U5        U$ )NrJ   r   0)r;  r3  r   r  rr  r   rP  rO   r   r  r   )r7   rL   rM   rN   r   rp   s         r   declare_argLocalScope.declare_arg	  sr    --d3F--t4T$Y?EJ&r!   c
                 R   U R                  U5      nUS;   a  [        USU-  5        [        R                  XX#XEXgXS9
n
U
R                  R
                  (       a  U
R                  R
                  U
l        SU
l        U R                  U
l	        U R                  R                  U
5        U
$ )Nrx  readonlyz$Local variable cannot be declared %srO  r   )r;  r   r   r  rM   rR  rO   r   _in_with_gil_blockr   r  r   r  s              r   r  LocalScope.declare_var  s     --d3//#=
JK!!$d(-&)' " r ::''55EJ"&"9"9&r!   c                     U R                  U5      (       a  [        USS5        g U R                  5       R                  U5      nX0R                  U'   g Nr  r   r  r   r>  r>  r   r)  s       r   r\  LocalScope.declare_global(  E    D!!C,a0%%'55d;E!&LLr!   c                    U R                  U5      nU(       a@  UR                  U L a1  UR                  (       d   [        USU-  5        UR	                  5         g U R                  U5      nUb  UR                  (       d  [        USU-  5        g g Nz'%s' redeclared as nonlocalz"no binding for nonlocal '%s' found)r  rr   r   r   rb   r  r7   rL   rN   
orig_entryrp   s        r   declare_nonlocalLocalScope.declare_nonlocal0  sv    %%d+
***d2:;R;R#4t;<,,.KK%E}E$6$6c?$FG %7r!   c                 T    SUl         [        X 5      nSUl        X0R                  U'   U$ NT)r   r   r   r   )r7   rL   rp   inner_entrys       r   _create_inner_entry_for_closure*LocalScope._create_inner_entry_for_closure;  s.     -"&(Tr!   c                 F   [         R                  X5      nUb  UR                  nUR                  (       a  UR                  nUR                  (       a  M  X0LaH  UR
                  (       a7  [        UR                  S5      (       a  [        S5      eU R                  X5      $ U$ )Nscope_classz#lookup() after scope class created.)	r   r  rr   r  r   r  hasattrr   r  )r7   rL   rp   entry_scopes       r   r  LocalScope.lookupB  s     T(++K44)55 444&;+G+G5;;66'(MNN ;;DHHr!   c                    U R                  5        GHR  nUR                  R                  5        GH/  nUR                  (       a  UR                  R
                  nU R                  (       a  XCl        MD  UR                  [        R                  5      (       a  U[        [        R                  5      S-   S  nU< SU< 3Ul        M  UR                  (       d  M  UR
                  Ul        [        R                  < SUR
                  < 3Ul        UR                  R                  (       d  M  UR                  R                   S   (       d  GM  UR#                  5         GM2     GMU     g )Nr   r  r  )rR  r   r  r   r   r   r  r   r   cur_scope_cnamer   r   original_cnamerM   r   rr   r  r   )r7   outer_scope_cnamerr   rp   r   s        r   mangle_closure_cnames LocalScope.mangle_closure_cnamesS  s    ++-E--/%%!--33E**&+ ++F,B,BCC$)#f.D.D*Ea*G*H$IE2CU&K%%%+0;;E(.4.D.Dekk"REKzz...5;;3I3I,3W3W//1 0 .r!   rE   r3   r  )r?   r@   rA   rB   r  has_with_gil_blockr  r8   r3  r  r  r\  r  r  r  r  rD   rE   r!   r   rk  rk    sM    N  >
. ,5OS$'	H"2r!   rk  c                   X    \ rS rSrSrSrS rS r  SS jrS r	SS	 jr
S
 rS rS rSrg)ComprehensionScopeie  zScope for comprehensions (but not generator expressions, which use ClosureScope).
As opposed to generators, these can be easily inlined in some cases, so all
we really need is a scope that holds the loop variable(s).
Tc                    UnUR                   (       a  UR                  nUR                   (       a  M  UR                  5       R                  [        R
                  5      n[        R                  XX5        UR                  U l        S[        R                  [        U5      U4-  U l        UR                   (       d"  UR                  (       d  UR                  (       aE  UR                  nUR                   (       a  M  UR                  (       a  M2  UR                  (       a  ME  UR                  U l        UR                   R#                  U 5        g )Nz%s%d%s)r  r   r>  rB  r   genexpr_id_refr   r8   r  r   r   genexp_prefixr  r  r   r  r   r  )r7   r   r   rL   s       r   r8   ComprehensionScope.__init__l  s    "11'44L 111((*2263H3HIt;=%00%)<)<c$i(NN 00K4P4PT_TqTq%11K 000K4P4P4PT_TqTqTq&22!!$'r!   c                 X    U R                   < U R                  R                  X5      < 3$ r3   )r  r   r3  r4  s      r   r3  ComprehensionScope.mangle}  s$    ++T->->-E-Ef-STTr!   Nc
                 B   U[         L a?  U R                  R                  U5      n
U
(       a  U
R                  (       a  U
R                  nU R                  X95        U R                  < U R                  R                  [        R                  U=(       d    U R                  5       5      < 3nU R                  XX#U5      nSUl        U R                  R                  (       a  SUl        OSUl        SUl        U R"                  R%                  U5        XR&                  U'   U$ r  )r   r   r  r   rM   r  r  r   r3  r   r  rB  rr  r  r   r   r   r  r   r   )r7   rL   rM   rN   r   r   r   r  r  r   r   rp   s               r   r  ComprehensionScope.declare_var  s     ##**11$7K{66"''''@ ,,d.?.?.F.FvGXGXZ^Zpbfbnbnbp.qrT$Z@ ,,#E!EN &"Tr!   c                 :    U R                   R                  XU5      $ r3   )r   r  r  s       r   r  7ComprehensionScope.declare_assignment_expression_target  s      ,,T==r!   c                 :    U R                   R                  XU5      $ r3   )r   r  r7   rL   rN   r  s       r   r  %ComprehensionScope.declare_pyfunction  s     22~' 	'r!   c                 8    U R                   R                  X5      $ r3   )r   r  )r7   r   rN   s      r   r  *ComprehensionScope.declare_lambda_function  s    77
HHr!   c                 8    U R                   R                  U5      $ r3   )r   r  r  s     r   r  !ComprehensionScope.add_lambda_def  s    ..x88r!   c                 l    U R                  U5      nU(       d  U R                  R                  U5      nU$ r3   )r  r   r;  r5  s      r   r;  6ComprehensionScope.lookup_assignment_expression_target  s0      &%%II$OEr!   )r  r  r  )NrJ   FFTNr  )r?   r@   rA   rB   r   r  r8   r3  r  r  r  r  r  r;  rD   rE   r!   r   r  r  e  sA     "("U ,5NR.>'I9r!   r  c                   2    \ rS rSrSrSS jrS	S jrS rSrg)
ClosureScopei  TNc                 f    [         R                  XX45        [        R                  < U< 3U l        g r3   )rk  r8   r   closure_scope_prefixclosure_cname)r7   rL   
scope_namer   r   s        r   r8   ClosureScope.__init__  s%    DB'-'B'BJOr!   c                 ,    [         R                  XX#SS9$ )NrJ   r  )rk  r  r  s       r   r  ClosureScope.declare_pyfunction  s    ,,TYb,ccr!   c                 &    U R                  XU5      $ r3   r  r  s       r   r  1ClosureScope.declare_assignment_expression_target  s    C00r!   )r  r3   r  )	r?   r@   rA   rB   r  r8   r  r  rD   rE   r!   r   r  r    s    Pd1r!   r  c                   $    \ rS rSrSrS rS rSrg)GeneratorExpressionScopei  Tc                 \    U R                   R                  XU5      nU R                  X5      $ r3   )r   r  r  )r7   rL   rM   rN   rp   s        r   r  =GeneratorExpressionScope.declare_assignment_expression_target  s+    !!--d#>33D@@r!   c                     U R                  U5      nU(       d3  U R                  R                  U5      nU(       a  U R                  X5      $ U$ r3   )r  r   r;  r  r5  s      r   r;  <GeneratorExpressionScope.lookup_assignment_expression_target  sD      &%%II$OE;;DHHr!   rE   N)r?   r@   rA   rB   r  r  r;  rD   rE   r!   r   r  r    s    $(!Ar!   r  c                   <    \ rS rSrSS jr   SS jr  S	S jrSrg)
r  i  c                 .    [         R                  XS S S9  g )N)r   r   r  r   s     r   r8   StructOrUnionScope.__init__  s    tt$Gr!   Nc                    U(       d  UnUS:X  a  [        U5      nUR                  (       a  [        R                  " U5      nU R	                  X95        U R                  XX#U5      nSUl        U R                  R                  U5        UR                  (       a  U
(       d  [        US5        U$ UR                  (       a  U(       d  [        US5        U$ UR                  (       a  U(       d  [        USU-  5        U$ )NrJ   r   z/C struct/union member cannot be a Python objectz-C struct/union member cannot be a memory viewz;C struct/union member cannot be reference-counted type '%s')r    r   r   r  r  rr  r   r  r   rP  r   ro  needs_refcounting)r7   rL   rM   rN   r   r   r   r  r  r   allow_pyobjectallow_memoryviewallow_refcountedrp   s                 r   r  StructOrUnionScope.declare_var  s    
 EY&)%0&&t,D''@T$Z@&!cLM  $$#cJK  ###cX[__`r!   rE   c                 J    U
(       a  [        US5        U R                  XUXES9$ )Nz0C struct/union member cannot be declared 'cpdef'r  )r   r  )r7   rL   rM   rN   r   r   r   r  r  r  r
  s              r   r  $StructOrUnionScope.declare_cfunction  s3     #IJC&+   D 	Dr!   )?)	NrJ   FFFNFFF)NrJ   r   r   r   rE   F)r?   r@   rA   rB   r8   r  r  rD   rE   r!   r   r  r    s(    H ,5OSSX8 KL@EDr!   r  c                   .    \ rS rSrSS/rS rS rS rSrg)	
ClassScopei  r@   rA   c                    U(       a&  UR                  5       R                  S5      (       a  U$ U(       aW  UR                  S5      (       aA  UR                  S5      (       d+  [        SU R                  R                  S5      < U< 35      nU$ )N__pyx_r   r'   )lowerr   endswithr
   
class_namelstripr   s     r   r;  $ClassScope.mangle_class_private_name		  sb    DJJL++H55KDOOD))$--2E2E DOO,B,B3,G!NODr!   c                 J    [         R                  XX"5        Xl        S U l        g r3   )r   r8   r  r   r7   rL   r   s      r   r8   ClassScope.__init__	  s    t;<r!   c                 x   [         R                  X5      nU(       a  U$ US:X  a  [        SS[        R                  " [
        [        R                  " S[
        S 5      /SS5      5      n[        R                  R                  SS5      Ul
        U R                  U5        SUl        U R                  5       Ul        U$ )Nclassmethod__Pyx_Method_ClassMethodrI   r   ClassMethodzCythonFunction.cr   )r   r  rG   r   r  r   r  r   r   r   r   r  r   rK  rr   r5  s      r   r  ClassScope.lookup	  s    T(L= 
 *$$",,RFGAOPE -1,<,<,H,HXj,kE)''.!"E,,.EKr!   )r  r   N)	r?   r@   rA   rB   r  r;  r8   r  rD   rE   r!   r   r  r    s     +N;
r!   r  c                   <    \ rS rSrSrSr  S
S jrS rS rS r	S	r
g)PyClassScopei,	  r   FNc
                     U R                  U5      nU[        L a  [        n[        R	                  XX#XEXgXS9
n
SU
l        SU
l        U
$ )NrO  r   )r;  r   r   r   r  r   r   r  s              r   r  PyClassScope.declare_var4	  s[     --d3##!D!!$d(-&)' " r  !r!   c                    U R                  U5      nU(       a@  UR                  U L a1  UR                  (       d   [        USU-  5        UR	                  5         g U R                  U5      nUc  [        USU-  5        g X@R                  U'   g r  )r  rr   r   r   rb   r  r   r  s        r   r  PyClassScope.declare_nonlocalB	  sw    %%d+
***d2:;R;R#4t;<,,.KK%E}c?$FG &+T"r!   c                     U R                  U5      (       a  [        USS5        g U R                  5       R                  U5      nX0R                  U'   g r  r  r)  s       r   r\  PyClassScope.declare_globalQ	  r  r!   c                 8    U R                   R                  U5      $ r3   )r   add_default_value)r7   rM   s     r   r  PyClassScope.add_default_valueY	  s    11$77r!   rE   r  )r?   r@   rA   rB   r  r  r  r  r\  r  rD   rE   r!   r   r
  r
  ,	  s,    
 # ,5OS+'8r!   r
  c                      ^  \ rS rSrSrSrSrSrSrSr	Sr
SrSrS rS rS rS rS r  SS	 jr  SS
 jrSS jrS r  SS jrSS jrSS jrSS jr   SS jrS rSU 4S jjrSrU =r$ )r  i]	  r   Fc                    [         R                  XU5        US:w  aJ  UR                  [        R                  U5      U l        UR                  [        R                  U5      U l        / U l        / U l	        X@l
        UR                  (       d  UR                  (       a5  UR                  (       a#  U R                  R                  U l        SU l        g g g )Nr[  T)r  r8   r3  r   methtab_prefixr  gstab_prefixgetset_table_cnameproperty_entriesinherited_var_entriesr  rw  rQ  r  r  r  )r7   rL   r   r   r  s        r   r8   CClassScope.__init__z	  s    D4!&1&8&89N9NPT&UD#&1&8&89L9Ld&SD# "%'"&
 ((K,I,I--#'#3#3#A#AD +/D( . -Jr!   c                    U R                   (       a"  U R                  R                  SS5      (       d  gU R                  R                  (       a  U R                  R
                  (       d  gU R                  R                  nU(       a'  UR                  b  UR                  R                  5       $ U R                  R
                  (       a  U R                  R                  (       + $ g)Nno_gcFT)
has_cyclic_pyobject_attrsr  r[   r  is_externalrw  r  rr   needs_gcis_gc_simple)r7   r  s     r   r   CClassScope.needs_gc	  s     ))$//2E2Egu2U2U''0@0@0P0P$$..	4??++----''4444r!   c                 *   U R                   R                  S5      nUSL a  gU(       a  U R                  (       a  gU R                  R                  nU(       a'  UR
                  b  UR
                  R                  5       $ U R                  R                  $ )NtrashcanFT)r  r[   r  r  r  rr   needs_trashcanbuiltin_trashcan)r7   	directiver  s      r   r%  CClassScope.needs_trashcan	  su     OO''
3	 77$$..	4??1133000r!   c                 r    U R                  5       =(       a!    U R                  R                  SS5      (       + $ )z
Do we need to generate an implementation for the tp_clear slot? Can
be disabled to keep references for the __dealloc__ cleanup function.
no_gc_clearF)r   r  r[   r<   s    r   needs_tp_clearCClassScope.needs_tp_clear	  s)    
 }}Pt':':=%'P#PPr!   c                 b   U nU(       a  UR                  S5      nU(       a  UR                  (       a  gUR                  R                  (       d,  UR                  (       a  UR                  R
                  (       a  gUR                  R                  nU(       a  UR                  OSnU(       a  M  g)z
This covers cases where we definitely have a __del__ function
and also cases where one of the base classes could have a __del__
function but we don't know.
__del__TNF)r  r   r  r  rp  multiple_basesr  rr   )r7   current_type_scope	del_entrycurrent_base_types       r   may_have_finalizeCClassScope.may_have_finalize	  s     " *66yAIY11"..::BTB`B`&22AA 2 > > H H<M!2!8!8SW !  r!   c                    / n/ n/ nU R                    H  nUR                  R                  (       aa  U(       d!  U R                  (       d  UR                  S:w  a7  U(       d  UR                  R
                  (       d  UR                  U5        M{  M}  M  UR                  [        R                  :X  a  UR                  U5        M  UR                  R                  (       d  M  UR                  U5        M     U=(       d    U=(       d    UnXsXE44$ )Nr   )
r  rM   rP  is_closure_class_scoperL   r!  r   r   c_py_buffer_typero  )r7   include_weakrefinclude_gc_simplepy_attrs
py_buffersmemoryview_slicesrp   have_entriess           r   get_refcounted_entries"CClassScope.get_refcounted_entries	  s    
%%Ezz%%"t'B'BejjTaFa(

0G0G . 1H Gb z:::!!%(...!((/ &  B:B1B
FFFr!   c
                    U R                  U5      nU	(       ao  SU	;   aF  SnUR                  (       d3  UR                  (       d  [        USU-  5        [        nOUR                  nSU	;   a  U R
                  (       d  [        US5        U(       Ga  U R                  (       a  [        US5        U R                  (       d8  [        U R                  5      R                  U5      (       a  [        USU-  5        U(       d  UnU R                  R                  (       dT  U R                  R                  R                  (       d/  U R                  R                  R                   S:X  d  [#        U5      n[%        U[&        R(                  5      nU R+                  XX#U5      n
S	U
l        U R.                  R1                  U
5        Xl        UR4                  (       a<  US
:w  a6  U R                  S   (       a  U
R7                  5         OUR9                  U5        UR:                  (       a  SU l        OUR?                  U 5      (       a  SU l         OwUR                  (       af  U R                  (       d  US:w  aO  SU l!        URD                  (       a0  URF                  (       a  URF                  RI                  5       (       a  SU l%        US;  a  [        USU-  5        US;   ab  SU
l&        U R                  (       d  US:X  a  [        US5        UR                  (       d%  URO                  U 5      (       d  [        USU-  5        U
$ SU
l&        U
$ U[P        L a  [        n[R        RU                  XX#XEXgXS9
n
S	U
l+        S	U
l,        U
$ )Nztyping.ClassVarr   zZClassVar[] requires the type to be a Python object type. Found '%s', using object instead.zdataclasses.InitVarzIUse of cython.dataclasses.InitVar does not make sense outside a dataclasszVC attributes cannot be added in implementation part of extension type defined in a pxdz/The name '%s' is reserved for a special method.rx  r   r[  r  Tr   )rJ   rx  r  z1Attribute of extension type cannot be declared %sr  z9Special attribute __weakref__ cannot be exposed to Pythonz7C attribute of type '%s' cannot be accessed from PythonFrO  )-r;  rP  equivalent_typer   r   r  r   rh  r6  r   r  get_special_method_signaturer  r  rp   r   r   r    r.   r   unicode_structmember_prefixrr  r   r  r   r   r   r   r  ro  has_memoryview_attrsneeds_explicit_construction"has_explicitly_constructable_attrshas_pyobject_attrsrw  rr   r   r  r   can_coerce_to_pyobjectr   r   r  r   r   r  s              r   r  CClassScope.declare_var	  s    --d3 $66''//  &B  EI  &I  J-#33%);;DD]D]cfg||c78 //"4??3PPQUVVcE  ((448H8H8N8N8R8R((..99XE-e4E'v/Q/QRLLdDE !E##E*'9$  Z8%;??<0++-2237&&,0)11$77:>7!!t'B'BdmF[*.',,#zzTZZ-@-@-B-B59D2!BBcG*TV33 (,$22t}7L#Z[((D,G,G,M,M#X[__` L (-$L''%%%d$,1*-g & vE  EO !"ELr!   c                    U[         ;   a&  U R                  S5      (       a  [        USU-  5        O:US:X  a4  [          H*  nU R                  U5      (       d  M  [        USU-  5        M,     US:X  a  [        US5        U R                  U[        USS9n[        U R                  5      R                  U5      nU(       a  Xel        SUl	        O[        Ul        SUl	        U R                  R                  U5        U$ )	N__richcmp__z$Cannot define both % and __richcmp____new__zv__new__ method of extension type will change semantics in a future version of Pyrex and Cython. Use __cinit__ instead.r[  r  r   r   )r   r  r   r  r   r   r  rB  r  r   r   r  r   )r7   rL   rN   r  rU  rp   special_sigs          r   r  CClassScope.declare_pyfunction)
  s    **..cADHI]",##A&&#EIJ - 9# R S  ~s,4 ! 6$T__5RRSWX *O E0EO E""5)r!   c                    U R                   (       d  US:X  a  [        S5      n[        R                  X5      nU(       aH  UR                  (       a7  U R
                  R                  (       d  U R
                  R                  (       d  g U$ )NrL  	__cinit__)r6  r
   r  r  r   r  rw  r  r5  s      r   r  CClassScope.lookup_hereD
  s_    **ty/@ -D&&t2U--##33 ''55r!   c           
      J   U R                  U5      n[        U R                  5      R                  U5      (       a'  U R                  R
                  (       d  [        US5        UR                  nUR                  (       dq  U(       d  [        US5        O]U R                  R                  US   R                  5      (       d0  [        USUS   R                  < SU< SU R                  < S35        U R                  U5      nUc#  [        [        U5      [        R                  5      nU(       Ga  UR                   (       d!  [        USU-  5        UR#                  5         GOU(       a   UR$                  (       a  [        US	U-  5        UR&                  (       a  UR(                  (       a  [        US
5        GOUR+                  UR                  SS9(       aP  UR,                  UR                  R,                  :X  a,  UR                  R/                  UR0                  5      Ul
        GO+UR3                  UR                  SS9(       a  UR,                  UR                  R,                  :X  a  U R4                  (       a^  U(       dW  UR7                  UR                  SSS9(       d7  [9        USU< SU R:                  < S3S5        [9        UR<                  SS5        U R?                  XX4SU	S9nOf[        US5        [        UR<                  S5        OCU R4                  (       a  [        USU< SU R:                  < S35        U R?                  XX4XY5      nU(       a%  U RA                  [        RB                  U5      Ul        Xl"        Xl#        SU	;   a  SUl$        U R                  RJ                  (       d1  URH                  (       d   U R                  RM                  S5      (       a@  SUl        UR$                  Ul'        URP                  (       d  UR                  Ul)        X-l
        U$ )Nz7Special methods must be declared with 'def', not 'cdef'zC method has no self argumentr   zSelf argument (z) of C method 'z' does not match parent type (r  r\  z'%s' already definedz'Overriding final methods is not allowedr   )
as_cmethod)rS  as_pxd_definitionz'Compatible but non-identical C method 'z7' not redeclared in definition part of extension type 'z5'.  This may cause incorrect vtables to be generated.r   ra   r]  )r   r  z2Signature not compatible with previous declarationz
C method 'z@' not previously declared in definition part of extension type 'r  r  Trd  )*r;  r   r  rB  r  rw  r   r`  r  assignable_fromrM   r  r.   r    r   unicode_vtabentry_prefixr   rb   r   r   r   same_c_signature_asr  r  r   r_  rh  !same_c_signature_as_resolved_typer   r  rN   r  r3  r  r   rp   r   r  r[   r   rn   r   )r7   rL   rM   rN   r   r   r   r  r  r  r   r
  r`  rp   s                 r   r  CClassScope.declare_cfunctionS
  s    --d34??+HHNN((88#PQyy$$c:;%%55d1gllCCcAw||T4+;+;= >  &=#$5d$;V=\=\]E%%c-45++- 0 0#5<=))e.@.@#HI--ejjq-Idjj\a\f\f\l\lNl!&!9!9$--!HEJ33EJJQ3OTXT^T^bgblblbrbrTrV$($J$J %

qA %K %O   !%doo7 9:	;
  		+I1M ..t3RZfo.pE#ST%))%CD||c.2DOOEF &&t3zUE#{{6+=+=tDE)
y &*E#))U-D-DH[H[\cHdHd%)E"%*%5%5E"==$)JJ!!
r!   c                 n    U R                  U5      n[        R                  XX#XEXgS9n	SU	l        Xl        U	$ )Nr$  r   )r  r  r  r   r   )
r7   rL   rM   rN   r   r   r  r$  r   rp   s
             r   r  CClassScope.add_cfunction
  sD    %%d+
((5i ) V%r!   c           	          [        U5      nU R                  XS USUS9n[        X[        5      nXl        SUl        SUl        XFl        UR                  Ul        Xel	        U$ )Nr[  )rN   r   r   r   r   )
r
   r  rG   r   r   r   r   r   rr   r   )r7   rL   rM   r   r   rp   r  s          r   r  %CClassScope.declare_builtin_cfunction
  sn     T"&&D(Q] ' _$n5	#'  !	 	!-++	%r!   c                     U R                  U5      nUc  U R                  XUc  [        OUUS5      nSUl        Ub  SUl        X&l        Uc  [        XS9Ul        OXVl        U R                  R                  U5        U$ )NrJ   T)class_scope)
r  rr  r   r   r   r   PropertyScoperr   r  r   )r7   rL   r   rN   ctypeproperty_scoperp   s          r   declare_propertyCClassScope.declare_property
  s      &=LLu}^RWY\^ghE !%E	!'?EK(K$$U+r!   c                     U R                  XX%S9nUR                  R                  U[        R                  " U[        R
                  " SU R                  SS9/UUU	U
S9UUUUS9nX4$ )zPInternal convenience method to declare a C property function in one go.
        )r   rb  rN   r7   Nr   )r  r   r  r  )rL   rM   r   r   r   rN   )rd  rr   r  r   r  r  r  )r7   rL   rM   
cfunc_namer   rN   r   r  r   r  r  r   property_entryr&  s                 r   declare_cpropertyCClassScope.declare_cproperty
  s    
 ..tD.R$**<<%%((1A1AtLM! / / %! = 
 **r!   c                 P  ^ U4S jnUR                   UR                  -   nU Hv  mU R                  TR                  U" TR                  5      TR
                  S S5      nSUl        SUl        TR                  Ul        U R                   R                  U5        Mx     UR                  S S   H:  mTR
                  R                  (       d  M   TR
                  R                  5         M<     UR                   GH,  mTR                  nTR                  nU=(       a    UR                  nU(       d  U" U5      nU R                  TR                  TR
                  TR                   UTR"                  TR$                  SS9nSUl        TR&                  (       aT  SUl        TR(                  Ul        U R*                  UR*                  :X  d  UR(                  (       a  TR,                  Ul        U(       a  SUl        Xdl        TR0                  (       d  GM  TR0                  Ul        GM/     g )Nc                 F   > [         R                  < STR                  < 3$ ru  )r   rv  r   )r   
base_entrys    r   adapt9CClassScope.declare_inherited_c_attributes.<locals>.adapt
  s    $33Z5E5EFFr!   rJ   r   Tr[  )r  r  rr  rL   r   rM   r   r   r   r   r  rn   ro   r   r   r  rN   r   r   r   r   r   r   r   r   )	r7   
base_scopern  r   rp   r   r  r   rm  s	           @r   ro  *CClassScope.declare_inherited_c_attributes
  s   	G 22Z5K5KK!JLLz'7'7!8y2E !"E!%E)44E&&--e4 " %2215J'''BBD 6 %22J$$E"..I";y';';Je&&*..%%%z'@'@D ' RE "#E**)-&*4*F*F'%%)@)@@//-7-H-HE*+/($-!&&&%/%<%<") 3r!   c                 (   > [         TU ]  XX4XV5        g r3   )superrf  )r7   rL   r   rM   rN   r   rb  r,  s          r   rf  (CClassScope.handle_already_declared_name  s    ,T$Z\r!   )r  r  rF  rD  rG  r  r  r  r  r  r  )FTr  r  r  r3   r   )NNr[  FFNFN)T)r?   r@   rA   rB   r  r6  r  rG  rD  rF  r  rh  rp  r8   r   r%  r+  r3  r>  r  r  r  r  r  r  rd  ri  ro  rf  rD   __classcell__r,  s   @r   r  r  ]	  s    $ "# ).& %GK0"1 Q& 6;15G( ,5OSPd6  KLSXBH X`]b'++.,=^] ]r!   r  c                   l   ^  \ rS rSrSrSrSrSS jr  SS jr  SS jr	S r
S rU 4S	 jrS
 rSrU =r$ )CppClassScopei  r   Nc                     [         R                  XUS 5        UR                  U l        / U l        Ub9  U H2  nU R	                  XD[
        R                  " U5      S S5      nSUl        M4     g g )Nr[  r   )r   r8   r  r  rr  r   TemplatePlaceholderTyper   )r7   rL   r   r  Ttemplate_entrys         r   r8   CppClassScope.__init__  sg    t;5%00%'" !%*<<Q?x"Q)*&  !r!   c                    U(       d  UnU R                  X:5        U R                  U5      nU	(       a  Ub}  UR                  (       a  U R                  XX#U5      nOUR                  R                  U5      (       a+  UR                  R                  UR                  5      Ul        O?[        US5        O2U R                  XX#U5      nUR                  (       a  U	(       d  SUl	        SUl
        UR                  (       a]  SUl        U R                  (       aE  U R                  R                  5       (       d&  U R                  R                  5       < SU< 3Ul        US:w  a(  U	(       d  US:w  a  U R                  R                  U5        U$ )Nr  r   ::r  rZ  )r  r  r   rr  rM   r  r  r   r   r   r   get_fused_typesempty_declaration_coder   r  r   )r7   rL   rM   rN   r   r   r   r  r  r  r   rp   s               r   r  CppClassScope.declare_var  s"    E''@  &)  T$ZH##D))"ZZ55dmmD
cSTLLdDE  %&"!"Eyy!:!:!<!</3yy/O/O/QSX#Y 6>x48+;##E*r!   c           	      H   U R                   R                  S5      S   nXS4;   a{  Ucx  [        R                  < SU< 3n[	        S5      n[
        R                  " 5       Ul        UR                  Ul	        S nUR                   Vs/ s H
  o" U5      PM     snUl        OEUS:X  a?  Uc<  [        R                  < SU< 3n[	        S5      n[
        R                  " 5       Ul        US;   a  UR                  (       a  U R                  R                   Hf  nUR                  R                  U5      nU(       d  M'  UR                  R                  (       a  MD  [        US	5        [        UR                   S
5        Mh     U R#                  XUUXES9nU
Ul        UUl        U$ s  snf )Nr  ri  r8   rZ  c                    U R                   R                  (       ae  U R                   R                  (       dJ  [        R                  " U R
                  [        R                  " U R                   5      U R                  5      $ U $ r3   )rM   r   is_referencer   r  rL   
c_ref_typerN   )rP  s    r   	maybe_ref2CppClassScope.declare_cfunction.<locals>.maybe_refB  sU    88((1F1F%22*"7"7"A377L L Jr!   __dealloc__<del>rZ  r  zdConstructor cannot be called without GIL unless all base constructors can also be called without GILzBase constructor defined here.)r  r   r   )rL   r2  r   r  r
   r   	CVoidTyper  r`  original_argsr  rM   r  rr   r  r   rN   r  r   rp   )r7   rL   rM   rN   r   r   r   r  r  r  r   r
  r  r  rP  baserm  rp   s                     r   r  CppClassScope.declare_cfunction7  sg    YY__T*2.

++&,&8&8*EE *D)335D "&D 4899=9C39=DI]"u})/););ZHE )D)335D&&4::		..!ZZ..t4
:joo&;&;&;#   F  G*..*JK	 /   S*2', ! E *
# >s   Fc                    UR                   nUn[        USS 5      (       a   UR                  n[        USS 5      (       a  M   [        USS 5      (       a&  UR                   Vs/ s H  oDR                  PM     nnOSnUR
                  UR                  -    H  nUR                  S;   a  M  UR                  U R                  ;   a  UR                    U R                  UR                  UR                  UR                  S S5      nSUl        SUl        UR                  (       a  SUl        UR                  Ul        U R
                  R                  U5        M     UR                    Hf  nU R#                  UR                  UR                  UR$                  UR                  UR&                  SUR(                  UR*                  S9nSUl        Mh     UR,                   Hb  nUR                  U;  d  M  U R/                  UR                  UR                  UR$                  UR                  UR&                  S	S
9nSUl        Md     g s  snf )Ntemplate_typer  rE   r  r[  r   r   )r   r  r   F)r  )rr   r   r  r  rL   r  r  r   rr  r   rM   r   r   r   r   r   r  r  rN   r   r   r   r  r  )r7   r  rp  r  r{  base_templatesrm  rp   s           r   r  .CppClassScope.declare_inherited_cpp_attributes[  s   %%
"m_d;;)77M m_d;;=+t44.;.E.EF.Eff.ENFNN %::Z=S=SSJ"55$,,.LL*2B2Bx1E !E!"E&&%&"#-#8#8 &&--e4 T %22J**:??JOO+5>>:;K;K+5+@+@a5?5N5N8B8O8O	 + QE
 "#E 3 %11Jn4))*//:??*4..*:J:J*4*?*?% * Q &'" 29 Gs   !Ic           
         [        U R                  U R                  5      nX#l        U R                  R                  5        GH?  nUR                  (       aL  UR                  UR                  UR                  R                  U5      UR                  UR                  SS9  Ma  UR                  R                  (       am  UR                  5        HW  nUR                  UR                  UR                  R                  U5      UR                  UR                  UR                  S9  MY     M  UR                  UR                  UR                  R                  U5      UR                  UR                  UR                   5        GMB     U$ )Nr   )r  )r   )rx  rL   r   rM   r   r  r   r  rB  rN   r   r   rh   r  r   r  r   )r7   r  
type_entryrr   rp   r$  s         r   rB  CppClassScope.specialize  s    dii)9)9:
\\((*E}}""5::#(::#8#8#@#(99#(;;,-	 # /
 ((//1A++AFF,-FF,=,=f,E,-EE,-GG9:	 , I 2 !!%**"'**"7"7"?"'))"'++"'"2"2	4 +* r!   c                 L   > US:X  a  SnOUS:X  a  Sn[         [        U ]  U5      $ )Nr8   rZ  r  r  )rs  rx  r  )r7   rL   r,  s     r   r  CppClassScope.lookup_here  s/    :D]"D]D5d;;r!   c                     gr  rE   r<   s    r   r^  CppClassScope.is_cpp  s     r!   )r  r  r3   )Nr[  FFFFN)Nr[  r   r   r   rE   NF)r?   r@   rA   rB   r  default_constructorrM   r8   r  r  r  rB  r  r^  rD   ru  rv  s   @r   rx  rx    sR     D+ ,4_c< JKSX"H''R4< r!   rx  c                   &    \ rS rSrS r SS jrSrg)CppScopedEnumScopei  c                 2    [         R                  XUS 5        g r3   r  r  s      r   r8   CppScopedEnumScope.__init__  s    t;5r!   Nc                 n    U(       d  UnU R                  X65        U R                  XX#U5      nSUl        U$ r  )r  rr  r   )r7   rL   rM   rN   r   r   r   rp   s           r   r  CppScopedEnumScope.declare_var  s9     E''@T$Z@ r!   rE   )Nr[  N)r?   r@   rA   rB   r8   r  rD   rE   r!   r   r  r    s    6 IMr!   r  c                   .    \ rS rSrSrS rS rSS jrSrg)	ra  i  r   c                     UR                   (       a  UR                  5       OS n[        R                  XX2S9  UR                  U l        UR
                  U l        g )Nr0  )r   r>  r   r8   r  r  )r7   rL   r`  r   s       r   r8   PropertyScope.__init__  sF    4?4K4Kk..0QUt;I&22%00r!   c                 `   UR                   R                  (       a  [        US5        UR                  (       aI  UR                  S   R                  [
        L a)  U R                  R                  UR                  S   l        O[        UR                  5      S:w  a  [        US5        OdUR                  S   R                  R                  (       d<  UR                  S   R                  U R                  R                  L d  [        US5        [        R                  " XX#/UQ70 UD6nSUl        U$ )z'Declare a C property function.
        z&C property method cannot return 'void'r   r   z4C property method must have a single (self) argumentz6C property method must have a single (object) argumentT)r  r	  r   r`  rM   r   r   r  r   rP  r   r  r   )r7   rL   rM   rN   r`  kwargsrp   s          r   r  PropertyScope.declare_cfunction  s     ###?@991**n< $ 1 1 = =DIIaL^q #MN))A,##//499Q<3D3DHYHYHeHe3e#OP''DOOO!r!   c                     [        U5      nU(       a'  U R                  X[        US5      nSUl        XEl        U$ [        US5        g )NrJ   r   zKOnly __get__, __set__ and __del__ methods allowed in a property declaration)r   rr  r   r   r  r   )r7   rL   rN   r  r  rp   s         r   r   PropertyScope.declare_pyfunction  sG    3D9	LL^S)LE E'OL# , -r!   )r  r  Nr  )	r?   r@   rA   rB   r  r8   r  r  rD   rE   r!   r   ra  ra    s     1$r!   ra  c                   $    \ rS rSrSS jrS rSrg)CConstOrVolatileScopei  c                     [         R                  U SUR                  -   UR                  UR                  5        Xl        X l        X0l        g )Ncv_)r   r8   rL   r   r   base_type_scoper   is_volatile)r7   r  r   r  s       r   r8   CConstOrVolatileScope.__init__  sD    O(((''((		*
  / &r!   c                     U R                   R                  U5      nUbS  [        R                  " U5      n[        R                  " UR
                  U R                  U R                  5      Ul        U$ g r3   )r  r  ra  r   c_const_or_volatile_typerM   r   r  r5  s      r   r  !CConstOrVolatileScope.lookup_here  s^    $$006IIe$E#<<JJt/?/?AEJL	 r!   )r  r   r  N)r   r   )r?   r@   rA   rB   r8   r  rD   rE   r!   r   r  r    s    'r!   r  c                       \ rS rSrS rSrg)TemplateScopei   c                 T    [         R                  XUS 5        UR                  U l        g r3   )r   r8   r  r  s      r   r8   TemplateScope.__init__  s    t;5%00r!   )r  N)r?   r@   rA   rB   r8   rD   rE   r!   r   r  r     s    1r!   r  r3   )2rl  ra  rP  mathUtilsr   Errorsr   r   r   r	   StringEncodingr
   rI   r   r   r   r   r   	TypeSlotsr   r   r   r   r   r   r   r    r.   r0   rG   r   r   r  r  const_counterr  rk  r  r  r  r  r  r
  r  rx  r  ra  r  r  rE   r!   r   <module>r     sX   
    . C C )   85 5  *0 0s^ s^l!1 !1HK K\U V5 Vr b
0% b
0Jj2 j2ZD DN1: 10|  'D 'DT+ +\.8: .8bi]* i]V`E `F ",E ,^E *1E 1r!   