class_docstr: A custom configuration file parser for SKLL.
docstr: Validate specified options.
  
  The following checks are used for validation::
  
      (a) no invalid options are specified
      (b) options are not specified in multiple sections
      (c) options are specified in the correct section
  
  Raises
  ------
  KeyError
      If configuration file contains unrecognized options.
  
  KeyError
      If any options are defined in multiple sections.
  
  KeyError
      If any options are not defined in the appropriate sections.
docstr_tok: ["Validate","specified","options",".","The","following","checks","are","used","for","validation",":",":","(","a",")","no","invalid","options","are","specified","(","b",")","options","are","not","specified","in","multiple","sections","(","c",")","options","are","specified","in","the","correct","section","Raises","--","--","--","KeyError","If","configuration","file","contains","unrecognized","options",".","KeyError","If","any","options","are","defined","in","multiple","sections",".","KeyError","If","any","options","are","not","defined","in","the","appropriate","sections","."]
code: def validate(self) -> None:
      """
      Validate specified options.
  
      The following checks are used for validation::
  
          (a) no invalid options are specified
          (b) options are not specified in multiple sections
          (c) options are specified in the correct section
  
      Raises
      ------
      KeyError
          If configuration file contains unrecognized options.
  
      KeyError
          If any options are defined in multiple sections.
  
      KeyError
          If any options are not defined in the appropriate sections.
      """
      invalid_options = self._find_invalid_options()
      if invalid_options:
          raise KeyError(
              "Configuration file contains the following "
              f"unrecognized options: {list(invalid_options)}"
          )
  
      (
          incorrectly_specified_options,
          multiply_specified_options,
      ) = self._find_ill_specified_options()
      if multiply_specified_options:
          raise KeyError(
              "The following are defined in multiple sections: "
              f"{[t[0] for t in multiply_specified_options]}"
          )
      if incorrectly_specified_options:
          raise KeyError(
              "The following are not defined in the appropriate "
              f"sections: {[t[0] for t in incorrectly_specified_options]}"
          )
  
imports: import configparser
  import itertools
  import logging
  import os
  from numbers import Number
  from os.path import basename, join
  from pathlib import Path
  from typing import Any, Dict, List, Optional, Set, Tuple, Union
  import numpy
  from ruamel.yaml import YAML
  from skll.data.readers import safe_float
  from skll.types import ClassMap, FoldMapping, LabelType, PathOrStr
  from skll.utils.constants import PROBABILISTIC_METRICS, VALID_FEATURE_SCALING_OPTIONS, VALID_SAMPLERS, VALID_TASKS
  from skll.utils.logging import get_skll_logger
  from .utils import _munge_featureset_name, _parse_and_validate_metrics, fix_json, load_cv_folds, locate_file
label_desc: Use image node_id 4 for calling the SKLLConfigParser obj's underlying member method code with example usage: obj.validate() without return types