# Path: dftimewolf/lib/containers/interface.py
# class AttributeContainer():
#   CONTAINER_TYPE = None  # type: str
#   def __init__(self, attributes: Optional[List[Dict[str, Any]]] = None):
#   def GetAttributeNames(self) -> List[str]:


from datetime import datetime
from typing import Optional, Union, List, TYPE_CHECKING, Dict, Any
from dftimewolf.lib.containers import interface
  from libcloudforensics.providers.aws.internal.ebs import AWSVolume as AWSVol
  from libcloudforensics.providers.azure.internal.compute import AZComputeDisk
  from libcloudforensics.providers.gcp.internal.compute import GoogleComputeDisk
  import pandas
        the forensic evidence. Full definition in
        libcloudforensics.providers.gcp.internal.GoogleComputeDisk.
    platform (str): The cloud platform where the VM is located. One of
        {gcp,aws,azure}.
  """
  CONTAINER_TYPE = 'forensics_vm'

  def __init__(
      self, name: str, evidence_disk: Union["GoogleComputeDisk", "AWSVol",
                                            "AZComputeDisk"],
      platform: str) -> None:
    super(ForensicsVM, self).__init__()
    self.name = name
    self.evidence_disk = evidence_disk
    self.platform = platform


class URL(interface.AttributeContainer):
  """Attribute container definition for a Uniform Resource Locator.

  Attributes:
    path (str): The full path to the URL.
  """
  CONTAINER_TYPE = 'url'

  def __init__(self, path: str) -> None:
    super(URL, self).__init__()
    self.path = path



# Path: dftimewolf/lib/containers/interface.py
# class AttributeContainer():
#   CONTAINER_TYPE = None  # type: str
#   def __init__(self, attributes: Optional[List[Dict[str, Any]]] = None):
#   def GetAttributeNames(self) -> List[str]:


# Path: dftimewolf/lib/containers/containers.py
from datetime import datetime
from typing import Optional, Union, List, TYPE_CHECKING, Dict, Any
from dftimewolf.lib.containers import interface
  from libcloudforensics.providers.aws.internal.ebs import AWSVolume as AWSVol
  from libcloudforensics.providers.azure.internal.compute import AZComputeDisk
  from libcloudforensics.providers.gcp.internal.compute import GoogleComputeDisk
  import pandas

        the forensic evidence. Full definition in
        libcloudforensics.providers.gcp.internal.GoogleComputeDisk.
    platform (str): The cloud platform where the VM is located. One of
        {gcp,aws,azure}.
  """
  CONTAINER_TYPE = 'forensics_vm'

  def __init__(
      self, name: str, evidence_disk: Union["GoogleComputeDisk", "AWSVol",
                                            "AZComputeDisk"],
      platform: str) -> None:
    super(ForensicsVM, self).__init__()
    self.name = name
    self.evidence_disk = evidence_disk
    self.platform = platform


class URL(interface.AttributeContainer):
  """Attribute container definition for a Uniform Resource Locator.

  Attributes:
    path (str): The full path to the URL.
  """
  CONTAINER_TYPE = 'url'

  def __init__(self, path: str) -> None:
    super(URL, self).__init__()
    self.path = path



class GCEDisk(interface.AttributeContainer):