class_docstr: Defines the top-level Model Analysis API.
  Use RAIInsights to analyze errors, explain the most important
  features, compute counterfactuals and run causal analysis in a
  single API.
class_docstr_tok: ["Defines","the","top-level","Model","Analysis","API",".","Use","RAIInsights","to","analyze","errors",",","explain","the","most","important","features",",","compute","counterfactuals","and","run","causal","analysis","in","a","single","API","."]
docstr: Ensure that the model outputs are as expected.
  
  Raises an UserConfigValidationException if the model does not have the
  expected required methods, fails while calling any of its methods, or
  changes the input features.
  
  :param input_data: the data to pass to the model
  :type input_data: Union[pd.DataFrame, np.array]
docstr_tok: ["Ensure","that","the","model","outputs","are","as","expected",".","Raises","an","UserConfigValidationException","if","the","model","does","not","have","the","expected","required","methods",",","fails","while","calling","any","of","its","methods",",","or","changes","the","input","features",".",":","param","input_data",":","the","data","to","pass","to","the","model",":","type","input_data",":","Union","[","pd.DataFrame",",","np.array","]"]
code: def _ensure_model_outputs(self, *, input_data):
      """Ensure that the model outputs are as expected.
  
      Raises an UserConfigValidationException if the model does not have the
      expected required methods, fails while calling any of its methods, or
      changes the input features.
  
      :param input_data: the data to pass to the model
      :type input_data: Union[pd.DataFrame, np.array]
      """
      input_features = input_data.columns
      for method in MODEL_METHODS[self.task_type]:
          if (
              not hasattr(self.model, method.name)
              and not method.optional
          ):
              raise UserConfigValidationException(
                  _MODEL_METHOD_EXCEPTION_MESSAGE.format(method.name)
              )
          try:
              model_method = getattr(self.model, method.name)
          except Exception:
              if not method.optional:
                  raise UserConfigValidationException(
                      _MODEL_METHOD_EXCEPTION_MESSAGE.format(
                          method.name
                      )
                  )
              # skip if method is optional and unavailable
              continue
          try:
              model_method(input_data)
          except Exception:
              raise UserConfigValidationException(
                  _MODEL_METHOD_EXCEPTION_MESSAGE.format(method.name)
              )
          self._validate_features_same(
              input_features, input_data, method.name
          )
  
imports: import json
  import pickle
  import warnings
  from enum import Enum
  from pathlib import Path
  from typing import Any, List, Optional, Union
  import numpy
  import pandas
  from erroranalysis._internal.cohort_filter import FilterDataWithCohortFilters
  from erroranalysis._internal.process_categoricals import process_categoricals
  from raiutils.data_processing import convert_to_list
  from raiutils.exceptions import SystemErrorException, UserConfigValidationException
  from raiutils.models import Forecasting, ModelTask, SKLearn
  from responsibleai._interfaces import Dataset, RAIInsightsData, TabularDatasetMetadata
  from responsibleai._internal._forecasting_wrappers import _wrap_model
  from responsibleai._internal.constants import FileFormats, ManagerNames, Metadata, SerializationAttributes
  from responsibleai.feature_metadata import FeatureMetadata
  from responsibleai.managers.causal_manager import CausalManager
  from responsibleai.managers.counterfactual_manager import CounterfactualManager
  from responsibleai.managers.data_balance_manager import DataBalanceManager
  from responsibleai.managers.error_analysis_manager import ErrorAnalysisManager
  from responsibleai.managers.explainer_manager import ExplainerManager
  from responsibleai.rai_insights.rai_base_insights import RAIBaseInsights
label_desc: Use image node_id 30 for calling the RAIInsights obj's underlying member method code with example usage: obj._ensure_model_outputs() without return types