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: Converts given dict to a valid call log used by logged functions.
  
  Given dictionary must have the following structure:
  ``{'args': {'argname': []}, 'values': []}``
  
  >>> log = CallLog.from_dict({'args': {'x': [1, 2]}, 'values': [2, 3]})
  >>> print(log)
  {'x': 1} --> 2
  {'x': 2} --> 3
docstr_tok: ["Converts","given","dict","to","a","valid","call","log","used","by","logged","functions",".","Given","dictionary","must","have","the","following","structure",":","``","{","'args","'",":","{","'argname","'",":","[","]","}",",","'values","'",":","[","]","}","``",">",">",">","log","=","CallLog.from_dict","(","{","'args","'",":","{","'","x","'",":","[","1",",","2","]","}",",","'values","'",":","[","2",",","3","]","}",")",">",">",">","print","(","log",")","{","'","x","'",":","1","}","--",">","2","{","'","x","'",":","2","}","--",">","3"]
code: def from_dict(d):
      """Converts given dict to a valid call log used by logged functions.
  
      Given dictionary must have the following structure:
      ``{'args': {'argname': []}, 'values': []}``
  
      >>> log = CallLog.from_dict({'args': {'x': [1, 2]}, 'values': [2, 3]})
      >>> print(log)
      {'x': 1} --> 2
      {'x': 2} --> 3
  
      """
      log = CallLog()
      keys = d["args"].keys()
      for k, v in zip(zip(*d["args"].values()), d["values"]):
          args = dict([(key, val) for key, val in zip(keys, k)])
          log.insert(v, **args)
      return log
  
imports: import collections
  import functools
  import threading
  import operator
label_desc: Use image node_id 17 for calling the CallLog obj's underlying member method code with example usage: obj.from_dict(d) and returns: log