Ë
    Ç[;j²$ ã                   óx  — d dl Z d dlZd dlZd dlZddlmZ ddlmZmZm	Z	m
Z
 ddlmZ ddlmZmZ ddlmZ dd	lmZmZ dd
lmZmZmZmZmZ ddlmZ ddlmZ d„ Zd7d„Z G d„ d«      Z G d„ d«      Z G d„ de«      Z G d„ d«      Z  G d„ de «      Z! G d„ de «      Z"dZ# G d„ de «      Z$ G d„ de «      Z% G d„ d e «      Z& G d!„ d"e%«      Z' G d#„ d$e'«      Z( G d%„ d&e «      Z) G d'„ d(e «      Z* G d)„ d*e*«      Z+ G d+„ d,e*«      Z, G d-„ d.e «      Z- G d/„ d0e «      Z. G d1„ d2e «      Z/ G d3„ d4e «      Z0 G d5„ d6e «      Z1y)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                 ó¦   — | d d dk(  r#| j                  t        j                  «      s| dv r| t        j                  v rt        j                  | z   } | S )Nr   Ú__)Ú__weakref__Ú__dict__)Ú
startswithr   Úpyrex_prefixÚreserved_cnames)Úcnames    ú_G:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\Cython/Compiler/Symtab.pyÚc_safe_identifierr       sO   € à	ˆr�ˆ�dÒ	 E×$4Ñ$4´V×5HÑ5HÔ$IØ',Ð0KÑ'KØœ×.Ñ.Ñ.Ü×#Ñ# eÑ+ˆØ€Ló    c                 ó<  — | j                  «       r| S | j                  d«      j                  dd«      j                  d«      } |r	|›d| ›�} | S | j	                  t
        j                  «      r/| j                  t
        j                  t
        j                  d«      } | S )NÚpunycodeó   -ó   _ÚasciiÚ_r   )ÚisasciiÚencodeÚreplaceÚdecoder   r   r   Úpyunicode_identifier_prefix)r   Úmangle_withs     r   Úpunycodify_namer.   "   s�   € ð ‡}�}„Øˆà�L‰L˜Ó$×,Ñ,¨T°4Ó8×?Ñ?ÀÓH€EÙò '©Ð.ˆð €Lð 
×	Ñ	œ&×-Ñ-Ô	.ð —‘œf×1Ñ1Ü$×@Ñ@À!óEˆð €Lr!   c                   ó   — e Zd ZdZd„ Zd„ Zy)Ú	BufferAuxFc                 ó    — || _         || _        y ©N)Úbuflocal_nd_varÚ	rcbuf_var)Úselfr3   r4   s      r   Ú__init__zBufferAux.__init__:   s   € Ø.ˆÔØ"ˆ�r!   c                 ó    — d| j                   z  S )Nz<BufferAux %r>©r   ©r5   s    r   Ú__repr__zBufferAux.__repr__>   s   € Ø $§-¡-Ñ/Ð/r!   N)Ú__name__Ú
__module__Ú__qualname__Úwritable_neededr6   r:   © r!   r   r0   r0   7   s   „ Ø€Oò#ó0r!   r0   c                   óÔ  — e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(g Z)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<dZ=dZ>dZ?dZ@dZAdZBdZCdZDdZEdZFdZGdZHdZIdZJdZKdZLdZMdd„ZNeOj                   reQd„ «       ZReRj¦                  d	„ «       ZRd
„ ZTd„ ZUd„ ZVd„ ZWdd„ZXd„ ZYd„ ZZeQd„ «       Z[d„ Z\d„ Z]y)ÚEntryFr   Ú NÚprivateTc                 ó�   — || _         || _        || _        || _        || _        g | _        g | _        g | _        g | _        | | _	        y r2   )
Únamer   ÚtypeÚposÚinitÚoverloaded_alternativesÚcf_assignmentsÚcf_referencesÚinner_entriesÚdefining_entry)r5   rE   r   rF   rG   rH   s         r   r6   zEntry.__init__ï   sM   € ØˆŒ	ØˆŒ
ØˆŒ	ØˆŒØˆŒ	Ø')ˆÔ$Ø ˆÔØˆÔØˆÔØ"ˆÕr!   c                 ó    — | j                   d   S )NrF   r8   r9   s    r   rF   z
Entry.typeý   s   € à—=‘= Ñ(Ð(r!   c           
      óª   — t        d| j                  › d| j                  › d| j                  j	                  d«      › d|› �«       || j                  d<   y )NzENTRY Ú[z] TYPE: rF   z -> )ÚprintrE   r   r   Úget)r5   Únew_types     r   rF   z
Entry.type  sL   € ä�F˜4Ÿ9™9˜+ Q t§z¡z l°(¸4¿=¹=×;LÑ;LÈVÓ;TÐ:UÐUYÐZbÐYcÐdÔeØ$,ˆD�M‰M˜&Ò!r!   c                 ót   — dt        | «      j                  t        | «      | j                  | j                   fz  S )Nz%s(<%x>, name=%s, type=%s))rF   r;   ÚidrE   r9   s    r   r:   zEntry.__repr__  s/   € Ø+¬t°D«z×/BÑ/BÄBÀtÃHÈdÏiÉiÐY]×YbÑYbÐ.cÑcÐcr!   c                 ó0   — t        | j                  d«       y )NúPrevious declaration is here)r   rG   r9   s    r   Úalready_declared_herezEntry.already_declared_here	  s   € Üˆd�h‰hÐ6Õ7r!   c                 óV   — t        |d| j                  z  «       | j                  «        y )Nz('%s' does not match previous declaration)r   rE   rX   )r5   rG   s     r   Ú
redeclaredzEntry.redeclared  s"   € ÜˆcÐ=ÀÇ	Á	ÑIÔJØ×"Ñ"Õ$r!   c                 ó"   — | g| j                   z   S r2   )rI   r9   s    r   Úall_alternativeszEntry.all_alternatives  s   € Øˆv˜×4Ñ4Ñ4Ð4r!   c                 ó:  — d }| j                   �| j                  ||«      }|€s| j                  j                  r4| j                  j                  «       }|D �cg c]  }|j                  ‘Œ }}n| j                  «       }t        j                  ||||¬«      }|S c c}w )N)Úfail_if_emptyÚarg_is_lvalue_array)ÚspecialiserrF   Úis_fusedÚ"get_all_specialized_function_typesÚentryr\   r   Ú
best_match)	r5   ÚscopeÚ	arg_typesr^   r_   Ú
func_entryÚ	functypesÚfÚalternativess	            r   Úbest_function_matchzEntry.best_function_match  s–   € Øˆ
Ø×ÑÐ'Ø×)Ñ)¨%°Ó;ˆJØÐØ�y‰y×!Ò!Ø ŸI™I×HÑHÓJ�	Ù1:Ó;±¨A §£°�Ñ;à#×4Ñ4Ó6�Ü#×.Ñ.Ø˜<°}ÐZmôoˆJàÐùò  <s   ÁBc                 ó"   — | g| j                   z   S r2   )rL   r9   s    r   Úall_entrieszEntry.all_entries!  s   € Øˆv˜×*Ñ*Ñ*Ð*r!   c                 ó°   — t        | t        «      rAt        |t        «      r1| j                  | j                  f|j                  |j                  fk  S t        S r2   )Ú
isinstancerA   rE   r   ÚNotImplemented)ÚleftÚrights     r   Ú__lt__zEntry.__lt__$  s@   € Ü�dœEÔ"¤z°%¼Ô'?Ø—I‘I˜tŸz™zÐ*¨e¯j©j¸%¿+¹+Ð-FÑFÐFä!Ð!r!   c                 ó2   — t        | j                  «      dkD  S ©Nr   )ÚlenrJ   r9   s    r   Úcf_is_reassignedzEntry.cf_is_reassigned*  s   € ä�4×&Ñ&Ó'¨!Ñ+Ð+r!   c                 ó¨   — | j                   j                  sJ ‚d| _        | j                  rJ ‚t        j
                  j                  dd«      | _        y )NTÚOptionalLocalsúCppSupport.cpp)rF   Úis_cpp_classÚis_cpp_optionalÚutility_coder   ÚUtilityCodeÚload_cachedÚutility_code_definitionr9   s    r   Úmake_cpp_optionalzEntry.make_cpp_optional.  sI   € Ø�y‰y×%Ò%Ð%Ð%Ø#ˆÔØ×$Ò$Ð$Ð$Ü'+×'7Ñ'7×'CÑ'CÐDTÐVfÓ'gˆÕ$r!   c                 ó:   — | j                   r|| j                   v S dS ©NF)Úpytyping_modifiers)r5   Úmodifier_names     r   Údeclared_with_pytyping_modifierz%Entry.declared_with_pytyping_modifier4  s!   € Ø;?×;RÒ;Rˆ} × 7Ñ 7Ð7Ð]ÐX]Ð]r!   ©NN)FN)^r;   r<   r=   Úinline_func_in_pxdÚborrowedrH   Ú
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}   r`   Ú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_typer6   r   Údebug_verbose_entry_typesÚpropertyrF   Úsetterr:   rX   rZ   r\   rk   rm   rs   rw   r�   r†   r?   r!   r   rA   rA   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!   rA   c                   ó&   — e Zd ZdZdZd„ Zd„ Zd„ Zy)Ú
InnerEntryzK
    An entry in a closure scope that represents the real outer Entry.
    Tc                 óÞ  — t         j                  | |j                  |j                  |j                  |j
                  «       || _        || _        |}|j                  r|j                  }|j                  rŒ|| _        |j                  | _	        |j                  | _
        |j                  | _        |j                  | _        |j                  | _        | j                  j                  | «       y r2   )rA   r6   rE   r   rF   rG   rÇ   re   rM   rL   rJ   rK   rI   r|   Úappend)r5   rÇ   re   Úoutermost_entrys       r   r6   zInnerEntry.__init__>  sÊ   € Ü�‰�t˜[×-Ñ-Ø"×(Ñ(Ø"×'Ñ'Ø"—‘ô	(ð 'ˆÔØˆŒ
ð &ˆØ×)Ò)Ø-×9Ñ9ˆOð ×)Ó)à-ˆÔØ,×:Ñ:ˆÔØ-×<Ñ<ˆÔØ,×:Ñ:ˆÔØ'6×'NÑ'NˆÔ$Ø.×>Ñ>ˆÔØ×Ñ×!Ñ! $Õ'r!   c                 óf   — |j                  d«      rt        |«      ‚t        | j                  |«      S )Nr   )r   ÚAttributeErrorÚgetattrrM   ©r5   rE   s     r   Ú__getattr__zInnerEntry.__getattr__R  s,   € Ø�?‰?˜4Ô ä  Ó&Ð&Ü�t×*Ñ*¨DÓ1Ð1r!   c                 ó6   — | j                   j                  «       S r2   )rM   rm   r9   s    r   rm   zInnerEntry.all_entriesX  s   € Ø×"Ñ"×.Ñ.Ó0Ð0r!   N)r;   r<   r=   Ú__doc__r¦   r6   rØ   rm   r?   r!   r   rÐ   rÐ   8  s   „ ñð €Lò(ò(2ó1r!   rÐ   c                   ó$  — e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZdZdZdZdZdZdZg ZdZi Zd„ Zd„ ZdAd„Zd	„ Zd
„ ZdBd„Zd„ Zd„ Z dBd„Z!e"d„ «       Z#d„ Z$d„ Z%d„ Z&e'dBd„«       Z(dCd„Z)dDd„Z*d„ Z+dEd„Z,	 	 dFd„Z-	 	 dGd„Z.	 	 	 dHd„Z/	 	 dId„Z0d„ Z1d„ Z2	 dJd„Z3d„ Z4	 	 dKd „Z5dLd!„Z6d"„ Z7d#„ Z8dMd$„Z9dNd%„Z:d&„ Z;d'„ Z<d(„ Z=	 	 dOd)„Z>	 	 dPd*„Z?dCd+„Z@d,„ ZAd-„ ZBd.„ ZCd/„ ZDd0„ ZEd1„ ZFd2„ ZGd3„ ZHd4„ ZId5„ ZJd6„ ZKd7„ ZLd8„ ZMd9„ ZNd:„ ZOd;„ ZPd<„ ZQd=„ ZRdQd>„ZSd?„ ZTdBd@„ZUy)RÚScoper   FrB   NTc                 ó”  — || _         || _        || _        dt        |«      |j	                  dd«      fz  }| j                  «       }|r+|j                  |«      | _        |j                  |z   | _        nt        |«      | _        || _        i | _
        t        «       | _        g | _        g | _        g | _        g | _        g | _        g | _        g | _        g | _        g | _        i | _        i | _        i | _        i | _        i | _        g | _        g | _        i | _        | j<                  D ]#  }| j?                  t        |«      t@        d ¬«       Œ% y )Nz%d%s_Ú.Ú_dot_©rG   )!rE   Úouter_scopeÚparent_scoperv   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   )r5   rE   rá   râ   Úmangled_nameÚ
qual_scopeÚvar_names          r   r6   zScope.__init__™  sG  € ð ˆŒ	Ø&ˆÔØ(ˆÔØ¤# d£)¨T¯\©\¸#¸wÓ-GÐ!HÑHˆØ×*Ñ*Ó,ˆ
ÙØ",×"9Ñ"9¸$Ó"?ˆDÔØ *× 7Ñ 7¸,Ñ FˆDÕä"/°Ó"5ˆDÔØ ,ˆDÔØˆŒÜ›ˆŒØˆÔØˆÔØˆÔØˆÔØˆÔØ ˆÔØˆÔØ!ˆÔØ!#ˆÔØ"$ˆÔØ ˆÔØ#%ˆÔ ØˆÔØˆÔØ ˆÔØˆÔØˆÔØ×3Ô3ˆHØ×Ñœ]¨8Ó4´nÈ$ÐÕOñ 4r!   c                 ó   — | S r2   r?   )r5   Úmemos     r   Ú__deepcopy__zScope.__deepcopy__½  ó   € Øˆr!   c                 ó¶  — g }|j                   j                  «       D ].  \  }}|r||v sŒ|j                  s|sŒ|j                  ||f«       Œ0 | j                   j	                  |«       dD ]g  }t        | |«      }|D �	ch c]  }	|	j                  ’Œ }
}	t        ||«      D ]1  }|j                  s|sŒ|j                  |
vsŒ!|j                  |«       Œ3 Œi y c c}	w )N)rê   rë   rì   rí   rî   rï   rð   rñ   )rç   Úitemsr·   rÒ   ÚupdaterÖ   rE   )r5   ÚotherÚmerge_unusedÚ	allowlistrç   rE   rc   ÚattrÚself_entriesÚeÚnamess              r   Úmerge_inzScope.merge_inÀ  sÃ   € àˆØ Ÿ=™=×.Ñ.Ö0‰KˆD�%Ù ¨	Ò 1Ø—:’:¢Ø—N‘N D¨% =Õ1ð 1ð
 	�‰×Ñ˜GÔ$ó(ˆDô # 4¨Ó.ˆLÙ%1Ó2¡\ �Q—V“V \ˆEÐ2Ü  ¨Ö-�Ø—J’J¢,°E·J±JÀeÒ4KØ ×'Ñ'¨Õ.ñ .ñ(ùò 3s   Á>Cc                 óP   — d| j                   j                  ›d| j                  ›d�S )NÚ<Ú Ú>)Ú	__class__r;   rå   r9   s    r   Ú__str__zScope.__str__Ø  s   � Ø ŸN™N×3Ó3°T×5HÓ5HÐIÐIr!   c                 ó   — | j                   S r2   ©râ   r9   s    r   rã   zScope.qualifying_scopeÛ  s   € Ø× Ñ Ð r!   c                 óˆ   — |rt        |›| j                  ›|›�«      S | j                  j                  || j                  «      S r2   )r.   ræ   râ   ÚmanglerE   ©r5   ÚprefixrE   s      r   r  zScope.mangleÞ  s:   € ÙÜ"©v°t×7HÒ7HÉ$Ð#OÓPÐPà×$Ñ$×+Ñ+¨F°D·I±IÓ>Ð>r!   c                 óN   — t         j                  ›|›d�}| j                  |«      S )Nr'   )r   r   r  )r5   rE   r  s      r   Úmangle_internalzScope.mangle_internalä  s#   € ô #×/Ò/²Ð6ˆØ�{‰{˜6Ó"Ð"r!   c                 óT   — | j                   r| j                   j                  |«      S |S r2   )râ   Úmangle_class_private_namer×   s     r   r  zScope.mangle_class_private_nameë  s'   € Ø×ÒØ×$Ñ$×>Ñ>¸tÓDÐDØˆr!   c                 ó˜   — | j                  «       j                  }	 ||   dz   }|||<   |r|s|S d||fz  S d|z  S # t        $ r d}Y Œ$w xY w)Nr   r   z%s%dz%d)Úglobal_scoperú   ÚKeyError)r5   rE   ÚcountersÚcounts       r   Únext_idzScope.next_idð  sn   € à×$Ñ$Ó&×2Ñ2ˆð	Ø˜T‘N QÑ&ˆEð ˆ�‰ÙÙà�Ø˜T 5˜MÑ)Ð)à˜%‘<Ðøô ò 	ØŠEð	ús   œ; »A	ÁA	c                 ó6   — | j                  «       j                  S r2   )r   Úcontextr9   s    r   r&  zScope.context   s   € à× Ñ Ó"×*Ñ*Ð*r!   c                 ó6   — | j                   j                  «       S ©z6 Return the module-level scope containing this scope. )rá   r   r9   s    r   r   zScope.global_scope  s   € à×Ñ×,Ñ,Ó.Ð.r!   c                 ó6   — | j                   j                  «       S r(  )rá   Úbuiltin_scoper9   s    r   r*  zScope.builtin_scope  s   € à×Ñ×-Ñ-Ó/Ð/r!   c              #   ó–   K  — | –— | j                   r3t        | j                   t        j                  d«      ¬«      E d {  –—†  y y 7 Œ­w)Nræ   )Úkey)ré   ÚsortedÚoperatorÚ
attrgetterr9   s    r   Úiter_local_scopeszScope.iter_local_scopes  s9   è ø€ ØŠ
Ø�>Š>Ü˜dŸn™n´(×2EÑ2EÀnÓ2UÔV×VÑVð ØVús   ‚>A	Á AÁA	c              #   óL   K  — | j                   }|�|| _         d –— || _         y ­wr2   )Úin_c_type_context)r5   r2  Úold_c_type_contexts      r   Únew_c_type_contextzScope.new_c_type_context  s+   è ø€ à!×3Ñ3ÐØÐ(Ø%6ˆDÔ"ÛØ!3ˆÕùs   ‚"$c                 óŽ  — d}| j                   }||   }	d}
|j                  r³|	j                  j                  r�| j                  «       r�|	j	                  «       D ]x  }|j                  |j                  «      sŒ|dk(  r|j                  sd}
n|j                  rd}
|
r5|}|rt        j                  |«      }||_        d|_        ||_	        ||_
         n d}
|
r	 |S ||   j                  r	 |S |dk(  r$t        |d|z  | j                  rd«       yd«       y|d	k7  r,t        |d|z  «       | j                   |   j                  «        y)
a  
        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’   rF   Úis_cppr\   Úcompatible_signature_withÚargsr³   Úcopyr   rG   r   r±   r   rX   )r5   rE   r   rF   rG   r‹   Ú
copy_entryrc   rç   Ú	old_entryÚcpp_override_allowedÚ	alt_entrys               r   Úhandle_already_declared_namez"Scope.handle_already_declared_name  s_  € ð ˆØ—,‘,ˆØ˜D‘Mˆ	ð  %ÐØ×Ò §¡×!<Ò!<ÀÇÁÄð '×7Ñ7Ö9�	Ø×1Ñ1°)·.±.ÕAØ˜xÒ'°·	²	à/3Ñ,Ø"×/Ò/à/3Ð,Ù+Ø )˜Ù%Ü$(§I¡I¨iÓ$8˜Eð &*˜œ
Ø-2˜Ô*à&+˜œØ$'˜œ	Ùð) :ð, (,Ð$áàð ˆð �T‰]×'Ò'àð ˆð ˜XÒ%ô ˜Ð/°$Ñ6¸T×=MÒ=M¸ÔUð ð	 TUÔUð ð ˜xÒ'Ü�cÐ-°Ñ4Ô5Ø—‘˜TÑ"×8Ñ8Ô:Ør!   c	                 ó–  — |j                   rt        | t        «      st        |d«       | j                  s(|r&t        j                  d|«      rt        |d|z  d«       | j                  }	d }
|r||	v r|s| j                  |||||«      }
|
s”t        ||||¬«      }
| j                  |
_        ||
_        |rk| j                  |«      |
_        |sS||	v rJ| j                  «       r:|j                  r.|	|   j                   s|	|   j"                  j%                  |
«       n|
|	|<   |j&                  r|j(                  |
_        | |
_        ||
_        |
S )Nz5Buffer types only allowed as function local variablesz
^_[_A-Z]+$z'%s' is a reserved name in C.éÿÿÿÿrà   )Ú	is_bufferro   Ú
LocalScoper   r±   ÚreÚmatchr   rç   rB  rA   Úcreate_wrapperrä   rå   r:  r’   r“   rI   rÒ   Úis_memoryviewsliceÚdefault_valuerH   re   r‹   )r5   rE   r   rF   rG   r‹   Úshadowr™   rI  rç   rc   s              r   ÚdeclarezScope.declareX  s-  € ð �>Š>¤*¨T´:Ô">Ü�#ÐNÔOØ×Ò¡E¬b¯h©h°|ÀUÔ.Kä�CÐ8¸5Ñ@À"ÔEà—,‘,ˆØˆÙ�D˜G‘O©FØ×5Ñ5°d¸EÀ4ÈÈjÓYˆEáÜ˜$  t°3Ô7ˆEØ $× 0Ñ 0ˆEÔØ#1ˆEÔ áØ'+×'8Ñ'8¸Ó'>�Ô$ÙØ˜w‘¨4¯;©;¬=¸T×=NÒ=NÐW^Ð_cÑWd×WoÒWoà ™×=Ñ=×DÑDÀUÕKà(-˜ ™à×"Ò"Ø×+Ñ+ˆEŒJàˆŒØ%ˆÔØˆr!   c                 ó6   — t        | j                  ›d|›�«      S ©NrÞ   )r
   rå   r×   s     r   rä   zScope.qualify_name|  s   € Ü¨×(;Ó(;¹TÐBÓCÐCr!   c	                 óÀ   — |s6| j                   s|dk(  s|r|}n | j                  t        j                  |«      }| j	                  ||||||¬«      }	d|	_        ||	_        |	S )NÚpublic)rI  r   )r±   r  r   Úenum_prefixrM  rœ   Ú
value_node)
r5   rE   rF   ÚvaluerG   r   r‹   r»   rI  rc   s
             r   Údeclare_constzScope.declare_const  sa   € áØ×Ò J°(Ò$:¹cØ‘àŸ™¤F×$6Ñ$6¸Ó=�Ø—‘˜T 5¨$°°ZÐR`�ÓaˆØˆŒØ ˆÔØˆr!   c
           	      óÀ   — |s|}| j                  ||||||d¬«      }
