docs: 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)