class_docstr: Wrap a DistributedDataParallel module and forward requests for missing
  attributes to the module wrapped by DDP (the twice-wrapped module).
  Also forward calls to :func:`state_dict` and :func:`load_state_dict`.
  
  Usage::
  
      module.xyz = "hello world"
      wrapped_module = DistributedDataParallel(module, **ddp_args)
      wrapped_module = ModuleProxyWrapper(wrapped_module)
      assert wrapped_module.xyz == "hello world"
      assert wrapped_module.state_dict().keys() == module.state_dict().keys()
  
  Args:
      module (nn.Module): module to wrap
code: def __init__(self, module: nn.Module):
      super().__init__()
      assert hasattr(
          module, "module"
      ), "ModuleProxyWrapper expects input to wrap another module"
      self.module = module
  
imports: from torch import nn
label_desc: Use image node_id 1 to create a new ModuleProxyWrapper object from inherited base classes: nn with example: obj = ModuleProxyWrapper(module)