code: def test_fabric_module_attribute_lookup():
      """Test that attribute lookup passes through to the original module when possible."""
  
      class OriginalModule(torch.nn.Module):
          def __init__(self):
              super().__init__()
              self.layer = torch.nn.Linear(2, 3)
              self.attribute = 1
  
          def method(self):
              return 2
  
      original_module = OriginalModule()
  
      class ModuleWrapper(torch.nn.Module):
          def __init__(self):
              super().__init__()
              self.wrapped = original_module
  
      wrapped_module = ModuleWrapper()
  
      fabric_module = _FabricModule(
          wrapped_module, Mock(), original_module=original_module
      )
      assert fabric_module.attribute == 1
      assert fabric_module.layer is original_module.layer
      assert fabric_module.forward.__self__.__class__ == _FabricModule
  
      with pytest.raises(AttributeError):
          _ = fabric_module.not_exists
  
imports: from unittest import mock
  from unittest.mock import Mock, call
  import pytest
  import torch
  from lightning.fabric.fabric import Fabric
  from lightning.fabric.plugins import Precision
  from lightning.fabric.utilities.device_dtype_mixin import _DeviceDtypeModuleMixin
  from lightning.fabric.utilities.imports import _TORCH_GREATER_EQUAL_2_1
  from lightning.fabric.wrappers import _FabricDataLoader, _FabricModule, _FabricOptimizer, _unwrap_objects, is_wrapped
  from torch.utils.data import BatchSampler, DistributedSampler
  from torch.utils.data.dataloader import DataLoader
  from tests_fabric.helpers.runif import RunIf
label_desc: Use image node_id 2 for calling a global function with example usage: test_fabric_module_attribute_lookup() and returns: int