Get a list of the available filters

    Parameters
    ----------
    filter_directory: str
        The directory containing the filter relative spectral response curves
    update: bool
        Check the filter directory for new filters and generate pickle of table
    fmt: str
        The format for the returned table

    Returns
    -------
    list
        The list of band names

def filters(filter_directory=None, update=False, fmt='table', **kwargs):
    """
    Get a list of the available filters

    Parameters
    ----------
    filter_directory: str
        The directory containing the filter relative spectral response curves
    update: bool
        Check the filter directory for new filters and generate pickle of table
    fmt: str
        The format for the returned table

    Returns
    -------
    list
        The list of band names
    """
    if filter_directory is None:
        filter_directory = resource_filename('svo_filters', 'data/filters/')

    # Get the pickle path and make sure file exists
    p_path = os.path.join(filter_directory, 'filter_list.p')
    updated = False
    if not os.path.isfile(p_path):
        os.system('touch {}'.format(p_path))

    if update:

        print('Loading filters into table...')

        # Get all the filters (except the pickle)
        files = glob(filter_directory+'*')
        files = [f for f in files if not f.endswith('.p')]
        bands = [os.path.basename(b) for b in files]
        tables = []

        for band in bands:

            # Load the filter
            band = band.replace('.txt', '')
            filt = Filter(band, **kwargs)
            filt.Band = band

            # Put metadata into table with correct dtypes
            info = filt.info(True)
            vals = [float(i) if i.replace('.', '').replace('-', '')
                    .replace('+', '').isnumeric() else i
                    for i in info['Values']]
            dtypes = np.array([type(i) for i in vals])
            table = at.Table(np.array([vals]), names=info['Attributes'],
                             dtype=dtypes)

            tables.append(table)

            del filt, info, table

        # Write to the pickle
        with open(p_path, 'wb') as file:
            pickle.dump(at.vstack(tables), file)

    # Load the saved pickle
    data = {}
    if os.path.isfile(p_path):
        with open(p_path, 'rb') as file:
            data = pickle.load(file)

    # Return the data
    if data:

        if fmt == 'dict':
            data = {r[0]: {k: r[k].value if hasattr(r[k], 'unit') else r[k]
                    for k in data.keys()[1:]} for r in data}

        else:

            # Add Band as index
            data.add_index('Band')

        return data

    # Or try to generate it once
    else:
        if not updated:
            updated = True
            filters(update=True)
        else:
            print('No filters found in', filter_directory)