# 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
      path (str): S3 object path.
    """
    super(AWSS3Object, self).__init__()
    if path.startswith('s3://'):
      self.path = path
    else:
      self.path = 's3://' + path


class AWSVolume(interface.AttributeContainer):
  """Attribute container for an AWS Volume.

  Attributes:
    vol_id (str): The volume id (vol-xxxxxxxx)."""

  CONTAINER_TYPE = 'aws_volume'

  def __init__(self, vol_id: str) -> None:
    super(AWSVolume, self).__init__()
    self.id = vol_id


class AWSSnapshot(interface.AttributeContainer):
  """Attribute container for an AWS Snapshot.

  Attributes:
    snap_id (str): The snapshot id (snap-xxxxxxxx)."""

  CONTAINER_TYPE = 'aws_snapshot'


# 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

      path (str): S3 object path.
    """
    super(AWSS3Object, self).__init__()
    if path.startswith('s3://'):
      self.path = path
    else:
      self.path = 's3://' + path


class AWSVolume(interface.AttributeContainer):
  """Attribute container for an AWS Volume.

  Attributes:
    vol_id (str): The volume id (vol-xxxxxxxx)."""

  CONTAINER_TYPE = 'aws_volume'

  def __init__(self, vol_id: str) -> None:
    super(AWSVolume, self).__init__()
    self.id = vol_id


class AWSSnapshot(interface.AttributeContainer):
  """Attribute container for an AWS Snapshot.

  Attributes:
    snap_id (str): The snapshot id (snap-xxxxxxxx)."""

  CONTAINER_TYPE = 'aws_snapshot'


  def __init__(self, snap_id: str) -> None: