<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
ˆuAcØ  ã               @   sÚ   d Z ddlmZ ddlmZ ddlmZ ddlmZ G dd„ de	ƒZ
G dd	„ d	ee
eƒƒZG d
d„ deƒZG dd„ deƒZG dd„ deeƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deeƒZdd„ ZdS )z?Classes and functions to easily access DBus introspection data.é    )Úabsolute_import)ÚElementTree)ÚStringIO)Úwith_metaclassc               @   s(   e Zd ZdZi Zedd„ ƒZdd„ ZdS )Ú	IElemMetaz©Metaclass for introspection elements.

    Sets elemname class member automatically from class name if not set
    explicitly. Registers classes for their element names.c             C   s>   d}x4|D ],}|j ƒ }||kr.t|ƒr.|d7 }||7 }q
W |S )NÚ Ú_)ÚlowerÚlen)ÚclsZclsnameÚelemnameÚcZc_lower© r   ú#/usr/lib/python3.6/introspection.pyÚclsname_to_elemname(   s    
zIElemMeta.clsname_to_elemnamec             C   sŒ   |dkrt j| |||ƒS d|krL|jdƒs6td| ƒ‚tj|dd … ƒ|d< |d }|tjkrntd||f ƒ‚t j| |||ƒ}|tj|< |S )NÚIElemr   z;Class '%s' needs to set elemname (or be called 'IElem...'))é   z4Class '%s' tries to register duplicate elemname '%s')ÚtypeÚ__new__Ú
startswithÚ	TypeErrorr   r   Úelemnames_to_classes)r   ÚnameÚbasesZdctr   Úklsr   r   r   r   3   s     


zIElemMeta.__new__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úclassmethodr   r   r   r   r   r   r       s   r   c                   s@   e Zd ZdZd‡ fdd„	Zddd„Zdd„ Zed	d
„ ƒZ‡  Z	S )r   z&Base class for introspection elements.Nc                s*   t jj|jt jd  ƒ}tt| ƒj|||ƒS )N)r   r   ÚgetÚtagÚsuperr   r   )r   ÚelemÚparentr   )Ú	__class__r   r   r   O   s    zIElem.__new__c                s$   |ˆ _ |ˆ _‡ fdd„|D ƒˆ _d S )Nc                s   g | ]}t |ˆ d ‘qS ))r$   )r   )Ú.0r   )Úselfr   r   ú
<listcomp>W   s    z"IElem.__init__.<locals>.<listcomp>)r#   r$   Úchild_elements)r'   r#   r$   r   )r'   r   Ú__init__T   s    zIElem.__init__c             C   sZ   d| j r| j n
d| jj | jf }x2| jD ](}x"t|ƒjdƒD ]}|d| 7 }q>W q*W |S )Nz%s %rz
unknown:%sÚ
z
  %s)r   r#   r!   Úattribr)   ÚstrÚsplit)r'   Úsr   Zccr   r   r   Ú__str__Y   s    zIElem.__str__c             C   s   | j jS )N)r#   r,   )r'   r   r   r   r,   a   s    zIElem.attrib)N)N)
r   r   r   r   r   r*   r0   Úpropertyr,   Ú__classcell__r   r   )r%   r   r   L   s
   
r   c               @   s   e Zd ZdZdZdS )ÚIElemUnknownz-Catch-all for unknown introspection elements.N)r   r   r   r   r   r   r   r   r   r3   f   s   r3   c               @   s   e Zd ZdZedd„ ƒZdS )ÚIElemNameMixinz,Mixin for introspection elements with names.c             C   s
   | j d S )Nr   )r,   )r'   r   r   r   r   o   s    zIElemNameMixin.nameN)r   r   r   r   r1   r   r   r   r   r   r4   l   s   r4   c                   s"   e Zd ZdZd‡ fdd„	Z‡  ZS )Ú	IElemNodezIntrospection node.Nc                s(   t t| ƒj||ƒ dd„ | jD ƒ| _d S )Nc             S   s   g | ]}t |tƒr|‘qS r   )Ú
isinstancer5   )r&   r   r   r   r   r(   {   s    z&IElemNode.__init__.<locals>.<listcomp>)r"   r5   r*   r)   Zchild_nodes)r'   r#   r$   )r%   r   r   r*   w   s    zIElemNode.__init__)N)r   r   r   r   r*   r2   r   r   )r%   r   r5   t   s   r5   c               @   s   e Zd ZdZdS )ÚIElemInterfacezIntrospection interface.N)r   r   r   r   r   r   r   r   r7   ~   s   r7   c               @   s   e Zd ZdZdS )ÚIElemMethodzIntrospection interface method.N)r   r   r   r   r   r   r   r   r8   ‚   s   r8   c               @   s   e Zd ZdZdS )ÚIElemArgzIntrospection method argument.N)r   r   r   r   r   r   r   r   r9   †   s   r9   c               @   s   e Zd ZdZdS )ÚIElemSignalzIntrospection interface signal.N)r   r   r   r   r   r   r   r   r:   Š   s   r:   c             C   s.   t ƒ }t| dƒst| ƒ} |j| ƒ}t|ƒ}|S )NÚread)r   Úhasattrr   Úparser   )Zstring_or_fileZtreeZxml_rootZ	elem_rootr   r   r   Ú
introspectŽ   s    

r>   N)r   Z
__future__r   Zxml.etree.ElementTreer   Úior   Zsixr   r   r   Úobjectr   r3   r4   r5   r7   r8   r9   r:   r>   r   r   r   r   Ú<module>   s   ,
