code: def test_get_params_from_method_call() -> None:
      class FromMethodCall1:
          propagate_type = {"x": Tensor}
  
      inspector = Inspector(FromMethodCall1)
      assert inspector.get_params_from_method_call("propagate") == {
          "x": Parameter("x", Tensor, "Tensor", inspect._empty),
      }
  
      class FromMethodCall2:
          # propagate_type: (x: Tensor)
          pass
  
      inspector = Inspector(FromMethodCall2)
      assert inspector.get_params_from_method_call("propagate") == {
          "x": Parameter("x", Tensor, "Tensor", inspect._empty),
      }
  
      class FromMethodCall3:
          def forward(self) -> None:
              self.propagate(  # type: ignore
                  torch.randn(5, 5),
                  x=None,
                  size=None,
              )
  
      inspector = Inspector(FromMethodCall3)
      exclude = [0, "size"]
      assert inspector.get_params_from_method_call(
          "propagate", exclude
      ) == {
          "x": Parameter("x", Tensor, "Tensor", inspect._empty),
      }
  
      class FromMethodCall4:
          pass
  
      inspector = Inspector(FromMethodCall4)
      assert inspector.get_params_from_method_call("propagate") == {}
  
file_path: pytorch_geometric/test/test_inspector.py
imports: import inspect
  from typing import Any, Dict, Final, List, Optional, Set, Tuple, Union
  import torch
  from torch import Tensor
  from torch_geometric.inspector import Inspector, Parameter, Signature
  from torch_geometric.nn import GATConv, SAGEConv
  from torch_geometric.typing import OptPairTensor
label_desc: Use image node_id 5 for calling a global function with example usage: test_get_params_from_method_call() without return types