'Accepts keys that pass a given validator, and validates them using validator specified in `value`
:param value: Validator name, instance or function returning an instance
that will be used to validate dict values.
:param key_type: Name of validator or list of names that determine which keys in this dict `value` will govern
:param Validator key_validator: A validator instance that will be used to determine which keys in the dict
`value` will govern
:raises ValueError: If both `key_type` and `key_validator` are specified.'

def accept_valid_keys(self, value, key_type=None, key_validator=None, **kwargs):

    if (key_type and key_validator):
        raise ValueError(u'key_type    and    key_validator    are    mutually    exclusive')
    if key_validator:
        key_validator.add_parent(self)
    elif key_type:
        if isinstance(key_type, str):
            key_type = [key_type]
        key_validator = self.get_validator(u'root')
        for key_type in key_type:
            key_validator.accept(key_type)
    else:
        raise ValueError((u'%s.accept_valid_keys()    must    specify    key_type    or    key_validator' % self.name))
    v = self.get_validator(value, **kwargs)
    self.key_validators.append((key_validator, v))
    return v
