@iaidZdZddlZddlZddlZddlmZmZm Z m Z m Z m Z m Z ddlmZddlmZmZmZmZmZddlmZddlmZmZdd lmZej8d Zd ZGd d eZ GddeZy)) Connection SignalMatchreStructuredTextN)r LOCAL_IFACE LOCAL_PATHvalidate_bus_namevalidate_interface_namevalidate_member_namevalidate_object_path) DBusException) ErrorMessageHANDLER_RESULT_NOT_YET_HANDLEDMethodCallMessageMethodReturnMessage SignalMessage) ProxyObject)is_py2is_py3)Stringzdbus.connectioncyN)argskwargss 1/usr/lib/python3/dist-packages/dbus/connection.py_noopr0sc|eZdZgdZeeZ ddZdZdZdZ e dZ dZ d Z d Zd Zd Zd Zy)r)_sender_name_owner_member _interface_sender_path_handler _args_match_rule _byte_arrays _conn_weakref_destination_keyword_interface_keyword_message_keyword_member_keyword_sender_keyword _path_keyword_int_args_matchNc | t|| t|| t|| t|d|_t j ||_||_||_ ||_ ||_ ||_ ||_ d|vr td||_||_| |_| |_| |_| |_| |_||_|sd|_yi|_|D]Z}|j1dstd|z t3|dd}|dks|dkDrtd|z|||j.|<\y#t4$rtd|zwxYw) N utf8_strings*unexpected keyword argument 'utf8_strings'argz(SignalMatch: unknown keyword argument %sr?z9SignalMatch: arg match index must be in range(64), not %d)r r rr r&weakrefrefr(r"r!r r#r$r TypeErrorr'r-r.r,r*r+r)r%r/ startswithint ValueError)selfconnsender object_pathdbus_interfacememberhandler byte_arrayssender_keyword path_keywordinterface_keywordmember_keywordmessage_keyworddestination_keywordrkwargindexs r__init__zSignalMatch.__init__>s    (  % #N 3   f %  "  - $[[. (    #) V #HI I'-)-"3 /$7!!#'D #%D  <''.#$N&+%,---ab NE19 #%8:?%@AA.4Um$$U+ < "-#$N&+%,---s =D88Ec*tt|Sz-SignalMatch objects are compared by identity.)hashidr<s r__hash__zSignalMatch.__hash__wsBtH~rc ||uSrNrr<others r__eq__zSignalMatch.__eq__{s u}rc ||uSrNrrTs r__ne__zSignalMatch.__ne__s 5  rc|jSr)r"rQs rzSignalMatch.s 4<<rc>|jdg}|j|jd|jz|j|jd|jz|j|jd|jz|j |jd|j z|j 8|j jD]\}}|jd||fzdj||_|jS)Nz type='signal'z sender='%s'z path='%s'zinterface='%s'z member='%s'z arg%d='%s',) r&r"appendr#r!r r/itemsjoin)r<rulerKvalues r__str__zSignalMatch.__str__s :: #$D||' MDLL89zz% K$**45* ,t>?||' MDLL89##/$($8$8$>$>$@?LE5KK u~ =>?$DJzzrcjd|jt||j|jfzS)Nz<%s at %x "%s" on conn %r>) __class__rPr&r(rQs r__repr__zSignalMatch.__repr__s2,>>2d8TZZ9K9K9MNO Prc||_yr)r)r<new_names rset_sender_name_ownerz!SignalMatch.set_sender_name_owners "*rc |d|jfvry||jk7ry||jk7ry||jk7ry||jk7ry||j k7ryy)NFT)r$r"r#r!r r%)r<r>r?r@rArBrs rmatches_removal_specz SignalMatch.matches_removal_specsf 4/ / T\\ ! $** $ T__ , T\\ ! T%% %rcd}|jd|jfvry|jktd}|jdi|}|jj D]0\}}|t |k\st||tr |||k7s0y|jd|jfvry|jd|jfvry|jd|jfvry | |js|j |j}i}|j |j||j <|j"|j%||j"<|j&|j||j&<|j(|j||j(<|j*|j||j*<|j,|||j,<|j.|i|y#t1j2t4j7ddYyxYw)NFTrCz&Exception in handler for D-Bus signal:exc_infor)r get_senderr/dict get_args_listr^len isinstancerr get_memberr! get_interfacer#get_pathr'r-r)get_destinationr.r,r*r+r$logging basicConfig_loggererror)r<messagerrrKras rmaybe_handle_messagez SignalMatch.maybe_handle_messages?  " "41C1C1E*F F    +d+F(7((262D $ 4 4 : : < ! uSY&%d5k6:E{e+  ! <<g&8&8&:; ; ??4)>)>)@"A A ::dG$4$4$67 7 P|4#4#4,,9J9J,KF##//6/A/A/Ct++,((44;4K4K4Mt001!!--4-=-=-?t))*##//6/A/A/Ct++,&&2292G2G2It../$$007t,,- DMM4 *6 *   P    ! MMBQM Os 7D&H-I c|j}|J|j||j|j|j|j fi|j yyr)r(remove_signal_receiverr r!r"r#r%)r<r=s rremovezSignalMatch.removesW!!#   'D ' 'dll(,(,  <+/*:*: < r)FNNNNNN)__name__ __module__ __qualname___slotstuple __slots__rLrRrVrXpropertyr>rbrerhrjr~rrrrrr4seEFf I/4378<;? 7"+!1D  =  # #DNN$?$? @=rc|S)aReturn the unique name for the given bus name, activating it if necessary and possible. If the name is already unique or this connection is not to a bus daemon, just return it. :Returns: a bus name. If the given `bus_name` exists, the returned name identifies its current owner; otherwise the returned name does not exist. :Raises DBusException: if the implementation has failed to activate the given bus name. :Since: 0.81.0 r)r<bus_names ractivate_name_ownerzConnection.activate_name_owners rc |jdd}|$| tdddlm}|dtd|}|r+td d j |j z|j|||| S) aReturn a local proxy for the given remote object. Method calls on the proxy are translated into method calls on the remote object. :Parameters: `bus_name` : str A bus name (either the unique name or a well-known name) of the application owning the object. The keyword argument named_service is a deprecated alias for this. `object_path` : str The object path of the desired object `introspect` : bool If true (default), attempt to introspect the remote object to find out supported methods and their signatures :Returns: a `dbus.proxies.ProxyObject` named_serviceN3bus_name and named_service cannot both be specifiedrwarnziPassing the named_service parameter to get_object by name is deprecated: please use positional parameters stacklevelz4get_object does not take these keyword arguments: %sz, ) introspect)popr8warningsrDeprecationWarningr_keysProxyObjectClass)r<rr?rrrrs r get_objectzConnection.get_objects( ?D9  $#!/00 % C# 3%H ,.2ii .FGH H$$T8[0:%< c#K|d|f}nd}|d|f}nd}|d|f}nd}|D]c}|jj|}|!|D]>}|j|d}||D]"}|j|d} | | D]} | $@eyw)Nr)rget) r<rr@rA path_keysinterface_keys member_keysrrrms r_iter_easy_matcheszConnection._iter_easy_matchess  t II  %"N3N$N  .K!K DAAEEdKL#"0 (,,^TB $) F'mmFD9G $   sBBc P|jdd}|$| td|}ddlm}|dtdg} g} |j j  |jj|d} |  |j jy| j|d} |  |j jy| j|d} |  |j jy| D]@}||us|j|||||fi|r| j|0| j|B| r| | |<n| |=| s| |=| s |j|=|j j| D]}|j|y#|j jwxYw)NrrrrzuPassing the named_service parameter to remove_signal_receiver by name is deprecated: please use positional parametersrr) rr8rrrrrrrrrjr]_clean_up_signal_match)r<handler_or_matchrr@rrrrrnew deletionsrrrrs rrz!Connection.remove_signal_receivers ! _d;  $#!,--$H % )$ 3   ""$! )AAEEdFJLL#:    & & (9%((>I 4    & & (3 mmK6G.    & & (+! &$-1u11(262@2=2B > 5= > $$U+JJu% &), +&k* $^4' BB4H    & & ( /E  ' ' . /    & & (sF F F 2A$F F%cyrr)r<rs rrz!Connection._clean_up_signal_matchs rct|tstS|j}|j }|j }|j |||D]}|j||tk(r(|tk(r|dk(r|jD] } || tS#t$r.tjtjddYJwxYw)zvD-Bus filter function. Handle signals by dispatching to Python callbacks kept in the match-rule tree. Disconnectedz-Exception in handler for Disconnected signal:rmrn)rtrrrvrwrurr~rrr Exceptionryrzr{r|)r<r}r@rrrcbs rrzConnection._signal_funcs '=11 1 ..0!((* ,,T>-8: 0E  & &w / 0 k ) J  > )22 //tH /.- !/'')MM#",-"//sB''4CCc  |tk(rtdtz|tk(rtdtzt| d| vr t dt ||||} | j |d|i|j| y ttfd }|j| || | S#t$r=}tjtjd|||j|d }~wwxYw) aSCall the given method, asynchronously. If the reply_handler is None, successful replies will be ignored. If the error_handler is None, failures will be ignored. If both are None, the implementation may request that no reply is sent. :Returns: The dbus.lowlevel.PendingCall. :Since: 0.81.0 1Methods may not be called on the reserved path %s6Methods may not be called on the reserved interface %srlr1r2 destinationr interfacemethod signature.msg_reply_handlerLs'#674w44E}EFG\2m-4-B-B-DF1G1G1IFGi)68?)@ABr)require_main_loop)rr rrqr8rr]rryrzr{r|rd send_messagersend_message_with_reply)r<rr?r@rrrrrtimeoutrCrrr}errs `` @r call_asynczConnection.call_asyncs8 * $!*,6!78 8 [ (!/1<!=> >5 V #HI I#)4.<+13   GNN 6Y 6  ]%:   g &   !M  !M B++G5F(/:K,M M5     ! MM1 1;; ;   s%B99 C?8C::C?c  |tk(rtdtz|tk(rtdtzt|} d| vr t dt ||||} | j |d|i|j| |} | jd i| }t|d k(ry t|d k(r|d St!|S#t$r=} tjtjd||| j| d } ~ wwxYw) zECall the given method, synchronously. :Since: 0.81.0 rrrlr1r2rrrNrrmr)rr rrqr8rr]rryrzr{r|rd!send_message_with_reply_and_blockrrrsr)r<rr?r@rrrrrCrrr}r reply_message args_lists r call_blockingzConnection.call_blockingYs2 * $!*,6!78 8 [ (!/1<!=> >5 V #HI I#)4.<+13   GNN 6Y 6>> W /M//@-@ y>Q  ^q Q< # #!     ! MM1 1;; ;   s"C D 8DD c:|jj|y)zArrange for `callable` to be called with one argument (this Connection object) when the Connection becomes disconnected. :Since: 0.83.0 N)rr])r<callables rcall_on_disconnectionz Connection.call_on_disconnections $$++H5r)NNT)NNNN)FT)rF)rrr__doc__rrrLrrrrrrrrrr __classcell__)rds@rrrs| #A& #rs}2 (" III*((%'! '  - . u<&u