grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a bê²^ç4ã@sêddlZddlmZddlmZddlmZmZmZm Z m Z m Z m Z ddl mZee fddl mZddl mZd d „ZGd d „d eƒZd d„Zdd„ZGdd„deƒZe e¡Gdd„deeƒZdd„Zdd„ZGdd„deeƒZdS)éNé)Ú TYPE_INVALID)Úgenerate_doc_string)Ú InterfaceInfoÚ ObjectInfoÚ StructInfoÚ VFuncInfoÚregister_interface_infoÚhook_up_vfunc_implementationÚ GInterface)Ú_gi)Ú_propertyhelper)Ú _signalhelpercCs t dd|¡}t dd|¡ ¡S)Nz(.)([A-Z][a-z]+)z\1_\2z([a-z0-9])([A-Z]))ÚreÚsubÚlower)ÚnameÚs1©rú./usr/lib64/python3.9/site-packages/gi/types.pyÚ snake_case,src@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚMetaClassHelpercCs"|j ¡D]}t||j|ƒq dS©N)Ú__info__Ú get_methodsÚsetattrÚ__name__)ÚclsÚ method_inforrrÚ_setup_methods2szMetaClassHelper._setup_methodscCsL|j}| ¡}|durdS| ¡D]$}|j}t||ƒs"t||t|ƒƒq"dSr)rZget_class_structrrÚhasattrrÚ classmethod)rÚinfoZ class_structrrrrrÚ_setup_class_methods6s  z$MetaClassHelper._setup_class_methodscCs:|j ¡D]*}| ¡ dd¡}t||t|j|jƒƒq dS)Nú-Ú_)rZ get_fieldsÚget_nameÚreplacerÚpropertyÚ get_valueZ set_value)rZ field_inforrrrÚ _setup_fieldsAszMetaClassHelper._setup_fieldscCs0|j ¡D] }| ¡}| ¡}t|||ƒq dSr)rZ get_constantsr&r)r)rZ constant_inforÚvaluerrrÚ_setup_constantsFsz MetaClassHelper._setup_constantsc CsZ|j ¡D�]H\}}| d¡r t|ƒs(q d}d}|jD]ˆ}t||dƒ}|dur`t|tƒr`|}qÀt|dƒr6t|j dƒsxq6t |j   ¡ƒ}|j   ¡D]$}|d||  ¡fkr�|}d}q¶q�|r6qÀq6|duràt|j|tdƒd…ƒ}|dur |�sFt||jƒ} | du�rF| ¡} td||j  ¡|j   ¡|  ¡|   ¡| j  ¡| j   ¡fƒ‚t||j|ƒq dS)NZdo_FrÚ get_vfuncszdo_%s_%sTzTMethod %s() on class %s.%s is ambiguous with methods in base classes %s.%s and %s.%s)Ú__dict__ÚitemsÚ startswithÚcallableÚ__mro__ÚgetattrÚ isinstancerr rrZ get_type_namer-r&Úfind_vfunc_info_in_interfaceÚ __bases__ÚlenÚfind_vfunc_conflict_in_basesZ get_containerÚ TypeErrorÚ get_namespacer Ú __gtype__) rÚ vfunc_nameZpy_vfuncZskip_ambiguity_checkÚ vfunc_infoÚbaseÚmethodÚ base_nameÚvZambiguous_baseZ base_inforrrÚ _setup_vfuncsLsP    úþ ÿzMetaClassHelper._setup_vfuncscCsb|j d¡}|dust|tƒs"dS|jdkr:|jdkr:dS| ¡D]}d|j}t|||ƒqBdS)Nrzgi.repository.GObjectZObjectzdo_%s)r.Úgetr4rÚ __module__rr-r)rZ class_infor=rrrrÚ_setup_native_vfuncs‰s   z$MetaClassHelper._setup_native_vfuncsN) rrDÚ __qualname__rr#r*r,rBrErrrrr1s  =rcCs||D]r}|tust|tƒrt|dƒs&qt|jtƒrZ|j ¡D]}| ¡|kr<|SqÚvfuncrrrr5œsÿþ    r5cCs~|D]t}t|dƒrt|jdƒs q|j ¡}| ¡}|D]$}| ¡|kr6||kr6|Sq6t||jƒ}|dur|SqdS)Nrr-)r rr-r&r8r6)rIrHÚklassZvfuncsr<rAZaklassrrrr8¶s  ÿ   r8c@s eZdZdZdd„Zdd„ZdS)Ú_GObjectMetaBasez8Metaclass for automatically registering GObject classes.cCs4t ||||¡t |¡t |¡| |j¡dSr)ÚtypeÚ__init__ÚpropertyhelperZinstall_propertiesÚ signalhelperZinstall_signalsÚ_type_registerr.)rrrHÚdict_rrrrMÉs  z_GObjectMetaBase.__init__cCs2d|vr dS|j d¡rdSt || d¡¡dS)Nr;z gi.overrides.Z__gtype_name__)rDr0r Z type_registerrC)rÚ namespacerrrrPÏs  z_GObjectMetaBase._type_registerN)rrDrFÚ__doc__rMrPrrrrrKÇsrKcs4eZdZdZ‡fdd„Zdd„Zedd„ƒZ‡ZS)Ú GObjectMetaz+Meta class used for GI GObject based types.csºtt|ƒ |||¡d}|jd|j ¡kr0d}d}|sH|jtjkrHd}|rV| ¡n`|r¶t|jtƒrn|  ¡|  ¡|  ¡|  ¡t|jtƒrœ|  ¡nt|jtƒr¶t|j ¡ƒdS)NFúgi.repository.T)ÚsuperrTrMrDrr:rBr4rr#rr,rEr*rr Ú get_g_type)rrrHrQZ is_gi_definedZis_python_defined©Ú __class__rrrMás&     zGObjectMeta.__init__cCst|ƒSr)Úmro©rrrrrZùszGObjectMeta.mrocCs@|tkr dS|j dd¡}|dur&|S|j d¡r|jD]}|t|jƒg7}q|t|jƒg7}|rÐ|D]6}|d‰‡fdd„|Dƒ}|rxtˆjvrxd‰qFq~qFˆdurŽtdƒ‚| ˆ¡|dd…D](}|r¤|dˆkr¤|d=|s¤| |¡q¤q>|S)a\Compute the class precedence list (mro) according to C3, with GObject interface considerations. We override Python's MRO calculation to account for the fact that GObject classes are not affected by the diamond problem: http://en.wikipedia.org/wiki/Diamond_problem Based on http://www.python.org/download/releases/2.3/mro/ rcs g|]}ˆ|dd…vr|‘qS)rNr)Ú.0Ús©Ú candidaterrÚ (ózmro..Nz8Cannot create a consistent method resolution order (MRO))r6Úlistr2r r9ÚappendÚremove)ÚCrHZbases_of_subclassesr>Zsubclass_basesZnot_headrrarrZ s,   rZcOsdSrr)ÚargsÚkwargsrrrÚnothing=srkcs,eZdZdZ‡fdd„Zedd„ƒZ‡ZS)Ú StructMetaz*Meta class used for GI Struct based types.cs”tt|ƒ |||¡|j ¡}|tkr4|jdur4dS| ¡| ¡|j  ¡D]@}|  ¡rN|j dkrN|  ¡rz|j  ¡dkrNt|ƒ|_t|_q�qNdS)NÚnewr)rVrlrMrrWrZpytyper*rrZis_constructorrZ get_argumentsZget_sizeÚ staticmethodÚ__new__rk)rrrHrQZg_typerrXrrrMDs" ÿþ ý zStructMeta.__init__cCs|tkr dSt|jƒS)Nr\)rlrrr[rrrrSZszStructMeta.__doc__)rrDrFrSrMr(r^rrrXrrlAs rl)rZ _constantsrZ docstringrr rrrrr r r r\r rNrrOrÚobjectrr5r8rLrKZ_install_metaclassrTrZrkrlrrrrÚs"  $   k .0