code: def execute(self, sources, target):
          
          existing_fields = self._get_fields_list_from_eps(sources)
  
          def trans_columns(tid, fields):
              sel_cols = self._selected_cols.get(tid)
              exc_cols = self._excluded_cols.get(tid)
              for field in fields:
                  if field.role is None:
                      continue
                  if sel_cols and field.name not in sel_cols:
                      continue
                  if exc_cols and field.name in exc_cols:
                      continue
                  new_col = field.copy(field.role)
                  if self._auto_rename:
                      new_col.name = 't%d_%s' % (tid, field.name)
                  yield new_col
  
          new_fields = map(lambda tp: list(trans_columns(tp[0], tp[1])), enumerate(existing_fields))
          target._ml_fields = list(reduce(lambda fa, fb: fa + fb, new_fields, []))
          target._ml_uplink = sources
docs: :type sources: list[DFAdapter]
          :type target: DFAdapter