class_docstr: Quantization spec for common operators that allows user to specify how to
  quantize a Tensor, this includes dtype, quant_min, quant_max etc.
code: def __post_init__(self):
      # quant_min must be less than quant_max
      if (
          self.quant_min is not None
          and self.quant_max is not None
          and self.quant_min > self.quant_max
      ):
          raise ValueError(
              f"quant_min {self.quant_min} must be <= quant_max {self.quant_max}."
          )
  
      # ch_axis must be less than the number of channels
      # but no way to check here. Just check that it is not < 0.
      if self.ch_axis is not None and self.ch_axis < 0:
          raise ValueError("Ch_axis is < 0.")
  
imports: from abc import ABC, abstractmethod
  from dataclasses import dataclass, field
  from typing import Callable, Dict, List, Optional, Tuple, Union
  import torch
  from torch import Tensor
  from torch.ao.quantization import ObserverOrFakeQuantize
  from torch.ao.quantization.qconfig import _ObserverOrFakeQuantizeConstructor
  from torch.fx import Node
label_desc: Use image node_id 1 for calling the QuantizationSpec obj's underlying member method code with example usage: obj.__post_init__() without return types