def select(index, *args):
    """The intrinsic function Fn::Select returns a single object from a list of objects by index.

    .. note:
        select is represented here "just in case".
        Most likely, using the python equivalent in a pyplate will be
        easier to both look at and maintain, but in the event that selects
        need to take place after CFN has interpolated all the intrinsic
        functions, it may still be useful.

    .. warning:: Important
        Fn::Select does not check for null values or if the index is out of
        bounds of the array. Both conditions will result in a stack error,
        so you should be certain that the index you choose is valid, and that
        the list contains non-null values.

    Args:
        index: The index of the object to retrieve. This must be a value
            from zero to N-1, where N represents the number of
            elements in the array.
        *args: Any number of objects to select from, passed as
            positional arguments. None of the arguments can be ``None``

    Returns: The selected object.

    """
    try:
        index = int(index)
    except ValueError:
        raise IntrinsicFuncInputError(select._errmsg_int)
    if not args:
        raise IntrinsicFuncInputError(select._errmsg_empty)
    if filter(lambda x: x is None, args):
        raise IntrinsicFuncInputError(select._errmsg_null)
    try:
        args[index]
    except __HOLE__:
        raise IntrinsicFuncInputError(select._errmsg_index)

    return {'Fn::Select': [index, list(args)]}
dataset/ETHPy150Open seandst/cfn-pyplates/cfn_pyplates/functions.py/select