def _serialize_feature_column()

in tensorflow_model_analysis/contrib/export.py [0:0]


def _serialize_feature_column(
    feature_column: feature_column_v2.FeatureColumn) -> Dict[str, Any]:
  """Serialize the given feature column into a dictionary."""
  if not hasattr(feature_column, '_is_v2_column'):
    raise ValueError('feature_column does not has _is_v2_column attribute')
  if not feature_column._is_v2_column:  # pylint: disable=protected-access
    raise ValueError('feature_column is not a v2 column')
  if isinstance(feature_column, feature_column_v2.NumericColumn):
    return {
        'type': 'NumericColumn',
        'key': feature_column.key,
    }
  elif isinstance(feature_column, feature_column_v2.BucketizedColumn):
    return {
        'type': 'BucketizedColumn',
        'key': feature_column.name,
        'boundaries': feature_column.boundaries,
    }
  elif isinstance(feature_column, feature_column_v2.CrossedColumn):
    return {
        'type': 'CrossedColumn',
        'key': feature_column.name,
        'keys': feature_column.keys,
    }
  elif isinstance(feature_column, feature_column_v2.HashedCategoricalColumn):
    return {
        'type': 'HashCategoricalColumn',
        'key': feature_column.key,
    }
  elif isinstance(feature_column, feature_column_v2.IdentityCategoricalColumn):
    return {'type': 'IdentityCategoricalColumn', 'key': feature_column.key}
  elif isinstance(feature_column,
                  feature_column_v2.VocabularyFileCategoricalColumn):
    return {
        'type': 'VocabularyFileCategoricalColumn',
        'key': feature_column.key,
    }
  elif isinstance(feature_column,
                  feature_column_v2.VocabularyListCategoricalColumn):
    return {
        'type': 'VocabularyListCategoricalColumn',
        'key': feature_column.key,
    }
  elif isinstance(feature_column, feature_column_v2.WeightedCategoricalColumn):
    return {
        'type': 'WeightedCategoricalColumn',
        'key': feature_column.categorical_column.key,
        'weight_feature_key': feature_column.weight_feature_key,
    }
  elif isinstance(feature_column, feature_column_v2.EmbeddingColumn):
    return {
        'type':
            'EmbeddingColumn',
        'key':
            feature_column.name,
        'combiner':
            feature_column.combiner,
        'categorical_column':
            _serialize_feature_column(feature_column.categorical_column)
    }
  elif isinstance(feature_column, feature_column_v2.SharedEmbeddingColumn):
    return {
        'type':
            'SharedEmbeddingColumn',
        'key':
            feature_column.name,
        'combiner':
            feature_column.combiner,
        'categorical_column':
            _serialize_feature_column(feature_column.categorical_column)
    }
  elif isinstance(feature_column, feature_column_v2.IndicatorColumn):
    return {
        'type':
            'IndicatorColumn',
        'key':
            feature_column.name,
        'categorical_column':
            _serialize_feature_column(feature_column.categorical_column)
    }
  else:
    raise ValueError('unknown feature column, type %s, value %s' %
                     (type(feature_column), str(feature_column)))