code: def test_replace_dunder_methods_attrs():
      """This test checks, that all the calls from setting and deleting attributes within `_replace_dunder_methods` are
      correctly preserved even after reinstantiation.
  
      It also includes a custom `__setattr__`
  
      """
  
      class Loader(DataLoader):
          def __setattr__(self, attr, val):
              if attr == "custom_arg":
                  val = val + 2
              super().__setattr__(attr, val)
  
      with _replace_dunder_methods(DataLoader, "dataset"):
          dataloader = Loader(range(10))
          dataloader.custom_arg = 5
          dataloader.my_arg = 10
          dataloader.another_arg = 100
          del dataloader.dataset
          with contextlib.suppress(AttributeError):
              del dataloader.abc_arg
  
      assert dataloader.__pl_saved_args == (range(10),)
      assert dataloader.__pl_saved_kwargs == {}
      assert dataloader.__pl_saved_arg_names == ("dataset",)
      assert dataloader.__dataset == range(10)
      assert dataloader.custom_arg == 7
      assert dataloader.my_arg == 10
      assert dataloader.another_arg == 100
      assert not hasattr(dataloader, "dataset")
      assert dataloader.__pl_attrs_record == [
          (("custom_arg", 5), _WrapAttrTag.SET),
          (("my_arg", 10), _WrapAttrTag.SET),
          (("another_arg", 100), _WrapAttrTag.SET),
          (("dataset",), _WrapAttrTag.DEL),
      ]
  
      dataloader = _update_dataloader(dataloader, dataloader.sampler)
      assert dataloader.custom_arg == 7
      assert dataloader.my_arg == 10
      assert dataloader.another_arg == 100
      assert not hasattr(dataloader, "dataset")
  
imports: import contextlib
  import os
  import random
  from unittest import mock
  from unittest.mock import Mock
  import lightning.fabric
  import numpy
  import pytest
  import torch
  from lightning.fabric.utilities.data import AttributeDict, _get_dataloader_init_args_and_kwargs, _replace_dunder_methods, _replace_value_in_saved_args, _set_sampler_epoch, _update_dataloader, _WrapAttrTag, has_iterable_dataset, has_len, suggested_max_num_workers
  from lightning.fabric.utilities.exceptions import MisconfigurationException
  from lightning_utilities.test.warning import no_warning_call
  from torch import Tensor
  from torch.utils.data import BatchSampler, DataLoader, RandomSampler
  from tests_fabric.helpers.models import RandomDataset, RandomIterableDataset
label_desc: Use image node_id 6 for calling a global function with example usage: test_replace_dunder_methods_attrs() without return types