code: def _extract_msg(args, kwargs, msg_idx, default_msg, non_msg_params):
      '''Extracts the ``msg`` argument from the passed ``args``.
  
      Returns
      -------
      tuple
          The found ``msg``, the args and kwargs with that ``msg``
          removed, and any remaining positional args after ``msg``.
      '''
      rem_args = []
      if 'msg' in kwargs:
          msg = kwargs.pop('msg')
      elif len(args) > non_msg_params and msg_idx < len(args):
          msg = args[msg_idx]
          if 0 <= msg_idx:
              rem_args = args[msg_idx + 1:]
          args = args[:msg_idx]
      else:
          msg = default_msg
      return msg, args, rem_args, kwargf _extract_msg(args, kwargs, msg_idx, default_msg, non_msg_params):
      '''Extracts the ``msg`` argument from the passed ``args``.
  
      Returns
      -------
      tuple
          The found ``msg``, the args and kwargs with that ``msg``
          removed, and any remaining positional args after ``msg``.
      '''
      rem_args = []
      if 'msg' in kwargs:
          msg = kwargs.pop('msg')
      elif len(args) > non_msg_params and msg_idx < len(args):
          msg = args[msg_idx]
          if 0 <= msg_idx:
              rem_args = args[msg_idx + 1:]
          args = args[:msg_idx]
      else:
          msg = default_msg
      return msg, args, rem_args, kwargs
docs: Extracts the ``msg`` argument from the passed ``args``.
  
      Returns
      -------
      tuple
          The found ``msg``, the args and kwargs with that ``msg``
          removed, and any remaining positional args after ``msg``.