text: from ..layers.HeteroLinear import HeteroMLPLayer
  from ..layers.GeneralGNNLayer import MultiLinearLayer
  
  
  def HGNNPreMP(args, node_types, num_pre_mp, in_dim, hidden_dim):
      """
      HGNNPreMP, dimension is in_dim, hidden_dim, hidden_dim ...
      Note:
      Final layer has activation.
  
      Parameters
      ----------
      args
      node_types
      num_pre_mp
      in_dim
      hidden_dim
  
      Returns
      -------
  
      """
      if num_pre_mp > 0:
          linear_dict = {}
          for ntype in node_types:
              linear_dict[ntype] = [in_dim]
              for _ in range(num_pre_mp):
                  linear_dict[ntype].append(hidden_dim)
          return HeteroMLPLayer(linear_dict, act=args.activation, dropout=args.dropout,
                            has_l2norm=args.has_l2norm, has_bn=args.has_bn, final_act=True)
  
  
  def HGNNPostMP(args, node_types, num_post_mp, hidden_dim, out_dim):
      """
      HGNNPostMLP, hidden_dim, hidden_dim, ..., out_dim
      Final layer has no activation.
  
      Parameters
      ----------
      args
      node_types
      num_post_mp
      hidden_dim
      out_dim
  
      Returns
      -------
  
      """
      if num_post_mp > 0:
          linear_dict = {}
          for ntype in node_types:
              linear_dict[ntype] = [hidden_dim]
              for _ in range(num_post_mp-1):
                  linear_dict[ntype].append(hidden_dim)
              linear_dict[ntype].append(out_dim)
          return HeteroMLPLayer(linear_dict, act=args.activation, dropout=args.dropout,
                            has_l2norm=args.has_l2norm, has_bn=args.has_bn, final_act=False)
  
  
  # def GNNPreMP(args, in_dim, hidden_dim):
  #     linear_list = [in_dim] + args.layers_pre_mp * [hidden_dim]
  #     return MultiLinearLayer(linear_list, dropout=args.dropout, act=args.activation, has_bn=args.has_bn,
  #                  has_l2norm=args.has_l2norm)
  #
  #
  # def GNNPostMP(args, hidden_dim, out_dim):
  #     linear_list = args.layers_pre_mp * [hidden_dim] + [out_dim]
  #     return MultiLinearLayer(linear_list, dropout=args.dropout, act=args.activation, has_bn=args.has_bn,
  #                  has_l2norm=args.has_l2norm)