dbfdg 3 `]V @sddlmZddlZddlZddlmZmZddlmZddl m Z ddl m Z ddl mZdd lmZddlZydd lmZmZWndd lmZmZYnXGd d d e d ZGddde dZGdddZdS))print_functionN)GLibGio)generic)ExitableWithAliases)partial)MethodCallContext)error_registration) signature Parameterc@sHeZdZddddgZddZejZddZd d Z d d Z d dZ dS) ObjectWrapperobjectoutargsreadable_propertieswritable_propertiesc sf|_i_x>|D]6}x0|jD]&}dd|jDj|jd|j<qWqWi_i_xh|D]`}xZ|jD]P}|jt j j @r|j j|jd|j<|jt j j @rj|j j|jd|j<qjWq^WxN|D]F}x@|jD]6}|j}fdd}jt||jj|||jqWqWddd|Dkrby$fd d } j|jj| jWntk r`YnXdS) NcSsg|] }|jqS)r ).0argrr"/usr/lib/python3.6/registration.py sz*ObjectWrapper.__init__...csfddS)Ncs4jjjtjddjddjDd|S)N(css|] }|jVqdS)N)r )rsrrr (szOObjectWrapper.__init__..EmitSignal....)) SignalEmittednamerVariantjoinargs)r!)ifaceselfsignalrr(sz.EmitSignal..r)r"r$)r#)r"r$r EmitSignal'sz*ObjectWrapper.__init__..EmitSignalzorg.freedesktop.DBus.Propertiescss|] }|jVqdS)N)r)rr"rrrr+sz)ObjectWrapper.__init__..cs<fdd|jD}tjd||f}jdd|dS)Ncs,i|]$\}}tjjd|||qS)r)rrr)rkeyval)r"r#rr .szGObjectWrapper.__init__..onPropertiesChanged..z (sa{sv}as)zorg.freedesktop.DBus.PropertiesPropertiesChanged)itemsrrr)r"ZchangedZ invalidatedr!)r#)r"ronPropertiesChanged-sz3ObjectWrapper.__init__..onPropertiesChanged)rrmethodsZout_argsrrrZ propertiesflagsrZDBusPropertyInfoFlagsZREADABLEr ZWRITABLEZsignals_at_exitgetattrconnect__exit__r*AttributeError) r#r interfacesr"methodZpropr$Zs_namer&r,r)r#r__init__s0  *      ( zObjectWrapper.__init__cCsy8y"|j|d|}t|j|} Wnbtk r|dkr|dkrT|j} dg}q|dkrj|j} dg}q|dkr~|j} g}qnYnXt| } i} d| jkr| jdj t j t j fkrt || d<| || } t|d kr|jdnRt|d kr|jtjd d j|d | fn |jtjd d j|d | Wntk r} z|tjt}|jd||tj| rtj| }|j|t| n6|jdt| j}d|krd|}|j|t| WYdd} ~ XnXdS)Nrzorg.freedesktop.DBus.PropertiesGetvGetAllza{sv}SetZ dbus_contextrrrrrz Exception while handling %s.%s()zname is not registeredzunknown.)rr0rKeyErrorr7r9r:r parametersZkindr ZPOSITIONAL_OR_KEYWORDZ KEYWORD_ONLYr lenZ return_valuerrr ExceptionloggingZ getLogger__name__Z exceptionr Zis_registered_exceptionZ get_dbus_nameZreturn_dbus_errorstrinfotype)r#Z connectionZsenderZ object_pathinterface_nameZ method_namer<Z invocationrr5ZsigkwargsresulteZloggerrZe_typerrr call_method7sL"    $$      zObjectWrapper.call_methodcCs*|j|d|}t|j|}tj||S)Nr)rr0rrr)r#rD property_namerCrFrrrr7js zObjectWrapper.GetcCsPi}xF|jjD]8\}}|jdd\}}||krtj|t|j|||<qW|S)Nrr)rr+rsplitrrr0r)r#rDretrrCnsZlocalrrrr9os zObjectWrapper.GetAllcCs$|j|d|t|j||dS)Nr)rsetattrr)r#rDrIvaluerrrr:wszObjectWrapper.SetN) r@ __module__ __qualname__ __slots__r6rr$rrHr7r9r:rrrrr s "3r Zunwrapc@seZdZfZdddZdS)ObjectRegistrationFcs|r|jjfdd}|jjj|jyfdd|DWn<tk r}z t|jdrvtdnWYdd}~XnX|jfdddS) Ncsjjd|||dS)N)conZ emit_signal)rDZ signal_namer<)buspathrrfuncsz)ObjectRegistration.__init__..funccs"g|]}jj|jddqS)N)rSregister_objectrH)rZ interface)rTrUwrapperrrrsz/ObjectRegistration.__init__..z1argument vtable: Expected Gio.DBusInterfaceVTablezMGLib 2.46 is required to publish objects; it is impossible in older versions.csfddDS)Ncsg|]}jj|qSr)rSZunregister_object)rid)rTrrrszAObjectRegistration.__init__....rr)rTidsrrr%sz-ObjectRegistration.__init__..)r/r2rr1 TypeErrorrA startswithr>)r#rTrUr4rX own_wrapperrVrGr)rTrZrUrXrr6~s  zObjectRegistration.__init__N)F)r@rOrPrQr6rrrrrR{srRZ unregisterc@seZdZfZddZdS)RegistrationMixincCs|dkr6yt|j}Wntk r4t|j}YnXt|tkrTt|tkrT|g}dd|D}tdd|Dg}t||}t||||ddS)NcSsg|]}tjj|qSr)rZ DBusNodeInfoZ new_for_xml)rnirrrrsz5RegistrationMixin.register_object..css|] }|jVqdS)N)r4)rr_rrrrsz4RegistrationMixin.register_object..T)r]) rCZdbusr3__doc__listtuplesumr rR)r#rUrZ node_infor4rXrrrrWs z!RegistrationMixin.register_objectN)r@rOrPrQrWrrrrr^sr^)Z __future__rsys tracebackZ gi.repositoryrrrrZexitabler functoolsrZmethod_call_contextr errorr r?inspectr r Z _inspect3r rRr^rrrrs      k