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 _maybe_wrap_in_attr_dict(value) -> Any:
      if not isinstance(value, Mapping):
          return value
      else:
          return AttrDict(value)
  
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 2 for calling the AttrDict obj's underlying member method code with example usage: obj._maybe_wrap_in_attr_dict(value) and returns: value, AttrDict