code: def _merge_layout_objs(obj, subobj):
      
      for prop, val in subobj.items():
          if isinstance(val, dict) and prop in obj:
              # recursion
              _merge_layout_objs(obj[prop], val)
          elif (isinstance(val, list) and
                obj.get(prop, None) and
                isinstance(obj[prop][0], dict)):
  
              # append
              obj[prop].extend(val)
          else:
              # init/overwrite
              obj[prop] = copy.deepcopy(val)
docs: Merge layout objects recursively
  
      Note: This function mutates the input obj dict, but it does not mutate
      the subobj dict
  
      Parameters
      ----------
      obj: dict
          dict into which the sub-figure dict will be merged
      subobj: dict
          dict that sill be copied and merged into `obj`