f&ddlZddlmZddlZddlmZmZmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZmZddlmZmZddlmZmZmZmZm Z ejBZ"iZ#dZ$dZ%Gd d e&Z'd Z(y) N)Lock) Repository FunctionInfoRegisteredTypeInfoEnumInfo ObjectInfo InterfaceInfo ConstantInfo StructInfo UnionInfo CallbackInfoStructBoxed Fundamental CCallbackenum_addenum_register_new_gtype_and_add flags_add flags_register_new_gtype_and_add GInterface) GObjectMeta StructMeta) TYPE_NONE TYPE_BOXED TYPE_POINTER TYPE_ENUM TYPE_FLAGScZ|j}|sV|j}|r|jr |jS|jr|j rt St S|j}|j}tjd|z}t||SNgi.repository.) get_parent get_g_typepytypeget_fundamentalis_instantiatablerobject get_namespaceget_name importlib import_modulegetattr) object_infoparent_object_infogtype namespacenamemodules +/usr/lib/python3/dist-packages/gi/module.pyget_parent_for_objectr4Bs$//1  &&( U\\<<   & & (U-D-D-F  "002I  & & (D  $ $%5 %A BF 64  cg}|jD]U}|j}|j}tjd|z}|j t ||W|Sr )get_interfacesr(r)r*r+appendr,)r- interfacesinterface_infor0r1r2s r3get_interfaces_for_objectr;\snJ%4461"002 &&((()9I)EF'&$/0 1 r5c*eZdZdZddZdZdZdZy)IntrospectionModuleaUAn object which wraps an introspection typelib. This wrapping creates a python module like representation of the typelib using gi repository as a foundation. Accessing attributes of the module will dynamically pull them in and create wrappers for the members. These members are then cached on this introspection module. Nc,tj||||_||_d|z|_tj |j}|g|_|j$tj|j|_t|_ y)z"Might raise gi._gi.RepositoryErrorr!N) repositoryrequire _namespace_version__name__get_typelib_path__path__ get_versionr_lock)selfr0versionpaths r3__init__zIntrospectionModule.__init__ost 9g.# (94 **4??; == &224??CDMV r5c tj|j|}|st|jd|t |t rw|j}|j5|j}|1|jr8|jtr t|}nN|tk(sJt|}n7|jt r t#|}n|tk(sJt%|}||_d|j)z|_dj-dd}|j/D]B}|j1j3|}t5||||j7D|j9D]}t5||j||tk7r||_ dddnt |t:r|j}t |t<r5t?|tAfdtC|D} f| z} tD} nt |tFrtHf} tD} nt |tJrtLf} tD} nt |tNtPfr|jtRrtTf} nb|jtVs|tk(s|jX|k(rtZf} n-t]d|j)d|j_t`} n tc||j5|tk7r,|j} | | | vr| |jd|<| cdddS|d|jz|d } | || | }|tk7r||_ dddn?t |tfr|}n,t |thr|j7}n tc||jd|<|S#1swYxYw#1swY&xYw) Nz object has no attribute r!abcdefgjhijklmnopqrstuvwxyzABCDEFGJHIJKLMNOPQRSTUVWXYZc3:K|]}t|s|ywN) issubclass).0 interfaceparents r3 z2IntrospectionModule.__getattr__..s$#I*4VY*G$-#Iszunable to create a wrapper for .)__info__ __module__ __gtype__)5r? find_by_namerAAttributeErrorrC isinstancerr#rGr$is_flagsis_arrrrrrrrXr(rY maketrans get_valuesget_name_unescaped translatesetattr get_value get_methodsrr r4tupler;rrrr rr r rrr fundamentalr TypeErrorr)rNotImplementedError__dict__rr )rHr1infog_typewrapperascii_upper_trans value_info value_name method_infor9bases metaclasstype_dict_rUs @r3 __getattr__zIntrospectionModule.__getattr__s&&t= !%"67 7 dH %__&F! , --?}}!;;z2&/&7G#)Y#66#6&Ft&LG!;;y1&.v&6G#)Y#66#6&Ed&KG'+G$)9DWX\>]#II  J.' D,/" ' D-0# ' D:y"9:;;z*"HEkk,/ )((F2#IE#dN`N`Nbdhdqdqds$tuu& )$// , Y&"MME(U%-?.3 d+$ , ,!%"2T__"D!' $D%7Y&$+FM+ , ,.l +G l +nn&G%d+ + & dE! ,! ,@ , ,s+EO,O#-O#O #O,cftj|j}d|jd|dS)Nz)r?rDrA)rHrJs r3__repr__zIntrospectionModule.__repr__s%**4??;59__dKKr5ctt|j}|j|jj t j|j}|jd|Dt|S)Nc3\K|]$}t|ts|j&ywrQ)r]rr))rSrls r3rVz.IntrospectionModule.__dir__..s':$$T<8mmo:s*,) setdir __class__updaterkkeysr? get_infosrAlist)rHresultnamespace_infoss r3__dir__zIntrospectionModule.__dir__shS() dmm((*+ %..t? :/: :F|r5rQ)rCrY __qualname____doc__rKrwrzrr5r3r=r=gs kZL r5r=c||tvr t|Stj|}t||}|t|<|S)z :Returns: An object directly wrapping the gi module without overrides. Might raise gi._gi.RepositoryError )_introspection_modulesgiget_required_versionr=)r0rIr2s r3get_introspection_modulersD**%i00%%i0G G 4F(.9% Mr5))r* threadingrr_girrrrr r r r r rrrrrrrrrrtypesrr _constantsrrrrr get_defaultr?rr4r;r'r=rrr5r3rsu. ($Z # # % !4V&Vr r5