code: def composite_update(item, update_dict, soft=False):
          
          item = Composite(item)
  
          for part in item.get_content():
              if soft:
                  for key, value in update_dict.items():
                      if key not in part:
                          part[key] = value
              else:
                  part.update(update_dict)
          return item
docs: Takes a Composite (item) and updates all entries with values from
          update_dict.  Updates can be soft in which case existing values are not
          overwritten.
  
          If item is of type string it is first converted to a Composite