a
    db                     @   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   sv  i | _ i | _g }|D ]}t|ttfrXz|\}}W qd tyT   td|f Y qd0 n|| q|| j v r~td|f || jv rtd||f || j |< || j|< q|	 D ]R\}}|| j v rtd|f || jv rtd||f || j |< || j|< q|rr| jr*t
| jd p,d}|D ]>}|| j v rRtd|f || j |< || j|< |d7 }q2d 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   e/home/tom/ab/renpy-build/tmp/install.linux-x86_64/lib/python3.9/site-packages/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       z(NamedValues.__repr__.<locals>.<listcomp>@       z...iz<%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 r#   r$   r&   r   r   r   __ne__u   s    zNamedValues.__ne__c                 C   s   t | |k S r#   r$   r&   r   r   r   __lt__x   s    zNamedValues.__lt__c                 C   s   t | |kS r#   r$   r&   r   r   r   __le__{   s    zNamedValues.__le__c                 C   s   t | |kS r#   r$   r&   r   r   r   __gt__~   s    zNamedValues.__gt__c                 C   s   t | |kS r#   r$   r&   r   r   r   __ge__   s    zNamedValues.__ge__c                 C   s   t |  S r#   )hashr   r   r   r   r   __hash__   s    zNamedValues.__hash__c                 C   s.   z| j | W S  ty(   | j|  Y S 0 d S r#   )r   KeyErrorr   r   keyr   r   r   __getitem__   s    zNamedValues.__getitem__c                 C   s
   t | jS r#   )r   r   r/   r   r   r   __len__   s    zNamedValues.__len__c                 C   s   || j v p|| jv S r#   )r   r   r2   r   r   r   __contains__   s    zNamedValues.__contains__c                 C   s
   t | jS r#   iterr   r/   r   r   r   __iter__   s    zNamedValues.__iter__c                 C   s
   t | jS r#   )r8   r   r/   r   r   r   values   s    zNamedValues.valuesc                 C   s
   t | jS r#   r7   r/   r   r   r   keys   s    zNamedValues.keysc                 c   s    | j D ]}|| j | fV  qd S r#   r   r   r   r   r   r   r      s    
zNamedValues.itemsc                 C   s   | j t|  t|   S r#   )r   r   r   )r   ZnamedValuesr   r   r   __add__   s    zNamedValues.__add__c                 O   s   | j |i |}| | S r#   )r   )r   r   r   newr   r   r   clone   s    zNamedValues.clonec                 C   s   || j v r| j | S d S r#   )r   )r   valuer   r   r   getName   s    
zNamedValues.getNamec                 C   s   || j v r| j | S d S r#   r<   r=   r   r   r   getValue   s    
zNamedValues.getValuec              	      sH   z fdd|D W S  t yB   tdt| jf Y n0 d S )Nc                    s   g | ]} j | qS r   r<   )r   r   r/   r   r   r      r   z)NamedValues.getValues.<locals>.<listcomp>zUnknown bit identifier(s): %s)r1   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-   r0   r4   r5   r6   r9   r:   r;   r   r>   r@   rB   rC   rG   r   r   r   r   r      s,   (3N)Zpyasn1r   __all__objectr   r   r   r   r   <module>	   s   