mirror of
https://github.com/thegeeklab/ansible-later.git
synced 2024-07-05 00:20:58 +02:00
76 lines
1.7 KiB
Python
76 lines
1.7 KiB
Python
#
|
|
# This file is part of pyasn1 software.
|
|
#
|
|
# Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com>
|
|
# License: http://snmplabs.com/pyasn1/license.html
|
|
#
|
|
|
|
__all__ = ['OpenType']
|
|
|
|
|
|
class OpenType(object):
|
|
"""Create ASN.1 type map indexed by a value
|
|
|
|
The *DefinedBy* object models the ASN.1 *DEFINED BY* clause which maps
|
|
values to ASN.1 types in the context of the ASN.1 SEQUENCE/SET type.
|
|
|
|
OpenType objects are duck-type a read-only Python :class:`dict` objects,
|
|
however the passed `typeMap` is stored by reference.
|
|
|
|
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
|
|
--------
|
|
.. code-block:: python
|
|
|
|
openType = OpenType(
|
|
'id',
|
|
{1: Integer(),
|
|
2: OctetString()}
|
|
)
|
|
Sequence(
|
|
componentType=NamedTypes(
|
|
NamedType('id', Integer()),
|
|
NamedType('blob', Any(), openType=openType)
|
|
)
|
|
)
|
|
"""
|
|
|
|
def __init__(self, name, typeMap=None):
|
|
self.__name = name
|
|
if typeMap is None:
|
|
self.__typeMap = {}
|
|
else:
|
|
self.__typeMap = typeMap
|
|
|
|
@property
|
|
def name(self):
|
|
return self.__name
|
|
|
|
# Python dict protocol
|
|
|
|
def values(self):
|
|
return self.__typeMap.values()
|
|
|
|
def keys(self):
|
|
return self.__typeMap.keys()
|
|
|
|
def items(self):
|
|
return self.__typeMap.items()
|
|
|
|
def __contains__(self, key):
|
|
return key in self.__typeMap
|
|
|
|
def __getitem__(self, key):
|
|
return self.__typeMap[key]
|
|
|
|
def __iter__(self):
|
|
return iter(self.__typeMap)
|