+
    ic#  c                   s    ^ RI HtHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 . ROtR	 tR
 tR t ! R R]R7      t ! R R]4      t ! R R]4      tR# )i    )ABCMetaabstractmethod)Lock)ClientObjectHandler)PropertyProxy)DBusSpecificationErrorAbstractObjectProxyObjectProxyInterfaceProxyc                s    \        V \        4      '       g.   \        RP                  \	        V 4      P
                  4      4      h\        V R4      # )zcGet an object handler of the DBus proxy.

:param proxy: a DBus proxy
:return: a DBus proxy handler
zInvalid type '{}'._handler)
isinstancer   Z	TypeErrorformatZtype__name__Zgetattr)proxys   &8/usr/lib/python3.14/site-packages/dasbus/client/proxy.pyget_object_handlerr   %   s@     e011,33DK4H4HIJJ5*%%    c                s0    \        V 4      pVP                  # )z_Get an object path of the remote DBus object.

:param proxy: a DBus proxy
:return: a DBus path
)r   object_pathr   Zhandler   & r   get_object_pathr   1   s     !'Gr   c                s<    \        V 4      pVP                  4        R# )zNDisconnect the DBus proxy from the remote object.

:param proxy: a DBus proxy
N)r   Zdisconnect_membersr   r   r   disconnect_proxyr   ;   s    
 !'G r   c                   st   a a ] tR t^Dt oRt. R	Ot0 ]mt]3R lt]	R 4       t
R tR tR tV 3R ltRtVtV ;t# )
r   z'Abstract proxy of a remote DBus object.c                sR    V! VVV3/ VB V n         / V n        \        4       V n        R# )a  Create a new proxy.

:param message_bus: a message bus
:param service_name: a DBus name of the service
:param object_path: a DBus path the object
:param handler_factory: a factory of a DBus client object handler
:param handler_arguments: additional arguments for the handler factory
N)r	   _membersr   _lock)selfmessage_busservice_namer   Zhandler_factoryZhandler_argumentss   &&&&&,r   __init__ZAbstractObjectProxy.__init__Q   s5     (
  	
 V
r   c                s    R# )zdGet the DBus interface of the member.

:param member_name: a member name
:return: an interface name
N r   member_name   &&r   _get_interfaceZ"AbstractObjectProxy._get_interfaced   s     	r   c                sl     V P                   V,          #   \         d     Mi ; iT P                  ! T!  # )zFind a member of the DBus object.

If the member doesn't exist, we will acquire
a lock and ask a handler to create it.

This method is thread-safe.

:param key: a member key
:return: a member
:raise: AttributeError if invalid
)r   KeyError_create_member)r   keys   &*r   _get_memberZAbstractObjectProxy._get_memberm   s;    	==%% 		 ""C((s    ##c                sn   V P                   ;_uu_ 4         V P                  V,          uuRRR4       #   \         d     Mi ; i T P                  P                  ! T!  pM(  \
         d   p\        \        T4      4      RhRp?ii ; iY P                  T&   TuuRRR4       #   + '       g   i     R# ; i)zCreate a member of the DBus object.

If the member doesn't exist, ask a handler
to create it.

This method is thread-safe.

:param key: a member key
:return: a member
:raise: DBusSpecificationError if invalid
N)r   r   r!   r	   Zcreate_memberr   AttributeErrorZstr)r   r#   memberZes   &*  r   r"   Z"AbstractObjectProxy._create_member   s     ZZZ}}S) Z  744c:) 7$SV,$67 "(MM# ZZZsI   B#4AB#AB#A! B#!B,BBB##B4	c                s    V P                  V P                  V4      V4      p\        V\        4      '       d   VP	                  4       # V# )zGet the attribute.

Called when an attribute lookup has not found
the attribute in the usual places. Always call
the DBus handler in this case.
)r$   r    r
   r   Zget)r   namer&   s   && r   __getattr__ZAbstractObjectProxy.__getattr__   s?     !!$"5"5d";TBfm,,::<r   c                s  < WP                   9   d   \        SV `	  W4      # V P                  V P	                  V4      V4      p\        V\        4      '       d   VP                  V4      # \        RP                  V4      4      h)zSet the attribute.

Called when an attribute assignment is attempted.
Call the DBus handler if the name is not a
name of an instance attribute defined in _locals.
zCan't set DBus attribute '{}'.)
_localssuper__setattr__r$   r    r
   r   Zsetr%   r   )r   r'   Zvaluer&   	__class__s   &&& r   r+   ZAbstractObjectProxy.__setattr__   ss     <<7&t33!!$"5"5d";TBfm,,::e$$,33D9
 	
r   )r	   r   r   )r	   r   r   Z__weakref__)r   
__module____qualname____firstlineno____doc__	__slots__r)   r   r   r   r    r$   r"   r(   r+   __static_attributes____classdictcell____classcell__r,   Z__classdict__   @@r   r   r   D   sQ     1I 	lG "5&  )&4
 
r   )Z	metaclassc                   sb   a a ] tR t^t oRtR.t0 ]P                  m]mtV 3R ltR t	Rt
VtV ;t# )r   zProxy of a remote DBus object._interface_namesc                s6   < \         SV `  ! V/ VB  RV n        R# )zBCreate a new proxy.

:param handler: a DBus client object handler
N)r*   r   r7   )r   argskwargsr,   s   &*,r   r   ZObjectProxy.__init__   s    
 	$)&) $r   c                sP   V P                   fV   \        V P                  P                  P                  4      pV Uu/ uF  pVP
                  VP                  bK  	  upV n          V P                   V,          # u upi   \         d     Mi ; i\        RP                  T4      4      h)z[Get the DBus interface of the member.

The members of standard interfaces have a priority.
z"DBus object has no attribute '{}'.)
r7   Zreversedr	   Zspecificationmembersr'   interface_namer!   r%   r   )r   r   r:   Zms   &&  r   r    ZObjectProxy._get_interface   s    
   (++33G
 !% A ((( %D!
	((55%  		 077D
 	
s    A8%A= =B
B)r7   r   r-   r.   r/   r0   r1   r   r)   r   r    r2   r3   r4   r5   r6   r   r   r      s7     (#$I 9#++8i8G%
 
r   c                   sb   a a ] tR t^t oRtR.t0 ]P                  m]mtV 3R ltR t	Rt
VtV ;t# )r   z!Proxy of a remote DBus interface._interface_namec                s>   < \         SV `  ! WV.VO5/ VB  W@n        R# )zCreate a new proxy.

:param message_bus: a message bus
:param service_name: a DBus name of the service
:param object_path: a DBus path the object
:param handler: a DBus client object handler
N)r*   r   r=   )r   r   r   r   r;   r8   r9   r,   s   &&&&&*,r   r   ZInterfaceProxy.__init__   s,     	K 	*	*"(	*-r   c                s    V P                   # )z%Get the DBus interface of the member.r=   r   r   r   r    ZInterfaceProxy._get_interface   s    ###r   r>   r<   r5   r6   r   r   r      s7     +"#I 9#++8i8G.$ $r   N)r   r   r   r   r   )Zabcr    r   Z	threadingr   Zdasbus.client.handlerr   Zdasbus.client.propertyr   Zdasbus.specificationr   Z__all__r   r   r   r   r   r   r   r   r   <module>r?      sV   * (  5 0 7	&!u
G u
p%
% %
P$( $r   