code: def filters(filter_directory=None, update=False, fmt='table', **kwargs):
      if filter_directory is None:
          filter_directory = resource_filename('svo_filters', 'data/filters/')
      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...')
          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:
              band = band.replace('.txt', '')
              filt = Filter(band, **kwargs)
              filt.Band = band
              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
          with open(p_path, 'wb') as file:
              pickle.dump(at.vstack(tables), file)
      data = {}
      if os.path.isfile(p_path):
          with open(p_path, 'rb') as file:
              data = pickle.load(file)
      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:
              data.add_index('Band')
          return data
      else:
          if not updated:
              updated = True
              filters(update=True)
          else:
              print('No filters found in', filter_directory)