code: def __init__(self, config: Config):
      super().__init__(config)
      self.lower: Union[str, bool] = self._params()["lower"]
      if not isinstance(self.lower, bool):
          self.lower = util.strtobool(self.lower)
      self.group = list(self._params()["group"])
      self.expected = config.get_resource(self._params()["expected"])
      self.cache = config.cache
      self.p_value = float(self._params()["p_value"])
  
file_path: Ciphey/ciphey/basemods/Crackers/caesar.py
imports: from distutils import util
  from typing import Dict, List, Optional, Union
  import cipheycore
  import logging
  from rich.logging import RichHandler
  from ciphey.common import fix_case
  from ciphey.iface import Config, Cracker, CrackInfo, CrackResult, ParamSpec, registry
label_desc: Use image node_id 5 to create a new Caesar object from inherited base classes: Cracker with example: obj = Caesar(config)