Ñò 9nÛLc @s#ddkZddkZyddklZWn#ej oddklZnXddkZddklZddk l Z l Z l Z l Z dZeidƒZddklZlZlZlZlZdfd „ƒYZd fd „ƒYZd efd „ƒYZdefd„ƒYZdS(iÿÿÿÿN(tRLock(tprocess_introspection_data(tMissingReplyHandlerExceptiontMissingErrorHandlerExceptiontIntrospectionParserExceptiont DBusExceptiontrestructuredtexts dbus.proxies(t LOCAL_PATHtBUS_DAEMON_NAMEtBUS_DAEMON_PATHtBUS_DAEMON_IFACEtINTROSPECTABLE_IFACEt_DeferredMethodcBs)eZdZd„Zd„Zd„ZRS(sXA proxy method which will only get called once we have its introspection reply. cCs+||_|i|_||_||_dS(N(t _proxy_methodt _method_namet_appendt_block(tselft proxy_methodtappendtblock((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyt__init__4s   cOs\|idƒp|idtƒo|i|i||ƒdS|iƒ|i||ŽSdS(Nt reply_handlert ignore_reply(thas_keytgettFalseRR tNoneR(Rtargstkeywords((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyt__call__;s  cOs|i|i||ƒdS(N(RR (RRR((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyt call_asyncFs(t__name__t __module__t__doc__RRR(((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyR 0s  t _ProxyMethodcBs)eZdZd„Zd„Zd„ZRS(s°A proxy method. Typically a member of a ProxyObject. Calls to the method produce messages that travel over the Bus and are routed to a specific named Service. cCs†|tjotdtƒ‚n||_||_||_||_ti|ƒ||_|dj oti |ƒn||_ dS(Ns1Methods may not be called on the reserved path %s( RRt_proxyt _connectiont_named_servicet _object_patht_dbus_bindingstvalidate_member_nameRRtvalidate_interface_namet_dbus_interface(Rtproxyt connectiontbus_namet object_patht method_nametiface((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRQs        c Oso|iddƒ}|iddƒ}|idtƒ}|dj p |dj oO|djo tƒ‚qŸ|djo tƒ‚qŸ|otdƒ‚qŸn|id|iƒ}|djo |i}n|d|i}|ii i |dƒ}|p |dj o5|i i |i |i||i|||||n,|i i|i |i||i|||SdS(NRt error_handlerRs6ignore_reply and reply_handler cannot be used togethertdbus_interfacet.(tpopRRRRt TypeErrorR+RR$t_introspect_method_mapRR%RR&R't call_blocking( RRRRR2RR3tkeytintrospect_sig((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRes@       c Os«|iddƒ}|iddƒ}|id|iƒ}|o|d|i}n |i}|iii|dƒ}|ii|i |i ||i|||||dS(NRR2R3R4( R5RR+RR$R7RR%RR&R'(RRRRR2R3R9R:((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRŽs  (R R!R"RRR(((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyR#Js  )t ProxyObjectcBsòeZdZeZeZdZdZdZ ddde e d„Z ed„dddƒZed„dddƒZed „ddd ƒZdd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zdd„Zd„ZeZRS(s£A proxy to the remote Object. A ProxyObject is provided by the Bus. ProxyObjects have member functions, and can be called like normal Python objects. iiic Ksé|idd ƒ}|d j oJ|d j otdƒ‚n|}ddkl}|dtddƒn|idd ƒ} | d j oJ|d j otd ƒ‚n| }ddkl}|d tddƒn|o#td d i|iƒƒƒ‚n|o|iƒn||_ |d j ot i |ƒn||_ |_ t i|ƒ||_|p|i|ƒ|_ nd |_g|_h|_tƒ|_| p|itjo|i|_n|i|_|iƒ|_d S(søInitialize the proxy object. :Parameters: `conn` : `dbus.connection.Connection` The bus or connection on which to find this object. The keyword argument `bus` is a deprecated alias for this. `bus_name` : str A bus name for the application owning the object, to be used as the destination for method calls and the sender for signal matches. The keyword argument ``named_service`` is a deprecated alias for this. `object_path` : str The object path at which the application exports the object `introspect` : bool If true (default), attempt to introspect the remote object to find out supported methods and their signatures `follow_name_owner_changes` : bool If true (default is false) and the `bus_name` is a well-known name, follow ownership changes for that name tbuss%conn and bus cannot both be specifiediÿÿÿÿ(twarns`Passing the bus parameter to ProxyObject by name is deprecated: please use positional parameterst stacklevelit named_services3bus_name and named_service cannot both be specifiedsjPassing the named_service parameter to ProxyObject by name is deprecated: please use positional parameterss>ProxyObject.__init__ does not take these keyword arguments: %ss, N(R5RR6twarningsR=tDeprecationWarningtjointiterkeyst_require_main_loopt_busR(tvalidate_bus_nameR&t_requested_bus_nametvalidate_object_patht__dbus_object_path__tactivate_name_ownert_pending_introspectt_pending_introspect_queueR7Rt_introspect_lockRt INTROSPECT_STATE_DONT_INTROSPECTt_introspect_statet'INTROSPECT_STATE_INTROSPECT_IN_PROGRESSt _Introspect( RtconnR.R/t introspecttfollow_name_owner_changestkwargsR<R=R?((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyR²sJ             cCs|iS((R&(R((s0/usr/lib/python2.6/site-packages/dbus/proxies.pytssèThe bus name to which this proxy is bound. (Read-only, may change.) If the proxy was instantiated using a unique name, this property is that unique name. If the proxy was instantiated with a well-known name and with ``follow_name_owner_changes`` set false (the default), this property is the unique name of the connection that owned that well-known name when the proxy was instantiated, which might not actually own the requested well-known name any more. If the proxy was instantiated with a well-known name and with ``follow_name_owner_changes`` set true, this property is that well-known name. cCs|iS((RG(R((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRVss[The bus name which was requested when this proxy was instantiated. cCs|iS((RI(R((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRVssThe object-path of this proxy.c Ks1|ii|d|d|d|id|i|S(sx Arrange for the given function to be called when the given signal is received. :Parameters: `signal_name` : str The name of the signal `handler_function` : callable A function to be called when the signal is emitted by the remote object. Its positional arguments will be the arguments of the signal; optionally, it may be given keyword arguments as described below. `dbus_interface` : str Optional interface with which to qualify the signal name. If None (the default) the handler will be called whenever a signal of the given member name is received, whatever its interface. :Keywords: `utf8_strings` : bool If True, the handler function will receive any string arguments as dbus.UTF8String objects (a subclass of str guaranteed to be UTF-8). If False (default) it will receive any string arguments as dbus.String objects (a subclass of unicode). `byte_arrays` : bool If True, the handler function will receive any byte-array arguments as dbus.ByteArray objects (a subclass of str). If False (default) it will receive any byte-array arguments as a dbus.Array of dbus.Byte (subclasses of: a list of ints). `sender_keyword` : str If not None (the default), the handler function will receive the unique name of the sending endpoint as a keyword argument with this name `destination_keyword` : str If not None (the default), the handler function will receive the bus name of the destination (or None if the signal is a broadcast, as is usual) as a keyword argument with this name. `interface_keyword` : str If not None (the default), the handler function will receive the signal interface as a keyword argument with this name. `member_keyword` : str If not None (the default), the handler function will receive the signal name as a keyword argument with this name. `path_keyword` : str If not None (the default), the handler function will receive the object-path of the sending object as a keyword argument with this name `message_keyword` : str If not None (the default), the handler function will receive the `dbus.lowlevel.SignalMessage` as a keyword argument with this name. `arg...` : unicode or UTF-8 str If there are additional keyword parameters of the form ``arg``\ *n*, match only signals where the *n*\ th argument is the value given for that keyword parameter. As of this time only string arguments can be matched (in particular, object paths and signatures can't). t signal_nameR3R.tpath(REtadd_signal_receiverR&RI(RRWthandler_functionR3R((s0/usr/lib/python2.6/site-packages/dbus/proxies.pytconnect_to_signal)s < c Cs=|ii|i|itddd|i|idtdtƒS(Nt Introspecttt utf8_stringstrequire_main_loop(( RERR&RIR t_introspect_reply_handlert_introspect_error_handlertTrueR(R((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRQls  cCs.x'|iD]\}}}|||Žq WdS(N(RL(RRRR((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyt_introspect_execute_queueus cCs~|iiƒz\yt|ƒ|_Wn#tj o}|i|ƒdSX|i|_d|_ |i ƒWd|ii ƒXdS(N( RMtacquireRR7RRat INTROSPECT_STATE_INTROSPECT_DONERORRKRctrelease(Rtdatate((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyR`|s    cCsŠtiƒtid|i|i|ii|ii|ƒ|i i ƒz0ti dƒ|i |_ d|_|iƒWd|i iƒXdS(Ns$Introspect error on %s:%s: %s.%s: %ss'Executing introspect queue due to error(tloggingt basicConfigt_loggerterrorR&RIt __class__R!R RMRdtdebugRNRORRKRcRf(RRl((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRa‹s       cCsG|iiƒz%|idj o|iiƒnWd|iiƒXdS(N(RMRdRKRRRf(R((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyt_introspect_blockšs  cCsc|iiƒzA|i|ijo|ii|||fƒn|||ŽWd|iiƒXdS(N(RMRdRORPRLRRf(RtcallbackRRU((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyt_introspect_add_to_queue¤s  cCsA|idƒo |idƒot|ƒ‚n|i|ƒSdS(Nt__(t startswithtendswithtAttributeErrortget_dbus_method(Rtmember((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyt __getattr__°s cCs]|i||i|i|i||ƒ}|i|ijo|i||i|iƒ}n|S(s,Return a proxy method representing the given D-Bus method. The returned proxy method can be called in the usual way. For instance, :: proxy.get_dbus_method("Foo", dbus_interface='com.example.Bar')(123) is equivalent to:: proxy.Foo(123, dbus_interface='com.example.Bar') or even:: getattr(proxy, "Foo")(123, dbus_interface='com.example.Bar') However, using `get_dbus_method` is the only way to call D-Bus methods with certain awkward names - if the author of a service implements a method called ``connect_to_signal`` or even ``__getattr__``, you'll need to use `get_dbus_method` to call them. For services which follow the D-Bus convention of CamelCaseMethodNames this won't be a problem. ( tProxyMethodClassRER&RIRORPtDeferredMethodClassRqRo(RRwR3tret((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRv¶s  cCs#d|i|i|it|ƒfS(Ns&(RER&RItid(R((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyt__repr__ÜsN(R R!R"R#RyR RzRNRPReRRbRRtpropertyR.trequested_bus_nameR/R[RQRcR`RaRoRqRxRvR}t__str__(((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyR;¥s6 R     C     & t InterfacecBsÅeZdZd„Zed„dddƒZeZed„dddƒZed„dddƒZ ed„ddd ƒZ ed „ddd ƒZ dd „Z d „Z dd„Zd„ZeZRS(s An interface into a remote object. An Interface can be used to wrap ProxyObjects so that calls can be routed to their correct D-Bus interface. cCs6t|tƒo|i|_n ||_||_dS(s:Construct a proxy for the given interface on the given object. :Parameters: `object` : `dbus.proxies.ProxyObject` or `dbus.Interface` The remote object or another of its interfaces `dbus_interface` : str An interface the `object` implements N(t isinstanceRt proxy_objectt_objR+(RtobjectR3((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRês  cCs |iiS((R„R/(R((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRVùss.The D-Bus object path of the underlying objectcCs |iiS((R„R.(R((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRVüss:The bus name to which the underlying proxy object is boundcCs |iiS((R„R(R((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRVÿssGThe bus name which was requested when the underlying object was createdcCs|iS((R„(R((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRVssThe underlying proxy objectcCs|iS((R+(R((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRVssThe D-Bus interface representedcKs-|p |i}n|ii||||S(saArrange for a function to be called when the given signal is emitted. The parameters and keyword arguments are the same as for `dbus.proxies.ProxyObject.connect_to_signal`, except that if `dbus_interface` is None (the default), the D-Bus interface that was passed to the `Interface` constructor is used. (R+R„R[(RRWRZR3R((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyR[s  cCsJ|idƒo |idƒot|ƒ‚n|ii||iƒSdS(NRr(RsRtRuR„RvR+(RRw((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRxs cCs-|djo |i}n|ii||ƒS(s&Return a proxy method representing the given D-Bus method. This is the same as `dbus.proxies.ProxyObject.get_dbus_method` except that if `dbus_interface` is None (the default), the D-Bus interface that was passed to the `Interface` constructor is used. N(RR+R„Rv(RRwR3((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRvs  cCsd|i|it|ƒfS(Ns%(R„R+R|(R((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyR}*sN(R R!R"RR~RR/RIR.RRƒR3R[RxRvR}R€(((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyRâs&          (tsysRit threadingRt ImportErrortdummy_threadingR(tdbus._expat_introspect_parserRtdbus.exceptionsRRRRt __docformat__t getLoggerRkRRR R R R R#R…R;R(((s0/usr/lib/python2.6/site-packages/dbus/proxies.pyts   "([ÿ>