def get_valid_bases(return_values="bases_only"):
    """Returns the valid DNA bases used by the functions in this module.

    Arguments
        return_values -- Determines the value (and type) of what the function
                         returns. If return_values == "bases_only", the function
                         returns a list with valid bases; if
                         return_values == "base_complements", the function
                         returns a dict with valid bases as keys and base
                         complements as values.

    Raises
        ValueError, if return_values is neither "bases_only" nor
        "base_complements".

    Returns
        (a) A list containing valid bases (if return_values == "bases_only"):
            ['A', 'G', 'C', 'T']
        (b) A dict containing the valid DNA bases and their complements (if
            return_values == "base_complements"):
            {'A': 'T', 'G': 'C', 'C': 'G', 'T': 'A'}

    Doctests
        >>> get_valid_bases("bases_only")
        ['A', 'G', 'C', 'T']
        >>> get_valid_bases("base_complements")
        {'A': 'T', 'G': 'C', 'C': 'G', 'T': 'A'}
        >>> get_valid_bases("Whoops!")
        Traceback (most recent call last):
        ...
        ValueError: return_values must be either "bases_only" or "base_complements"
    """
    valid_bases = ['A', 'G', 'C', 'T']
    if return_values == "bases_only":
        return valid_bases
    elif return_values == "base_complements":
        # [::-1] reverses the list of bases
        return dict(zip(valid_bases, valid_bases[::-1]))
    else:
        raise ValueError('return_values must be either "bases_only" or ' + \
                         '"base_complements"')