code: def test_should_not_group_together(
      self,
      data_types: List[DataType],
      has_feature_processors: List[bool],
      fused_params_group: Dict[str, Any],
      embedding_dims: List[int],
      pooling_types: List[PoolingType],
      compute_kernels: List[EmbeddingComputeKernel],
      distinct_key: str,
  ) -> None:
      tables = [
          ShardedEmbeddingTable(
              name=f"table_{i}",
              data_type=data_types[i]
              if distinct_key == "data_type"
              else data_types[0],
              pooling=pooling_types[i]
              if distinct_key == "pooling_type"
              else pooling_types[0],
              has_feature_processor=has_feature_processors[i]
              if distinct_key == "has_feature_processor"
              else has_feature_processors[0],
              fused_params=fused_params_group,  # can't hash dicts
              compute_kernel=compute_kernels[i]
              if distinct_key == "compute_kernel"
              else compute_kernels[0],
              embedding_dim=embedding_dims[i]
              if distinct_key == "embedding_dim"
              else embedding_dims[0],
              num_embeddings=10000,
          )
          for i in range(2)
      ]
  
      if distinct_key == "compute_kernel" and _get_compute_kernel_type(
          compute_kernels[0]
      ) == _get_compute_kernel_type(compute_kernels[1]):
          self.assertEqual(
              _get_table_names_by_groups(tables),
              [["table_0", "table_1"]],
          )
          return
  
      # emb dim bucketizier only in use when computer kernel is uvm caching
      # and prefetch pipeline is True
      if (
          distinct_key == "embedding_dim"
          and compute_kernels[0]
          != EmbeddingComputeKernel.FUSED_UVM_CACHING
      ):
          self.assertEqual(
              _get_table_names_by_groups(tables),
              [["table_0", "table_1"]],
          )
          return
  
      self.assertEqual(
          sorted(_get_table_names_by_groups(tables)),
          [["table_0"], ["table_1"]],
      )
  
imports: import random
  import unittest
  from typing import Any, Dict, List
  from unittest.mock import MagicMock
  import hypothesis.strategies
  from hypothesis import given, settings
  from torchrec.distributed.embedding_lookup import EmbeddingComputeKernel
  from torchrec.distributed.embedding_sharding import _get_compute_kernel_type, _get_grouping_fused_params, _get_weighted_avg_cache_load_factor, group_tables
  from torchrec.distributed.embedding_types import GroupedEmbeddingConfig, ShardedEmbeddingTable
  from torchrec.modules.embedding_configs import DataType, PoolingType
label_desc: Use image node_id 3 for calling the TestGroupTablesPerRank obj's underlying member method code with example usage: obj.test_should_not_group_together(data_types, has_feature_processors, fused_params_group, embedding_dims, pooling_types, compute_kernels, distinct_key) without return types