def get_obj_cls_def(obj): if not obj or util.is_function(obj): return None if util.is_container(obj): return obj if not util.is_primitive(obj): return type(obj) return None
def _get_flattener(self, obj): if util.is_primitive(obj): return lambda obj: obj list_recurse = lambda obj: [self.flatten(v) for v in obj] if util.is_list(obj): if self._mkref(obj): return list_recurse else: self._push() return self._getref # We handle tuples and sets by encoding them in a "(tuple|set)dict" if util.is_tuple(obj): if not self.unpicklable: return list_recurse return lambda obj: {tags.TUPLE: [self.flatten(v) for v in obj]} if util.is_set(obj): if not self.unpicklable: return list_recurse return lambda obj: {tags.SET: [self.flatten(v) for v in obj]} if util.is_dictionary(obj): return self._flatten_dict_obj if util.is_type(obj): return _mktyperef if util.is_object(obj): return self._ref_obj_instance # else, what else? (methods, functions, old style classes...) return None