def __init__(self, keys, prune = False, *args, **kw): super(MangleConfigMixin, self).__init__(*args, **kw) if isinstance(keys, basestring) or not is_iterable(keys): keys = (keys, ) self.__keys = keys self.__prune = prune
def unpack_value(self, v): if isinstance(v, basestring): return self.unpack_string(v) if isinstance(v, dict): return self.unpack_dict(v) if is_iterable(v): return self.unpack_list(v) if not is_primitive(v): raise InternalTypeError(v) return v
def pack_value(self, v): if isinstance(v, basestring): return u"s" + unicode(v) if isinstance(v, dict): return self.pack_dict(v) if is_iterable(v): return self.pack_list(v) if isinstance(v, Resource): return u"r" + unicode(v.identifier) if isinstance(v, Identifier): return u"i" + unicode(v) if not is_primitive(v): raise InternalTypeError(v) return v
def compare_answer(answer, response): success = True result = {} for field_name in answer: try: field_answer = answer[field_name] if is_iterable(field_answer): field_result = all([ list_value.compare(response[field_name]) for list_value in field_answer ]) else: field_result = field_answer.compare(response[field_name]) except KeyError: field_result = False result[field_name] = field_result success = success and field_result return success, result