
    +c                         d Z ddlZddlmZ ddlmc mZ ddlm	Z	 ddl
mZmZ ddlmZ  G d d      Zd	Z G d
 d      ZdZh dZd ZddZd Zedk(  r e        yy)z5Generate a wrapper class from DBus introspection data    N)indent)Introspectable)open_dbus_connectionProxy)__version__c                       e Zd Zd Zd Zd Zy)Methodc                    |j                   d   | _        g | _        g | _        |j	                  d      D ]U  }	 |j                   d   }| j                  j                  |       | j                  j                  |j                   d          W y # t
        $ r' dj                  t        | j                              }Y uw xY w)Nnamezarg[@direction='in']zarg{}type)	attribr   in_args	signaturefindallKeyErrorformatlenappend)selfxml_nodeargr   s       1/usr/lib/python3/dist-packages/jeepney/bindgen.py__init__zMethod.__init__   s    OOF+	##$:; 	6C9zz&) LL%NN!!#**V"45	6  9~~c$,,&789s   B-B=<B=c                 :    dj                  | j                        S )Nz=def {name}(self):
    return new_method_call(self, '{name}')
)r   )r   r   )r   s    r   _make_code_noargszMethod._make_code_noargs   s%    ?@F AG A	    c                 :   | j                   s| j                         S dj                  | j                         }dj                  | j                        }t	        | j                         dk(  rdndj                  |      }dj                  | j                  |||      S )Nz,     z({},)z({})zxdef {name}(self, {args}):
    return new_method_call(self, '{name}', '{signature}',
                           {tuple})
)r   argsr   tuple)r   r   joinr   r   r   r   )r   r    r   r!   s       r   	make_codezMethod.make_code   s    ||))++yy&GGDNN+	-2FFtL89?% :@ :
	
r   N)__name__
__module____qualname__r   r   r#    r   r   r	   r	   
   s    
6

r   r	   z
class {cls_name}(MessageGenerator):
    interface = {interface!r}

    def __init__(self, object_path={path!r},
                 bus_name={bus_name!r}):
        super().__init__(object_path=object_path, bus_name=bus_name)
c                       e Zd Zd Zd Zy)	Interfacec                     |j                   d   | _        || _        || _        |j	                  d      D cg c]  }t        |       c}| _        y c c}w )Nr   method)r   r   pathbus_namer   r	   methods)r   r   r,   r-   nodes        r   r   zInterface.__init__3   sD    OOF+		 191A1A(1KLtLLs   Ac                 D   | j                   j                  d      d   }t        j                  || j                   | j                  | j
                        g}| j                  D ]+  }|j                  t        |j                         d             - dj                  |      S )N.)cls_name	interfacer,   r-   z    
)r   splitINTERFACE_CLASS_TEMPLATEr   r,   r-   r.   r   r   r#   r"   )r   r3   chunksr+   s       r   r#   zInterface.make_code9   s    99??3'+*118				DMM 2 K Lll 	?FMM&!1!1!3W=>	?yy  r   N)r$   r%   r&   r   r#   r'   r   r   r)   r)   2   s    M!r   r)   z"""Auto-generated DBus bindings

Generated by jeepney version {version}

Object path: {path}
Bus name   : {bus_name}
"""

from jeepney.wrappers import MessageGenerator, new_method_call

>   org.freedesktop.DBus.Peerorg.freedesktop.DBus.Properties#org.freedesktop.DBus.Introspectablec                    t        |t        t        f      r$t        |d      5 }t	        | |||      cd d d        S t        j                  |       }|j                  t        j                  t        ||             d}|j                  d      D ]G  }|j                  d   t        v r|j                  t        |||      j                                |dz  }I |S # 1 sw Y   xY w)Nw)versionr,   r-   r   r4   r   r   )
isinstancebytesstropencode_from_xmlET
fromstringwriteMODULE_TEMPLATEr   r   r   r   IGNORE_INTERFACESr)   r#   )xmlr,   r-   fhfrootiinterface_nodes           r   rC   rC   U   s    "ucl#"c] 	9a dHa8	9 	9 ==DHH_##Kd-5 $ 7 8 	
A,,{3   (,==
>4:DDFG	Q	 H	9 	9s   CC#c                     t        |      }t        t        | |      |      }|j                         \  }t	        || ||      }t        dj                  ||             y )Nz#Written {} interface wrappers to {})r   r   r   
IntrospectrC   printr   )r,   r   output_filebusconnintrospectablerI   n_interfacess           r   generaterW   g   sW    $D>$5t<N$$&DC !dD+>L	
/
6
6|[
QRr   c                     t        j                         } | j                  ddd       | j                  ddd       | j                  dd	       | j                  d
d       | j                         }|j                  xs" |j
                  dd  j                  dd      dz   }t        |j
                  |j                  ||j                         y )Nz-nz--nameT)requiredz-pz--pathz--busSESSION)defaultz-oz--outputr   /_z.py)
argparseArgumentParseradd_argument
parse_argsoutputr,   replacerW   r   rS   )apr    rb   s      r   mainre   p   s    		 	 	"BOOD(TO2OOD(TO2OOGYO/OOD*%==?D[[ETYYqr]223<uDFTYY		64884r   __main__)rZ   )__doc__r^   textwrapr   xml.etree.ElementTreeetreeElementTreerD   jeepney.wrappersr   jeepney.io.blockingr   r   jeepneyr   r	   r7   r)   rG   rH   rC   rW   re   r$   r'   r   r   <module>ro      sl    ;   " " + ; 
 
> ! ! $S
5 zF r   