d|
_        ||
_        |r| j                  j	                  |
«       |	st        |dd «      €|
|_        |
S )NT)r™   r   rc   )rM  r™   r»   rë   rÒ   rÖ   rc   )r5   rE   rF   rG   r   r‹   r»   ÚdefiningrL  Útemplaterc   s              r   Údeclare_typezScope.declare_type‹  st   € ñ ØˆEØ—‘˜T 5¨$°°ZÀØ%)ð ó +ˆàˆŒØˆŒ	ÙØ×Ñ×$Ñ$ UÔ+ñ œG D¨'°4Ó8Ð@ØˆDŒJð ˆr!   c                 óú  — |s6| j                   s|dk7  s|r|}n | j                  t        j                  |«      }	 | j                  r0| j
                  j                  | j                  «      j                  }nd }t        j                  ||||dk(  |«      }| j                  ||||||¬«      }
|
j                   |_        |
S # t        $ r3}	t        ||	j                  d   «       t        j                  }Y d }	~	Œad }	~	ww xY w)NrC   r7  r   )r‹   r»   )r±   r  r   Útype_prefixÚis_cpp_class_scoperá   ÚlookuprE   rF   r   Úcreate_typedef_typeÚ
ValueErrorr   r<  Ú
error_typerY  rå   )r5   rE   Ú	base_typerG   r   r‹   r»   Ú	namespacerF   r  rc   s              r   Údeclare_typedefzScope.declare_typedefŸ  sí   € áØ×Ò J°)Ò$;¹sØ‘àŸ™¤F×$6Ñ$6¸Ó=�ð
	)Ø×&Ò&Ø ×,Ñ,×3Ñ3°D·I±IÓ>×CÑC‘	à �	Ü×1Ñ1°$¸	À5Ø3=ÀÑ3IØ2;ó=ˆDð ×!Ñ! $¨¨c°5Ø/9Àð "ó Fˆà#×2Ñ2ˆÔØˆøô ò 	)Ü�#�q—v‘v˜a‘yÔ!Ü×(Ñ(�Dûð	)ús   ºAB> Â>	C:Ã)C5Ã5C:c
           
      ó”  — |s6| j                   s|dk(  s|r|}n | j                  t        j                  |«      }| j	                  |«      }
|
si| j                  «       }t        j                  ||||||	|¬«      }| j                  |||||||d u¬«      }
| j                  j                  |
«       |
|_        nÉ|
j                  r/|
j                  j                  r|
j                  j                  |k(  st!        |d|z  d«       n}|r'|
j                  j"                  rt!        |d|z  d«       nT| j%                  |
||«       | j'                  |
||«       |r,||
j                  _        | j(                  j                  |
«       | j*                  r>| j,                  j/                  | j0                  «      j                  |
j                  _        |
S )NrQ  )Úin_cpp)r‹   r»   rW  ú'%s' redeclared  r   ú2'%s' already defined  (ignoring second definition))r±   r  r   r[  Úlookup_herer:  r   ÚCStructOrUnionTyperY  rì   rÒ   rc   r™   rF   Úis_struct_or_unionÚkindr   re   Úcheck_previous_typedef_flagÚcheck_previous_visibilityrë   r\  rá   r]  rE   rb  )r5   rE   rk  re   Útypedef_flagrG   r   r‹   r»   Úpackedrc   re  rF   s                r   Údeclare_struct_or_unionzScope.declare_struct_or_union¶  s�  € ñ
 Ø×Ò J°(Ò$:¹cØ‘àŸ™¤F×$6Ñ$6¸Ó=�Ø× Ñ  Ó&ˆÙØ—[‘[“]ˆFÜ×0Ñ0Ø�d˜E <°¸Øô!ˆDð ×%Ñ% d¨D°#°uØ'¨sØ ¨Ð,ð &ó .ˆEð ×Ñ×#Ñ# EÔ*ØˆD�Jà—M’M e§j¡j×&CÒ&CØŸ
™
Ÿ™¨4Ò/Ü˜Ð0°4Ñ7¸Õ;Ù˜5Ÿ:™:×+Ò+Ü˜ÐQÐTXÑXÐZ[Õ\à×0Ñ0°¸ÀcÔJØ×.Ñ.¨u°jÀ#ÔFÙØ',�E—J‘JÔ$Ø×%Ñ%×,Ñ,¨UÔ3Ø×"Ò"Ø#'×#3Ñ#3×#:Ñ#:¸4¿9¹9Ó#E×#JÑ#JˆE�J‰JÔ Øˆr!   c           	      ó
  ‡‡
— |€4| j                   s|dk7  r|}n | j                  t        j                  |«      }t	        |«      }| j                  |«      }|sPt        j                  |||||¬«      }	| j                  ||	‰|||d u¬«      }| j                  j                  |«       �nE|j                  r|j                  j                  s t        ‰d|z  «       |j                  «        y |r'|j                  j                   rt#        ‰d|z  d«       n.|r,||j                  _        | j$                  j                  |«       |r]|j                  j&                  r6|j                  j&                  |k7  rt        ‰d«       |j                  «        n||j                  _        |s|j                  j(                  r5||j                  j(                  k7  rt        ‰d«       |j                  «        ˆ
ˆfd	„Š
|rE ‰
||«       |j+                  d
d
t        j,                  |j                  «      |j.                  ¬«       | j0                  r>| j2                  j5                  | j6                  «      j                  |j                  _        |S )NrC   )Ú	templates)r‹   rW  r8  rg  r   ú-Base type does not match previous declarationz5Template parameters do not match previous declarationc                 óÜ   •— |D ]f  }|t         j                  u rŒ|j                  €t        ‰d«       Œ/ ‰| |j                  «       | j
                  j                  j                  |«       Œh y )Nz#Cannot inherit from incomplete type)r   r`  re   r   Úbase_classesrF   Ú declare_inherited_cpp_attributes)rc   ru  Ú
base_classÚdeclare_inherited_attributesrG   s      €€r   rx  z=Scope.declare_cpp_class.<locals>.declare_inherited_attributes  s]   ø€ Û*�
Ø¤×!6Ñ!6Ñ6ØØ×#Ñ#Ð+Ü˜#ÐDÕEá0°¸
×8OÑ8OÔPØ—J‘J×$Ñ$×EÑEÀjÕQñ +r!   Úthis)rE   r   rF   rG   )r±   r  r   r[  Úlistrh  r   ÚCppClassTyperY  rì   rÒ   r™   rF   r{   r   rX   re   r   rë   ru  rr  rü   ÚCPtrTyperG   r\  rá   r]  rE   rb  )r5   rE   re   rG   r   ru  r‹   rr  rc   rF   rx  s      `      @r   Údeclare_cpp_classzScope.declare_cpp_classÛ  s  ù€ ð ˆ=Ø×Ò J°)Ò$;Ø‘àŸ™¤F×$6Ñ$6¸Ó=�Ü˜LÓ)ˆØ× Ñ  Ó&ˆÙÜ×*Ñ*Ø�e˜U L¸iôIˆDà×%Ñ% d¨D°#°uØ'°EÀÐ4Eð &ó GˆEà×Ñ×#Ñ# EÖ*à—M’M e§j¡j×&=Ò&=Ü�cÐ-°Ñ4Ô5Ø×+Ñ+Ô-ØÙ˜5Ÿ:™:×+Ò+Ü˜ÐQÐTXÑXÐZ[Õ\áØ',�E—J‘JÔ$Ø×%Ñ%×,Ñ,¨UÔ3ÙØ—:‘:×*Ò*¨u¯z©z×/FÑ/FÈ,Ò/VÜ˜#ÐNÔOØ×/Ñ/Õ1à.:�E—J‘JÔ+Ù˜EŸJ™J×0Ò0Ø §
¡
× 4Ñ 4Ò4Ü˜#ÐVÔWØ×/Ñ/Ô1õ	Rñ Ù(¨°Ô=Ø×Ñ 6°¼j×>QÑ>QÐRW×R\ÑR\Ó>]Ðch×clÑclÐÔmØ×"Ò"Ø#'×#3Ñ#3×#:Ñ#:¸4¿9¹9Ó#E×#JÑ#JˆE�J‰JÔ Øˆr!   c                 ó    — ||j                   j                  k7  r5t        |d|j                  ›dd|j                   j                     ›d�«       y y )NÚ'z' previously declared using ')ÚcdefÚctypedef)rF   rn  r   rE   )r5   rc   rn  rG   s       r   rl  z!Scope.check_previous_typedef_flag  sC   € Ø˜5Ÿ:™:×2Ñ2Ò2Ü‘#Ø—
“
Ð0°·±×1HÑ1HÓIðKõ Lð 3r!   c                 ór   — |j                   |k7  r(t        |d|j                  ›d|j                   ›d�«       y y )Nr  ú' previously declared as ')r‹   r   rE   )r5   rc   r‹   rG   s       r   rm  zScope.check_previous_visibility  s3   € Ø×Ñ˜zÒ)Ü‘#Ø—
“
˜E×,Ó,ð.õ /ð *r!   c
                 ó~  — |r²|s;| j                   s|dk(  s|dk(  s|r|}n | j                  t        j                  |«      }| j                  r0| j
                  j                  | j                  «      j                  }
nd }
|rt        j                  |||
|	¬«      }n+t        j                  ||||
|	¬«      }nt        j                  }| j                  ||||||¬«      }|r6t        j                  j!                  dd«      |_        | j%                  |«       ||_        g |_        | j*                  j-                  |«       |S )NrQ  r7  )r®   )r   r‹   r»   ÚEnumClassDeclrz   )r±   r  r   r[  r\  rá   r]  rE   rF   r   ÚCppScopedEnumTypeÚ	CEnumTypeÚc_anon_enum_typerY  r   r~   r   r}   Úuse_entry_utility_coderI  Úenum_valuesrì   rÒ   )r5   rE   rG   r   Úscopedrn  r‹   r»   rI  r®   rb  rF   rc   s                r   Údeclare_enumzScope.declare_enum  s!  € áÙØ×$Ò$¨
°hÒ(>Ø%¨Ò1±SØ ‘Eà ŸK™K¬×(:Ñ(:¸DÓA�EØ×&Ò&Ø ×,Ñ,×3Ñ3°D·I±IÓ>×CÑC‘	à �	áÜ!×3Ñ3°D¸%ÀÐPSÔT‘ä!×+Ñ+¨D°%¸ÀyÐVYÔZ‘ä×.Ñ.ˆDØ×!Ñ! $¨¨c¸5Ø#¨3ð "ó 0ˆáÜ!%×!1Ñ!1×!=Ñ!=¸oÐO_Ó!`ˆEÔØ×'Ñ'¨Ô.Ø-ˆÔØˆÔà×Ñ×Ñ Ô&Øˆr!   c                 ó:   — | j                   j                  ||«      S r2   )rá   Údeclare_tuple_type)r5   rG   Ú
componentss      r   rŽ  zScope.declare_tuple_type:  s   € Ø×Ñ×2Ñ2°3¸
ÓCÐCr!   c
                 óv  — |s*|dk7  s|r|}n | j                  t        j                  |«      }| j                  |||||«      }
d|
_        |j
                  r6|dk7  r1| j                  d   r|
j                  «        n|j                  |«       |r|dk7  rd|
_	        d|
_
        |rd|
_        d|
_
        |	r|	|
_        |
S )NrC   r   r7  Ú
cpp_locals)r  r   Ú
var_prefixrM  r‘   r{   Ú
directivesr�   Úcheck_nullary_constructorr¹   r·   r»   r„   ©r5   rE   rF   rG   r   r‹   r»   Úin_pxdÚis_cdefr„   rc   s              r   rü   zScope.declare_var=  sº   € ñ Ø˜YÒ&©#Ø‘àŸ™¤F×$5Ñ$5°tÓ<�Ø—‘˜T 5¨$°°ZÓ@ˆØˆÔØ×Ò ¨xÒ!7Ø�‰˜|Ò,Ø×'Ñ'Õ)à×.Ñ.¨sÔ3Ù�j HÒ,Ø#$ˆEÔ ØˆEŒJÙØˆEŒIØˆEŒJÙØ'9ˆEÔ$Øˆr!   c                 ó@   — |sy |D ]  }||vsŒt        |d|z  «       Œ y )Nz"Modifier '%s' is not allowed here.)r   )r5   rG   Ú	modifiersÚallowedÚmodifiers        r   Ú_reject_pytyping_modifiersz Scope._reject_pytyping_modifiersW  s*   € ÙØÛ!ˆHØ˜wÒ&Ü�cÐ?À(ÑJÕKñ "r!   c                 ó(   — | j                  |||«      S r2   ©rü   ©r5   rE   rF   rG   s       r   Ú$declare_assignment_expression_targetz*Scope.declare_assignment_expression_target^  s   € ð ×Ñ  d¨CÓ0Ð0r!   c                 ó\   — | j                  |«      }| j                  j                  ||«      S r2   )r  rá   Údeclare_builtin©r5   rE   rG   s      r   r¢  zScope.declare_builtinc  s+   € Ø×-Ñ-¨dÓ3ˆØ×Ñ×/Ñ/°°cÓ:Ð:r!   c                 óþ   — |r;|j                   j                  s%t        |d|z  «       t        |j                  d«       | j	                  |t
        ||¬«      }t        |_        | j                  j                  |«       |S )Nz'%s' already declaredrW   ©r‹   )
rF   r’   r   rG   rü   r   r   Ú	signaturerï   rÒ   )r5   rE   rG   r‹   rc   s        r   Ú_declare_pyfunctionzScope._declare_pyfunctiong  si   € Ù˜Ÿ™×0Ò0Ü�#Ð.°Ñ5Ô6Ü�%—)‘)Ð;Ô<Ø× Ñ  ¤~°sÀzÐ ÓRˆÜ.ˆŒØ×Ñ×"Ñ" 5Ô)Øˆr!   c                 óÂ  — | j                  |«      }|s| j                  ||||¬«      S |rI|j                  j                  rt        |_        n@|j                  t        ur.| j                  ||||¬«      S | j                  |t        ||¬«       | j                  d t        ||d¬«      }t        |«      |_        | j                  |«      |_	        t        |_        d|_        |S )N)r‹   rc   r¥  rC   ©r   r‹   T)rh  r§  rF   Úis_unspecifiedr   rü   r
   rE   rä   rå   r   r¦  r˜   )r5   rE   rG   Úallow_redefiner‹   rc   s         r   Údeclare_pyfunctionzScope.declare_pyfunctionp  sÙ   € à× Ñ  Ó&ˆÙØ×+Ñ+¨D°#À*ÐTYÐ+ÓZÐZÙØ�z‰z×(Ò(Ü+�•
Ø—‘¤>Ñ1Ø×/Ñ/°°cÀjÐX]Ð/Ó^Ð^à×Ñ˜T¤>°3À:ÐÔNØ× Ñ  ¤~°sØ'+¸	ð !ó Cˆä" 4Ó(ˆŒ
Ø#×0Ñ0°Ó6ˆÔÜ.ˆŒØ!ˆÔØˆr!   c                 óT  — | j                  t        j                  dz   |«      }| j                  t        j                  dz   |«      }| j                  |«      }| j	                  d |t
        |d«      }t        |«      |_        ||_        ||_	        ||_
        t        |_        d|_        |S )NÚfuncdef_Úmethdef_rC   T)r  r   Úlambda_func_prefixrä   rM  r   r
   rE   rå   Úpymethdef_cnamer«   r   r¦  r˜   )r5   Úlambda_namerG   r«   r±  rå   rc   s          r   Údeclare_lambda_functionzScope.declare_lambda_function„  s–   € à—[‘[¤×!:Ñ!:¸ZÑ!GÈÓUˆ
ØŸ+™+¤f×&?Ñ&?À*Ñ&LÈkÓZˆØ×*Ñ*¨;Ó7ˆà—‘˜T :¬~¸sÀIÓNˆÜ" ;Ó/ˆŒ
Ø-ˆÔØ /ˆÔØ%ˆÔÜ.ˆŒØ!ˆÔØˆr!   c                 ó:   — | j                   j                  |«       y r2   )rù   rÒ   ©r5   Údef_nodes     r   Úadd_lambda_defzScope.add_lambda_def“  s   € Ø×Ñ×Ñ Õ)r!   c                 ó:   — | j                   j                  |«       y r2   )rï   rÒ   ©r5   rc   s     r   Úregister_pyfunctionzScope.register_pyfunction–  s   € Ø×Ñ×"Ñ" 5Õ)r!   c           
      óº  — |s*|dk7  s|r|}n | j                  t        j                  |«      }d|	v xr |xr |}|rd}| j                  |«      }|�r=|s0||j                  k7  r!|dk(  rd}|j                  }||_        ||_        |dk7  r0||j                  k7  r!t        |d|›d|j                  ›d|›d	�d
