--- /dev/null
+
+
+def to_dict(_object, **extra_keys):
+ """
+ A utility to convert an object with attributes to a dictionary with the
+ optional feature of slapping extra_keys. Because extra_keys can be
+ optionally set, it is assumed that any keys that clash will get
+ overwritten.
+
+ Private methods (anything that starts with `_`) are ignored.
+ """
+ dictified_obj = {}
+ for k, v in _object.__dict__.items():
+ if not k.startswith('_'):
+ # get key
+ value = extra_keys.pop(k, v)
+ dictified_obj[k] = value
+ if extra_keys:
+ for k, v in extra_keys.items():
+ dictified_obj[k] = v
+
+ return dictified_obj