docstr: checks permitted range for continuous features
  TODO: add comments as to where this is used if this function is necessary, else remove.
code: def check_permitted_range(self, permitted_range):
      """checks permitted range for continuous features
      TODO: add comments as to where this is used if this function is necessary, else remove.
      """
      if permitted_range is not None:
          # if not self.data_interface.check_features_range(permitted_range):
          #   raise ValueError(
          #       "permitted range of features should be within their original range")
          # else:
          self.data_interface.permitted_range = permitted_range
          self.minx, self.maxx = self.data_interface.get_minx_maxx(
              normalized=True
          )
          self.cont_minx = []
          self.cont_maxx = []
          for feature in self.data_interface.continuous_feature_names:
              self.cont_minx.append(
                  self.data_interface.permitted_range[feature][0]
              )
              self.cont_maxx.append(
                  self.data_interface.permitted_range[feature][1]
              )
  
imports: import pickle
  from abc import ABC, abstractmethod
  from collections.abc import Iterable
  from typing import Any, List
  import numpy
  import pandas
  from raiutils.exceptions import UserConfigValidationException
  from sklearn.neighbors import KDTree
  from tqdm import tqdm
  from dice_ml.constants import ModelTypes, _PostHocSparsityTypes
  from dice_ml.counterfactual_explanations import CounterfactualExplanations
label_desc: Use image node_id 23 for calling the ExplainerBase obj's underlying member method code with example usage: obj.check_permitted_range(permitted_range) without return types