# Path: dftimewolf/metawolf/session.py
# class SessionSettable:
#   def __init__(
#       self,
#       session_id: str,
#       recipe: str,
#       name: str,
#       description: str,
#       value_type: Any,
#       optional: bool = False
#   ) -> None:
#   def SetSessionID(self, session_id: str) -> None:
#   def IsOptional(self) -> bool:
#   def SetValue(self, value: Any) -> None:
#   def GetValue(self) -> Any:
# 
# Path: dftimewolf/metawolf/utils.py
# DFTIMEWOLF = 'dftimewolf'
# LAST_ACTIVE_SESSION = 'last_active_session'
# LAST_ACTIVE_RECIPE = 'last_active_recipe'
# LAST_ACTIVE_PROCESSES = 'last_active_processes'
# SESSION_ID_SETTABLE = 'session_id'
# def GetDFTool() -> dftimewolf_recipes.DFTimewolfTool:
# def CreateNewSessionID() -> str:
# def IsInt(value: str) -> bool:
# def IsFloat(value: str) -> bool:
# def Str2Bool(value: str) -> Optional[bool]:
# def GetType(value: str) -> Any:
# def CastToType(value: str, value_type: Any) -> Any:
# def Marshal(st: session.SessionSettable) -> Dict[str, Any]:
# def Unmarshal(st: Dict[str, Any]) -> session.SessionSettable:
# def RunInBackground(processes: List['output.MetawolfProcess']) -> bool:
#   def __init__(self, session_path: str = '') -> None:
#   def ReadSessionFromFile(self, unmarshal: bool = True) -> Dict[str, Any]:
#   def PrepareDFTimewolfCommand(
#       self,
#       recipe: str,
#       session_settables: Dict[str, session.SessionSettable]
#   ) -> List[str]:
#   def GetRecipes(self) -> Dict[str, str]:
# class MetawolfUtils:
# 
# Path: dftimewolf/metawolf/output.py
# PURPLE = '\033[95m'
# GREEN = '\033[92m'
# BLUE = '\033[94m'
# YELLOW = '\033[93m'
# RED = '\033[91m'
# ENDC = '\033[0m'
# DFTIMEWOLF = 'dftimewolf'
# CRITICAL_ERROR = '] CRITICAL'
# PYTHON_ERROR = "Traceback (most recent call last):"
# class MetawolfOutput:
# class MetawolfProcess:
#   def Welcome(self) -> str:
#   def Color(value: Any, color: str, escape: bool = False) -> str:
#   def __init__(
#       self,
#       session_id: Optional[str] = None,
#       cmd: Optional[List[str]] = None,
#       output_id: Optional[int] = None,
#       from_dict: Optional[Dict[str, str]] = None,
#       metawolf_utils: Optional[utils.MetawolfUtils] = None
#   ) -> None:
#   def Run(self) -> None:
#   def Poll(self) -> Optional[int]:
#   def Status(self) -> str:
#   def Read(self, show_warning: bool = True) -> str:
#   def Send(self, value: str) -> None:
#   def Terminate(self) -> str:
#   def Marshal(self) -> Dict[str, Any]:


