o
    ñt3bQ  ã                   @   s4   d dl mZ d dlmZ G dd„ deƒZdd„ ZdS )é    )ÚParserCreate)ÚIntrospectionParserExceptionc                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )Ú_Parser©ÚmapÚin_ifaceÚ	in_methodÚsigc                 C   s   i | _ d| _d| _d| _d S )NÚ r   )Úself© r   ú?/usr/lib/python3/dist-packages/dbus/_expat_introspect_parser.pyÚ__init__!   s   
z_Parser.__init__c                 C   s0   t ddƒ}d|_| j|_| j|_| |¡ | jS )NzUTF-8ú T)r   Zbuffer_textÚStartElementHandlerÚEndElementHandlerZParser   )r   ÚdataÚparserr   r   r   Úparse'   s   

z_Parser.parsec                 C   s†   | j s| js|dkr|d | _ d S d S d S | js#|dkr#|d | _d S | jr=|dkr?| dd¡dkrA|  j|d 7  _d S d S d S d S )NÚ	interfaceÚnameÚmethodÚargZ	directionÚinÚtype)r   r   Úgetr	   )r   r   Z
attributesr   r   r   r   /   s   ÿþz_Parser.StartElementHandlerc                 C   s`   | j r*| js|dkrd| _ d S | jr,|dkr.| j| j| j d | j < d| _d| _d S d S d S d S )Nr   r
   r   Ú.)r   r   r	   r   )r   r   r   r   r   r   :   s   

úz_Parser.EndElementHandlerN)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r   r   r   r   r   r   r   r   r      s    r   c              
   C   s:   zt ƒ  | ¡W S  ty } z	td|j|f ƒ‚d}~ww )aß  Return a dict mapping ``interface.method`` strings to the
    concatenation of all their 'in' parameters, and mapping
    ``interface.signal`` strings to the concatenation of all their
    parameters.

    Example output::

        {
            'com.example.SignalEmitter.OneString': 's',
            'com.example.MethodImplementor.OneInt32Argument': 'i',
        }

    :Parameters:
        `data` : str
            The introspection XML. Must be an 8-bit string of UTF-8.
    z%s: %sN)r   r   Ú	Exceptionr   Ú	__class__)r   Úer   r   r   Úprocess_introspection_dataC   s   €ÿr$   N)Zxml.parsers.expatr   Zdbus.exceptionsr   Úobjectr   r$   r   r   r   r   Ú<module>   s   $