class_docstr: Configuration file abstraction.
  
  The Config object makes the values of all config options available as
  attributes.
  
  It is exposed via the :py:class:`~sphinx.application.Sphinx`\ ``.config``
  and :py:class:`sphinx.environment.BuildEnvironment`\ ``.config`` attributes.
  For example, to get the value of :confval:`language`, use either
  ``app.config.language`` or ``env.config.language``.
class_docstr_tok: ["Configuration","file","abstraction",".","The","Config","object","makes","the","values","of","all","config","options","available","as","attributes",".","It","is","exposed","via","the",":","py",":","class",":","`","~sphinx.application.Sphinx","`","\\","``",".config","``","and",":","py",":","class",":","`","sphinx.environment.BuildEnvironment","`","\\","``",".config","``","attributes",".","For","example",",","to","get","the","value","of",":","confval",":","`","language","`",",","use","either","``","app.config.language","``","or","``","env.config.language","``","."]
code: def __getattr__(self, name: str) -> Any:
      if name in self._options:
          # first check command-line overrides
          if name in self._overrides:
              value = self._overrides[name]
              if not isinstance(value, str):
                  self.__dict__[name] = value
                  return value
              try:
                  value = self.convert_overrides(name, value)
              except ValueError as exc:
                  logger.warning("%s", exc)
              else:
                  self.__dict__[name] = value
                  return value
          # then check values from 'conf.py'
          if name in self._raw_config:
              self.__dict__[name] = value = self._raw_config[name]
              return value
          # finally, fall back to the default value
          default = self._options[name].default
          if callable(default):
              return default(self)
          self.__dict__[name] = default
          return default
      if name.startswith("_"):
          msg = f"{self.__class__.__name__!r} object has no attribute {name!r}"
          raise AttributeError(msg)
      msg = __("No such config value: %r") % name
      raise AttributeError(msg)
  
imports: from __future__ import annotations
  import sys
  import time
  import traceback
  import types
  import warnings
  from os import getenv, path
  from typing import TYPE_CHECKING, Any, Literal, NamedTuple, Union
  from sphinx.deprecation import RemovedInSphinx90Warning
  from sphinx.errors import ConfigError, ExtensionError
  from sphinx.locale import _, __
  from sphinx.util import logging
  from sphinx.util.osutil import fs_encoding
  from sphinx.util.typing import NoneType
label_desc: Use image node_id 10 for calling the Config obj's underlying member method code with example usage: obj.__getattr__(name) and returns: default, value, default, value, value