in horton_helpers/src/dictionary_object.py [0:0]
def to_dict(self, defaults=None):
"""
convert this object to a dict
"""
try:
defaults = defaults or type(self)._defaults
except AttributeError:
pass
def dict_from_native_object(native_object, default_object):
dict_object = {}
for native_key in native_object._get_attribute_names():
dict_key = inflection.camelize(native_key, uppercase_first_letter=False)
default_value = None
if default_object:
default_value = getattr(default_object, native_key, None)
native_value = getattr(native_object, native_key)
if _is_scalar(native_value):
# always include None, even if it's the default. This is
# because None has a special meaning if we're using this to send a
# twin patch.
if (default_value is None) or (native_value != default_value):
dict_object[dict_key] = native_value
elif _is_tostring_object(native_value):
if native_value != default_value:
dict_object[dict_key] = str(native_value)
elif isinstance(native_value, object):
new_value = dict_from_native_object(native_value, default_value)
if new_value:
dict_object[dict_key] = new_value
else:
raise ValueError(
"{} must be a scalar value or an object".format(native_key)
)
return dict_object
return dict_from_native_object(self, defaults)