def build_column_configs()

in data_validation/config_manager.py [0:0]


    def build_column_configs(self, columns):
        """Return list of column config objects."""
        column_configs = []
        source_table = self.get_source_ibis_calculated_table()
        target_table = self.get_target_ibis_calculated_table()
        casefold_source_columns = {x.casefold(): str(x) for x in source_table.columns}
        casefold_target_columns = {x.casefold(): str(x) for x in target_table.columns}

        for column in columns:
            if column.casefold() not in casefold_source_columns:
                raise ValueError(f"Column DNE in source: {column}")
            if column.casefold() not in casefold_target_columns:
                raise ValueError(f"Column DNE in target: {column}")

            source_ibis_type = source_table[
                casefold_source_columns[column.casefold()]
            ].type()
            target_ibis_type = target_table[
                casefold_target_columns[column.casefold()]
            ].type()
            cast_type = self._key_column_needs_casting_to_string(
                source_ibis_type, target_ibis_type
            )

            column_config = {
                consts.CONFIG_SOURCE_COLUMN: casefold_source_columns[column.casefold()],
                consts.CONFIG_TARGET_COLUMN: casefold_target_columns[column.casefold()],
                consts.CONFIG_FIELD_ALIAS: column,
                consts.CONFIG_CAST: cast_type,
            }
            column_configs.append(column_config)

        return column_configs