Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
class Any(Type):
def __init__(self, name):
super(Any, self).__init__(name, 'ANY')
def encode(self, _data):
raise NotImplementedError('ANY is not yet implemented.')
def decode(self, _data):
raise NotImplementedError('ANY is not yet implemented.')
def __repr__(self):
return 'Any({})'.format(self.name)
class Recursive(Type, compiler.Recursive):
def __init__(self, name, type_name, module_name):
super(Recursive, self).__init__(name, 'RECURSIVE')
self.type_name = type_name
self.module_name = module_name
self._inner = None
def set_inner_type(self, inner):
self._inner = inner
def encode(self, data):
return self._inner.encode(data)
def decode(self, data):
return self._inner.decode(data)
class CompiledType(compiler.CompiledType):
def encode(self, data):
encoder = Encoder()
self._type.encode(data, encoder)
return encoder.as_bytearray()
def decode(self, data):
decoder = Decoder(bytearray(data))
return self._type.decode(decoder)
class Compiler(compiler.Compiler):
def process_type(self, type_name, type_descriptor, module_name):
compiled_type = self.compile_type(type_name,
type_descriptor,
module_name)
return CompiledType(compiled_type)
def compile_type(self, name, type_descriptor, module_name):
module_name = type_descriptor.get('module-name', module_name)
type_name = type_descriptor['type']
if type_name == 'SEQUENCE':
compiled = Sequence(name,
*self.compile_members(type_descriptor['members'],
module_name))
self.inner = None
def set_inner_type(self, inner):
self.inner = copy(inner)
def encode(self, data):
self.inner.encode(data)
class CompiledType(compiler.CompiledType):
def encode(self, data):
self._type.encode(data)
class Compiler(compiler.Compiler):
def process_type(self, type_name, type_descriptor, module_name):
compiled_type = self.compile_type(type_name,
type_descriptor,
module_name)
return CompiledType(compiled_type)
def compile_type(self, name, type_descriptor, module_name):
module_name = type_descriptor.get('module-name', module_name)
type_name = type_descriptor['type']
if type_name in ['SEQUENCE', 'SET']:
members, _ = self.compile_members(type_descriptor['members'],
module_name)
compiled = Dict(name, members)
class Recursive(Type, compiler.Recursive):
def __init__(self, name, type_name, module_name):
super(Recursive, self).__init__(name)
self.type_name = type_name
self.module_name = module_name
self.inner = None
def set_inner_type(self, inner):
self.inner = copy(inner)
def encode(self, data):
self.inner.encode(data)
class CompiledType(compiler.CompiledType):
def encode(self, data):
self._type.encode(data)
class Compiler(compiler.Compiler):
def process_type(self, type_name, type_descriptor, module_name):
compiled_type = self.compile_type(type_name,
type_descriptor,
module_name)
return CompiledType(compiled_type)
def compile_type(self, name, type_descriptor, module_name):
module_name = type_descriptor.get('module-name', module_name)
class CompiledType(compiler.CompiledType):
def encode(self, data):
encoder = Encoder()
self._type.encode(data, encoder)
return encoder.as_bytearray()
def decode(self, data):
decoder = Decoder(bytearray(data))
return self._type.decode(decoder)
class Compiler(compiler.Compiler):
def process_type(self, type_name, type_descriptor, module_name):
compiled_type = self.compile_type(type_name,
type_descriptor,
module_name)
return CompiledType(compiled_type)
def compile_type(self, name, type_descriptor, module_name):
module_name = type_descriptor.get('module-name', module_name)
type_name = type_descriptor['type']
if type_name == 'SEQUENCE':
compiled = Sequence(
name,
*self.compile_members(type_descriptor['members'],
class Recursive(Type, compiler.Recursive):
def __init__(self, name, type_name, module_name):
super(Recursive, self).__init__(name)
self.type_name = type_name
self.module_name = module_name
self.inner = None
def set_inner_type(self, inner):
self.inner = copy(inner)
def encode(self, data):
self.inner.encode(data)
class CompiledType(compiler.CompiledType):
def encode(self, data):
self._type.encode(data)
class Compiler(compiler.Compiler):
def process_type(self, type_name, type_descriptor, module_name):
compiled_type = self.compile_type(type_name,
type_descriptor,
module_name)
return CompiledType(compiled_type)
def compile_type(self, name, type_descriptor, module_name):
module_name = type_descriptor.get('module-name', module_name)
self.inner.set_tag(self.tag_number, self.tag_flags)
for choice_parent in self.choice_parents:
choice_parent.add_tags([self])
def encode(self, data, encoded):
self.inner.encode(data, encoded)
def decode(self, data, offset):
return self.inner.decode(data, offset)
def __repr__(self):
return 'Recursive({})'.format(self.type_name)
class CompiledType(compiler.CompiledType):
def encode(self, data):
encoded = bytearray()
self._type.encode(data, encoded)
return encoded
def decode(self, data):
return self._type.decode(bytearray(data), 0)[0]
def decode_with_length(self, data):
return self._type.decode(bytearray(data), 0)
def get_tag_no_encoding(member):
value = (member.tag[0] & ~Encoding.CONSTRUCTED)
def encode(self, data, indent=None):
element = self._type.encode(data)
if indent is not None:
indent_xml(element, indent * " ")
return ElementTree.tostring(element)
def decode(self, data):
element = ElementTree.fromstring(data.decode('utf-8'))
return self._type.decode(element)
class Compiler(compiler.Compiler):
def process_type(self, type_name, type_descriptor, module_name):
compiled_type = self.compile_type(type_name,
type_descriptor,
module_name)
return CompiledType(compiled_type)
def compile_type(self, name, type_descriptor, module_name):
module_name = type_descriptor.get('module-name', module_name)
type_name = type_descriptor['type']
if type_name == 'SEQUENCE':
members, _ = self.compile_members(
type_descriptor['members'],
module_name)
self.inner = copy(inner)
if self.tag_number is not None:
self.inner.set_tag(self.tag_number, self.tag_flags)
def encode(self, data, encoder):
self.inner.encode(data, encoder)
def decode(self, decoder):
return self.inner.decode(decoder)
def __repr__(self):
return 'Recursive({})'.format(self.type_name)
class CompiledType(compiler.CompiledType):
def encode(self, data):
encoder = Encoder()
self._type.encode(data, encoder)
return encoder.as_bytearray()
def decode(self, data):
decoder = Decoder(bytearray(data))
return self._type.decode(decoder)
class Compiler(compiler.Compiler):
def process_type(self, type_name, type_descriptor, module_name):
self._inner = inner
def encode(self, data):
encoded = self._inner.encode(data)
encoded.tag = self.name
return encoded
def decode(self, element):
return self._inner.decode(element)
def __repr__(self):
return 'Recursive({})'.format(self.name)
class CompiledType(compiler.CompiledType):
def encode(self, data, indent=None):
element = self._type.encode(data)
if indent is not None:
indent_xml(element, indent * " ")
return ElementTree.tostring(element)
def decode(self, data):
element = ElementTree.fromstring(data.decode('utf-8'))
return self._type.decode(element)
class Compiler(compiler.Compiler):