class_docstr: A WhereHandler which deals with the sharding strategies for torch.where.
code: def post_process(self, strategy: ShardingStrategy):
      (
          logical_op_data_mapping,
          physical_op_data_mapping,
      ) = self.get_operation_data_mapping()
      for key in logical_op_data_mapping.keys():
          logical_sharding_spec = strategy.sharding_specs[
              logical_op_data_mapping[key]
          ]
          logical_shape = logical_op_data_mapping[key].logical_shape
          physical_shape = physical_op_data_mapping[key].logical_shape
          (
              physical_sharding_spec,
              removed_dims,
          ) = recover_sharding_spec_for_broadcast_shape(
              logical_sharding_spec, logical_shape, physical_shape
          )
          strategy.sharding_specs.pop(logical_op_data_mapping[key])
          strategy.sharding_specs[
              physical_op_data_mapping[key]
          ] = physical_sharding_spec
      strategy.name = f"{strategy.sharding_specs[physical_op_data_mapping['output']].sharding_sequence} = {strategy.sharding_specs[physical_op_data_mapping['condition']].sharding_sequence} x {strategy.sharding_specs[physical_op_data_mapping['x']].sharding_sequence} x {strategy.sharding_specs[physical_op_data_mapping['y']].sharding_sequence}"
      return strategy
  
file_path: ColossalAI/colossalai/auto_parallel/tensor_shard/node_handler/where_handler.py
imports: import copy
  from typing import Dict, List
  import torch
  from ..sharding_strategy import OperationData, OperationDataType, ShardingStrategy
  from ..utils import recover_sharding_spec_for_broadcast_shape
  from .node_handler import NodeHandler
  from .registry import operator_registry
  from .strategy import StrategyGenerator, WhereGenerator
label_desc: Use image node_id 4 for calling the WhereHandler obj's underlying member method code with example usage: obj.post_process(strategy) and returns: strategy