class_docstr: Dict-like object that exposes its keys as attributes.
  
  Examples
  --------
  >>> d = AttrDict({'a': 1, 'b': 2})
  >>> d.a
  1
  >>> d = AttrDict({'a': 1, 'b': {'c': 3, 'd': 4}})
  >>> d.b.c
  3
class_docstr_tok: ["Dict-like","object","that","exposes","its","keys","as","attributes",".","Examples","--","--","--","--",">",">",">","d","=","AttrDict","(","{","'","a","'",":","1",",","'","b","'",":","2","}",")",">",">",">","d.a","1",">",">",">","d","=","AttrDict","(","{","'","a","'",":","1",",","'","b","'",":","{","'","c","'",":","3",",","'d","'",":","4","}","}",")",">",">",">","d.b.c","3"]
code: def __getattr__(self, attr):
      value = self[attr]
      if isinstance(value, dict):
          return AttrDict(value)
      return value
  
imports: import base64
  import inspect
  import logging
  import socket
  import subprocess
  import uuid
  from contextlib import closing
  from itertools import islice
  from sys import version_info
label_desc: Use image node_id 1 for calling the AttrDict obj's underlying member method code with example usage: obj.__getattr__(attr) and returns: value, AttrDict