class_docstr: Thread-safe call log.
  
  The call log is an ordered dictionary containing all previous function calls.
  Its keys are dictionaries representing the arguments and its values are the
  function values. As dictionaries can't be used as keys in dictionaries,
  a custom internal representation is used.
class_docstr_tok: ["Thread-safe","call","log",".","The","call","log","is","an","ordered","dictionary","containing","all","previous","function","calls",".","Its","keys","are","dictionaries","representing","the","arguments","and","its","values","are","the","function","values",".","As","dictionaries","ca","n't","be","used","as","keys","in","dictionaries",",","a","custom","internal","representation","is","used","."]
docstr: Returns the value corresponding to key. Can throw KeyError.
  
  :param key: arguments to retrieve function value for
  :type key: Args
docstr_tok: ["Returns","the","value","corresponding","to","key",".","Can","throw","KeyError",".",":","param","key",":","arguments","to","retrieve","function","value","for",":","type","key",":","Args"]
code: def __getitem__(self, key):
      """Returns the value corresponding to key. Can throw KeyError.
  
      :param key: arguments to retrieve function value for
      :type key: Args
      """
      assert type(key) is Args
      return self.data[key]
  
imports: import collections
  import functools
  import threading
  import operator
label_desc: Use image node_id 7 for calling the CallLog obj's underlying member method code with example usage: obj.__getitem__(key) and returns: self