code: def _get_folded_quantized_qat_conv_bn_pattern(
      is_per_channel: bool,
      has_bias: bool,
      bias_is_quantized: bool,
      conv_fn: Callable,
      bn_is_training: bool,
  ) -> Callable:
      """
      Quantized QAT conv - bn pattern with bn weights being folded into conv.
      """
      # TODO: allow setting eps
      bn_eps = 1e-5
  
      def _folded_quantized_qat_conv_bn_pattern(
          x: torch.Tensor,
          conv_weight: torch.Tensor,
          bn_weight: torch.Tensor,
          bn_bias: torch.Tensor,
          bn_running_mean: torch.Tensor,
          bn_running_var: torch.Tensor,
          **kwargs,
      ) -> torch.Tensor:
          conv_weight = _append_qdq(conv_weight, is_per_channel, kwargs)
          if has_bias:
              bias = kwargs["conv_bias"]
              if bias_is_quantized:
                  bias = _append_qdq(bias, is_per_channel, kwargs)
          else:
              bias = None
          x = conv_fn(x, conv_weight, bias)
          x = F.batch_norm(
              x,
              bn_running_mean,
              bn_running_var,
              bn_weight,
              bn_bias,
              training=bn_is_training,
              eps=bn_eps,
          )
          return x
  
      return _folded_quantized_qat_conv_bn_pattern
  
imports: import dataclasses
  import itertools
  import operator
  from typing import Any, Callable, Dict, List, Tuple, TYPE_CHECKING
  import torch
  from torch.fx import Graph, GraphModule, Node
  from torch.fx.subgraph_rewriter import replace_pattern_with_filters, ReplacedPatterns
  import torch.nn.functional
  from torch.ao.quantization.fx._decomposed import quantized_decomposed_lib
  from torch.ao.quantization.quantizer import DerivedQuantizationSpec, EdgeOrNode, SharedQuantizationSpec, QuantizationSpecBase
  from .utils import _conv1d_bn_example_inputs, _conv2d_bn_example_inputs, _is_conv, _is_bn_node, fold_bn_weights_into_conv_node, get_aten_graph_module
label_desc: Use image node_id 7 for calling a global function with example usage: _get_folded_quantized_qat_conv_bn_pattern(is_per_channel, has_bias, bias_is_quantized, conv_fn, bn_is_training) and returns: _folded_quantized_qat_conv_bn_pattern, x