
    ci#                     ,    d dl mZ dgZ G d de      Zy)    )errorNamedValuesc                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)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                    i | _         i | _        g }|D ]  }t        |t        t        f      r	 |\  }}n|j                  |       2|| j                   v rt        j                  d|      || j                  v rt        j                  d|d|      || j                   |<   || j                  |<    |j                         D ]r  \  }}|| j                   v rt        j                  d|      || j                  v rt        j                  d|d|      || j                   |<   || j                  |<   t |r{| j                  xr t        | j                        dz   xs d}|D ]K  }|| j                   v rt        j                  d|      || j                   |<   || j                  |<   |dz  }M y y # t
        $ r t        j                  d|      w xY w)Nz"Not a proper attribute-value pair zDuplicate name zDuplicate number  =   r   )_NamedValues__names_NamedValues__numbers
isinstancetuplelist
ValueErrorr   PyAsn1Errorappenditemsmax)selfargskwargsanonymousNames
namedValuenamenumbers          ;/tmp/pip-target-z3e9_cxr/lib/python/pyasn1/type/namedval.py__init__zNamedValues.__init__7   s    	*J*udm4d#-LD& %%j1t||#''t(EFF'''T6(RSS!'DLL%)DNN6"'	** #LLN 	*LD&t||#''t(EFF'''T6(RSS!'DLL%)DNN6"	* ^^?DNN(;a(?D1F& 4<<'++4,IJJ%+T")-v&!	 5 " d++V`,bccds   F77"Gc                     dj                  | j                         D cg c]  }d|z  	 c}      }t        |      dkD  r|d d dz   |dd  z   }d| j                  j                  d|d	S c c}w )
Nz, z%s=%d@       z...i<z object, enums >)joinr   len	__class____name__)r   xrepresentations      r   __repr__zNamedValues.__repr__j   sq    #FAGaK#FG~#+CR058>#$;OON NN##^5 	5 $Gs   A*c                     t        |       |k(  S Ndictr   others     r   __eq__zNamedValues.__eq__s       DzU""    c                     t        |       |k7  S r)   r*   r,   s     r   __ne__zNamedValues.__ne__v   r/   r0   c                     t        |       |k  S r)   r*   r,   s     r   __lt__zNamedValues.__lt__y       DzE!!r0   c                     t        |       |k  S r)   r*   r,   s     r   __le__zNamedValues.__le__|   r/   r0   c                     t        |       |kD  S r)   r*   r,   s     r   __gt__zNamedValues.__gt__   r5   r0   c                     t        |       |k\  S r)   r*   r,   s     r   __ge__zNamedValues.__ge__   r/   r0   c                 4    t        | j                               S r)   )hashr   r   s    r   __hash__zNamedValues.__hash__   s    DJJL!!r0   c                 ^    	 | j                   |   S # t        $ r | j                  |   cY S w xY wr)   )r
   KeyErrorr	   r   keys     r   __getitem__zNamedValues.__getitem__   s4    	%>>#&& 	%<<$$	%s    ,,c                 ,    t        | j                        S r)   )r"   r	   r>   s    r   __len__zNamedValues.__len__   s    4<<  r0   c                 >    || j                   v xs || j                  v S r)   )r	   r
   rB   s     r   __contains__zNamedValues.__contains__   s    dll";cT^^&;;r0   c                 ,    t        | j                        S r)   iterr	   r>   s    r   __iter__zNamedValues.__iter__       DLL!!r0   c                 ,    t        | j                        S r)   )rK   r
   r>   s    r   valueszNamedValues.values   s    DNN##r0   c                 ,    t        | j                        S r)   rJ   r>   s    r   keyszNamedValues.keys   rM   r0   c              #   T   K   | j                   D ]  }|| j                   |   f  y wr)   r	   r   r   s     r   r   zNamedValues.items   s-     LL 	+DT***	+s   &(c                      | j                   t        | j                               t        |j                               z    S r)   )r#   r   r   )r   namedValuess     r   __add__zNamedValues.__add__   s1    t~~uTZZ\2U;;L;L;N5OOPPr0   c                 0     | j                   |i |}| |z   S r)   )r#   )r   r   r   news       r   clonezNamedValues.clone   s!    dnnd-f-czr0   c                 >    || j                   v r| j                   |   S y r)   )r
   )r   values     r   getNamezNamedValues.getName   s"    DNN">>%(( #r0   c                 >    || j                   v r| j                   |   S y r)   rS   rT   s     r   getValuezNamedValues.getValue   s"    4<<<<%%  r0   c                     	 |D cg c]  }| j                   |    c}S c c}w # t        $ r; t        j                  dt	        |      j                  | j                               w xY w)NzUnknown bit identifier(s): )r	   rA   r   r   set
difference)r   namesr   s      r   	getValueszNamedValues.getValues   s_    	3894DLL&999 	##36u:3H3H3VX 	s   $ $ $ AA(N)r$   
__module____qualname____doc__r   r'   r.   r2   r4   r7   r9   r;   r?   rD   rF   rH   rL   rO   rQ   r   rW   rZ   r]   r_   rd    r0   r   r   r      ss    'P1f5##"#"#"
%!<"$"+Q
)&r0   N)pyasn1r   __all__objectr   rh   r0   r   <module>rl      s    /r& rr0   