<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def merge_from_obj(self, obj, lists_only=False):
 """ Merges a configuration object into this one. See :meth:`ConfigurationObject.merge` for details. :param obj: Values to update the ConfigurationObject with. :type obj: ConfigurationObject :param lists_only: Ignore single-value attributes and update dictionary options. :type lists_only: bool """

        self.clean()
        obj.clean()
        obj_config = obj._config
        all_props = self.__class__.CONFIG_PROPERTIES
        for key, value in six.iteritems(obj_config):
            attr_config = all_props[key]
            attr_type, default, __, merge_func = attr_config[:4]
            if (merge_func is not False and value != default and
                    (not lists_only or (attr_type and issubclass(attr_type, list)))):
                self._merge_value(attr_type, merge_func, key, value)