# Path: l2tscaffolder/lib/definitions.py
# DEFINITION_UNDEFINED = 'undefined'
# DEFINITION_PLASO = 'plaso'
# DEFINITION_TIMESKETCH = 'timesketch'
# DEFINITION_TURBINIA = 'turbinia'
# 
# Path: l2tscaffolder/lib/errors.py
# class Error(Exception):
# class EngineNotConfigured(Error):
# class FileHandlingError(Error):
# class NoValidDefinition(Error):
# class ScaffolderNotConfigured(Error):
# class UnableToConfigure(Error):
# class WrongCliInput(Error):


from typing import Dict
from typing import Iterator
from typing import List
from typing import Tuple
from l2tscaffolder.lib import definitions
from l2tscaffolder.lib import errors

  def GetFilesToCopy(self) -> Iterator[Tuple[str, str]]:
    """Return a list of files that need to be copied.

    If not overwritten this will return an emtpy iterator.

    Yields:
      tuple (str, str): file name of source and destination.
    """
    return iter(())

  def RaiseIfNotReady(self):
    """Checks to see if all attributes are set to start generating files.

    By default this function only checks to see if all attributes defined
    in questions and Jinja2 context have values and are not empty.

    Raises:
      ScaffolderNotConfigured: if the scaffolder is not fully configured.
    """
    for question in self.GetQuestions():
      attribute = getattr(self, question.attribute, None)

      if not attribute:
        raise errors.ScaffolderNotConfigured(
            'Attribute [{0:s}] is not set.'.format(
                question.attribute))

    for jinja_context_attribute in self.GetJinjaContext():
      if not jinja_context_attribute:

# Path: l2tscaffolder/lib/definitions.py
# DEFINITION_UNDEFINED = 'undefined'
# DEFINITION_PLASO = 'plaso'
# DEFINITION_TIMESKETCH = 'timesketch'
# DEFINITION_TURBINIA = 'turbinia'
# 
# Path: l2tscaffolder/lib/errors.py
# class Error(Exception):
# class EngineNotConfigured(Error):
# class FileHandlingError(Error):
# class NoValidDefinition(Error):
# class ScaffolderNotConfigured(Error):
# class UnableToConfigure(Error):
# class WrongCliInput(Error):


# Path: l2tscaffolder/scaffolders/interface.py
from typing import Dict
from typing import Iterator
from typing import List
from typing import Tuple
from l2tscaffolder.lib import definitions
from l2tscaffolder.lib import errors


  def GetFilesToCopy(self) -> Iterator[Tuple[str, str]]:
    """Return a list of files that need to be copied.

    If not overwritten this will return an emtpy iterator.

    Yields:
      tuple (str, str): file name of source and destination.
    """
    return iter(())

  def RaiseIfNotReady(self):
    """Checks to see if all attributes are set to start generating files.

    By default this function only checks to see if all attributes defined
    in questions and Jinja2 context have values and are not empty.

    Raises:
      ScaffolderNotConfigured: if the scaffolder is not fully configured.
    """
    for question in self.GetQuestions():
      attribute = getattr(self, question.attribute, None)

      if not attribute:
        raise errors.ScaffolderNotConfigured(
            'Attribute [{0:s}] is not set.'.format(
                question.attribute))

    for jinja_context_attribute in self.GetJinjaContext():
      if not jinja_context_attribute:

        raise errors.ScaffolderNotConfigured((