code: def sanity_check_before_execution(
      self, model, calib_dataloader, metric
  ):
      invalidInputError(
          isinstance(model, torch.nn.Module),
          "model should be an instance of torch.nn.Module.",
      )
      if calib_dataloader:
          _check_loader(
              model=model, loader=calib_dataloader, metric=metric
          )
          invalidInputError(
              isinstance(calib_dataloader, Iterable),
              "Only iterable class is supported.",
          )
      if metric:
          invalidInputError(
              isinstance(metric, Metric)
              or isinstance(metric, Callable),
              errMsg="Metric of type {} is invalid".format(
                  type(metric)
              ),
              fixMsg="Use instance of `torchmetrics.Metric` instead.",
          )
      super().sanity_check_before_execution(
          model, calib_dataloader, metric
      )
  
file_path: BigDL/python/nano/src/bigdl/nano/deps/neural_compressor/pytorch/quantization.py
imports: from typing import Callable
  from collections.abc import Iterable
  from bigdl.nano.utils.common import invalidInputError
  from ..core import BaseQuantization
  from .utils import _check_loader
  from .metric import PytorchINCMetric
  from .quantized_model import PytorchQuantizedModel
  from torchmetrics import Metric
  import torch
  from bigdl.nano.utils.pytorch import patch_attrs_from_model_to_object
label_desc: Use image node_id 5 for calling the PytorchQuantization obj's underlying member method code with example usage: obj.sanity_check_before_execution(model, calib_dataloader, metric) without return types