code: def test_mha_batch_first_attr_is_copied_in_prepare(self):
      class TransformerDecoderLayer(nn.Module):
          def __init__(self, d_model, nhead, batch_first):
              super().__init__()
              self.self_attn = nn.MultiheadAttention(
                  d_model, nhead, dropout=0.1, batch_first=batch_first
              )
  
      qengine = torch.backends.quantized.engine
      for batch_first in [True, False]:
          model = TransformerDecoderLayer(512, 8, batch_first)
          quantization_config = (
              torch.ao.quantization.get_default_qconfig(qengine)
          )
          model.qconfig = quantization_config
          prepared_model = torch.ao.quantization.prepare(
              model, inplace=False
          )
          self.assertTrue(
              prepared_model.self_attn.batch_first
              == model.self_attn.batch_first
          )
  
imports: import torch
  import torch.nn
  import torch.ao.nn.quantized
  from torch.nn.utils.rnn import PackedSequence
  from torch.ao.quantization import quantize, prepare, convert, prepare_qat, quantize_dynamic, QuantWrapper, QuantStub, DeQuantStub, default_qconfig, default_dynamic_qconfig, per_channel_dynamic_qconfig, float16_dynamic_qconfig, float_qparams_weight_only_qconfig, float_qparams_weight_only_qconfig_4bit, FixedQParamsObserver, PerChannelMinMaxObserver, default_dynamic_quant_observer, default_weight_observer, QConfig
  from torch.testing._internal.common_quantization import QuantizationTestCase, AnnotatedSingleLayerLinearModel, QuantStubModel, ModelWithFunctionals, SingleLayerLinearDynamicModel, TwoLayerLinearModel, NestedModel, ResNetBase, RNNDynamicModel, RNNCellDynamicModel, ActivationsTestModel, NormalizationTestModel, test_only_eval_fn, prepare_dynamic, convert_dynamic, skipIfNoFBGEMM, EmbeddingBagModule, EmbeddingModule, EmbeddingWithStaticLinear, LinearReluLinearModel
  from torch.testing._internal.common_quantization import AnnotatedTwoLayerLinearModel, AnnotatedNestedModel, AnnotatedSubNestedModel, AnnotatedCustomConfigNestedModel, AnnotatedSkipQuantModel
  from torch.testing._internal.common_quantized import override_quantized_engine, supported_qengines, override_qengines
  from hypothesis import given
  from hypothesis import strategies
  import torch.testing._internal.hypothesis_utils
  from typing import Tuple
  import numpy
label_desc: Use image node_id 21 for calling the TestQuantizeEagerPTQStatic obj's underlying member method code with example usage: obj.test_mha_batch_first_attr_is_copied_in_prepare() without return types