ó ¾Ã9Qc@sÿdZddlmZddlmZdefd„ƒYZdefd„ƒYZdefd „ƒYZd efd „ƒYZ d ee fd „ƒYZ defd„ƒYZ defd„ƒYZ defd„ƒYZ dee fd„ƒYZd„ZdS(s?Classes and functions to easily access DBus introspection data.iÿÿÿÿ(t ElementTree(tStringIOt IElemMetacBs,eZdZiZed„ƒZd„ZRS(s©Metaclass for introspection elements. Sets elemname class member automatically from class name if not set explicitly. Registers classes for their element names.cCsYd}xL|D]D}|jƒ}||krGt|ƒrG|d7}qGn||7}q W|S(Ntt_(tlowertlen(tclstclsnametelemnametctc_lower((s;/usr/lib/python2.7/site-packages/slip/dbus/introspection.pytclsname_to_elemnames    cCsÅ|dkr"tj||||ƒSd|krj|jdƒsPtd|ƒ‚ntj|dƒ|d||_||_g|D]}t|d|ƒ^q|_dS(NR (RR R tchild_elements(tselfRR R ((s;/usr/lib/python2.7/site-packages/slip/dbus/introspection.pyt__init__=s  cCsud|jr|jn d|jj|jf}x?|jD]4}x+t|ƒjdƒD]}|d|7}qUWq9W|S(Ns%s %rs unknown:%ss s %s(R RRtattribR!tstrtsplit(R"tsR tcc((s;/usr/lib/python2.7/site-packages/slip/dbus/introspection.pyt__str__Bs cCs |jjS(N(RR$(R"((s;/usr/lib/python2.7/site-packages/slip/dbus/introspection.pyR$JsN( RRRRt __metaclass__RRR#R)tpropertyR$(((s;/usr/lib/python2.7/site-packages/slip/dbus/introspection.pyR 3s    t IElemUnknowncBseZdZdZRS(s-Catch-all for unknown introspection elements.N(RRRRR (((s;/usr/lib/python2.7/site-packages/slip/dbus/introspection.pyR,OstIElemNameMixincBseZdZed„ƒZRS(s,Mixin for introspection elements with names.cCs |jdS(NR(R$(R"((s;/usr/lib/python2.7/site-packages/slip/dbus/introspection.pyRXs(RRRR+R(((s;/usr/lib/python2.7/site-packages/slip/dbus/introspection.pyR-Ust IElemNodecBseZdZdd„ZRS(sIntrospection node.cCsKtt|ƒj||ƒg|jD]}t|tƒr#|^q#|_dS(N(RR.R#R!t isinstancet child_nodes(R"RR R ((s;/usr/lib/python2.7/site-packages/slip/dbus/introspection.pyR#`sN(RRRRR#(((s;/usr/lib/python2.7/site-packages/slip/dbus/introspection.pyR.]stIElemInterfacecBseZdZRS(sIntrospection interface.(RRR(((s;/usr/lib/python2.7/site-packages/slip/dbus/introspection.pyR1fst IElemMethodcBseZdZRS(sIntrospection interface method.(RRR(((s;/usr/lib/python2.7/site-packages/slip/dbus/introspection.pyR2jstIElemArgcBseZdZRS(sIntrospection method argument.(RRR(((s;/usr/lib/python2.7/site-packages/slip/dbus/introspection.pyR3nst IElemSignalcBseZdZRS(sIntrospection interface signal.(RRR(((s;/usr/lib/python2.7/site-packages/slip/dbus/introspection.pyR4rscCsFtƒ}t|dƒs't|ƒ}n|j|ƒ}t|ƒ}|S(Ntread(RthasattrRtparseR (tstring_or_filettreetxml_roott elem_root((s;/usr/lib/python2.7/site-packages/slip/dbus/introspection.pyt introspectvs   N(Rtxml.etree.ElementTreeRRRRtobjectR R,R-R.R1R2R3R4R<(((s;/usr/lib/python2.7/site-packages/slip/dbus/introspection.pyts*