code: def collect_columns(self):
          
          res = []
          for prop in self.get_sorted_columns():
  
              info_dict = self.get_info_field(prop)
              export_infos = info_dict.get('export', {}).copy()
  
              main_infos = export_infos.get(self.config_key, {}).copy()
  
              if export_infos.get('exclude'):
                  if main_infos.get('exclude', True):
                      continue
  
              infos = export_infos
              infos.update(main_infos)
  
              # Si la clé name n'est pas définit on la met au nom de la colonne
              # par défaut
              infos.setdefault('name', prop.key)
              infos['__col__'] = prop
              if isinstance(prop, RelationshipProperty):
                  join = str(prop.primaryjoin)
                  if join in self.rels:
                      continue
                  else:
                      self.rels.append(str(join))
                      infos['__prop__'] = SqlaContext(
                          prop.mapper,
                          rels=self.rels[:]
                      )
  
              res.append(infos)
          return res
docs: Collect columns information from a given model.
  
          a column info contains
  
              the py3 informations
  
                  exclude
  
                      Should the column be excluded from the current context ?
  
                  name
  
                      the name of the key in the resulting py3o context of the
                      column
  
              __col__
  
                  The original column object
  
              __prop__
  
                  In case of a relationship, the SqlaContext wrapping the given
                  object