«       ||j                  k7  rt        |d|›d|rdnd›d	�d
«       |j                  j                  |«      r,|j                  j                  |j                  «      |_	        �nŒ|dk(  rÈ|j                  dk(  r¹| j                  }| j                  «       rd}n8|r6|s4|j                  «       D ]  }|j
                  r||j
                  k(  sŒ n d}|rK| j!                  ||||||	«      }|j                  «       |_        |j$                  �|j$                  |_        |}nÔt        |dd
«       ||_	        n¿|sŒ|j&                  r€|j)                  |j                  «      re|j                  j*                  rG|j                  j,                  €1|j,                  r%t/        |j0                  d|j2                  › d�| «       ||_	        n1t5        |d«       n$| j!                  ||||||	«      }||_        ||_        |rd|_        |r|dk7  rd
|_        |rd
|_        |s|s|dk7  rt5        |d|z  «       |rd|_        |	r|	|_        |
r!|j>                  rJ d|›d|›d�«       ‚|
|_        |rMtA        ||tB        «      }| jE                  |«      |_#        d
|_$        d
|_%        |jL                  |_&        ||_'        ||_(        |jR                  rZ|j,                  €N|j*                  rB|d   jT                  s3|r1|s/|s-tW        jX                  || ||jZ                  j\                  ¬«       |S )NrC   ÚinlineFr7  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)/r  r   Úfunc_prefixrh  r‹   r   r«   r   r¼   rF   Úsame_asÚwith_with_gilÚwith_gilÚis_builtin_scoper:  r\   Úadd_cfunctionrI   r`   r¹   r;  ÚnogilÚexception_valuer	   rG   rE   r   rˆ   r»   rº   r¬   r}   rA   r   rä   rå   r‘   rŽ   re   r¯   rc   Úexception_checkÚin_utility_coder   Úwrite_noexcept_performance_hintÚreturn_typeÚis_void)r5   rE   rF   rG   r   r‹   r»   r–  rW  r™  r}   ÚoverridableÚinline_in_pxdrc   Úcan_overriderA  ÚtempÚ	var_entrys                     r   Údeclare_cfunctionzScope.declare_cfunction™  s¼  € ñ Ø˜YÒ&©#Ø‘àŸ™¤F×$6Ñ$6¸Ó=�Ø  IÐ-ÒE°&ÒE¸XˆÙàˆFØ× Ñ  Ó&ˆÚÙ˜j¨E×,<Ñ,<Ò<ÀÈxÒAWð  �Ø"×-Ñ-�
Ø#�”Ø#(�Ô Ø˜YÒ&¨:¸×9IÑ9IÒ+IÜ™Ú˜%×*Ó*ªJð8Ø9:ô<à˜e×2Ñ2Ò2Ü™Ú¡[™'°fÑ<ð>Ø?@ôBà�z‰z×!Ñ! $Ô'à"ŸZ™Z×5Ñ5°d·m±mÓD�–
à Ò)¨e×.>Ñ.>À(Ò.JØ#'×#8Ñ#8�LØ—{‘{”}Ø'+™Ù¡|ð */×)?Ñ)?Ö)A˜IØ#,§?¢?°e¸y¿¹Ó6NÙ %ð *Bð ,0˜LÙ#Ø#×1Ñ1°$¸¸cÀ5È*ÐV_Ó`˜Ø7<×7MÑ7MÓ7O˜Ô4Ø ×,Ñ,Ð8Ø/4×/@Ñ/@˜DÔ,Ø $™ä Ð%]Ð_`ÔaØ%)˜�
Ù E×$8Ò$8¸T×=[Ñ=[Ð\a×\fÑ\fÔ=gð —z‘z×'Ò'¨E¯J©J×,FÑ,FÐ,NÐSW×SgÒSgÜ(Ø!ŸI™IØ?ÀÇ
Á
¸|ð LJð Jð !ô"ð "&�E•Jä˜#ÐWÕXà×&Ñ& t¨T°3¸¸zÈ9ÓUˆEØ$ˆEÔØ#.ˆEÔ ÙØ'+ˆEÔ$Ù�j HÒ,Ø#$ˆEÔ ÙØˆEŒIÙ¡¨:¸Ò+AÜ�#ÐLÈtÑSÔTÙØ#'ˆEÔ ÙØ#,ˆEÔ ÙØ×)Ò)ÑoÒcgÒinÐ+oÓoÐ)Ø!-ˆEÔÙä˜d E¬>Ó:ˆIØ'+×'8Ñ'8¸Ó'>ˆIÔ$Ø$%ˆIÔ!Ø$%ˆIÔ!Ø#Ÿk™kˆIŒOØ )ˆEÔØˆŒ
Ø× Ò  T×%9Ñ%9Ð%AÀdÇjÂjØ˜‘F×*Ò*á¡±Ü×6Ñ6Ø�T¨¸4×;KÑ;K×;SÑ;SõUàˆr!   c           	      óì   — t        d„ |D «       «      sJ ‚t        j                  |t        j                  d| j                  d «      gfi |¤Ž}	| j                  ||	|d |||¬«      }
d|
_        |�||
_        |
S )Nc              3   ó$   K  — | ]  }|d v –— Œ
 y­w))rÊ  rË  rÉ  rÆ  Úis_const_methodÚis_static_methodNr?   )Ú.0Úks     r   Ú	<genexpr>z(Scope.declare_cgetter.<locals>.<genexpr>  s   è ø€ ð 
á&�ð ÐsÔsÙ&ùs   ‚r5   )r   r‹   r™  rW  T)Úallr   Ú	CFuncTypeÚCFuncTypeArgÚparent_typerÕ  rÈ   r«   )r5   rE   rÎ  rG   r   r‹   r™  rW  Úcfunc_type_configÚ
cfunc_typerc   s              r   Údeclare_cgetterzScope.declare_cgetter  sŸ   € äñ 
á&ó
ô 
ð 	
ð 
ô  ×)Ñ)ØÜ×$Ñ$ V¨T×-=Ñ-=¸tÓDÐEñ!ð  ñ!ˆ
ð ×&Ñ&Ø�*˜c¨¸*ÐPYÐdlð 'ó nˆàˆÔØÐØ$ˆEÔØˆr!   c                 óŽ  — | j                  |||||«      }d|_        |r||_        |s|j                  r| j                  j                  |«       |S t        | j                  «      }	t        | j                  «      D ]+  }
|
j                  s|
j                  j                  s n|	dz  }	Œ- | j                  j                  |	|«       |S ru   )rM  r’   r¬   ra   rð   rÒ   rv   Úreversedr³   rF   Úinsert)r5   rE   rF   rG   r   r‹   r™  Ú	inheritedrc   ÚiÚcfunc_entrys              r   rÈ  zScope.add_cfunction  s¶   € à—‘˜T 5¨$°°ZÓ@ˆØˆÔÙØ#,ˆEÔ Ù˜ŸšØ×Ñ×%Ñ% eÔ,ð ˆô �D×&Ñ&Ó'ˆAÜ'¨×(:Ñ(:Ö;�Ø×+Ò+°;×3CÑ3C×3LÒ3LÙØ�Q‘‘ð  <ð ×Ñ×%Ñ% a¨Ô/Øˆr!   c                 óL   — | j                  |«      }|r|S t        |d|z  «       y )Nz'%s' is not declared)r]  r   ©r5   rE   rG   rc   s       r   Úfindz
Scope.find'  s(   € à—‘˜DÓ!ˆÙØˆLä�#Ð-°Ñ4Õ5r!   c                 ó´   — | }|D ]P  }|j                  ||«      }|s y |j                  r|j                  }Œ2t        |ddj                  |«      z  «        y  |S )Nz'%s' is not a cimported modulerÞ   )rì  r²   r   Újoin)r5   ÚpathrG   re   rE   rc   s         r   Úfind_imported_modulezScope.find_imported_module/  s[   € ð ˆÛˆDØ—J‘J˜t SÓ)ˆEÙÙØ�ŠØŸ™‘ä�cÐ;¸c¿h¹hÀt»nÑLÔMÙð ð ˆr!   c                 ó^  — | j                  |«      }| j                  |«      xs- | j                  xr | j                  j                  |«      xs d }|r|S | j                  xr | j                  j                  |«      xs d }|r(|j                  r| j                  |j                  |«       |S r2   )r  rh  rá   r]  rŽ   Ú_emit_class_private_warningrG   )r5   rE   rý   rc   s       r   r]  zScope.lookup>  s©   € ð ×5Ñ5°dÓ;ˆØ×!Ñ! $Ó'ò Ø×$Ñ$ÒN¨×)9Ñ)9×)@Ñ)@ÀÓ)Nòàð 	ñ ØˆLð ×!Ñ!ÒC d×&6Ñ&6×&=Ñ&=¸dÓ&CÒLÈˆÙ�U×&Ò&Ø×,Ñ,¨U¯Y©Y¸Ô=Øˆr!   c                 ó˜   — | j                   j                  | j                  |«      d «      }|r|S | j                   j                  |d «      S r2   )rç   rR   r  ©r5   rE   rc   s      r   rh  zScope.lookup_hereP  sF   € ð —‘× Ñ  ×!?Ñ!?ÀÓ!EÀtÓLˆÙØˆLð �|‰|×Ñ  dÓ+Ð+r!   c                 ó:   — | j                   j                  |d «      S r2   )rç   rR   r×   s     r   Úlookup_here_unmangledzScope.lookup_here_unmangled[  s   € Ø�|‰|×Ñ  dÓ+Ð+r!   c                 ó$   — | j                  |«      S r2   )rh  r×   s     r   Ú#lookup_assignment_expression_targetz)Scope.lookup_assignment_expression_target^  s   € ð ×Ñ Ó%Ð%r!   c                 óÔ   — | j                  |«      }|s;| j                  |«      }|r(|j                  r| j                  |j                  |«       |s| j                  |t        d «      }|S r2   )rh  rö  rŽ   rò  rG   rü   r   rô  s      r   Úlookup_targetzScope.lookup_targetc  sb   € ð × Ñ  Ó&ˆÙØ×.Ñ.¨tÓ4ˆEÙ˜×*Ò*Ø×0Ñ0°·±¸DÔAÙØ×$Ñ$ T¬>¸4Ó@ˆEØˆr!   c                 óÈ   — |r`|j                   rS|j                  j                  r1| j                  r%|j                  j	                  | j                  «      S |j                  S y y r2   )r™   rF   ra   Úfused_to_specificÚ
specializer¹  s     r   Ú$_type_or_specialized_type_from_entryz*Scope._type_or_specialized_type_from_entryo  sL   € Ù�U—]’]Ø�z‰z×"Ò" t×'=Ò'=Ø—z‘z×,Ñ,¨T×-CÑ-CÓDÐDØ—:‘:Ðð #ˆ5r!   c                 ó¼   — | j                  |«      }| j                  |«      }|r|S |r$|j                  rddlm}  ||j                  «      }| j                  |«      S )Nr   )Ú get_known_standard_library_entry)r]  rþ  rÉ   ÚBuiltinr   )r5   rE   rc   Útpr   s        r   Úlookup_typezScope.lookup_typeu  sY   € Ø—‘˜DÓ!ˆð ×6Ñ6°uÓ=ˆÙØˆIá�U×8Ò8ÝAÙ4°U×5XÑ5XÓYˆEØ×8Ñ8¸Ó?Ð?r!   c                 ó  — |d   j                   j                  rs|d   j                   }|j                  j                  d|z  «      }|�D|dd  D �cg c]  }|j                   ‘Œ }}t	        j
                  ||j                  «       «      }|�|S | j                  d|z  «      }g }	|�|j                  «       }	g }
t        |«      dk(  rmt        d«      D ]_  }||   j                   j                  sŒ||   j                   }|j                  j                  d|z  «      }|€ŒM|
|j                  «       z  }
Œa |
s|	sy t        t        |
|	z   «      «      }t	        j
                  |D �cg c]  }|j                   ‘Œ c}|«      S c c}w c c}w )Nr   z
operator%sr   r   )rF   r{   re   r]  r   rd   r\   rv   Úrangerz  rè   )r5   r.  ÚoperandsÚobj_typeÚmethodÚargrf   ÚresÚfunctionÚfunction_alternativesÚmethod_alternativesÚnr\   s                r   Úlookup_operatorzScope.lookup_operator…  s…  € Ø�A‰;×Ñ×(Ò(Ø ‘{×'Ñ'ˆHØ—^‘^×*Ñ*¨<¸(Ñ+BÓCˆFØÐ!Ø19¸!¸"±Ó>±¨#˜SŸX›X°�	Ð>Ü ×+Ñ+¨I°v×7NÑ7NÓ7PÓQ�Ø�?Ø�JØ—;‘;˜|¨hÑ6Ó7ˆØ "ÐØÐØ$,×$=Ñ$=Ó$?Ð!ð !ÐÜˆx‹=˜AÒÜ˜1–X�Ø˜A‘;×#Ñ#×0Ó0Ø'¨™{×/Ñ/�HØ%Ÿ^™^×2Ñ2°<À(Ñ3JÓK�FØÑ)Ø+¨v×/FÑ/FÓ/HÑHÑ+ð ñ $Ñ.CØô  ¤Ð$7Ð:OÑ$OÓ PÓQÐä×$Ñ$¹(Ó%C¹(°3 c§h£h¸(Ñ%CØ%5ó7ð 	7ùò3 ?ùò2 &Ds   ÁE<Å!Fc                 ó€   — ddl m}  G d„ d|«      }|D �cg c]  } |||¬«      ‘Œ }}| j                  ||«      S c c}w )Nr   )ÚNodec                   ó   — e Zd Zy)ú4Scope.lookup_operator_for_types.<locals>.FakeOperandN)r;   r<   r=   r?   r!   r   ÚFakeOperandr  ¨  s   „ Ør!   r  )rF   )ÚNodesr  r  )r5   rG   r.  Útypesr  r  rF   r  s           r   Úlookup_operator_for_typeszScope.lookup_operator_for_types¦  sE   € Ýô	˜$ô 	á<AÓB¹E°D‘K ¨$Ö/¸EˆÐBØ×#Ñ# H¨hÓ7Ð7ùò Cs   –;c                 ó$   — t        |d|z  d«       y )NzŠGlobal name %s matched from within class scope in contradiction to Python 'class private name' rules. This may change in a future release.r   )r   )r5   rG   rE   s      r   rò  z!Scope._emit_class_private_warning­  s   € Ü�ð CàEIñJàKLõ	Nr!   c                 óB   — | j                  «       j                  |«       y r2   )r   Úuse_utility_code©r5   Únew_codes     r   r  zScope.use_utility_code²  s   € Ø×ÑÓ×,Ñ,¨XÕ6r!   c                 óB   — | j                  «       j                  |«       y r2   )r   r‰  r¹  s     r   r‰  zScope.use_entry_utility_codeµ  s   € Ø×ÑÓ×2Ñ2°5Õ9r!   c                 ó2   — |D ]  }|| j                   v sŒ y y©Nr   r   )rç   ©r5   r  rE   s      r   Údefines_anyzScope.defines_any¸  s    € ãˆDØ�t—|‘|Ò#Ùð ð r!   c                 óf   — |D ],  }|| j                   v sŒ| j                   |   j                  sŒ, y yr  )rç   r¸   r   s      r   Údefines_any_specialzScope.defines_any_special¿  s1   € ãˆDØ�t—|‘|Ò#¨¯©°TÑ(:×(EÓ(EÙð ð r!   c                 ó<   — ddl m}  |«       j                  | «       y )Nr   )Úget_type_inferer)ÚTypeInferencer%  Úinfer_types)r5   r%  s     r   r'  zScope.infer_typesÆ  s   € Ý3ÙÓ×&Ñ& tÕ,r!   c                 ó@   — | j                   }|€y|j                  «       S rƒ   )rá   r:  )r5   Úouters     r   r:  zScope.is_cppÊ  s!   € Ø× Ñ ˆØˆ=Øà—<‘<“>Ð!r!   c                 ó>   — | j                   j                  |||«       y r2   )rá   Úadd_include_file)r5   ÚfilenameÚverbatim_includeÚlates       r   r+  zScope.add_include_fileÑ  s   € Ø×Ñ×)Ñ)¨(Ð4DÀdÕKr!   c                 ó,   — t         j                  › d|› �S )Nú->)r   Úmodulestateglobal_cname)r5   r   s     r   Úname_in_module_statezScope.name_in_module_stateÔ  s   € ô ×0Ñ0Ð1°°E°7Ð;Ð;r!   c                 óº  ‡— |€
t        «       }| j                   }| j                  j                  «       D ]¤  }|s(|j                  s|j
                  dk(  s|j                  sŒ-t        j                  |j                  «      }t        ˆfd„|D «       «      r yt        |j                  dd «      }|�||v rŒ€|j                  |«       |j                  ‰|«      sŒ¤ y y)NrQ  c              3   ó(   •K  — | ]	  }‰|k(  –— Œ y ­wr2   r?   )rÚ  Úsub_tpÚtype_to_finds     €r   rÜ  z3Scope.find_shared_usages_of_type.<locals>.<genexpr>á  s   øè ø€ ÐG¹¨f�< 6Õ)¹ùs   ƒTre   F)rè   Úis_module_scoperç   Úvaluesr¹   r‹   r»   r   Úget_all_subtypesrF   ÚanyrÖ   ÚaddÚfind_shared_usages_of_type)r5   r6  Ú_seen_scopesÚinclude_all_entriesrc   Úentry_subtypesÚ
