code: def merge(self, other, ac_merge=MS_DICTS, **options):
      
      _update_fn = _get_update_fn(ac_merge)
  
      if hasattr(other, "keys"):
          for key in other:
              _update_fn(self, other, key, **options)
      else:
          try:
              for key, val in other:
                  _update_fn(self, other, key, val=val, **options)
          except (ValueError, TypeError) as exc:  # Re-raise w/ info.
              raise type(exc)("%s other=%r" % (str(exc), other))
docs: Update (merge) a mapping object 'self' with other mapping object or an
      iterable yields (key, value) tuples based on merge strategy 'ac_merge'.
  
      :param others: a list of dict[-like] objects or (key, value) tuples
      :param another: optional keyword arguments to update self more
      :param ac_merge: Merge strategy to choose