code: def test_export_opnames_interface(self):
      @torch.jit.interface
      class OneTwoModule(nn.Module):
          def one(
              self, x: torch.Tensor, y: torch.Tensor
          ) -> torch.Tensor:
              pass
  
          def two(self, x: torch.Tensor) -> torch.Tensor:
              pass
  
          def forward(self, x: torch.Tensor) -> torch.Tensor:
              pass
  
      class FooMod(nn.Module):
          def one(
              self, x: torch.Tensor, y: torch.Tensor
          ) -> torch.Tensor:
              return x + y
  
          def two(self, x: torch.Tensor) -> torch.Tensor:
              return 2 * x
  
          def forward(self, x: torch.Tensor) -> torch.Tensor:
              return self.one(self.two(x), x)
  
      class BarMod(nn.Module):
          def one(
              self, x: torch.Tensor, y: torch.Tensor
          ) -> torch.Tensor:
              return x * y
  
          def two(self, x: torch.Tensor) -> torch.Tensor:
              return 2 / x
  
          def forward(self, x: torch.Tensor) -> torch.Tensor:
              return self.two(self.one(x, x))
  
      make_global(OneTwoModule)
  
      class M(nn.Module):
          sub: OneTwoModule
  
          def __init__(self):
              super().__init__()
              self.sub = BarMod()
  
          def forward(self, x: torch.Tensor) -> torch.Tensor:
              return self.sub.forward(x)
  
      def use_module_interface(
          mod_list: List[OneTwoModule], x: torch.Tensor
      ):
          return mod_list[0].forward(x) + mod_list[1].forward(x)
  
      torch._C._enable_mobile_interface_call_export()
      scripted_M_mod = torch.jit.script(M())
      self.assertTrue(
          {
              "aten::mul.Scalar",
              "aten::mul.Tensor",
              "aten::reciprocal",
          }.issubset(set(torch.jit.export_opnames(scripted_M_mod)))
      )
  
      scripted_M_mod.sub = torch.jit.script(FooMod())
      self.assertTrue(
          {"aten::add.Tensor", "aten::mul.Scalar"}.issubset(
              set(torch.jit.export_opnames(scripted_M_mod))
          )
      )
  
imports: from typing import Any, Dict, List, Optional, Tuple
  from torch.testing._internal.jit_utils import JitTestCase, make_global
  from torch.testing import FileCheck
  from torch import jit
  from jit.test_module_interface import TestModuleInterface
  import os
  import sys
  import torch
  import torch.testing._internal.jit_utils
  import torch.nn
  import unittest
  from torch.testing._internal.common_utils import freeze_rng_state
  from torch.testing._internal.jit_utils import RUN_CUDA_HALF
label_desc: Use image node_id 14 for calling the TestMisc obj's underlying member method code with example usage: obj.test_export_opnames_interface() and returns: unknown, unknown, unknown, self, unknown, unknown, self, self