type_scopes    `     r   r<  z Scope.find_shared_usages_of_typeÙ  sÈ   ø€ ØÐÜ›5ˆLØ"&×"6Ñ"6Ð6ÐØ—\‘\×(Ñ(Ö*ˆEÙ'¨5×+?Ò+?À5×CSÑCSÐW_ÒC_Ðch×clÒclØÜ'×8Ñ8¸¿¹ÓDˆNÜÓG¹ÓGÔGÙÜ  §¡¨W°dÓ;ˆJØÐ! Z°<Ñ%?ØØ×Ñ˜ZÔ(Ø×4Ñ4°\À<ÕPÙð +ð r!   )TNr2   ©F)r   r   r   )NrC   r   r   )NrC   r   r   r   r   )NrC   r   )NrC   r   F)Nr?   r7  N)rC   r   r   N©NrC   FFFN)r?   )r7  N)Fr7  ©NrC   r   r   r   r?   NF)NNrC   r?   Frƒ   )Vr;   r<   r=   rÇ  Úis_py_class_scopeÚis_c_class_scopeÚis_closure_scopeÚis_local_scopeÚis_generator_scopeÚis_generator_expression_scopeÚis_comprehension_scopeÚis_passthroughr\  Úis_property_scoper7  Úis_c_dataclass_scopeÚis_internalræ   r±   rÉ  rü  rÎ  rû   r2  Únode_positions_to_offsetr6   r  r  r  rã   r  r  r  r$  rÍ   r&  r   r*  r0  r   r4  rB  rM  rä   rU  rY  rc  rp  r}  rl  rm  rŒ  rŽ  rü   rœ  r   r¢  r§  r¬  r³  r·  rº  rÕ  rã  rÈ  rì  rð  r]  rh  rö  rø  rú  rþ  r  r  r  rò  r  r‰  r!  r#  r'  r:  r+  r2  r<  r?   r!   r   rÜ   rÜ   \  s"  „ ðJ ÐØÐØÐØÐØ€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ð ,5ØOSóó4Lò1ò
;óóò(ò*ò*ð KLØSXóhðT BFØEJóó"ò&6òòò$	,ò,ò&ò

òò@ò 7òB8òNò
7ò:òòò-ò"óLò<ô
r!   rÜ   c                   ó0   — e Zd Zej                  Zd„ Zd„ Zy)ÚPreImportScopec                 óP   — t         j                  | t        j                  d d «       y r2   )rÜ   r6   r   Ú
pre_importr9   s    r   r6   zPreImportScope.__init__ð  s   € Ü�‰�tœW×/Ñ/°°tÕ<r!   c                 óT   — | j                  ||t        |d«      }d|_        d|_        |S )NrC   T)rM  r   r‘   rŽ   rë  s       r   r¢  zPreImportScope.declare_builtinó  s-   € Ø—‘˜T 4¬¸¸iÓHˆØ ˆÔØ ˆÔØˆr!   N)r;   r<   r=   r   Úpreimport_cnameÚnamespace_cnamer6   r¢  r?   r!   r   rQ  rQ  ì  s   „ à×,Ñ,€Oò=ór!   rQ  c                   ó\   — e Zd ZdZd„ Zd
d„Zd„ Zdd„Zdej                  dfd„Z
d„ Zdd	„Zy)ÚBuiltinScopeTc                 ó²   — t         j                  € t        j                  | dd d «       i | _        y t        j                  | dt	        «       d «       i | _        y )NÚ__builtin__)r   rS  rÜ   r6   rQ  Ú
type_namesr9   s    r   r6   zBuiltinScope.__init__ÿ  sG   € Ü×ÑÐ%Ü�N‰N˜4 °°dÔ;ð ˆ�ô �N‰N˜4 ´Ó0@À$ÔGØˆ�r!   Nc                 ó`   — |dk(  s|dk(  rd}n|dk(  r|dk(  rd}t         j                  | |«      S )NÚunicodeÚ
basestringÚstrÚlongr   Úint)rÜ   r]  )r5   rE   Úlanguage_levels      r   r]  zBuiltinScope.lookup  s:   € à�9Ò ¨Ò 4à‰DØ�VŠ^ °!Ò 3àˆDÜ�|‰|˜D $Ó'Ð'r!   c                 óÚ   — |t         j                  vrY| j                  �| j                  j                  ||«      S t        j
                  rt        |d|z  «       y t        |d|z  d«       y y )Núundeclared name not builtin: %sr   )r   ÚKNOWN_PYTHON_BUILTINSrá   r¢  r   Úerror_on_unknown_namesr   r   r£  s      r   r¢  zBuiltinScope.declare_builtin  se   € Ø”t×1Ñ1Ñ1Ø×ÑÐ+Ø×'Ñ'×7Ñ7¸¸cÓBÐBä×1Ò1Ü˜#Ð@À4ÑGÕHä˜CÐ!BÀTÑ!IÈ1ÕMð 2r!   c                 ó.  — t        |«      }| j                  ||d |d|¬«      }|�||_        |rg|dk(  r|}nt        |«      }t        ||t        «      }| j                  |«      |_        d|_        d|_        ||_	        |j                  |_
        ||_        |S )Nr7  )r‹   r}   Ú*r   )r
   rÕ  r`   rA   r   rä   rå   r‘   rŒ   r}   re   r¯   )	r5   rE   rF   r   Úpython_equivr}   r`   rc   rÔ  s	            r   Údeclare_builtin_cfunctionz&BuiltinScope.declare_builtin_cfunction  s¥   € ô ˜TÓ"ˆØ×&Ñ& t¨T°4¸È8ÐbnÐ&ÓoˆØÐ"Ø +ˆEÔÙØ˜sÒ"Ø#‘ä,¨\Ó:�Ü˜l¨L¼.ÓIˆIØ'+×'8Ñ'8¸Ó'>ˆIÔ$Ø$%ˆIÔ!Ø#$ˆIÔ Ø%1ˆIÔ"Ø#Ÿk™kˆIŒOØ )ˆEÔØˆr!   c                 ó|  — t        |«      } ||||«      }t        |d d|¬«      }i |_        |j                  |«       d| j                  |<   | j                  ||d d¬«      }|r||_        |dk(  rd| j                  vr|| j                  d<   t        |j                  | j                  d«      j                  |j                  |j                  j                  ¬«      }	| j                  |«      |	_        d|	_        d|	_        d|	_        d|	_        | |	_        t*        j,                  rd	|	_        |r||	_        |	|_        |S )
Nr7  )rá   r‹   rà  r   r¥  r  ÚxrangerF   ©rE   rF   rG   r   T)r
   ÚCClassScoper“  Ú	set_scoper[  rY  r}   rç   rA   rE   r]  rF   rG   Útypeptr_cnamerä   rå   r‘   r�   r©   rŒ   re   r   Úcache_builtinsrœ   r¯   )
r5   rE   r   Úobjstruct_cnameÚ
type_classr}   rF   re   rc   rÔ  s
             r   Údeclare_builtin_typez!BuiltinScope.declare_builtin_type/  s/  € ô ˜TÓ"ˆÙ˜$  Ó7ˆÜ˜D¨d¸xÐUYÔZˆØˆÔØ�‰�uÔØ !ˆ�‰˜Ñà×!Ñ! $¨¨d¸xÐ!ÓHˆÙØ!-ˆEÔØ�7Š?˜x¨t¯|©|Ñ;à%*ˆD�L‰L˜Ñ"äØ—‘Ø—‘˜VÓ$×)Ñ)Ø—	‘	Ø—*‘*×*Ñ*ô	
ˆ	ð $(×#4Ñ#4°TÓ#:ˆ	Ô Ø !ˆ	ÔØ ˆ	ÔØ !ˆ	ÔØ ˆ	ÔØˆ	ŒÜ×!Ò!Ø!%ˆIÔÙØ%1ˆIÔ"Ø%ˆÔàˆr!   c                 ó   — | S r2   r?   r9   s    r   r*  zBuiltinScope.builtin_scopeT  r  r!   c                  ó   — y r2   r?   )r5   rE   r   rF   rG   r‹   r>  s          r   rB  z)BuiltinScope.handle_already_declared_nameW  s   € àr!   r2   )NNNrA  )r;   r<   r=   rÇ  r6   r]  r¢  rj  r   ÚBuiltinObjectTypert  r*  rB  r?   r!   r   rX  rX  ú  s?   „ ð Ðòó(òNóð, .2¸j×>ZÑ>ZØ*.ó#òJôr!   rX  c                   ó  — e Zd ZdZdZdZdZdZg d¢Zd$d„Z	d„ Z
ed„ «       Zd„ Zd%d
„Zd„ Zd„ Zd„ Zd&d„Zd$d„Zd„ Zd'd„Zd„ Zd„ Zd„ Zd„ Z	 	 d(d„Z	 	 d)d„Zd„ Zd„ Zd„ Z	 	 	 	 	 d*d„Zd„ Z d„ Z!d„ Z"d„ Z#d „ Z$d!„ Z%d"„ Z&d#„ Z'y	)+ÚModuleScoper   r   F)	Ú__builtins__r;   Ú__file__rÚ   Ú__path__Ú__spec__Ú
__loader__Ú__package__Ú
__cached__c                 óÔ  — ddl m} || _        |j                  }t        j                  | |||«       || _        || _        t        | j                  «      | _        || _	        t        j                  | _        t        j                  | _        t        j                  | _        d| _        t        j"                  | _        g | _        i | _        i | _        t-        |j.                  «      | _        d| _        g | _        t5        «       | _        g | _        d| _        g | _        g | _        | j                  | _         i | _!        i | _"        | jG                  tI        jJ                  dd¬«      «       y )Nr   ©r  rB   r   zPython.hT)Úinitial)&rB   r  Úparent_moduler*  rÜ   r6   Ú
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_builtinsrV  Ú_cached_tuple_typesÚ _cached_defaults_c_class_entriesÚprocess_includer   ÚIncludeCode)r5   rE   r„  r&  r…  r  rá   s          r   r6   zModuleScope.__init__€  s-  € ÝØ*ˆÔØ×+Ñ+ˆÜ�‰�t˜T ;°Ô>Ø$ˆŒØˆÔÜ(¨×)9Ñ)9Ó:ˆÔØˆŒÜ"×/Ñ/ˆÔÜ!'×!5Ñ!5ˆÔÜ"(×"8Ñ"8ˆÔØˆŒÜ×,Ñ,ˆŒØ!#ˆÔØ ˆÔØˆŒÜ˜{×5Ñ5Ó6ˆŒØ ˆÔØ!#ˆÔÜ!›eˆÔØ ˆÔØ !ˆÔØ!ˆÔØ*,ˆÔ'Ø#×0Ñ0ˆÔØ#%ˆÔ Ø02ˆÔ-Ø×ÑœT×-Ñ-¨jÀ$ÔGÕHr!   c                 ó   — | j                   S r2   )r„  r9   s    r   rã   zModuleScope.qualifying_scopež  s   € Ø×!Ñ!Ð!r!   c                 ó   — | j                   S r2   )r‡  r9   s    r   r&  zModuleScope.context¡  s   € à�}‰}Ðr!   c                 ó   — | S r2   r?   r9   s    r   r   zModuleScope.global_scope¥  r  r!   Nc                 ó²   — | j                  |«      }|�|S |€$| j                  �| j                  j                  nd}| j                  j	                  ||¬«      S )Né   )rb  )rh  r&  rb  rá   r]  )r5   rE   rb  rc   s       r   r]  zModuleScope.lookup¨  sZ   € Ø× Ñ  Ó&ˆØÐØˆLàÐ!Ø<@¿L¹LÐ<T˜TŸ\™\×8Ò8ÐZ[ˆNØ×Ñ×&Ñ& t¸NÐ&ÓKÐKr!   c                 óø  — t        |«      }	 | j                  |   }|j
                  }| j                  |«      }|s…t        |«      }t        |«      D ]  \  }}|j                  d|z  ||¬«       Œ | j                  |dz   d|d||¬«      }	| j                  j                  |	«       |	|_        | j                  ||||«      }||_        |S # t        $ r' t        j                  |«      x}| j                  |<   Y ŒÜw xY w)Nzf%s)rE   rF   rG   Ú_structÚstructT)rn  rG   r   )Útupler™  r!  r   Úc_tuple_typer   rh  ÚStructOrUnionScopeÚ	enumeraterü   rp  rë   ÚremoveÚstruct_entryrY  rc   )
r5   rG   r�  Úttyper   rc   re   ÚixÚ	componentrª  s
             r   rŽ  zModuleScope.declare_tuple_type±  s  € Ü˜:Ó&ˆ
ð	_Ø×,Ñ,¨ZÑ8ˆEð —‘ˆØ× Ñ  Ó'ˆÙÜ& uÓ-ˆEÜ!*¨:Ö!6‘��IØ×!Ñ! u¨r¡z¸	ÀsÐ!ÕKð "7à×7Ñ7Ø˜	Ñ! 8¨UÀÈ3ÐV[ð 8ó ]ˆLà×Ñ×$Ñ$ \Ô2Ø!-ˆEÔØ×%Ñ% e¨U°C¸Ó?ˆEØˆŒØˆøô ò 	_Ü;E×;RÑ;RÐS]Ó;^Ð^ˆE�D×,Ñ,¨ZÓ8ð	_ús   �C	 Ã	-C9Ã8C9c                 óN  — t        |«      }	 | j                  |   S # t        $ r Y nw xY w| j                  t        j
                  «      }t        |«      }| j                  ||dd|¬«      x}| j                  |<   | j                  |«       d|j                  _
        |j                  j                  }d|_        d|_        t        t        t        |«      «      «      }d|z  j                   }t#        |«      D ]+  \  }}	t         ||«      «      }
|j%                  |
|	d d¬«       Œ- |S )NT)rW  Úimplementingrr  zarg{:0>%dd})rG   r—  )r¥  rš  r!  r$  r   Údefaults_struct_prefixr
   Údeclare_c_classÚcheck_c_classrF   Úis_final_typere   rN  Úis_defaults_class_scoperv   r_  Úformatr¨  rü   )r5   rG   r�  r   rc   re   Ú	num_zerosÚbuild_argnamer  Útype_Úarg_names              r   Údeclare_defaults_c_classz$ModuleScope.declare_defaults_c_classÅ  s*  € ä˜:Ó&ˆ
ð	Ø×8Ñ8¸ÑDÐDøÜò 	Ùð	úð —‘œV×:Ñ:Ó;ˆÜ˜eÓ$ˆØDH×DXÑDXØ�3 °DØ!ð EYó E#ð 	#ˆ�×5Ñ5°jÑAð 	×Ñ˜5Ô!Ø#'ˆ�
‰
Ô Ø—
‘
× Ñ ˆØ ˆÔØ(,ˆÔ%ô œœC 
›OÓ,Ó-ˆ	Ø&¨Ñ2×:Ñ:ˆÜ! *Ö-‰HˆAˆuÜ$¡]°1Ó%5Ó6ˆHØ×Ñ˜h¨°4ÀÐÕFð .ð ˆs   � œ	(§(c                 óÂ  — |t         j                  vr›|t         j                  vr‰|t         j                  vrw| j                  r| j                  |t        |«      }|S t        j                  rt        |d|z  «       nt        |d|z  d«       | j                  |d t        |d«      }d|_        |S t        j                  r$| j                  D ]  }|j                  |k(  sŒ|c S  |dk(  r'| j                   s| j"                  j%                  d«      S | j                  d d t        |d«      }t        j                  rv|t         j                  vrdd|_        d|_        ||_        t(        j*                  |z   |_        | j                  j/                  |«       | j0                  j/                  |«       nd|_        ||_        | j3                  «       j5                  |«      |_        |S )Nrd  r   rC   r   ÚglobalsÚ__Pyx_Globals)r   re  Úrenamed_py2_builtins_mapÚuncachable_builtinsÚhas_import_starrü   r   r   rf  r   r   rM  rŒ   rq  r—  rE   Úold_style_globalsrá   r]  rœ   r   Úbuiltin_prefixr   rÒ   r˜  r*  rä   rå   rë  s       r   r¢  zModuleScope.declare_builtinà  s›  € Ø”t×1Ñ1Ñ1Øœt×<Ñ<Ñ<Øœt×7Ñ7Ñ7Ø×#Ò#Ø×(Ñ(¨¬~¸sÓC�Ø�ä×1Ò1Ü˜#Ð@À4ÑGÕHä˜CÐ!BÀTÑ!IÈ1ÔMàŸ™ T¨4´ÀÀiÓP�Ø#$�Ô Ø�Ü×!Ò!Ø×-Ô-�Ø—:‘: Ó%Ø ’Lð .ð �9Ò T×%;Ò%;Ø×#Ñ#×*Ñ*¨?Ó;Ð;à—L‘L  t¬^¸SÀ)ÓLˆEÜ×!Ò! d´$×2JÑ2JÑ&JØ ˆEÔØˆEŒNØˆEŒJÜ ×/Ñ/°$Ñ6ˆEŒKØ× Ñ ×'Ñ'¨Ô.Ø×+Ñ+×2Ñ2°5Õ9à ˆEÔØˆEŒJØ#×1Ñ1Ó3×@Ñ@ÀÓFˆÔØˆr!   c                 ó  — |d uxr |dkD  }d }d}|�8|dkD  r3| }| j                   rdnd}||kD  r/|r-|j                  }|dz  }||kD  r|rŒn|dk7  r| j                  }d}| j                  «       }|j                  j	                  |||||¬«      S )Nr   Fr   T)Úfrom_modulerG   Úabsolute_fallbackÚrelative_import)r…  r„  r   r&  Úfind_module)	r5   r†  rG   Úrelative_levelÚis_relative_importrÄ  rÅ  Ú	top_levelÚmodule_scopes	            r   rÇ  zModuleScope.find_module  sÌ   € ð
 ,°4Ð7ÒN¸NÈQÑ<NÐØˆØ!ÐØÐ%¨.¸1Ò*<ð ˆKà!Ÿ_š_™°!ˆIð
 ! 9Ò,±Ø)×7Ñ7�Ø !Ñ#�ð ! 9Ò,³ð ˜qÒ à×,Ñ,ˆKØ $Ðà×(Ñ(Ó*ˆØ×#Ñ#×/Ñ/Ø [°cÐM^ð  qCð 0ó Dð 	Dr!   c                 óæ   — d|v r|j                  dd«      \  }}nd }| j                  |«      }|s,t        || | j                  |rdn|¬«      }|| j                  |<   |r|j                  ||¬«      }|S )NrÞ   r   T)r„  r&  r…  )Ú
as_package)ÚsplitÚlookup_submodulery  r&  r�  Úfind_submodule)r5   rE   rÍ  Ú	submodulere   s        r   rÐ  zModuleScope.find_submodule$  s   € ð �$‰;Ø"Ÿj™j¨¨aÓ0‰OˆD‘)àˆIØ×%Ñ% dÓ+ˆÙÜ °DÀ$Ç,Á,ÑclÑ[_Ðr|Ô}ˆEØ(-ˆD×Ñ Ñ%ÙØ×(Ñ(¨¸zÐ(ÓJˆEØˆr!   c                 ó    — d|v r|j                  dd«      \  }}nd }| j                  j                  |d «      }|r|�|j                  |«      }|S )NrÞ   r   )rÎ  r�  rR   rÏ  )r5   rE   rÑ  Úmodules       r   rÏ  zModuleScope.lookup_submodule3  sW   € à�$‰;Ø"Ÿj™j¨¨aÓ0‰OˆD‘)àˆIØ×$Ñ$×(Ñ(¨¨tÓ4ˆÙ˜Ð+Ø×,Ñ,¨YÓ7ˆFØˆr!   c                 óV   — t        j                  |||¬«      }| j                  |«       y)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›  )r5   r,  r-  r.  Úincs        r   r+  zModuleScope.add_include_file>  s'   € ô ×Ñ˜xÐ)9ÀÔEˆØ×Ñ˜SÕ!r!   c                 óž   — |j                  «       }|€|j                  «       }|j                  | j                  |«       | j                  |   }y)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�  )r5   rÕ  r,  s      r   r›  zModuleScope.process_includeG  s?   € ð2 �m‰m‹oˆØˆ;Ø—+‘+“-ˆCØ�‰˜Ÿ™¨Ô-Ø�o‰o˜cÑ"‰r!   c                 óü   — || j                   vrn|j                  j                  «       D ]  }| j                  |«       Œ | j                   j	                  |«       |j                   D ]  }| j                  |«       Œ y y r2   )r“  r�  r8  r›  rÒ   Úadd_imported_module)r5   re   rÕ  Úms       r   rÛ  zModuleScope.add_imported_modulef  sn   € Ø˜×.Ñ.Ñ.Ø×'Ñ'×.Ñ.Ö0�Ø×$Ñ$ SÕ)ð 1à×"Ñ"×)Ñ)¨%Ô0Ø×,Ô,�Ø×(Ñ(¨Õ+ñ -ð	 /r!   c                 ó†   — |j                   rd|_        || j                  vr|| j                  |<   y t        |d|z  d«       y )NTrf  r   )rŽ   r‘   rç   r   )r5   rE   rc   rG   s       r   Úadd_imported_entryzModuleScope.add_imported_entryn  s?   € Ø×Òà $ˆEÔØ˜Ÿ™Ñ$Ø!&ˆD�L‰L˜Òä�CÐ,¨tÑ3°QÕ7r!   c                 ó  — | j                  |«      }|r6|j                  r|j                  |u r|S |j                  r|j                  r |S | j                  |t        |«      }d|_        ||_        | j                  |«       |S )Nr   )rh  rŽ   r²   rü   r   r‘   rÛ  )r5   rE   re   rG   rc   s        r   Údeclare_modulezModuleScope.declare_modulew  s|   € ð
 × Ñ  Ó&ˆÙØ× Ò  U§_¡_¸Ñ%=Ø�Ø×%Ò%¨e¯oªoð �à×$Ñ$ T¬>¸3Ó?ˆEØ !ˆEÔØˆŒØ× Ñ  Ô'Øˆr!   c
                 óX  — |dvrt        |d|z  «       | j                  ||	d«       |s1|t        u rt        }|j                  r|j
                  rt        d«      ‚|rF|dk7  rA| j                  d   dk7  r/d}
