code: def dict_patch(tgt_dict, src_dict):
      """Recursively patch :attr:`tgt_dict` by adding items from :attr:`src_dict`
      that do not exist in :attr:`tgt_dict`.
  
      If respective items in :attr:`src_dict` and :attr:`tgt_dict` are both
      `dict`, the :attr:`tgt_dict` item is patched recursively.
  
      Args:
          tgt_dict (dict): Target dictionary to patch.
          src_dict (dict): Source dictionary.
  
      Return:
          dict: The new :attr:`tgt_dict` that is patched.
      """
      if src_dict is None:
          return tgt_dict
  
      for key, value in src_dict.items():
          if key not in tgt_dict:
              tgt_dict[key] = copy.deepcopy(value)
          elif isinstance(value, dict) and isinstance(
              tgt_dict[key], dict
          ):
              tgt_dict[key] = dict_patch(tgt_dict[key], value)
      return tgt_dict
  
imports: from typing import List, Union
  import inspect
  import funcsigs
  from pydoc import locate
  import copy
  import collections
  import numpy
  import tensorflow
  from texar.tf.hyperparams import HParams
  from texar.tf.utils.dtypes import is_str, is_callable, compat_as_text, _maybe_list_to_array
label_desc: Use image node_id 14 for calling a global function with example usage: dict_patch(tgt_dict, src_dict) and returns: tgt_dict, tgt_dict