code: def __init__(
      self,
      input_col: str,
      partition_key: str,
      output_col: str,
      reset_per_partition: bool,
  ):
      super().__init__()
  
      ExplainBuilder.build(
          self,
          inputCol=input_col,
          partitionKey=partition_key,
          outputCol=output_col,
          resetPerPartition=reset_per_partition,
      )
  
imports: from typing import List
  from synapse.ml.cyber.utils.spark_utils import DataFrameUtils, ExplainBuilder, HasSetInputCol, HasSetOutputCol
  from pyspark.ml import Estimator, Transformer
  from pyspark.ml.param.shared import HasInputCol, HasOutputCol, Param, Params
  from pyspark.sql import DataFrame, functions
label_desc: Use image node_id 1 to create a new IdIndexer object from inherited base classes: Estimator, HasSetInputCol, HasSetOutputCol with example: obj = IdIndexer(input_col, partition_key, output_col, reset_per_partition)