d}|j                  rd	}
d
}t        |d|› d�|
z   d|
rdndz   «       |s2| }|dk(  s|dk(  r|r|}n | j                  t        j                  |«      }| j                  |«      }|r®|j                  r¢|j                  j                  |«      s+|dk(  r&|j                   dk(  rt        |d|z  d«       ||_        |j                   dk7  r8| j                  t        j                  |«      }|j"                  |k(  r	|}||_        |j$                  s	d|_        |S t&        j)                  | |||||||||	¬«
      }|rTd|_        |j                  j,                  r|j                  j,                  |_        | j0                  j3                  |«       nd|_        t6        j8                  rd|_        |S )N)rC   rQ  r7  z+Module-level variable cannot be declared %s)ztyping.Optionalz7Non-cdef global variable is not a generic Python objectr7  Úsubinterpreters_compatibleÚnorB   z9
Python objects should not be shared between interpreterszPython zGlobal cdef z¥variable 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   rQ  z6Variable '%s' type does not match previous declarationrC   T©r   r‹   r»   r–  r—  r„   )r   rœ  r   r   Úis_pyobjectÚis_extension_typer   r“  r   r  r   r’  rh  r¹   rF   rÄ  r‹   r   rº   rÜ   rü   r�   Údeclaration_valuerH   rî   rÒ   rŽ   r   Úcimport_from_pyxr·   )r5   rE   rF   rG   r   r‹   r»   r–  r—  r„   Úextra_warningÚpyobject_warningrW  rc   Úmangled_cnames                  r   rü   zModuleScope.declare_var�  sL  € ð Ð<Ñ<Ü�#ÐDÀzÑQÔRØ×'Ñ'¨Ð-?ÐAUÔVÙØÔ'Ñ'Ü%�Ø×$Ò$¨T×-CÒ-CÜ#ØMóOð Oá˜
 hÒ.Ø—O‘OÐ$@ÑAÀTÒIØˆMØ!ÐØ×ÒØ \�Ø#,Ð ÜØØÐ/Ð0ð 1Bð Bð ñð ™‘1¨1Ñ-ô/ñ Ø!�zˆHØ˜XÒ%¨*¸Ò*@ÁXØ‘àŸ™¤F×$5Ñ$5°tÓ<�à× Ñ  Ó&ˆÙ�U×)Ò)ð —:‘:×%Ñ% dÔ+Ø Ò)¨e×.>Ñ.>À(Ò.JÜ˜CÐ!YÐ\`Ñ!`ÐbcÔdØ!%�E”Jð ×Ñ 9Ò,Ø $§¡¬F×,=Ñ,=¸tÓ D�Ø—;‘; -Ò/Ø �EØ"&�E”KØ×'Ò'Ø'+�Ô$Ø�ä×!Ñ! $¨¨d°CØ(-¸*Ø&)°&À'Ð^pð "ó rˆñ Ø ˆEÔØ�z‰z×+Ò+Ø"ŸZ™Z×9Ñ9�”
Ø×Ñ×#Ñ# EÕ*à !ˆEÔÜ×#Ò#ØˆEŒJØˆr!   c                 óä  — |sd|	v rt        |dd«       |s/|dk(  s|dk(  r|r|}n | j                  t        j                  |«      }|dk(  r|j                  rt        |d«       | j                  |«      }|rZ|j                  rN|j                  dk7  r?| j                  t        j                  |«      }|j                  |k(  r|}||_	        ||_
        t        j                  | |||||||||	|
|¬«      }|S )	Nr¼  z+Declarations should not be declared inline.r   r7  rQ  z6Extern functions cannot have default arguments values.rC   )r   r‹   r»   r–  rW  r™  r}   rÐ  )r   r  r   rÃ  Úoptional_arg_countr   rh  r¹   r‹   r   r«   rÜ   rÕ  )r5   rE   rF   rG   r   r‹   r»   r–  rW  r™  r}   rÐ  rc   rë  s                 r   rÕ  zModuleScope.declare_cfunction×  sü   € ñ ˜H¨	Ñ1ä�CÐFÈÔJáØ˜XÒ%¨*¸Ò*@ÁXØ‘àŸ™¤F×$6Ñ$6¸Ó=�Ø˜Ò! d×&=Ò&=Ü�#ÐOÔPØ× Ñ  Ó&ˆÙ�U×)Ò)Ø×Ñ 9Ò,Ø $§¡¬F×,>Ñ,>ÀÓ E�Ø—;‘; -Ò/Ø �EØ"'�E”KØ',�EÔ$Ü×'Ñ'Ø�$˜˜cØ J°CÀØ¨ÀØ#ð	 (ó %ˆð
 ˆr!   c                 óZ   — | j                  |«      }|s| j                  |t        |«       y y r2   )rh  rü   r   rë  s       r   Údeclare_globalzModuleScope.declare_globalô  s,   € Ø× Ñ  Ó&ˆÙØ×Ñ˜T¤>°3Õ7ð r!   c                 ó@   — |�| j                   j                  |«       y y r2   )rŽ  rÒ   r  s     r   r  zModuleScope.use_utility_codeù  s!   € ØÐØ×"Ñ"×)Ñ)¨(Õ3ð  r!   c                 ó„  — |€y |j                   r%| j                  j                  |j                   «       |j                  r%| j                  j                  |j                  «       t	        j
                  |j                  «      D ]9  }t        |d«      sŒ|j                  |usŒ| j                  |j                  «       Œ; y )Nrc   )
r}   rŽ  rÒ   r€   r   r9  rF   Úhasattrrc   r‰  )r5   rc   r  s      r   r‰  z"ModuleScope.use_entry_utility_codeý  s�   € Øˆ=ØØ×ÒØ×"Ñ"×)Ñ)¨%×*<Ñ*<Ô=Ø×(Ò(Ø×"Ñ"×)Ñ)¨%×*GÑ*GÔHÜ×-Ñ-¨e¯j©jÖ9ˆBÜ�r˜7Õ#¨¯©¸Ò(=Ø×+Ñ+¨B¯H©HÕ5ñ :r!   c                 óä  — |r|
dk7  r|
dk(  s|st        |dd«       |}d}nd }| j                  |«      }|r¥|s£|j                  }|j                  r|j                  sd }n||j
                  }|r!|r|j                  r| j                  |||«       |r|j                  s|r(|j                  r|r||j                  urt        |d«       |r|j                  s||_        |r|�rt        j                  ||||
dk(  |¬«      }||_        ||_        |�||_        |
dk(  r||_        n| j                   |_        |	r|	|_        n%| j%                  t&        j(                  |«      |_        | j+                  ||||
d|¬«      }d	|_        |r||_        nH|j0                  s&| j%                  t&        j2                  |«      |_        nt        |j                  d
«       | j5                  |«       | j6                  j9                  |«       j
                  sˆ|s|rÓt;        || |
|¬«      }| j<                  j?                  «       |_        |r'|j
                  r|jA                  |j
                  «       |jC                  |«       | jD                  j9                  |«       nO|r&|j
                  j                  rt        |d|z  «       n'|r%|j
                  jF                  rt        |d|z  «       |rd|_$        |r||_        |
dk7  r,|jJ                  |
k7  rt        |d|›d|jJ                  ›d�«       |rd|_&        |r.|j.                  r|j.                  |k7  rt        |d«       ||_        |r.|jN                  r|jN                  |k7  rt        |d«       ||_'        | j<                  jQ                  d«      rd	|j                  _)        | j<                  jQ                  d«      }|dk(  rd	|j                  _*        d	|_+        |S )Nr7  rQ  z6ctypedef only valid for 'extern' , 'public', and 'api'r   r   rs  )Ú
check_size)r‹   rW  rL  Tz5Object name required for 'public' or 'extern' C class)rE   rá   r‹   rà  zC class '%s' already definedz C class '%s' already implementedr   rC   zClass 'rƒ  r  z4Object struct name differs from previous declarationz2Type object name differs from previous declarationÚfinalÚcollection_typeÚsequence),r   rh  rF   r™   ræ  re   Údefinedrl  ra  r   r   ÚPyExtensionTyperG   Úbuffer_defaultsÚobjtypedef_cnamer†  rå   rp  r  r   Útypeptr_prefixrY  rš   rr  r±   Úobjstruct_prefixÚattach_var_entry_to_c_classrñ   rÒ   rn  r“  r=  Údeclare_inherited_c_attributesro  rë   Úimplementedr¹   r‹   r»   Útypeobj_cnamerR   r³  Úhas_sequence_flagr·   )r5   rE   rG   rW  r¯  r†  ra  rr  r  rp  r‹   rn  r»   rô  rú  rL  rû  rc   rF   re   rö  s                        r   r±  zModuleScope.declare_c_class  sŽ  € ñ ˜J¨(Ò2Ø (Ò*©cÜ˜ÐUÐWXÔYØ.ÐØ‰Là#Ðð × Ñ  Ó&ˆÙ™Ø—:‘:ˆDØ—M’M d×&<Ò&<Ø‘àŸ
™
�Ù©°%·-²-Ø×4Ñ4°U¸LÈ#ÔNÙ˜eŸmšm±¸t¿~º~Ù  Y°d·n±nÑ%DÜ˜cÐ#RÔSÙ T§^¢^Ø%.�D”Nñ šÜ×-Ñ-Ø�l I¨z¸XÑ/EÐR\ô^ˆDàˆDŒHØ#2ˆDÔ ØÐ+Ø(8�Ô%Ø˜XÒ%Ø#.�Õ à#'×#6Ñ#6�Ô ÙØ%2�Õ"à%)§[¡[´×1FÑ1FÈÓ%M�Ô"Ø×%Ñ% d¨D°#ÀJØ vð &ó /ˆEà"ˆEŒOÙØ'6�Õ$Ø×&Ò&Ø'+§{¡{´6×3JÑ3JÈDÓ'Q�Õ$ä�e—i‘iØKôMà×,Ñ,¨UÔ3Ø× Ñ ×'Ñ'¨Ô.ð �zŠzÙ™<Ü#¨4¸tØ)Ø $ô&�ð $(§?¡?×#7Ñ#7Ó#9�Ô Ù §¢Ø×8Ñ8¸¿¹ÔIØ—‘˜uÔ%Ø×!Ñ!×(Ñ(¨Õ/á˜DŸJ™J×.Ò.Ü�cÐ9¸DÑ@ÕAÙ $§*¡*×"8Ò"8Ü�cÐ=ÀÑDÔEñ Ø#$ˆEÔ ÙØˆEŒIØ˜Ò" u×'7Ñ'7¸:Ò'EÜ‘#Ú˜×)Ó)ð+ô ,áØˆEŒIÙØ×#Ò#¨×(<Ñ(<ÀÒ(OÜ�cÐQÔRØ#2ˆDÔ ÙØ×!Ò! d×&8Ñ&8¸MÒ&IÜ�cÐOÔPØ!.ˆDÔà�?‰?×Ñ˜wÔ'Ø'+ˆE�J‰JÔ$ØŸ/™/×-Ñ-Ð.?Ó@ˆØ˜jÒ(Ø+/ˆE�J‰JÔ(ð ˆŒ
ð
 ˆr!   c                 óò  — |j                   }|j                  rE|j                  j                  r/t        j                  ›d|j                  j                  ›�|_        n¯|j
                  r£|j
                  j                  r�t        |j
                  j                  «      }|j                  }|rK|j
                  r"|t        |j
                  j                  «      kD  rn|j                  ry |j                  }|rŒKt        j                  |_        |j                  r_| j                  t        j                  |j                  «      |_        | j                  t        j                  |j                  «      |_        y y rO  )rF   ra  Úvtabslot_cnamer   Úobj_base_cnamere   rð   rv   Úis_builtin_typer  Úvtabstruct_prefixrE   Úvtabstruct_cnameÚvtabptr_prefixÚvtabptr_cname)r5   rc   rF   Úentry_countra  s        r   Úallocate_vtable_namesz!ModuleScope.allocate_vtable_names|  s  € ð �z‰zˆØ�>Š>˜dŸn™n×;Ò;ô ×%Ó% t§~¡~×'DÒ'Dð#FˆDÕà�ZŠZ˜DŸJ™J×4Ò4ô ˜dŸj™j×6Ñ6Ó7ˆKØŸ™ˆIÙà —’¨+¼¸I¿O¹O×<YÑ<YÓ8ZÒ*ZØØ×,Ò,àØ%×/Ñ/�	ò ô #)×"7Ñ"7ˆDÔØ×Òà$(§K¡K´×0HÑ0HÈ%Ï*É*Ó$UˆDÔ!Ø!%§¡¬V×-BÑ-BÀEÇJÁJÓ!OˆDÕð r!   c                 óš   — | j                   D ]<  }|j                  j                  rŒt        |j                  d|j
                  z  «       Œ> y )Nú(C class '%s' is declared but not defined)rñ   rF   re   r   rG   rE   r¹  s     r   Úcheck_c_classes_pxdzModuleScope.check_c_classes_pxd™  s9   € ð ×)Ô)ˆEà—:‘:×#Ó#Ü�e—i‘iÐ!KÈeÏjÉjÑ!XÕYñ *r!   c                 óB  — |j                   }|j                  }|j                  }|j                  st	        |j
                  d|z  «       |dk7  r1|j                  s%| j                  t        j                  |«      |_        |j                  rX|j                  j                  D ]?  }|j                  rŒ|j                  rŒt	        |j
                  d|j                  z  «       ŒA |j                  r0| j                  t        j                  |j                  «      |_        y y )Nr  r7  z)C method '%s' is declared but not defined)rF   rE   r‹   re   r   rG   r  r  r   Útypeobj_prefixrð   r³   r«   r  Úvtable_prefixÚvtable_cname)r5   rc   rF   rE   r‹   Úmethod_entrys         r   r²  zModuleScope.check_c_class©  sß   € Ø�z‰zˆØ�z‰zˆØ×%Ñ%ˆ
à�zŠzÜ�%—)‘)ÐGÈ$ÑNÔOà˜Ò!¨$×*<Ò*<Ø!%§¡¬V×-BÑ-BÀDÓ!IˆDÔð �:Š:Ø $§
¡
× 8Ô 8�Ø#×0Ó0¸×9PÓ9PÜ˜,×*Ñ*Ð,WØ$×)Ñ)ñ-*õ +ð !9ð
 ×Òà $§¡¬F×,@Ñ,@À%Ç*Á*Ó MˆDÕð r!   c                 ó  — d}|rt        d| j                  z   «       | j                  D ]\  }|rGt        d|j                  ›d|›�«       t        d|j                  «       t        d|j
                  «       | j                  |«       Œ^ y )Nr   z&Scope.check_c_classes: checking scope z	...entry r  z......type = z......visibility = )rQ   rå   rñ   rE   rF   r‹   r²  )r5   Údebug_check_c_classesrc   s      r   Úcheck_c_classeszModuleScope.check_c_classesÀ  sr   € ð !"ÐÙ ÜÐ:¸T×=PÑ=PÑPÔQØ×)Ô)ˆEÙ$Ý¨%¯*«*±eÐ<Ô=Ü�o¨¯
©
Ô3ÜÐ+¨U×-=Ñ-=Ô>Ø×Ñ˜uÕ%ñ *r!   c                 ó   — | j                   j                  «       D ]q  \  }}|j                  sŒ|j                  sŒ |j                  | u sŒ/|j
                  dk7  sŒ?|j                  rŒL|j                  rŒYt        |j                  d|z  «       Œs y )Nr7  r¿  )
rç   r  r’   r¹   re   r‹   r±   rº   r   rG   rô  s      r   Úcheck_c_functionszModuleScope.check_c_functionsØ  sr   € ð  Ÿ<™<×-Ñ-Ö/‰KˆD�%Ø×!Ó!Ø×(Ó(Ø!ŸK™K¨4Ò/Ø!×,Ñ,°Ó8Ø %× 1Ó 1Ø %× 4Ó 4Ü˜%Ÿ)™)Ð%ZÐ]aÑ%aÕbñ 0r!   c                 ó  — ddl m} t        |j                  |j                  |j
                  |j                  j                  ¬«      }|j                  |_        d|_	        d|_
        d|_        d|_        |j                  |_        ||_        y )Nr   r‚  rm  T)rB   r  rA   rE   Ú	type_typerG   rF   rp  rå   r‘   r�   r©   r›   re   r¯   )r5   rc   r  rÔ  s       r   rþ  z'ModuleScope.attach_var_entry_to_c_classä  sw   € õ 	Ü §¡Ø×$Ñ$Ø—)‘)Ø—J‘J×,Ñ,ô.ˆ	ð $)×#7Ñ#7ˆ	Ô Ø !ˆ	ÔØ ˆ	ÔØ !ˆ	ÔØ(,ˆ	Ô%ØŸ+™+ˆ	ŒØ%ˆÕr!   c                 ó   — | j                   S r2   )Úcppr9   s    r   r:  zModuleScope.is_cppø  s   € Ø�x‰xˆr!   c                 ó<   — ddl m}  |«       j                  | «       y )Nr   )ÚPyObjectTypeInferer)r&  r  r'  )r5   r  s     r   r'  zModuleScope.infer_typesû  s   € Ý6ÙÓ×)Ñ)¨$Õ/r!   rA  r2   )rD  rƒ   rB  rC  )r   r   NNNNNrC   r   r   NNr   )(r;   r<   r=   r7  rÀ  Úis_cython_builtinrÁ  Únamespace_cname_is_typerû   r6   rã   rÍ   r&  r   r]  rŽ  rº  r¢  rÇ  rÐ  rÏ  r+  r›  rÛ  rÞ  rà  rü   rÕ  rï  r  r‰  r±  r  r  r²  r  r  rþ  r:  r'  r?   r!   r   ry  ry  ^  sþ   „ ð0 €OØ€OØÐØÐØ#ÐòÐó
