code: def _assert_valid_qconfig(
      qconfig: Optional[QConfig], mod: torch.nn.Module
  ) -> None:
      """
      Verifies that this `qconfig` is valid.
      """
      if qconfig is None:
          return
      is_conv_transpose_mod = isinstance(
          mod,
          (
              torch.nn.ConvTranspose1d,
              torch.nn.ConvTranspose2d,
              torch.nn.ConvTranspose3d,
          ),
      )
      if is_conv_transpose_mod:
          if qconfig.weight is None:
              # for now, we assume that any qconfig for ConvTranspose without a weight is valid
              return
          example_observer = qconfig.weight()
          is_per_channel = isinstance(
              example_observer,
              (
                  torch.ao.quantization.PerChannelMinMaxObserver,
                  torch.ao.quantization.MovingAveragePerChannelMinMaxObserver,
              ),
          )
          assert (
              not is_per_channel
          ), "Per channel weight observer is not supported yet for ConvTranspose{n}d."
  
imports: from collections import namedtuple
  from typing import Optional, Any, Union, Type
  import torch
  import torch.nn
  from torch.ao.quantization.fake_quantize import FakeQuantize, FakeQuantizeBase, default_fake_quant, default_dynamic_fake_quant, default_per_channel_weight_fake_quant, default_weight_fake_quant, default_fused_act_fake_quant, default_fused_wt_fake_quant, FusedMovingAvgObsFakeQuantize, default_fused_per_channel_wt_fake_quant, default_embedding_fake_quant, default_embedding_fake_quant_4bit, fused_wt_fake_quant_range_neg_127_to_127, fused_per_channel_wt_fake_quant_range_neg_127_to_127
  from .observer import _PartialWrapper, MinMaxObserver, HistogramObserver, MovingAverageMinMaxObserver, NoopObserver, PlaceholderObserver, ReuseInputObserver, default_debug_observer, default_dynamic_quant_observer, default_float_qparams_observer, default_float_qparams_observer_4bit, default_observer, default_per_channel_weight_observer, default_placeholder_observer, default_weight_observer, weight_observer_range_neg_127_to_127, per_channel_weight_observer_range_neg_127_to_127, default_reuse_input_observer, ObserverBase
  import warnings
  import copy
label_desc: Use image node_id 5 for calling a global function with example usage: _assert_valid_qconfig(qconfig, mod) without return types