text: """Init file for Hass.io Docker object."""
  from ipaddress import IPv4Address
  import logging
  import os
  from typing import Awaitable
  
  import docker
  
  from ..coresys import CoreSysAttributes
  from ..exceptions import DockerAPIError
  from .interface import DockerInterface
  
  _LOGGER: logging.Logger = logging.getLogger(__name__)
  
  
  class DockerSupervisor(DockerInterface, CoreSysAttributes):
      """Docker Hass.io wrapper for Supervisor."""
  
      @property
      def name(self) -> str:
          """Return name of Docker container."""
          return os.environ["SUPERVISOR_NAME"]
  
      @property
      def ip_address(self) -> IPv4Address:
          """Return IP address of this container."""
          return self.sys_docker.network.supervisor
  
      def _attach(self, tag: str) -> None:
          """Attach to running docker container.
  
          Need run inside executor.
          """
          try:
              docker_container = self.sys_docker.containers.get(self.name)
          except docker.errors.DockerException:
              raise DockerAPIError() from None
  
          self._meta = docker_container.attrs
          _LOGGER.info(
              "Attach to Supervisor %s with version %s",
              self.image,
              self.sys_supervisor.version,
          )
  
          # If already attach
          if docker_container in self.sys_docker.network.containers:
              return
  
          # Attach to network
          _LOGGER.info("Connect Supervisor to Hass.io Network")
          self.sys_docker.network.attach_container(
              docker_container, alias=["hassio"], ipv4=self.sys_docker.network.supervisor
          )
  
      def retag(self) -> Awaitable[None]:
          """Retag latest image to version."""
          return self.sys_run_in_executor(self._retag)
  
      def _retag(self) -> None:
          """Retag latest image to version.
  
          Need run inside executor.
          """
          try:
              docker_container = self.sys_docker.containers.get(self.name)
  
              docker_container.image.tag(self.image, tag=self.version)
              docker_container.image.tag(self.image, tag="latest")
          except docker.errors.DockerException as err:
              _LOGGER.error("Can't retag supervisor version: %s", err)
              raise DockerAPIError() from None
  