Iò<"ð ñó ðòóLòò(ò6#óJDó>ò	ó"ò#ò>,ò8òð4 ,5ØOSóEðP KLØSXóò:8ò
4ò	6ð CDØ>BØ?HØ.2Ø)*ó	ròhPò:Zò Nò.&ò0
cò&ò(ó0r!   ry  c                   óV   — e Zd ZdZdZdZdd„Zd„ Zd„ Z	 	 dd„Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zy)rF  TFNc                 ó<   — |€|}t         j                  | |||«       y r2   ©rÜ   r6   )r5   rE   rá   râ   s       r   r6   zLocalScope.__init__	  s   € ØÐØ&ˆLÜ�‰�t˜T ;°Õ=r!   c                 ó   — t        ||z   «      S r2   )r.   r  s      r   r  zLocalScope.mangle  s   € Ü˜v¨™}Ó-Ð-r!   c                 ó
  — | j                  |«      }| j                  t        j                  |«      }| j	                  ||||d«      }d|_        |j                  rd|_        d|_        | j                  j                  |«       |S )NrC   r   Ú0)r  r  r   r’  rM  r‘   rå  rH   r£   rí   rÒ   )r5   rE   rF   rG   r   rc   s         r   Údeclare_argzLocalScope.declare_arg  sv   € à×-Ñ-¨dÓ3ˆØ—‘œF×-Ñ-¨tÓ4ˆØ—‘˜T 5¨$°°YÓ?ˆØˆÔØ×ÒØˆEŒJØˆŒà×Ñ×Ñ Ô&Øˆr!   c
                 óT  — | j                  |«      }|dv rt        |d|z  «       t        j                  | |||||||||	¬«
      }
|
j                  j
                  r|
j                  j
                  |
_        d|
_        | j                  |
_	        | j                  j                  |
«       |
S )N©rQ  Úreadonlyz$Local variable cannot be declared %srä  r   )r  r   rÜ   rü   rF   rç  rH   r¤   Ú_in_with_gil_blockrÃ   rî   rÒ   r•  s              r   rü   zLocalScope.declare_var  s¨   € ð ×-Ñ-¨dÓ3ˆàÐ/Ñ/Ü�#Ð=À
ÑJÔKÜ×!Ñ! $¨¨d°CØ(-¸*Ø&)°&À'Ð^pð "ó rˆð �:‰:×'Ò'ØŸ™×5Ñ5ˆEŒJØˆŒà"&×"9Ñ"9ˆÔØ×Ñ×Ñ Ô&Øˆr!   c                 óž   — | j                  |«      rt        |dd«       y | j                  «       j                  |«      }|| j                  |<   y ©Nrf  r   ©rh  r   r   rú  rç   rë  s       r   rï  zLocalScope.declare_global0  óD   € à×Ñ˜DÔ!Ü�CÐ,¨aÕ0à×%Ñ%Ó'×5Ñ5°dÓ;ˆEØ!&ˆD�L‰L˜Òr!   c                 óü   — | j                  |«      }|r:|j                  | u r,|j                  s t        |d|z  «       |j	                  «        y | j                  |«      }|�|j                  st        |d|z  «       y y ©Nz'%s' redeclared as nonlocalz"no binding for nonlocal '%s' found)rh  re   r¦   r   rX   r]  ©r5   rE   rG   Ú
orig_entryrc   s        r   Údeclare_nonlocalzLocalScope.declare_nonlocal8  sv   € à×%Ñ% dÓ+ˆ
Ù˜*×*Ñ*¨dÑ2¸:×;RÒ;RÜ�#Ð4°tÑ;Ô<Ø×,Ñ,Õ.à—K‘K Ó%ˆEØˆ} E×$6Ò$6Ü�cÐ?À$ÑFÕGð %7r!   c                 óX   — d|_         t        || «      }d|_        || j                  |<   |S ©NT)r¥   rÐ   r‘   rç   )r5   rE   rc   Úinner_entrys       r   Ú_create_inner_entry_for_closurez*LocalScope._create_inner_entry_for_closureC  s2   € ØˆÔÜ  ¨Ó-ˆØ"&ˆÔØ(ˆ�‰�TÑØÐr!   c                 ó  — t         j                  | |«      }|�t|j                  }|j                  r|j                  }|j                  rŒ|| ur?|j
                  r3t        |j                  d«      rt        d«      ‚| j                  ||«      S |S )NÚscope_classz#lookup() after scope class created.)	rÜ   r]  re   rJ  rá   rF  rò  r   r9  )r5   rE   rc   Úentry_scopes       r   r]  zLocalScope.lookupJ  s†   € ô —‘˜T 4Ó(ˆØÐØŸ+™+ˆKØ×4Ò4Ø)×5Ñ5�ð ×4Ó4à $Ñ&¨;×+GÒ+GÜ˜5Ÿ;™;¨Ô6Ü'Ð(MÓNÐNð ×;Ñ;¸DÀ%ÓHÐHØˆr!   c                 ó|  — | j                  «       D �](  }|j                  j                  «       D �]  }|j                  ru|j                  j
                  }| j                  r||_        Œ:|j                  t        j                  «      r|t        t        j                  «      dz   d  }|›d|›�|_        Œ…|j                  sŒ’|j
                  |_        t        j                  ›d|j
                  ›�|_        |j                  j                  sŒÞ|j                  j                   d   sŒø|j#                  «        �Œ
 �Œ+ y )Nr   r0  r‘  )r0  rç   r8  r¦   rÇ   r   rK  r   r   Úcur_scope_cnamerv   r¥   Úoriginal_cnamerF   r{   re   r“  r�   )r5   Úouter_scope_cnamere   rc   r   s        r   Úmangle_closure_cnamesz LocalScope.mangle_closure_cnames[  sè   € Ø×+Ñ+×-ˆEØŸ™×-Ñ-×/�Ø×%Ò%Ø!×-Ñ-×3Ñ3�EØ×*Ò*Ø&+˜�à ×+Ñ+¬F×,BÑ,BÔCØ$)¬#¬f×.DÑ.DÓ*EÀaÑ*GÐ*HÐ$I˜EÚ2CÁUÐ&K˜�Ø×%Ó%Ø+0¯;©;�EÔ(Ü.4×.DÓ.DÀeÇkÂkÐ"R�E”KØ—z‘z×.Ó.°5·;±;×3IÑ3IÈ,Ó3WØ×/Ñ/Ö1ò 0ñ .r!   r2   rB  )r;   r<   r=   rG  Úhas_with_gil_blockr,  r6   r  r(  rü   rï  r5  r9  r]  rA  r?   r!   r   rF  rF     sM   „ Ø€Nð Ðð Ðó>ò
.òð ,5ØOSóò$'ò	Hòòó"2r!   rF  c                   óL   — e Zd ZdZdZd„ Zd„ Z	 	 dd„Zd„ Zdd„Z	d	„ Z
d
„ Zd„ Zy)ÚComprehensionScopezåScope 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                 óL  — |}|j                   r|j                  }|j                   rŒ|j                  «       j                  t        j
                  «      }t        j                  | |||«       |j                  | _        dt        j                  t        |«      |fz  | _        |j                   s|j                  s|j                  r3|j                  }|j                   rŒ|j                  rŒ&|j                  rŒ3|j                  | _        |j                   j#                  | «       y )Nz%s%d%s)rJ  râ   r   r$  r   Úgenexpr_id_refrÜ   r6   r“  r   rv   Úgenexp_prefixrE  rD  rá   rî   ré   r;  )r5   rá   râ   rE   s       r   r6   zComprehensionScope.__init__t  sç   € Ø"ˆà×1Ò1Ø'×4Ñ4ˆLð ×1Ó1à×(Ñ(Ó*×2Ñ2´6×3HÑ3HÓIˆÜ�‰�t˜T ;°Ô=Ø%×0Ñ0ˆŒØ%¬×)<Ñ)<¼cÀ$»iÈÐ(NÑNˆÔð ×0Ò0°K×4PÒ4PÐT_×TqÒTqØ%×1Ñ1ˆKð ×0Ó0°K×4PÓ4PÐT_×TqÓTqà&×2Ñ2ˆÔØ×Ñ×!Ñ! $Õ'r!   c                 óV   — | j                   ›| j                  j                  ||«      ›�S r2   )rG  râ   r  r  s      r   r  zComprehensionScope.mangle…  s&   € Ø×+Ò+¨T×->Ñ->×-EÑ-EÀfÈdÔ-SÐTÐTr!   Nc
                 ó  — |t         u r5| j                  j                  |«      }
|
r|
j                  r|
j                  }| j                  ||	«       | j                  ›| j                  j                  t        j                  |xs | j                  «       «      ›�}| j                  |||||«      }d|_        | j                  j                  rd|_        nd|_        d|_        | j"                  j%                  |«       || j&                  |<   |S r7  )r   rá   r]  r‘   rF   rœ  rG  râ   r  r   r’  r$  rM  r7  r�   r¤   r§   rî   rÒ   rç   )r5   rE   rF   rG   r   r‹   r»   r–  r—  r„   rÇ   rc   s               r   rü   zComprehensionScope.declare_varˆ  sð   € ð Ô#Ñ#à×*Ñ*×1Ñ1°$Ó7ˆKÙ˜{×6Ò6Ø"×'Ñ'�Ø×'Ñ'¨Ð-?Ô@ð ×,Ò,¨d×.?Ñ.?×.FÑ.FÄv×GXÑGXÐZ^ÒZpÐbf×bnÑbnÓbpÔ.qÐrˆØ—‘˜T 5¨$°°ZÓ@ˆØ ˆÔØ×Ñ×,Ò,Ø#ˆEÕà!ˆEŒNØ ˆÔØ×Ñ×Ñ Ô&Ø"ˆ�‰�TÑØˆr!   c                 ó<   — | j                   j                  |||«      S r2   )râ   rü   rŸ  s       r   r   z7ComprehensionScope.declare_assignment_expression_targetŸ  s   € à× Ñ ×,Ñ,¨T°4¸Ó=Ð=r!   c                 ó<   — | j                   j                  |||«      S r2   )rá   r¬  ©r5   rE   rG   r«  s       r   r¬  z%ComprehensionScope.declare_pyfunction£  s"   € Ø×Ñ×2Ñ2Ø�#�~ó'ð 	'r!   c                 ó:   — | j                   j                  ||«      S r2   )rá   r³  )r5   r«   rG   s      r   r³  z*ComprehensionScope.declare_lambda_function§  s   € Ø×Ñ×7Ñ7¸
ÀCÓHÐHr!   c                 ó8   — | j                   j                  |«      S r2   )rá   r·  rµ  s     r   r·  z!ComprehensionScope.add_lambda_defª  s   € Ø×Ñ×.Ñ.¨xÓ8Ð8r!   c                 ób   — | j                  |«      }|s| j                  j                  |«      }|S r2   )rh  râ   rø  rô  s      r   rø  z6ComprehensionScope.lookup_assignment_expression_target­  s0   € Ø× Ñ  Ó&ˆÙØ×%Ñ%×IÑIÈ$ÓOˆEØˆr!   )NrC   FFTNrA  )r;   r<   r=   rÚ   rJ  r6   r  rü   r   r¬  r³  r·  rø  r?   r!   r   rD  rD  m  sA   „ ñð "Ðò(ò"Uð ,5ØNRóò.>ó'òIò9ór!   rD  c                   ó&   — e Zd ZdZdd„Zdd„Zd„ Zy)ÚClosureScopeTNc                 óf   — t         j                  | |||«       t        j                  ›|›�| _        y r2   )rF  r6   r   Úclosure_scope_prefixÚclosure_cname)r5   rE   Ú
scope_namerá   râ   s        r   r6   zClosureScope.__init__¸  s)   € Ü×Ñ˜D $¨°\ÔBÜ'-×'BÒ'BÁJÐOˆÕr!   c                 ó6   — t         j                  | |||d¬«      S )NrC   r¥  )rF  r¬  rL  s       r   r¬  zClosureScope.declare_pyfunctionÅ  s   € Ü×,Ñ,¨T°4¸¸nÐYbÐ,ÓcÐcr!   c                 ó(   — | j                  |||«      S r2   rž  rŸ  s       r   r   z1ClosureScope.declare_assignment_expression_targetÈ  s   € Ø×Ñ  d¨CÓ0Ð0r!   r2   rA  )r;   r<   r=   rF  r6   r¬  r   r?   r!   r   rQ  rQ  ´  s   „ àÐóPódó1r!   rQ  c                   ó    — e Zd ZdZdZd„ Zd„ Zy)ÚGeneratorExpressionScopeTc                 ó`   — | j                   j                  |||«      }| j                  ||«      S r2   )râ   rü   r9  )r5   rE   rF   rG   rc   s        r   r   z=GeneratorExpressionScope.declare_assignment_expression_targetÐ  s/   € Ø×!Ñ!×-Ñ-¨d°D¸#Ó>ˆØ×3Ñ3°D¸%Ó@Ð@r!   c                 óŠ   — | j                  |«      }|s/| j                  j                  |«      }|r| j                  ||«      S |S r2   )rh  râ   rø  r9  rô  s      r   rø  z<GeneratorExpressionScope.lookup_assignment_expression_targetÔ  sF   € Ø× Ñ  Ó&ˆÙØ×%Ñ%×IÑIÈ$ÓOˆEÙØ×;Ñ;¸DÀ%ÓHÐHØˆr!   N)r;   r<   r=   rH  rI  r   rø  r?   r!   r   rY  rY  Ì  s   „ ØÐØ$(Ð!òAór!   rY  c                   ó.   — e Zd Zdd„Z	 	 	 dd„Z	 	 dd„Zy)r§  c                 ó6   — t         j                  | |d d ¬«       y )N)rá   râ   r$  r×   s     r   r6   zStructOrUnionScope.__init__à  s   € Ü�‰�t˜T¨tÀ$ˆÕGr!   Nc                 ó¬  — |s|}|dk(  rt        |«      }|j                  rt        j                  |«      }| j	                  ||	«       | j                  |||||«      }d|_        | j                  j                  |«       |j                  r|
st        |d«       |S |j                  r|st        |d«       |S |j                  r|st        |d|z  «       |S )NrC   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œ  rM  r‘   rî   rÒ   rå  r   rJ  Úneeds_refcounting)r5   rE   rF   rG   r   r‹   r»   r–  r—  r„   Úallow_pyobjectÚallow_memoryviewÚallow_refcountedrc   s                 r   rü   zStructOrUnionScope.declare_varã  sÜ   € ñ
 ØˆEØ˜YÒ&Ü)¨%Ó0�Ø×ÒÜ×&Ñ& tÓ,ˆDØ×'Ñ'¨Ð-?Ô@Ø—‘˜T 5¨$°°ZÓ@ˆØˆÔØ×Ñ×Ñ Ô&Ø×ÒÙ!Ü�cÐLÔMð ˆð ×$Ò$Ù#ä�cÐJÔKð ˆð ×#Ò#Ù#Ü�cÐXÐ[_Ñ_Ô`Øˆr!   c                 óJ   — |
rt        |d«       | j                  |||||¬«      S )Nz0C struct/union member cannot be declared 'cpdef'r©  )r   rü   )r5   rE   rF   rG   r   r‹   r»   r–  rW  r™  rÐ  s              r   rÕ  z$StructOrUnionScope.declare_cfunctionþ  s7   € ñ Ü�#ÐIÔJØ×Ñ  d¨CØ&+¸
ð  ó Dð 	Dr!   )Ú?)	NrC   FFFNFFF)NrC   r   r   r   r?   F)r;   r<   r=   r6   rü   rÕ  r?   r!   r   r§  r§  Ý  s(   „ óHð ,5ØOSØSXóð8 KLØ@EôDr!   r§  c                   ó&   — e Zd ZddgZd„ Zd„ Zd„ Zy)Ú
ClassScoper<   r=   c                 óæ   — |r!|j                  «       j                  d«      r|S |rK|j                  d«      r:|j                  d«      s)t        d| j                  j                  d«      ›|›�«      }|S )NÚ__pyx_r   r'   )Úlowerr   Úendswithr
   Ú
class_nameÚlstripr×   s     r   r  z$ClassScope.mangle_class_private_name	  sY   € á�D—J‘J“L×+Ñ+¨HÔ5ØˆKÙ�D—O‘O DÔ)°$·-±-ÀÔ2EÝ ¨D¯O©O×,BÑ,BÀ3Ô,GÉÐ!NÓOˆDØˆr!   c                 óP   — t         j                  | |||«       || _        d | _        y r2   )rÜ   r6   rk  r®   ©r5   rE   rá   s      r   r6   zClassScope.__init__	  s"   € Ü�‰�t˜T ;°Ô<ØˆŒØˆ�r!   c                 ój  — t         j                  | |«      }|r|S |dk(  r“t        ddt        j                  t
        t        j                  dt
        d «      gdd«      «      }t        j                  j                  dd«      |_
        | j                  |«       d|_        | j                  «       |_        |S )NÚclassmethodÚ__Pyx_Method_ClassMethodrB   r   ÚClassMethodzCythonFunction.cr   )rÜ   r]  rA   r   rÞ  r   rß  r   r~   r   r€   r‰  r’   r*  re   rô  s      r   r]  zClassScope.lookup	  s©   € Ü—‘˜T 4Ó(ˆÙØˆLØ�=Ò ô
 ØØ*Ü×$Ñ$Ü"Ü×,Ñ,¨R´ÀÓFÐGÈÈAóOóPˆEô -1×,<Ñ,<×,HÑ,HÈÐXjÓ,kˆEÔ)Ø×'Ñ'¨Ô.Ø!"ˆEÔØ×,Ñ,Ó.ˆEŒKØˆr!   N)r;   r<   r=   rû   r  r6   r]  r?   r!   r   rf  rf  	  s   „ ð +¨NÐ;Ðòòó
r!   rf  c                   ó2   — e Zd ZdZdZ	 	 dd„Zd„ Zd„ Zd„ Zy)	ÚPyClassScoper   FNc
                 óž   — | j                  |«      }|t        u rt        }t        j	                  | |||||||||	¬«
      }
d|
_        d|
_        |
S )Nrä  r   )r  r   r   rÜ   rü   rŽ   r�   r•  s              r   rü   zPyClassScope.declare_var=	  sf   € ð ×-Ñ-¨dÓ3ˆØÔ#Ñ#Ü!ˆDä×!Ñ! $¨¨d°CØ(-¸*Ø&)°&À'Ð^pð "ó rˆð ˆÔØ !ˆÔØˆr!   c                 ó  — | j                  |«      }|r:|j                  | u r,|j                  s t        |d|z  «       |j	                  «        y | j                  |«      }|€t        |d|z  «       y || j                  |<   y r2  )rh  re   r¦   r   rX   r]  rç   r3  s        r   r5  zPyClassScope.declare_nonlocalK	  sy   € à×%Ñ% dÓ+ˆ
Ù˜*×*Ñ*¨dÑ2¸:×;RÒ;RÜ�#Ð4°tÑ;Ô<Ø×,Ñ,Õ.à—K‘K Ó%ˆEØˆ}Ü�cÐ?À$ÑFÕGð &+�—‘˜TÒ"r!   c                 óž   — | j                  |«      rt        |dd«       y | j                  «       j                  |«      }|| j                  |<   y r.  r/  rë  s       r   rï  zPyClassScope.declare_globalZ	  r0  r!   c                 ó8   — | j                   j                  |«      S r2   )rá   Úadd_default_value)r5   rF   s     r   ry  zPyClassScope.add_default_valueb	  s   € Ø×Ñ×1Ñ1°$Ó7Ð7r!   rB  )	r;   r<   r=   rD  r!  rü   r5  rï  ry  r?   r!   r   rt  rt  5	  s,   „ ð
 ÐØ#Ðð ,5ØOSóò+ò'ó8r!   rt  c                   óÀ   ‡ — e Zd ZdZdZdZdZdZdZdZ	dZ
