docs: def validate_data_table(data_table, sed=None):
      """
      Validate all columns of a data table. If a list of tables is passed, all
      tables will be validated and then concatenated
  
      Parameters
      ----------
  
      data_table : `astropy.table.Table` or list of `astropy.table.Table`.
  
      sed : bool, optional
          Whether to convert the fluxes to SED. If unset, all data tables are
          converted to the format of the first data table.
      """
      if isinstance(data_table, Table) or isinstance(data_table, QTable):
          data_table = [data_table]
  
      try:
          for dt in data_table:
              if not isinstance(dt, Table) and not isinstance(dt, QTable):
                  raise TypeError(
                      "An object passed as data_table is not an astropy Table!"
                  )
      except TypeError:
          raise TypeError(
              "Argument passed to validate_data_table is not a table and "
              "not a list"
          )
  
      def dt_sed_conversion(dt, sed):
          f_unit, sedf = sed_conversion(dt["energy"], dt["flux"].unit, sed)
          # roundtrip to Table to change the units
          t = Table(dt)
          for col in ["flux", "flux_error_lo", "flux_error_hi"]:
              t[col].unit = f_unit
          ndt = QTable(t)
  
          ndt["flux"] = (dt["flux"] * sedf).to(f_unit)
          ndt["flux_error_lo"] = (dt["flux_error_lo"] * sedf).to(f_unit)
          ndt["flux_error_hi"] = (dt["flux_error_hi"] * sedf).to(f_unit)
  
          return ndt
  
      data_list = []
      for group, dt in enumerate(data_table):
          dt_val = _validate_single_data_table(dt, group=group)
          data_list.append(dt_val)
  
      # concatenate input data tables
      data_new = data_list[0].copy()
      f_pt = data_new["flux"].unit.physical_type
      if sed is None:
          sed = f_pt in ["flux", "power"]
  
      data_new = dt_sed_conversion(data_new, sed)
  
      for dt in data_list[1:]:
          nf_pt = dt["flux"].unit.physical_type
          if ("flux" in nf_pt and "power" in f_pt) or (
              "power" in nf_pt and "flux" in f_pt
          ):
              raise TypeError(
                  "The physical types of the data tables could not be "
                  "matched: Some are in flux and others in luminosity units"
              )
  
          dt = dt_sed_conversion(dt, sed)
  
          for row in dt:
              data_new.add_row(row)
  
      return data_new