code: def test_to_hetero_with_bases_on_static_graphs():
      x_dict = {
          "paper": torch.randn(4, 100, 16),
          "author": torch.randn(4, 100, 16),
      }
      edge_index_dict = {
          ("paper", "written_by", "author"): torch.randint(
              100, (2, 200)
          ),
          ("author", "writes", "paper"): torch.randint(100, (2, 200)),
      }
  
      metadata = list(x_dict.keys()), list(edge_index_dict.keys())
      model = to_hetero_with_bases(
          Net4(),
          metadata,
          num_bases=4,
          in_channels={"x0": 16},
          debug=False,
      )
  
      out_dict = model(x_dict, edge_index_dict)
  
      assert len(out_dict) == 2
      assert out_dict["paper"].size() == (4, 100, 32)
      assert out_dict["author"].size() == (4, 100, 32)
  
imports: from typing import Tuple
  import pytest
  import torch
  from torch import Tensor
  from torch.nn import Linear, ReLU, Sequential
  import torch_geometric.typing
  from torch_geometric.nn import GINEConv, MessagePassing, RGCNConv, SAGEConv, to_hetero_with_bases
  from torch_geometric.typing import SparseTensor
label_desc: Use image node_id 4 for calling a global function with example usage: test_to_hetero_with_bases_on_static_graphs() without return types