B
    à%Q[  ã               @   s&   d dl mZ dgZG dd„ deƒZdS )é    )ÚerrorÚNamedValuesc               @   s¸   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,S )-r   a�  Create named values object.

    The |NamedValues| object represents a collection of string names
    associated with numeric IDs. These objects are used for giving
    names to otherwise numerical values.

    |NamedValues| objects are immutable and duck-type Python
    :class:`dict` object mapping ID to name and vice-versa.

    Parameters
    ----------
    \*args: variable number of two-element :py:class:`tuple`

        name: :py:class:`str`
            Value label

        value: :py:class:`int`
            Numeric value

    Keyword Args
    ------------
    name: :py:class:`str`
        Value label

    value: :py:class:`int`
        Numeric value

    Examples
    --------

    .. code-block:: pycon

        >>> nv = NamedValues('a', 'b', ('c', 0), d=1)
        >>> nv
        >>> {'c': 0, 'd': 1, 'a': 2, 'b': 3}
        >>> nv[0]
        'c'
        >>> nv['a']
        2
    c          	   O   s„  i | _ i | _g }x¤|D ]œ}t|ttfƒr\y|\}}W qh tk
rX   t d|f ¡‚Y qhX n| |¡ q|| j kr‚t d|f ¡‚|| jkržt d||f ¡‚|| j |< || j|< qW x^| 	¡ D ]R\}}|| j krât d|f ¡‚|| jkrþt d||f ¡‚|| j |< || j|< qÀW |�r€| j�r4t
| jƒd �p6d}xF|D ]>}|| j k�r^t d|f ¡‚|| j |< || j|< |d7 }�q>W d S )Nz$Not a proper attribute-value pair %rzDuplicate name %szDuplicate number  %s=%sé   r   )Ú_NamedValues__namesÚ_NamedValues__numbersÚ
isinstanceÚtupleÚlistÚ
ValueErrorr   ÚPyAsn1ErrorÚappendÚitemsÚmax)ÚselfÚargsÚkwargsZanonymousNamesZ
namedValueÚnameÚnumber© r   úXC:\Users\HIRONO~1\AppData\Local\Temp\pip-install-6i93dh7p\pyasn1\pyasn1\type\namedval.pyÚ__init__7   s@    










zNamedValues.__init__c             C   sV   d  dd„ |  ¡ D ƒ¡}t|ƒdkr@|d d… d |dd …  }d| jjt| ƒ|f S )	Nz, c             S   s   g | ]}d | ‘qS )z%s=%dr   )Ú.0Úxr   r   r   ú
<listcomp>k   s    z(NamedValues.__repr__.<locals>.<listcomp>é@   é    z...iàÿÿÿz<%s object 0x%x enums %s>)Újoinr   ÚlenÚ	__class__Ú__name__Úid)r   Zrepresentationr   r   r   Ú__repr__j   s    zNamedValues.__repr__c             C   s   t | ƒ|kS )N)Údict)r   Úotherr   r   r   Ú__eq__r   s    zNamedValues.__eq__c             C   s   t | ƒ|kS )N)r"   )r   r#   r   r   r   Ú__ne__u   s    zNamedValues.__ne__c             C   s   t | ƒ|k S )N)r"   )r   r#   r   r   r   Ú__lt__x   s    zNamedValues.__lt__c             C   s   t | ƒ|kS )N)r"   )r   r#   r   r   r   Ú__le__{   s    zNamedValues.__le__c             C   s   t | ƒ|kS )N)r"   )r   r#   r   r   r   Ú__gt__~   s    zNamedValues.__gt__c             C   s   t | ƒ|kS )N)r"   )r   r#   r   r   r   Ú__ge__�   s    zNamedValues.__ge__c             C   s   t |  ¡ ƒS )N)Úhashr   )r   r   r   r   Ú__hash__„   s    zNamedValues.__hash__c             C   s*   y
| j | S  tk
r$   | j| S X d S )N)r   ÚKeyErrorr   )r   Úkeyr   r   r   Ú__getitem__‰   s    
zNamedValues.__getitem__c             C   s
   t | jƒS )N)r   r   )r   r   r   r   Ú__len__�   s    zNamedValues.__len__c             C   s   || j kp|| jkS )N)r   r   )r   r-   r   r   r   Ú__contains__“   s    zNamedValues.__contains__c             C   s
   t | jƒS )N)Úiterr   )r   r   r   r   Ú__iter__–   s    zNamedValues.__iter__c             C   s
   t | jƒS )N)r1   r   )r   r   r   r   Úvalues™   s    zNamedValues.valuesc             C   s
   t | jƒS )N)r1   r   )r   r   r   r   Úkeysœ   s    zNamedValues.keysc             c   s$   x| j D ]}|| j | fV  qW d S )N)r   )r   r   r   r   r   r   Ÿ   s    zNamedValues.itemsc             C   s   | j t|  ¡ ƒt| ¡ ƒ Ž S )N)r   r   r   )r   ZnamedValuesr   r   r   Ú__add__¥   s    zNamedValues.__add__c             O   s   | j ||Ž}| | S )N)r   )r   r   r   Únewr   r   r   Úcloneª   s    zNamedValues.clonec             C   s   || j kr| j | S d S )N)r   )r   Úvaluer   r   r   ÚgetName°   s    
zNamedValues.getNamec             C   s   || j kr| j | S d S )N)r   )r   r   r   r   r   ÚgetValue´   s    
zNamedValues.getValuec          	      sH   y‡ fdd„|D ƒS  t k
rB   t dt|ƒ ˆ j¡f ¡‚Y nX d S )Nc                s   g | ]}ˆ j | ‘qS r   )r   )r   r   )r   r   r   r   º   s    z)NamedValues.getValues.<locals>.<listcomp>zUnknown bit identifier(s): %s)r,   r   r   ÚsetÚ
differencer   )r   Únamesr   )r   r   Ú	getValues¸   s
    zNamedValues.getValuesN)r   Ú
__module__Ú__qualname__Ú__doc__r   r!   r$   r%   r&   r'   r(   r)   r+   r.   r/   r0   r2   r3   r4   r   r5   r7   r9   r:   r>   r   r   r   r   r      s,   (3N)Zpyasn1r   Ú__all__Úobjectr   r   r   r   r   Ú<module>	   s   