code: def __attrs_post_init__(self):
      if self.base_image is not None:
          if self.distro is not None:
              logger.warning(
                  "docker base_image %s is used, 'distro=%s' option is ignored.",
                  self.base_image,
                  self.distro,
              )
          if self.python_version is not None:
              logger.warning(
                  "docker base_image %s is used, 'python=%s' option is ignored.",
                  self.base_image,
                  self.python_version,
              )
          if self.cuda_version is not None:
              logger.warning(
                  "docker base_image %s is used, 'cuda_version=%s' option is ignored.",
                  self.base_image,
                  self.cuda_version,
              )
          if self.system_packages:
              logger.warning(
                  "docker base_image %s is used, 'system_packages=%s' option is ignored.",
                  self.base_image,
                  self.system_packages,
              )
  
      if self.distro is not None and self.cuda_version is not None:
          supports_cuda = get_supported_spec("cuda")
          if self.distro not in supports_cuda:
              raise BentoMLException(
                  f'Distro "{self.distro}" does not support CUDA. Distros that support CUDA are: {supports_cuda}.'
              )
  
imports: from __future__ import annotations
  import logging
  import os
  import re
  import subprocess
  import sys
  import typing
  from shlex import quote
  from sys import version_info
  import attr
  import fs
  import fs.copy
  import psutil
  import yaml
  from pathspec import PathSpec
  from ...exceptions import BentoMLException
  from ...exceptions import InvalidArgument
  from ..configuration import BENTOML_VERSION
  from ..configuration import clean_bentoml_version
  from ..configuration import get_quiet_mode
  from ..container import generate_containerfile
  from ..container.frontend.dockerfile import ALLOWED_CUDA_VERSION_ARGS
  from ..container.frontend.dockerfile import CONTAINER_SUPPORTED_DISTROS
  from ..container.frontend.dockerfile import SUPPORTED_CUDA_VERSIONS
  from ..container.frontend.dockerfile import DistroSpec
  from ..container.frontend.dockerfile import get_supported_spec
  from ..container.generate import BENTO_PATH
  from ..utils import bentoml_cattr
  from ..utils import copy_file_to_fs_folder
  from ..utils import resolve_user_filepath
  from ..utils.dotenv import parse_dotenv
  from .build_dev_bentoml_whl import build_bentoml_editable_wheel
label_desc: Use image node_id 1 for calling the DockerOptions obj's underlying member method code with example usage: obj.__attrs_post_init__() without return types