'Validates the given ``values`` using the config schema.
Returns a tuple with cleaned values and errors.'

def deserialize(self, values):

    errors = {}
    result = {}
    for (key, value) in values.items():
        try:
            result[key] = self[key].deserialize(value)
        except KeyError:
            errors[key] = u'unknown    config    key.'
            suggestion = _did_you_mean(key, self.keys())
            if suggestion:
                errors[key] += (u'    Did    you    mean    %s?' % suggestion)
        except ValueError as e:
            result[key] = None
            errors[key] = str(e)
    for key in self.keys():
        if isinstance(self[key], types.Deprecated):
            result.pop(key, None)
        elif ((key not in result) and (key not in errors)):
            result[key] = None
            errors[key] = u'config    key    not    found.'
    return (result, errors)
