
    ci-                          d gZ  G d d e      Zy)OpenTypec                   L    e Zd ZdZddZed        Zd Zd Zd Z	d Z
d	 Zd
 Zy)r   a  Create ASN.1 type map indexed by a value

    The *OpenType* object models an untyped field of a constructed ASN.1
    type. In ASN.1 syntax it is usually represented by the
    `ANY DEFINED BY` for scalars or `SET OF ANY DEFINED BY`,
    `SEQUENCE OF ANY DEFINED BY` for container types clauses. Typically
    used together with :class:`~pyasn1.type.univ.Any` object.

    OpenType objects duck-type a read-only Python :class:`dict` objects,
    however the passed `typeMap` is not copied, but stored by reference.
    That means the user can manipulate `typeMap` at run time having this
    reflected on *OpenType* object behavior.

    The |OpenType| class models an untyped field of a constructed ASN.1
    type. In ASN.1 syntax it is usually represented by the
    `ANY DEFINED BY` for scalars or `SET OF ANY DEFINED BY`,
    `SEQUENCE OF ANY DEFINED BY` for container types clauses. Typically
    used with :class:`~pyasn1.type.univ.Any` type.

    Parameters
    ----------
    name: :py:class:`str`
        Field name

    typeMap: :py:class:`dict`
        A map of value->ASN.1 type. It's stored by reference and can be
        mutated later to register new mappings.

    Examples
    --------

    For untyped scalars:

    .. code-block:: python

        openType = OpenType(
            'id', {1: Integer(),
                   2: OctetString()}
        )
        Sequence(
            componentType=NamedTypes(
                NamedType('id', Integer()),
                NamedType('blob', Any(), openType=openType)
            )
        )

    For untyped `SET OF` or `SEQUENCE OF` vectors:

    .. code-block:: python

        openType = OpenType(
            'id', {1: Integer(),
                   2: OctetString()}
        )
        Sequence(
            componentType=NamedTypes(
                NamedType('id', Integer()),
                NamedType('blob', SetOf(componentType=Any()),
                          openType=openType)
            )
        )
    Nc                 4    || _         |i | _        y || _        y N)_OpenType__name_OpenType__typeMap)selfnametypeMaps      ;/tmp/pip-target-z3e9_cxr/lib/python/pyasn1/type/opentype.py__init__zOpenType.__init__K   s    ?DN$DN    c                     | j                   S r   )r   r   s    r   r	   zOpenType.nameR   s    {{r   c                 6    | j                   j                         S r   )r   valuesr   s    r   r   zOpenType.valuesX   s    ~~$$&&r   c                 6    | j                   j                         S r   )r   keysr   s    r   r   zOpenType.keys[   s    ~~""$$r   c                 6    | j                   j                         S r   )r   itemsr   s    r   r   zOpenType.items^   s    ~~##%%r   c                     || j                   v S r   r   r   keys     r   __contains__zOpenType.__contains__a   s    dnn$$r   c                      | j                   |   S r   r   r   s     r   __getitem__zOpenType.__getitem__d   s    ~~c""r   c                 ,    t        | j                        S r   )iterr   r   s    r   __iter__zOpenType.__iter__g   s    DNN##r   r   )__name__
__module____qualname____doc__r   propertyr	   r   r   r   r   r   r    r   r   r   r      s?    =~%  
'%&%#$r   N)__all__objectr   r%   r   r   <module>r(      s    ,]$v ]$r   