code: def recursive_update(target, new):
      """Recursively update one dictionary using another.
  
      None values will delete their keys.
      """
      for k, v in new.items():
          if isinstance(v, dict):
              if k not in target:
                  target[k] = {}
              recursive_update(target[k], v)
              if not target[k]:
                  # Prune empty subdicts
                  del target[k]
  
          elif v is None:
              target.pop(k, None)
  
          else:
              target[k] = v
  
file_path: catboost/contrib/python/traitlets/py2/traitlets/config/manager.py
imports: import errno
  import io
  import json
  import os
  from six import PY3
  from traitlets.config import LoggingConfigurable
  from traitlets.traitlets import Unicode
label_desc: Use image node_id 1 for calling a global function with example usage: recursive_update(target, new) without return types