class_docstr: We use AttrDict to wrap up dictionary values from secrets
  to provide dot access to nested secrets
class_docstr_tok: ["We","use","AttrDict","to","wrap","up","dictionary","values","from","secrets","to","provide","dot","access","to","nested","secrets"]
code: def __getattr__(self, attr_name: str) -> Any:
      try:
          value = self.__nested_secrets__[attr_name]
          return self._maybe_wrap_in_attr_dict(value)
      except KeyError:
          raise AttributeError(_missing_attr_error_message(attr_name))
  
imports: import os
  import threading
  from copy import deepcopy
  from typing import Any, Dict, ItemsView, Iterator, KeysView, List, Mapping, NoReturn, Optional, ValuesView
  import toml
  from blinker import Signal
  from typing_extensions import Final
  import streamlit
  import streamlit.watcher.path_watcher
  from streamlit import file_util, runtime
  from streamlit.logger import get_logger
label_desc: Use image node_id 6 for calling the AttrDict obj's underlying member method code with example usage: obj.__getattr__(attr_name) and returns: self