# NamedTypes

class pyasn1.type.namedtype.NamedTypes(*namedTypes, **kwargs)

  Create a collection of named fields for a constructed ASN.1 type.

  The NamedTypes object represents a collection of named fields of a constructed ASN.1 type.

  NamedTypes objects are immutable and duck-type Python `dict` objects holding name as keys and ASN.1 type object as values.

  Parameters

    *namedTypes (`NamedType`)

  Examples

      class Description(Sequence):
          '''
          ASN.1 specification:

          Description ::= SEQUENCE {
              surname    IA5String,
              first-name IA5String OPTIONAL,
              age        INTEGER DEFAULT 40
          }
          '''
          componentType = NamedTypes(
              NamedType('surname', IA5String()),
              OptionalNamedType('first-name', IA5String()),
              DefaultedNamedType('age', Integer(40))
          )

      descr = Description()
      descr['surname'] = 'Smith'
      descr['first-name'] = 'John'

  Note

  The NamedTypes objects are normally utilized by the constructed ASN.1 types (e.g. Sequence, Set and Choice) to model the set of fields of those types.

  getTypeByPosition(idx)

    Return ASN.1 type object by its position in fields set.

    Parameters

      idx (`int`) – Field index

    Returns

      ASN.1 type

    Raises

      PyAsn1Error – If given position is out of fields range

  getPositionByType(tagSet)

    Return field position by its ASN.1 type.

    Parameters

      tagSet (`TagSet`) – ASN.1 tag set distinguishing one ASN.1 type from others.

    Returns

      `int` – ASN.1 type position in fields set

    Raises

      PyAsn1Error – If tagSet is not present or ASN.1 types are not unique within callee NamedTypes

  getNameByPosition(idx)

    Return field name by its position in fields set.

    Parameters

      idx (`idx`) – Field index

    Returns

      `str` – Field name

    Raises

      PyAsn1Error – If given field name is not present in callee NamedTypes

  getPositionByName(name)

    Return field position by filed name.

    Parameters

      name (`str`) – Field name

    Returns

      `int` – Field position in fields set

    Raises

      PyAsn1Error – If name is not present or not unique within callee NamedTypes

  getTagMapNearPosition(idx)

    Return ASN.1 types that are allowed at or past given field position.

    Some ASN.1 serialisation allow for skipping optional and defaulted fields. Some constructed ASN.1 types allow reordering of the fields. When recovering such objects it may be important to know which types can possibly be present at any given position in the field sets.

    Parameters

      idx (`int`) – Field index

    Returns

      `TagMap` – Map if ASN.1 types allowed at given field position

    Raises

      PyAsn1Error – If given position is out of fields range

  getPositionNearType(tagSet, idx)

    Return the closest field position where given ASN.1 type is allowed.

    Some ASN.1 serialisation allow for skipping optional and defaulted fields. Some constructed ASN.1 types allow reordering of the fields. When recovering such objects it may be important to know at which field position, in field set, given tagSet is allowed at or past idx position.

    Parameters

      - tagSet (`TagSet`) – ASN.1 type which field position to look up

      - idx (`int`) – Field position at or past which to perform ASN.1 type look up

    Returns

      `int` – Field position in fields set

    Raises

      PyAsn1Error – If tagSet is not present or not unique within callee NamedTypes or idx is out of fields range

  property minTagSet

    Return the minimal TagSet among ASN.1 type in callee NamedTypes.

    Some ASN.1 types/serialisation protocols require ASN.1 types to be arranged based on their numerical tag value. The minTagSet property returns that.

    Returns

      `TagSet` – Minimal TagSet among ASN.1 types in callee NamedTypes

  property tagMap

    Return a TagMap object from tags and types recursively.

    Return a `TagMap` object by combining tags from TagMap objects of children types and associating them with their immediate child type.

    Example

        OuterType ::= CHOICE {
            innerType INTEGER
        }

    Calling .tagMap on OuterType will yield a map like this:

        Integer.tagSet -> Choice

  property tagMapUnique

    Return a TagMap object from unique tags and types recursively.

    Return a `TagMap` object by combining tags from TagMap objects of children types and associating them with their immediate child type.

    Example

        OuterType ::= CHOICE {
            innerType INTEGER
        }

    Calling .tagMapUnique on OuterType will yield a map like this:

        Integer.tagSet -> Choice

    Note

    Duplicate TagSet objects found in the tree of children types would cause error.