dZd„ Zd„ Zd„ Zd„ Zd„ Z	 	 dd„Z	 	 dd	„Zdd
„Zd„ Z	 	 dd„Zdd„Zdd„Zdd„Z	 	 	 dd„Zd„ Zdˆ fd„	Zˆ xZS )rn  r   Fc                 óŠ  — t         j                  | ||«       |dk7  rJ|j                  t        j                  |«      | _        |j                  t        j                  |«      | _        g | _        g | _	        || _
        |j                  s|j                  r0|j                  r#| j                  j                  | _        d| _        y y y )Nr7  T)rf  r6   r  r   Úmethtab_prefixrŒ  Úgstab_prefixÚgetset_table_cnameÚproperty_entriesÚinherited_var_entriesrà  r  ræ  rp  rV  r!  )r5   rE   rá   r‹   rà  s        r   r6   zCClassScope.__init__ƒ	  s®   € Ü×Ñ˜D $¨Ô4Ø˜Ò!Ø&1×&8Ñ&8¼×9NÑ9NÐPTÓ&UˆDÔ#Ø&1×&8Ñ&8¼×9LÑ9LÈdÓ&SˆDÔ#Ø "ˆÔØ%'ˆÔ"Ø&ˆÔð
 ×(Ò(¨K×,IÒ,IØ×-Ò-Ø#'×#3Ñ#3×#AÑ#AˆDÔ Ø+/ˆDÕ(ð .ð -Jr!   c                 ó†  — | j                   r| j                  j                  dd«      sy| j                  j                  r| j                  j
                  sy| j                  j                  }|r&|j                  �|j                  j                  «       S | j                  j
                  r| j                  j                   S y)NÚno_gcFT)
Úhas_cyclic_pyobject_attrsr“  rR   rà  Úis_externalr  ra  re   Úneeds_gcÚis_gc_simple)r5   ra  s     r   r…  zCClassScope.needs_gc”	  sš   € ð ×)Ò)°$·/±/×2EÑ2EÀgÈuÔ2UØØ×Ñ×'Ò'°×0@Ñ0@×0PÒ0PàØ×$Ñ$×.Ñ.ˆ	Ù˜Ÿ™Ð4Ø—?‘?×+Ñ+Ó-Ð-Ø×Ñ×-Ò-Ø×'Ñ'×4Ñ4Ð4Ð4Ør!   c                 ó  — | j                   j                  d«      }|du ry|r| j                  ry| j                  j                  }|r&|j
                  �|j
                  j                  «       S | j                  j                  S )NÚtrashcanFT)r“  rR   rƒ  rà  ra  re   Úneeds_trashcanÚbuiltin_trashcan)r5   Ú	directivera  s      r   r‰  zCClassScope.needs_trashcan£	  su   € ð —O‘O×'Ñ'¨
Ó3ˆ	Ø˜ÑØñ ˜×7Ò7Øà×$Ñ$×.Ñ.ˆ	Ù˜Ÿ™Ð4Ø—?‘?×1Ñ1Ó3Ð3Ø×Ñ×0Ñ0Ð0r!   c                 ó`   — | j                  «       xr | j                  j                  dd«       S )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“  rR   r9   s    r   Úneeds_tp_clearzCClassScope.needs_tp_clear³	  s)   € ð
 �}‰}‹ÒP t§¡×':Ñ':¸=È%Ó'PÐ#PÐPr!   c                 ó  — | }|r‚|j                  d«      }|r|j                  ry|j                  j                  s"|j                  r|j                  j
                  ry|j                  j                  }|r|j                  nd}|rŒ‚y)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)rh  r¸   rà  r„  r   Úmultiple_basesra  re   )r5   Úcurrent_type_scopeÚ	del_entryÚcurrent_base_types       r   Úmay_have_finalizezCClassScope.may_have_finalizeº	  sƒ   € ð "ÐÙ Ø*×6Ñ6°yÓAˆIÙ˜Y×1Ò1ØØ"×.Ñ.×:Ò:ÐBT×B`ÒB`Ø&×2Ñ2×AÒAàØ 2× >Ñ >× HÑ HÐÙ<MÐ!2×!8Ò!8ÐSWÐò !ð r!   c                 ó¾  — g }g }g }| j                   D ]¸  }|j                  j                  rI|s| j                  s|j                  dk7  sŒ7|s|j                  j
                  rŒP|j                  |«       Œb|j                  t        j                  k(  r|j                  |«       Œ‘|j                  j                  sŒ¨|j                  |«       Œº |xs |xs |}||||ffS )Nr   )
rî   rF   rå  Úis_closure_class_scoperE   r†  rÒ   r   Úc_py_buffer_typerJ  )r5   Úinclude_weakrefÚinclude_gc_simpleÚpy_attrsÚ
py_buffersÚmemoryview_slicesrc   Úhave_entriess           r   Úget_refcounted_entriesz"CClassScope.get_refcounted_entriesÍ	  sÁ   € àˆØˆ
ØÐà×%Ô%ˆEØ�z‰z×%Ò%Ù" t×'BÒ'BÀeÇjÁjÐTaÓFaÙ(°·
±
×0GÓ0GØ Ÿ™¨Õ.Ø—‘œz×:Ñ:Ò:Ø×!Ñ! %Õ(Ø—‘×.Ó.Ø!×(Ñ(¨Õ/ð &ð  ÒB :ÒBÐ1BˆØ˜h¨
Ð4EÐFÐFÐFr!   c
                 ó
  — | j                  |«      }|	r\d|	v r<d}|j                  s.|j                  st        |d|z  «       t        }n|j                  }d|	v r| j
                  st        |d«       |�rU| j                  rt        |d«       | j                  s3t        | j                  «      j                  |«      rt        |d|z  «       |s€|}| j                  j                  sN| j                  j                  j                  s.| j                  j                  j                   dk(  st#        |«      }t%        |t&        j(                  «      }| j+                  |||||«      }
d	|
_        | j.                  j1                  |
«       |	|
_        |j4                  r6|d
k7  r1| j                  d   r|
j7                  «        n|j9                  |«       |j:                  rd| _        nv|j?                  | «      rd| _         n]|j                  rQ| j                  s|dk7  r@d| _!        |jD                  r&|jF                  r|jF                  jI                  «       rd| _%        |dvrt        |d|z  «       |dv rRd|
_&        | j                  s|dk(  rt        |d«       |j                  s |jO                  | «      st        |d|z  «       |
S d|
_&        |
S |tP        u rt        }tR        jU                  | |||||||||	¬«
      }
d	|
_+        d	|
_,        |
S )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.rQ  r   r7  r‘  Tr   )rC   rQ  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 PythonFrä  )-r  rå  Úequivalent_typer   r   rM  r   rø  r—  r   r“  Úget_special_method_signaturerà  r„  rc   r»   r‹   r    r.   r   Úunicode_structmember_prefixrM  r‘   rî   rÒ   r„   r{   r�   r”  rJ  Úhas_memoryview_attrsÚneeds_explicit_constructionÚ"has_explicitly_constructable_attrsÚhas_pyobject_attrsr  re   r…  rƒ  rÂ   Úcan_coerce_to_pyobjectr   rÜ   rü   r�   rŽ   r•  s              r   rü   zCClassScope.declare_varà	  sí  € ð ×-Ñ-¨dÓ3ˆáØ Ð$6Ñ6Ø�Ø×'Ò'Ø×/Ò/Ü ð  &Bð  EIñ  &Iô  JÜ-™à#×3Ñ3˜Ø%Ð);Ñ;ÀD×D]ÒD]Ü�cÐfÔgâà�|Š|Ü�cð7ô8ð ×/Ò/Ü" 4§?¡?Ó3×PÑPÐQUÔVÜ�cØEØñô ñ Ø�Ø×(Ñ(×4Ò4¸×8HÑ8H×8NÑ8N×8RÒ8RØ×(Ñ(×.Ñ.×9Ñ9¸XÒEÜ-¨eÓ4�EÜ'¨¬v×/QÑ/QÓR�Ø—L‘L  u¨d°C¸ÓDˆEØ !ˆEÔØ×Ñ×#Ñ# EÔ*Ø'9ˆEÔ$Ø× Ò  Z°8Ò%;Ø—?‘? <Ò0Ø×+Ñ+Õ-à×2Ñ2°3Ô7Ø×&Ò&Ø,0�Õ)Ø×1Ñ1°$Ô7Ø:>�Õ7Ø×!Ò! t×'BÒ'BÀdÈmÒF[Ø*.�Ô'Ø×,Ò,Ø#Ÿzšz¨T¯Z©Z×-@Ñ-@Ô-BØ59�DÔ2ØÐ!BÑBÜ�cØGÈ*ÑTôVàÐ3Ñ3ð (,�Ô$Ø×2Ò2°t¸}Ò7LÜ˜#ÐZÔ[Ø×(Ò(¨D×,GÑ,GÈÔ,Mä˜#ÐXÐ[_Ñ_Ô`ð ˆLð (-�Ô$ØˆLàÔ'Ñ'Ü%�ä×%Ñ% d¨D°$¸Ø,1¸jØ*-°fÀgÐbtð &ó vˆEð  ˆEŒOð !"ˆEÔàˆLr!   c                 óÒ  — |t         v r!| j                  d«      rAt        |d|z  «       n1|dk(  r,t         D ]#  }| j                  |«      sŒt        |d|z  «       Œ% |dk(  rt        |d«       | j                  |t        |d¬«      }t        | j                  «      j                  |«      }|r||_        d|_	        nt        |_        d|_	        | j                  j                  |«       |S )	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.r7  r¥  r   r   )r   rh  r   rü   r   r   r“  r¢  r¦  r¸   r   rï   rÒ   )r5   rE   rG   r«  r  rc   Úspecial_sigs          r   r¬  zCClassScope.declare_pyfunction2
  sè   € àÔ*Ñ*Ø×Ñ Ô.Ü�cÐAÀDÑHÕIØ�]Ò"ß,�Ø×#Ñ# AÕ&Ü˜#ÐEÈÑIÕJð -ð �9ÒÜ�#ð Rô Sà× Ñ  ¤~°sØ,4ð !ó 6ˆä$ T§_¡_Ó5×RÑRÐSWÓXˆÙð *ˆEŒOØ ˆEÕä0ˆEŒOØ ˆEÔà×Ñ×"Ñ" 5Ô)Øˆr!   c                 óà   — | j                   s|dk(  rt        d«      }t        j                  | |«      }|r9|j                  r-| j
                  j                  s| j
                  j                  sy |S )Nr«  Ú	__cinit__)r—  r
   rf  rh  r”   rà  r  r³  rô  s      r   rh  zCClassScope.lookup_hereM
  sa   € Ø×*Ò*¨t°yÒ/@Ü  Ó-ˆDÜ×&Ñ& t¨TÓ2ˆÙ�U×-Ò-Ø×#Ñ#×3Ò3ð ×'Ñ'×5Ò5ØØˆr!   c           
      ó~  — | j                  |«      }t        | j                  «      j                  |«      r"| j                  j
                  st        |d«       |j                  }|j                  sd|st        |d«       nU| j                  j                  |d   j                  «      s-t        |d|d   j                  ›d|›d| j                  ›d�«       | j                  |«      }|€#t        t        |«      t        j                  «      }|�r¸|j                   s!t        |d|z  «       |j#                  «        �nÊ|r|j$                  rt        |d	|z  «       |j&                  r|j(                  rt        |d
«       �n‡|j+                  |j                  d¬«      rO|j,                  |j                  j,                  k(  r,|j                  j/                  |j0                  «      |_
        �n|j3                  |j                  d¬«      rœ|j,                  |j                  j,                  k(  ry| j4                  rU|sS|j7                  |j                  dd¬«      s5t9        |d|›d| j:                  ›d�d«       t9        |j<                  dd«       | j?                  ||||d|	¬«      }nbt        |d«       t        |j<                  d«       n?| j4                  rt        |d|›d| j:                  ›d�«       | j?                  ||||||	«      }|r%| jA                  t        jB                  |«      |_        |
|_"        ||_#        d|	v rd|_$        | j                  jJ                  s'|jH                  s| j                  jM                  d«      r<d|_        |j$                  |_'        |jP                  s|j                  |_)        ||_
        |S )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À  r8  z'%s' already definedz'Overriding final methods is not allowedr   )Ú
as_cmethod)r°  Ú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   rW   r9  )r‹   r™  z2Signature not compatible with previous declarationz
C method 'z@' not previously declared in definition part of extension type 'r  r¼  Trõ  )*r  r   r“  r¢  rà  r  r   r<  rÙ  Úassignable_fromrF   rh  r.   r    r   Úunicode_vtabentry_prefixr’   rX   r«   r–   r³   Úsame_c_signature_asrÉ  rÅ  rÆ  r;  rø  Ú!same_c_signature_as_resolved_typer   rk  rG   rÈ  r  rÃ  r}   rc   r—   r³  rR   r­   ra   rË   )r5   rE   rF   rG   r   r‹   r»   r–  rW  r™  r}   rÐ  r<  rc   s                 r   rÕ  zCClassScope.declare_cfunction\
  s  € ð ×-Ñ-¨dÓ3ˆÜ˜4Ÿ?™?Ó+×HÑHÈÔNØ×(Ñ(×8Ò8Ü�#ÐPÔQØ�y‰yˆØ×$Ò$ÙÜ�cÐ:Õ;Ø×%Ñ%×5Ñ5°d¸1±g·l±lÔCÜ‘cØ˜A‘w—|“|¢T¨4×+;Ó+;ð=ô >à× Ñ  Ó&ˆØˆ=Ü#Ô$5°dÓ$;¼V×=\Ñ=\Ó]ˆEÚØ×%Ò%Ü�cÐ-°Ñ4Ô5Ø×+Ñ+Ö-á × 0Ò 0Ü˜#Ð5¸Ñ<Ô=à×)Ò)¨e×.@Ò.@Ü˜#ÐHÖIØ×-Ñ-¨e¯j©jÀqÐ-ÔIÈdÏjÉjÐ\a×\fÑ\f×\lÑ\lÒNlà!&§¡×!9Ñ!9¸$¿-¹-Ó!H�E–JØ×3Ñ3°E·J±JÈQÐ3ÔOÐTX×T^ÑT^Ðbg×blÑbl×brÑbrÒTrØŸš©VØ$(×$JÑ$JØ %§
¡
°qÈAð %Kô %Oô  ¡ò !% d§o£oð7ð 9:ô	;ô
   §	¡	Ð+IÈ1ÔMØ ×.Ñ.¨t°T¸3ÀÐRZÐfoÐ.Óp‘Eä˜#ÐSÔTÜ˜%Ÿ)™)Ð%CÕDà�|Š|Ü‘câ.2°D·O³OðEôFð ×&Ñ& t¨T°3¸¸zÈ9ÓUˆEÙØ#Ÿ{™{¬6×+=Ñ+=¸tÓDˆEÔØ)ˆÔØˆŒ
à�yÑ Ø&*ˆEÔ#à×Ñ×)Ò)¨U×-DÒ-DÈÏÉ×H[ÑH[Ð\cÔHdØ%)ˆEÔ"Ø%*×%5Ñ%5ˆEÔ"Ø—=’=Ø$)§J¡J�Ô!Ø!�”
àˆr!   c           
      ó~   — | j                  |«      }t        j                  | |||||||¬«      }	d|	_        ||	_        |	S )N©rç  r   )rh  rf  rÈ  r“   r¾   )
r5   rE   rF   rG   r   r‹   r™  rç  r¾   rc   s
             r   rÈ  zCClassScope.add_cfunction 
  sN   € à×%Ñ% dÓ+ˆ
Ü×(Ñ(Ø�$˜˜c 5¨*°iÈ9ð )ó VˆàˆÔØ%ˆÔØˆr!   c                 óÔ   — t        |«      }| j                  ||d |d|¬«      }t        ||t        «      }||_        d|_        d|_        ||_        |j                  |_        ||_	        |S )Nr7  )rG   r   r‹   r}   r   )
r
   rÕ  rA   r   rå   r‘   rŒ   r}   re   r¯   )r5   rE   rF   r   r}   rc   rÔ  s          r   rj  z%CClassScope.declare_builtin_cfunction©
  sx   € ô ˜TÓ"ˆØ×&Ñ&Ø�$˜D¨¸(ÐQ]ð 'ó _ˆä˜$ ¤nÓ5ˆ	Ø#'ˆ	Ô Ø !ˆ	ÔØ ˆ	ÔØ!-ˆ	ÔØŸ+™+ˆ	ŒØ%ˆÔØˆr!   c                 ó  — | j                  |«      }|€| j                  |||€t        n||d«      }d|_        |�d|_        ||_        |€t        || ¬«      |_        n||_        | j                  j                  |«       |S )NrC   T)Úclass_scope)
rh  rM  r   r�   rž   r®   ÚPropertyScopere   r  rÒ   )r5   rE   r®   rG   ÚctypeÚproperty_scoperc   s          r   Údeclare_propertyzCClassScope.declare_property¸
  s‡   € Ø× Ñ  Ó&ˆØˆ=Ø—L‘L  t¸u¸}­^ÐRWÐY\Ð^gÓhˆEØ ˆÔØÐØ!%ˆEÔØˆŒ	ØÐ!Ü'¨¸$Ô?ˆE�Kà(ˆEŒKØ×Ñ×$Ñ$ UÔ+Øˆr!   c                 óê   — | j                  ||||¬«      }|j                  j                  |t        j                  |t        j
                  d| j                  d¬«      g|||	|
¬«      ||||¬«      }||fS )zPInternal convenience method to declare a C property function in one go.
        )r®   r¼  rG   r5   Nrà   )rÉ  rÆ  rÊ  rË  )rE   rF   r   r}   r‹   rG   )r¾  re   rÕ  r   rÞ  rß  rà  )r5   rE   rF   Ú
cfunc_namer®   rG   r‹   rÉ  rÆ  rÊ  rË  r}   Úproperty_entryré  s                 r   Údeclare_cpropertyzCClassScope.declare_cpropertyÇ
  sŽ   € ð
 ×.Ñ.¨t¸ÀDÈcÐ.ÓRˆØ$×*Ñ*×<Ñ<ØÜ×%Ñ%ØÜ×(Ñ(¨°×1AÑ1AÀtÔLÐMØØ!Ø /Ø /ôð Ø%Ø!Øð =ó 
ˆð ˜{Ð*Ð*r!   c           
      óü  ‡— ˆfd„}|j                   |j                  z   }|D ]u  Š| j                  ‰j                   |‰j                  «      ‰j
                  d d«      }d|_        d|_        ‰j                  |_        | j                   j                  |«       Œw |j                  d d  D ]3  Š‰j
                  j                  sŒ‰j
                  j                  «        Œ5 |j                  D �]  Š‰j                  }‰j                  }|xr |j                  }|s ||«      }| j                  ‰j                  ‰j
                  ‰j                   |‰j"                  ‰j$                  d¬«      }d|_        ‰j&                  rNd|_        ‰j(                  |_        | j*                  |j*                  k(  s|j(                  r‰j,                  |_        |rd|_        ||_        ‰j0                  sŒþ‰j0                  |_        �Œ y )Nc                 óB   •— t         j                  ›d‰j                  ›�S rO  )r   r  r   )r   Ú
