code: def get_obj(source, extract=None, child_transform=None, transform=None):
    
    if extract is None:
      obj = source
    else:
      obj = extract(source)
  
    if child_transform is None:
      data = obj
    else:
      data = dict()
      for k, v in child_transform.items():
        try:
          data[k] = v(obj)
        except Exception as ex:
          raise Exception("An error occurred with child {0}".format(k)) from ex
  
    if transform is None:
      return data
    else:
      return transform(data)
docs: Maps an object based on a key->extractor child_transform dict.