class_docstr: A Theme is a set of HTML templates and configurations.
  
  This class supports both theme directory and theme archive (zipped theme).
class_docstr_tok: ["A","Theme","is","a","set","of","HTML","templates","and","configurations",".","This","class","supports","both","theme","directory","and","theme","archive","(","zipped","theme",")","."]
docstr: Return a dictionary of theme options and their values.
docstr_tok: ["Return","a","dictionary","of","theme","options","and","their","values","."]
code: def get_options(
      self, overrides: dict[str, Any] | None = None
  ) -> dict[str, Any]:
      """Return a dictionary of theme options and their values."""
      if overrides is None:
          overrides = {}
  
      if self.base:
          options = self.base.get_options()
      else:
          options = {}
  
      with contextlib.suppress(configparser.NoSectionError):
          options.update(self.config.items("options"))
  
      for option, value in overrides.items():
          if option not in options:
              logger.warning(
                  __("unsupported theme option %r given") % option
              )
          else:
              options[option] = value
  
      return options
  
imports: from __future__ import annotations
  import configparser
  import os
  import shutil
  import sys
  import tempfile
  from os import path
  from typing import TYPE_CHECKING, Any
  from zipfile import ZipFile
  import contextlib
  from sphinx import package_dir
  from sphinx.config import check_confval_types
  from sphinx.errors import ThemeError
  from sphinx.locale import __
  from sphinx.util import logging
  from sphinx.util.osutil import ensuredir
label_desc: Use image node_id 4 for calling the Theme obj's underlying member method code with example usage: obj.get_options(overrides) and returns: options