base_entrys    €r   Úadaptz9CClassScope.declare_inherited_c_attributes.<locals>.adaptâ
  s   ø€ Ü$×3Ó3°Z×5EÒ5EÐFÐFr!   rC   r   Tr·  )r€  rî   rM  rE   r   rF   r‘   r³   rŠ   rÒ   rð   ra   rb   r¯   rŒ   rÈ  rG   r‹   r¬   r–   r—   râ   r­   r”   r}   )	r5   Ú
base_scoperÆ  rç   rc   r   rÔ  rŒ   rÅ  s	           @r   rÿ  z*CClassScope.declare_inherited_c_attributesÞ
  sÀ  ø€ ô	Gð ×2Ñ2°Z×5KÑ5KÑKˆÛ!ˆJØ—L‘LØ—‘¡ z×'7Ñ'7Ó!8Ø—‘  yó2ˆEð !"ˆEÔØ!%ˆEÔØ)×4Ñ4ˆEÔØ×&Ñ&×-Ñ-¨eÕ4ð "ð %×2Ñ2±1Ó5ˆJØ�‰×'Ó'Ø—‘×BÑBÕDð 6ð %×2Õ2ˆJØ×$Ñ$ˆEØ"×.Ñ.ˆIØ"Ò; y×';Ñ';ˆJÙÙ˜e›�Ø×&Ñ&Ø—‘ §¡°*·.±.À%Ø×%Ñ% z×'@Ñ'@ÈDð 'ó RˆEð "#ˆEÔØ×*Ò*Ø)-�Ô&Ø*4×*FÑ*F�Ô'Ø×%Ñ%¨×)@Ñ)@Ò@Ø×/Ò/Ø-7×-HÑ-H�EÔ*ÙØ+/�Ô(Ø$-�Ô!Ø×&Ó&Ø%/×%<Ñ%<�Ö"ñ) 3r!   c                 ó.   •— t         ‰| �  ||||||«       y r2   )ÚsuperrB  )r5   rE   r   rF   rG   r‹   r>  r  s          €r   rB  z(CClassScope.handle_already_declared_name  s   ø€ ä‰Ñ,¨T°5¸$ÀÀZÐQ[Õ\r!   )FTrB  rA  rC  r2   r‡   )NNr7  FFNFN)T)r;   r<   r=   rE  r—  r´  r§  r¤  r¦  rƒ  rø  r   r6   r…  r‰  rŽ  r•  rŸ  rü   r¬  rh  rÕ  rÈ  rj  r¾  rÂ  rÿ  rB  Ú__classcell__©r  s   @r   rn  rn  f	  s¾   ø„ ð$ ÐØ"ÐØ#ÐàÐØ ÐØ).Ð&Ø %ÐØ€GØ€Kò0ò"ò1ò Qòð& 6;Ø15óGð( ,5ØOSóPódò6ð  KLØSXóBóHóóð X`Ø]bØ'+ó+ò.,=÷^]ñ ]r!   rn  c                   ó\   ‡ — e Zd ZdZdZdZd
d„Z	 	 dd„Z	 	 dd„Zd„ Z	d„ Z
ˆ fd„Zd	„ Zˆ xZS )ÚCppClassScoper   Nc                 óÖ   — t         j                  | ||d «       |j                  | _        g | _        |�7|D ]1  }| j	                  ||t        j                  |«      d d«      }d|_        Œ3 y y )Nr7  r   )rÜ   r6   r“  r€  rM  r   ÚTemplatePlaceholderTyper™   )r5   rE   rá   rr  ÚTÚtemplate_entrys         r   r6   zCppClassScope.__init__  sk   € Ü�‰�t˜T ;°Ô5Ø%×0Ñ0ˆŒØ%'ˆÔ"ØÐ Û�Ø!%§¡Ø�qœ*×<Ñ<¸QÓ?ÀÀxó"Q�à)*�Õ&ñ ð !r!   c                 ó°  — |s|}| j                  ||
«       | j                  |«      }|	rw|�u|j                  r| j                  |||||«      }n}|j                  j                  |«      r+|j                  j                  |j                  «      |_        n7t        |d«       n*| j                  |||||«      }|j                  r	|	sd|_	        d|_
        |j                  rQd|_        | j                  r>| j                  j                  «       s$| j                  j                  «       ›d|›�|_        |dk7  r"|	s|dk7  r| j                  j                  |«       |S )Nr¾  r   ú::ry  r6  )rœ  rh  r’   rM  rF   rÄ  rÅ  rÆ  r   r³   r‘   Úget_fused_typesÚempty_declaration_coder«   rî   rÒ   )r5   rE   rF   rG   r   r‹   r»   r–  r—  rW  r„   rc   s               r   rü   zCppClassScope.declare_var#  s'  € ñ ØˆEØ×'Ñ'¨Ð-?Ô@Ø× Ñ  Ó&ˆÙ˜Ð)Ø× Ò ØŸ™ T¨5°$¸¸ZÓH‘Ø—‘×#Ñ# DÔ)à"ŸZ™Z×5Ñ5°d·m±mÓD�•
ä�cÐSÕTà—L‘L  u¨d°C¸ÓDˆEØ× Ò ©Ø%&�Ô"ØˆÔØ×ÒØ!"ˆEÔØ�yŠy §¡×!:Ñ!:Ô!<Ø/3¯y©y×/OÑ/OÕ/QÑSXÐ#Y�Ô Ø�6Š>™x¨4°8Ò+;Ø×Ñ×#Ñ# EÔ*Øˆr!   c                 ó  — | j                   j                  d«      d   }||dfv ru|€st        j                  ›d|›�}t	        d«      }t        j                  «       |_        |j                  |_	        d„ }|j                  D �cg c]
  } ||«      ‘Œ c}|_        n@|dk(  r;|€9t        j                  ›d|›�}t	        d«      }t        j                  «       |_        |dv r~|j                  rr| j                  j                  D ]Y  }|j                  j                  |«      }|sŒ!|j                  j                  rŒ8t        |d	«       t        |j                   d
«       Œ[ | j#                  ||||||¬«      }|
|_        ||_        |S c c}w )NrÓ  rD  r6   r6  c                 óî   — | j                   j                  r^| j                   j                  sHt        j                  | j
                  t        j                  | j                   «      | j                  «      S | S r2   )rF   r{   Úis_referencer   rß  rE   Ú
c_ref_typerG   )r	  s    r   Ú	maybe_refz2CppClassScope.declare_cfunction.<locals>.maybe_refK  sU   € Ø—8‘8×(Ò(°·±×1FÒ1FÜ%×2Ñ2ØŸ™¤*×"7Ñ"7¸¿¹Ó"AÀ3Ç7Á7óLð Lð �Jr!   Ú__dealloc__ú<del>©r6  rÜ  zdConstructor cannot be called without GIL unless all base constructors can also be called without GILzBase constructor defined here.)rW  r   r‹   )rE   rÎ  r   rÃ  r
   r   Ú	CVoidTyperÎ  r<  Úoriginal_argsrÉ  rF   ru  re   r]  r   rG   rü   r}   rc   )r5   rE   rF   rG   r   r‹   r»   r–  rW  r™  r}   rÐ  rk  rÚ  r	  ÚbaserÅ  rc   s                     r   rÕ  zCppClassScope.declare_cfunction@  sh  € ð —Y‘Y—_‘_ TÓ*¨2Ñ.ˆ
Ø�J 
Ð+Ñ+°°Ü&,×&8Ó&8¹*ÐEˆEÜ  Ó*ˆDÜ)×3Ñ3Ó5ˆDÔð "&§¡ˆDÔòð 48·9²9Ó=±9¨C™ 3�°9Ñ=ˆD�IØ�]Ò" u }Ü)/×);Ó);¹ZÐHˆEÜ  Ó)ˆDÜ)×3Ñ3Ó5ˆDÔØÐ&Ñ&¨4¯:ª:ØŸ	™	×.Ô.�Ø!ŸZ™Z×.Ñ.¨tÓ4�
Ú j§o¡o×&;Ó&;Ü˜#ð   Fô  GÜ˜*Ÿ.™.Ð*JÕKð	 /ð × Ñ   t¨SØ*2Ø',¸ð !ó Eˆð *ˆÔØˆŒ
Øˆùò# >s   ÂFc                 óN  — |j                   }|}t        |dd «      r|j                  }t        |dd «      rŒt        |dd «      r$|j                  D �cg c]  }|j                  ‘Œ }}nd}|j
                  |j                  z   D ]µ  }|j                  dv rŒ|j                  | j                  v r|j                   | j                  |j                  |j                  |j                  d d«      }d|_        d|_        |j                  rd|_        |j                  |_        | j
                  j                  |«       Œ· |j                   D ]h  }| j#                  |j                  |j                  |j$                  |j                  |j&                  d|j(                  |j*                  ¬«      }d|_        Œj |j,                  D ]a  }|j                  |vsŒ| j/                  |j                  |j                  |j$                  |j                  |j&                  d	¬
«      }d|_        Œc y c c}w )NÚtemplate_typerr  r?   rÝ  r7  r   r   )r»   r™  r}   F)rW  )re   rÖ   râ  rr  rE   r€  rî   rç   rM  r   rF   r‘   r³   r’   r«   rÒ   rð   rÕ  rG   r‹   r¬   r}   rë   rY  )r5   rw  rÇ  râ  rÐ  Úbase_templatesrÅ  rc   s           r   rv  z.CppClassScope.declare_inherited_cpp_attributesd  së  € Ø×%Ñ%ˆ
Ø"ˆÜ�m _°dÔ;Ø)×7Ñ7ˆMô �m _°dÕ;ä�= +¨tÔ4Ø.;×.EÒ.EÓFÑ.E¨˜aŸf›fÐ.EˆNÑFàˆNð %×:Ñ:¸Z×=SÑ=SÔSˆJà�‰Ð"5Ñ5Øà�‰ $§,¡,Ñ.Ø—’Ø—L‘L §¡°*×2BÑ2BØ—‘  xó1ˆEà !ˆEÔØ!"ˆEÔØ×&Ò&Ø%&�Ô"Ø#-×#8Ñ#8�Ô Ø×&Ñ&×-Ñ-¨eÕ4ð Tð %×2Ô2ˆJØ×*Ñ*¨:¯?©?¸J¿O¹OØ+5¯>©>¸:×;KÑ;KØ+5×+@Ñ+@ÀaØ5?×5NÑ5NØ8B×8OÑ8Oð	 +ó QˆEð
 "#ˆEÕð 3ð %×1Ô1ˆJØ�‰ nÒ4Ø×)Ñ)¨*¯/©/¸:¿?¹?Ø*4¯.©.¸*×:JÑ:JØ*4×*?Ñ*?È%ð *ó Q�ð &'�Õ"ñ 2ùò9 Gs   ÁH"c           	      óü  — t        | j                  | j                  «      }||_        | j                  j                  «       D �]6  }|j                  rN|j                  |j                  |j                  j                  |«      |j                  |j                  d¬«       Œ^|j                  j                  rm|j                  «       D ]Y  }|j                  |j                  |j                  j                  |«      |j                  |j                  |j                  ¬«       Œ[ Œá|j                  |j                  |j                  j                  |«      |j                  |j                  |j                   «       �Œ9 |S )Nr   )rX  )r}   )rÍ  rE   rá   rF   rç   r8  r™   rY  rý  rG   r   r’   r\   rÕ  r}   rü   r‹   )r5   r8  Ú
type_entryre   rc   r  s         r   rý  zCppClassScope.specialize�  s"  € Ü˜dŸi™i¨×)9Ñ)9Ó:ˆØˆŒ
Ø—\‘\×(Ñ(×*ˆEØ�}Š}Ø×"Ñ" 5§:¡:Ø#(§:¡:×#8Ñ#8¸Ó#@Ø#(§9¡9Ø#(§;¡;Ø,-ð	 #õ /ð
 —‘×(Ò(Ø×/Ñ/Ö1�AØ×+Ñ+¨A¯F©FØ,-¯F©F×,=Ñ,=¸fÓ,EØ,-¯E©EØ,-¯G©GØ9:¿¹ð	 ,õ Iñ 2ð ×!Ñ! %§*¡*Ø"'§*¡*×"7Ñ"7¸Ó"?Ø"'§)¡)Ø"'§+¡+Ø"'×"2Ñ"2ö	4ð +ð* ˆr!   c                 óH   •— |dk(  rd}n|dk(  rd}t         t        | �  |«      S )Nr6   r6  rÛ  rÜ  )rÉ  rÍ  rh  )r5   rE   r  s     €r   rh  zCppClassScope.lookup_here§  s/   ø€ Ø�:ÒØ‰DØ�]Ò"ØˆDÜ”] DÑ5°dÓ;Ð;r!   c                  ó   — yr7  r?   r9   s    r   r:  zCppClassScope.is_cpp®  s   € ð r!   r2   )Nr7  FFFFN)Nr7  r   r   r   r?   NF)r;   r<   r=   r\  Údefault_constructorrF   r6   rü   rÕ  rv  rý  rh  r:  rÊ  rË  s   @r   rÍ  rÍ    sM   ø„ ð ÐàÐØ€Dó+ð ,4Ø_cóð< JKØSXó"òH''òRô4<ör!   rÍ  c                   ó   — e Zd Zd„ Z	 dd„Zy)ÚCppScopedEnumScopec                 ó4   — t         j                  | ||d «       y r2   r$  rn  s      r   r6   zCppScopedEnumScope.__init__·  s   € Ü�‰�t˜T ;°Õ5r!   Nc                 ój   — |s|}| j                  ||«       | j                  |||||«      }d|_        |S r7  )rœ  rM  r‘   )r5   rE   rF   rG   r   r‹   r„   rc   s           r   rü   zCppScopedEnumScope.declare_varº  s@   € ñ ØˆEØ×'Ñ'¨Ð-?Ô@Ø—‘˜T 5¨$°°ZÓ@ˆØ ˆÔØˆr!   )Nr7  N)r;   r<   r=   r6   rü   r?   r!   r   rê  rê  ´  s   „ ò6ð IMôr!   rê  c                   ó$   — e Zd ZdZd„ Zd„ Zdd„Zy)r»  r   c                 ó¶   — |j                   r|j                  «       nd }t        j                  | |||¬«       |j                  | _        |j
                  | _        y )Nr  )rá   r   rÜ   r6   rà  r“  )r5   rE   rº  rá   s       r   r6   zPropertyScope.__init__Í  sJ   € à4?×4KÒ4K�k×.Ñ.Ô0ÐQUˆÜ�‰�t˜T ;¸[ˆÔIØ&×2Ñ2ˆÔØ%×0Ñ0ˆ�r!   c                 ó>  — |j                   j                  rt        |d«       |j                  rH|j                  d   j                  t
        u r)| j                  j                  |j                  d   _        nƒt        |j                  «      dk7  rt        |d«       n^|j                  d   j                  j                  s;|j                  d   j                  | j                  j                  u st        |d«       t        j                  | |||g|¢­i |¤Ž}d|_        |S )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<  rF   r   râ   rà  rv   rå  rÜ   rÕ  rž   )r5   rE   rF   rG   r<  Úkwargsrc   s          r   rÕ  zPropertyScope.declare_cfunctionÔ  sá   € ð ×Ñ×#Ò#Ü�#Ð?Ô@à�9Š9˜Ÿ™ 1™×*Ñ*¬nÑ<à $× 1Ñ 1× =Ñ =ˆD�I‰I�a‰LÕÜ�—‘‹^˜qÒ Ü�#ÐMÕNØ—)‘)˜A‘,×#Ñ#×/Ò/°4·9±9¸Q±<×3DÑ3DÈ×HYÑHY×HeÑHeÑ3eÜ�#ÐOÔPä×'Ñ'¨¨d°D¸#ÐOÀÒOÈÑOˆØ!ˆÔØˆr!   c                 óˆ   — t        |«      }|r)| j                  ||t        |d«      }d|_        ||_        |S t        |d«       y )NrC   r   zKOnly __get__, __set__ and __del__ methods allowed in a property declaration)r   rM  r   r¸   r¦  r   )r5   rE   rG   r«  r¦  rc   s         r   r¬  z PropertyScope.declare_pyfunctionæ  sK   € ä3°DÓ9ˆ	ÙØ—L‘L  t¬^¸SÀ)ÓLˆEØ ˆEÔØ'ˆEŒOØˆLä�#ð ,ô -àr!   NrA  )r;   r<   r=   rL  r6   rÕ  r¬  r?   r!   r   r»  r»  Å  s   „ ð Ðò1òô$r!   r»  c                   ó   — e Zd Zdd„Zd„ Zy)ÚCConstOrVolatileScopec                 ó    — t         j                  | d|j                  z   |j                  |j                  «       || _        || _        || _        y )NÚcv_)rÜ   r6   rE   rá   râ   Úbase_type_scoperœ   Úis_volatile)r5   rö  rœ   r÷  s       r   r6   zCConstOrVolatileScope.__init__ö  sJ   € Ü�‰ØØ�O×(Ñ(Ñ(Ø×'Ñ'Ø×(Ñ(ô		*ð
  /ˆÔØ ˆŒØ&ˆÕr!   c                 óà   — | j                   j                  |«      }|�Qt        j                  |«      }t        j                  |j
                  | j                  | j                  «      |_        |S y r2   )rö  rh  r=  r   Úc_const_or_volatile_typerF   rœ   r÷  rô  s      r   rh  z!CConstOrVolatileScope.lookup_here   s^   € Ø×$Ñ$×0Ñ0°Ó6ˆØÐÜ—I‘I˜eÓ$ˆEÜ#×<Ñ<Ø—J‘J §¡¨t×/?Ñ/?óAˆEŒJàˆLð	 r!   N)r   r   )r;   r<   r=   r6   rh  r?   r!   r   ró  ró  ô  s   „ ó'ór!   ró  c                   ó   — e Zd Zd„ Zy)ÚTemplateScopec                 óV   — t         j                  | ||d «       |j                  | _        y r2   )rÜ   r6   r“  rn  s      r   r6   zTemplateScope.__init__
  s!   € Ü�‰�t˜T ;°Ô5Ø%×0Ñ0ˆ�r!   N)r;   r<   r=   r6   r?   r!   r   rû  rû  	  s   „ ó1r!   rû  r2   )2rG  r=  r.  ÚmathÚUtilsr   ÚErrorsr   r   r   r	   ÚStringEncodingr
   rB   r   r   r   r   r   Ú	TypeSlotsr   r   r   r   r   r   r   r    r.   r0   rA   rÐ   rÜ   rQ  rX  Úconst_counterry  rF  rD  rQ  rY  r§  rf  rt  rn  rÍ  rê  r»  ró  rû  r?   r!   r   Ú<module>r     sX  ðó 
Û Û Û å .ß CÓ CÝ )ß Ý ß 8÷5õ 5õ å òó÷*0ñ 0÷s^ñ s^ôl!1�ô !1÷HMñ Mô`�Uô ô_�5ô _ðD €ô_
0�%ô _
0ôDj2�ô j2ôZD˜ô DôN1�:ô 1ô0˜|ô ô"'D˜ô 'DôT+�ô +ô\.8�:ô .8ôbi]�*ô i]ôV`�Eô `ôF˜ô ô",�Eô ,ô^˜Eô ô*1�Eõ 1r!   