# Path: dftimewolf/lib/logging_utils.py
# class WolfLogger(logging.getLoggerClass()):  # type: ignore
#   """Custom logging Class with a `success` logging function."""
# 
#   def success(self, *args: Any, **kwargs: Any) -> None:  # pylint: disable=invalid-name
#     """Logs a success message."""
#     super(WolfLogger, self).log(SUCCESS, *args, **kwargs)


import getpass
import random
import tempfile
import time
from typing import Dict, List, Optional, Tuple, Any, Union
from turbinia import TurbiniaException
from turbinia import client as turbinia_client
from turbinia import config as turbinia_config
from turbinia import evidence, output_manager
from turbinia.message import TurbiniaRequest
from dftimewolf.lib.logging_utils import WolfLogger
# -*- coding: utf-8 -*-
"""Base class for turbinia interactions."""




# pylint: disable=abstract-method,no-member
class TurbiniaProcessorBase(object):
  """Base class for processing with Turbinia.

  Attributes:
    turbinia_config_file (str): Full path to the Turbinia config file to use.
    client (TurbiniaClient): Turbinia client.
    instance (str): name of the Turbinia instance
    project (str): name of the GCP project containing the disk to process.
    run_all_jobs (bool): Whether to run all jobs or to remove slow-running jobs:
        'StringsJob', 'BinaryExtractorJob', 'BulkExtractorJob', 'PhotorecJob'.
    sketch_id (int): The Timesketch sketch id
    turbinia_region (str): GCP region in which the Turbinia server is running.
    turbinia_zone (str): GCP zone in which the Turbinia server is running.
  """


# Path: dftimewolf/lib/logging_utils.py
# class WolfLogger(logging.getLoggerClass()):  # type: ignore
#   """Custom logging Class with a `success` logging function."""
# 
#   def success(self, *args: Any, **kwargs: Any) -> None:  # pylint: disable=invalid-name
#     """Logs a success message."""
#     super(WolfLogger, self).log(SUCCESS, *args, **kwargs)


# Path: dftimewolf/lib/processors/turbinia_base.py
import getpass
import random
import tempfile
import time
from typing import Dict, List, Optional, Tuple, Any, Union
from turbinia import TurbiniaException
from turbinia import client as turbinia_client
from turbinia import config as turbinia_config
from turbinia import evidence, output_manager
from turbinia.message import TurbiniaRequest
from dftimewolf.lib.logging_utils import WolfLogger

# -*- coding: utf-8 -*-
"""Base class for turbinia interactions."""




# pylint: disable=abstract-method,no-member
class TurbiniaProcessorBase(object):
  """Base class for processing with Turbinia.

  Attributes:
    turbinia_config_file (str): Full path to the Turbinia config file to use.
    client (TurbiniaClient): Turbinia client.
    instance (str): name of the Turbinia instance
    project (str): name of the GCP project containing the disk to process.
    run_all_jobs (bool): Whether to run all jobs or to remove slow-running jobs:
        'StringsJob', 'BinaryExtractorJob', 'BulkExtractorJob', 'PhotorecJob'.
    sketch_id (int): The Timesketch sketch id
    turbinia_region (str): GCP region in which the Turbinia server is running.
    turbinia_zone (str): GCP zone in which the Turbinia server is running.
  """


  def __init__(self, logger: WolfLogger) -> None: