def make_selector(value):
    '''Create a selector callable from the supplied value.

    Args:
        value: If is a callable, then returned unchanged.  If a string is used
            then create an attribute selector. If in an integer is used then
            create a key selector.

    Returns:
        A callable selector based on the supplied value.

    Raises:
        ValueError: If a selector cannot be created from the value.
    '''
    if is_callable(value):
        return value
    if is_string(value):
        return a_(value)
    raise ValueError("Unable to create callable selector from '{0}'".format(value))