class_docstr: Dictionary subclass with a few changes in behavior:
    1. all keys and values are stored and indexed as
       `HypertoolsBackend` instances
    2. indexing a `ParrotDict` with a key that doesn't exist returns
       the key (it's "parroted" back to you). The key is converted to
       a `HypertoolsBackend` instance if it is not already. Similar
       to `collections.defaultdict`, but does *not* add missing keys
       on indexing.
  
  Useful for filtering/replacing some values while leaving others
  when the to-be-replaced values are known in advance.
class_docstr_tok: ["Dictionary","subclass","with","a","few","changes","in","behavior",":","1.","all","keys","and","values","are","stored","and","indexed","as","`","HypertoolsBackend","`","instances","2.","indexing","a","`","ParrotDict","`","with","a","key","that","does","n't","exist","returns","the","key","(","it","'s","``","parroted","''","back","to","you",")",".","The","key","is","converted","to","a","`","HypertoolsBackend","`","instance","if","it","is","not","already",".","Similar","to","`","collections.defaultdict","`",",","but","does","*","not","*","add","missing","keys","on","indexing",".","Useful","for","filtering\/replacing","some","values","while","leaving","others","when","the","to-be-replaced","values","are","known","in","advance","."]
code: def __missing__(self, key):
      return HypertoolsBackend(key)
  
imports: import inspect
  import sys
  import traceback
  import warnings
  from contextlib import contextmanager, redirect_stdout
  from functools import wraps
  from io import StringIO
  from os import getenv
  from typing import Iterable
  import matplotlib
  import matplotlib.pyplot
  from .._shared.exceptions import HypertoolsBackendError
label_desc: Use image node_id 4 for calling the ParrotDict obj's underlying member method code with example usage: obj.__missing__(key) and returns: HypertoolsBackend