import argparse
import json
import os
import shlex
import sys
import signal
import cmd2  # pylint: disable=import-error
import cmd2.ansi as cmd2_ansi  # pylint: disable=import-error
from types import FrameType
from typing import Dict, Optional, Union, Any, List
from prettytable import PrettyTable  # pylint: disable=import-error
from dftimewolf.metawolf import session
from dftimewolf.metawolf import utils
from dftimewolf.metawolf import output
    sessions (Dict[str, Dict[str, Dict[str, SessionSettable]]]): Dictionary
        which maps a session and recipe to the corresponding dictionary of
        settables.
    recipes (Dict[str, str]): Dictionary which maps recipe names to their
        description.
  """
  # Method names must follow the format do_xxx to be exposed to cmd2.
  # pylint: disable=invalid-name
  def __init__(
      self,
      session_path: str = DEFAULT_METAWOLF_STORAGE_PATH,
      transcript_files: Optional[List[str]] = None,
      colored_prompt: bool = True,
  ) -> None:
    """Initialize Metawolf.

    Args:
      session_path (str): Optional. The path to the file in which session
          information should be stored. If not provided, defaults to
          '~/.metawolf'.
      transcript_files (List[str]): Optional. A list of paths to transcripts.
          This can be used to e.g. test end-to-end interactions with Metawolf.
      colored_prompt (bool): Optional. True if the prompt should be displayed
          with colors.
    """
    super(Metawolf, self).__init__(
        shortcuts=cmd2.DEFAULT_SHORTCUTS,
        allow_cli_args=not transcript_files,
        transcript_files=transcript_files)


# Path: dftimewolf/metawolf/session.py
# class SessionSettable:
#   def __init__(
#       self,
#       session_id: str,
#       recipe: str,
#       name: str,
#       description: str,
#       value_type: Any,
#       optional: bool = False
#   ) -> None:
#   def SetSessionID(self, session_id: str) -> None:
#   def IsOptional(self) -> bool:
#   def SetValue(self, value: Any) -> None:
#   def GetValue(self) -> Any:
# 
# Path: dftimewolf/metawolf/utils.py
# DFTIMEWOLF = 'dftimewolf'
# LAST_ACTIVE_SESSION = 'last_active_session'
# LAST_ACTIVE_RECIPE = 'last_active_recipe'
# LAST_ACTIVE_PROCESSES = 'last_active_processes'
# SESSION_ID_SETTABLE = 'session_id'
# def GetDFTool() -> dftimewolf_recipes.DFTimewolfTool:
# def CreateNewSessionID() -> str:
# def IsInt(value: str) -> bool:
# def IsFloat(value: str) -> bool:
# def Str2Bool(value: str) -> Optional[bool]:
# def GetType(value: str) -> Any:
# def CastToType(value: str, value_type: Any) -> Any:
# def Marshal(st: session.SessionSettable) -> Dict[str, Any]:
# def Unmarshal(st: Dict[str, Any]) -> session.SessionSettable:
# def RunInBackground(processes: List['output.MetawolfProcess']) -> bool:
#   def __init__(self, session_path: str = '') -> None:
#   def ReadSessionFromFile(self, unmarshal: bool = True) -> Dict[str, Any]:
#   def PrepareDFTimewolfCommand(
#       self,
#       recipe: str,
#       session_settables: Dict[str, session.SessionSettable]
#   ) -> List[str]:
#   def GetRecipes(self) -> Dict[str, str]:
# class MetawolfUtils:
# 
# Path: dftimewolf/metawolf/output.py
# PURPLE = '\033[95m'
# GREEN = '\033[92m'
# BLUE = '\033[94m'
# YELLOW = '\033[93m'
# RED = '\033[91m'
# ENDC = '\033[0m'
# DFTIMEWOLF = 'dftimewolf'
# CRITICAL_ERROR = '] CRITICAL'
# PYTHON_ERROR = "Traceback (most recent call last):"
# class MetawolfOutput:
# class MetawolfProcess:
#   def Welcome(self) -> str:
#   def Color(value: Any, color: str, escape: bool = False) -> str:
#   def __init__(
#       self,
#       session_id: Optional[str] = None,
#       cmd: Optional[List[str]] = None,
#       output_id: Optional[int] = None,
#       from_dict: Optional[Dict[str, str]] = None,
#       metawolf_utils: Optional[utils.MetawolfUtils] = None
#   ) -> None:
#   def Run(self) -> None:
#   def Poll(self) -> Optional[int]:
#   def Status(self) -> str:
#   def Read(self, show_warning: bool = True) -> str:
#   def Send(self, value: str) -> None:
#   def Terminate(self) -> str:
#   def Marshal(self) -> Dict[str, Any]:


# Path: dftimewolf/metawolf/metawolf.py
import argparse
import json
import os
import shlex
import sys
import signal
import cmd2  # pylint: disable=import-error
import cmd2.ansi as cmd2_ansi  # pylint: disable=import-error
from types import FrameType
from typing import Dict, Optional, Union, Any, List
from prettytable import PrettyTable  # pylint: disable=import-error
from dftimewolf.metawolf import session
from dftimewolf.metawolf import utils
from dftimewolf.metawolf import output

    sessions (Dict[str, Dict[str, Dict[str, SessionSettable]]]): Dictionary
        which maps a session and recipe to the corresponding dictionary of
        settables.
    recipes (Dict[str, str]): Dictionary which maps recipe names to their
        description.
  """
  # Method names must follow the format do_xxx to be exposed to cmd2.
  # pylint: disable=invalid-name
  def __init__(
      self,
      session_path: str = DEFAULT_METAWOLF_STORAGE_PATH,
      transcript_files: Optional[List[str]] = None,
      colored_prompt: bool = True,
  ) -> None:
    """Initialize Metawolf.

    Args:
      session_path (str): Optional. The path to the file in which session
          information should be stored. If not provided, defaults to
          '~/.metawolf'.
      transcript_files (List[str]): Optional. A list of paths to transcripts.
          This can be used to e.g. test end-to-end interactions with Metawolf.
      colored_prompt (bool): Optional. True if the prompt should be displayed
          with colors.
    """
    super(Metawolf, self).__init__(
        shortcuts=cmd2.DEFAULT_SHORTCUTS,
        allow_cli_args=not transcript_files,
        transcript_files=transcript_files)


    self.metawolf_output = output.MetawolfOutput()