Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
super(EdmStructTypTraits, self).__init__()
self._edm_type = edm_type
# pylint: disable=no-self-use
def to_literal(self, value):
return EdmStructTypeSerializer.to_literal(self._edm_type, value)
# pylint: disable=no-self-use
def from_json(self, value):
return EdmStructTypeSerializer.from_json(self._edm_type, value)
def from_literal(self, value):
return EdmStructTypeSerializer.from_json(self._edm_type, value)
class EnumTypTrait(TypTraits):
def __init__(self, enum_type):
self._enum_type = enum_type
def to_literal(self, value):
return f'{value.parent.namespace}.{value}'
def from_json(self, value):
return getattr(self._enum_type, value)
def from_literal(self, value):
# remove namespaces
enum_value = value.split('.')[-1]
# remove enum type
name = enum_value.split("'")[1]
return getattr(self._enum_type, name)
# pylint: disable=no-self-use
def to_literal(self, value):
return '%dL' % (value)
# pylint: disable=no-self-use
def from_json(self, value):
if value[-1] == 'L':
return int(value[:-1])
return int(value)
def from_literal(self, value):
return self.from_json(value)
class EdmStructTypTraits(TypTraits):
"""Edm structural types (EntityType, ComplexType) traits"""
def __init__(self, edm_type=None):
super(EdmStructTypTraits, self).__init__()
self._edm_type = edm_type
# pylint: disable=no-self-use
def to_literal(self, value):
return EdmStructTypeSerializer.to_literal(self._edm_type, value)
# pylint: disable=no-self-use
def from_json(self, value):
return EdmStructTypeSerializer.from_json(self._edm_type, value)
def from_literal(self, value):
return EdmStructTypeSerializer.from_json(self._edm_type, value)
class EdmIntTypTraits(TypTraits):
"""All Edm Integer traits"""
# pylint: disable=no-self-use
def to_literal(self, value):
return '%d' % (value)
# pylint: disable=no-self-use
def from_json(self, value):
return int(value)
def from_literal(self, value):
return int(value)
class EdmLongIntTypTraits(TypTraits):
"""All Edm Integer for big numbers traits"""
# pylint: disable=no-self-use
def to_literal(self, value):
return '%dL' % (value)
# pylint: disable=no-self-use
def from_json(self, value):
if value[-1] == 'L':
return int(value[:-1])
return int(value)
def from_literal(self, value):
return self.from_json(value)
def __init__(self, name, null_value, traits=TypTraits(), kind=None):
super(Typ, self).__init__(name)
self._null_value = null_value
self._kind = kind if kind is not None else Typ.Kinds.Primitive # no way how to us enum value for parameter default value
self._traits = traits
class EdmBooleanTypTraits(TypTraits):
"""Edm.Boolean traits"""
# pylint: disable=no-self-use
def to_literal(self, value):
return 'true' if value else 'false'
# pylint: disable=no-self-use
def from_json(self, value):
return value
def from_literal(self, value):
return value == 'true'
class EdmIntTypTraits(TypTraits):
"""All Edm Integer traits"""
# pylint: disable=no-self-use
def to_literal(self, value):
return '%d' % (value)
# pylint: disable=no-self-use
def from_json(self, value):
return int(value)
def from_literal(self, value):
return int(value)
class EdmLongIntTypTraits(TypTraits):
"""All Edm Integer for big numbers traits"""
def __init__(self, name, is_flags, underlying_type, namespace):
super(EnumType, self).__init__(name)
self._member = list()
self._underlying_type = underlying_type
self._traits = TypTraits()
self._namespace = namespace
if is_flags == 'True':
self._is_flags = True
else:
self._is_flags = False
try:
value = datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M:%S.%f')
except ValueError:
try:
value = datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M:%S')
except ValueError:
try:
value = datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M')
except ValueError:
raise PyODataModelError('Cannot decode datetime from value {}.'.format(value))
return value
class EdmStringTypTraits(TypTraits):
"""Edm.String traits"""
# pylint: disable=no-self-use
def to_literal(self, value):
return '\'%s\'' % (value)
# pylint: disable=no-self-use
def from_json(self, value):
return value.strip('\'')
def from_literal(self, value):
return value.strip('\'')
class EdmBooleanTypTraits(TypTraits):
"""Edm.Boolean traits"""
# pylint: disable=no-self-use
def to_literal(self, value):
return value
# pylint: disable=no-self-use
def from_json(self, value):
return value
def to_json(self, value):
return value
def from_literal(self, value):
return value
class EdmPrefixedTypTraits(TypTraits):
"""Is good for all types where values have form: prefix'value'"""
def __init__(self, prefix):
super(EdmPrefixedTypTraits, self).__init__()
self._prefix = prefix
def to_literal(self, value):
return '{}\'{}\''.format(self._prefix, value)
def from_literal(self, value):
matches = re.match("^{}'(.*)'$".format(self._prefix), value)
if not matches:
raise PyODataModelError(
"Malformed value {0} for primitive Edm type. Expected format is {1}'value'".format(value, self._prefix))
return matches.group(1)
class EdmStringTypTraits(TypTraits):
"""Edm.String traits"""
# pylint: disable=no-self-use
def to_literal(self, value):
return '\'%s\'' % (value)
# pylint: disable=no-self-use
def from_json(self, value):
return value.strip('\'')
def from_literal(self, value):
return value.strip('\'')
class EdmBooleanTypTraits(TypTraits):
"""Edm.Boolean traits"""
# pylint: disable=no-self-use
def to_literal(self, value):
return 'true' if value else 'false'
# pylint: disable=no-self-use
def from_json(self, value):
return value
def from_literal(self, value):
return value == 'true'
class EdmIntTypTraits(TypTraits):
"""All Edm Integer traits"""