docs: def peer_echo(includes=None, force=False):
      """Echo filtered attributes back onto the same relation for storage.
  
      This is a requirement to use the peerstorage module - it needs to be called
      from the peer relation's changed hook.
  
      If Juju leader support exists this will be a noop unless force is True.
      """
      try:
          is_leader()
      except NotImplementedError:
          pass
      else:
          if not force:
              return  # NOOP if leader-election is supported
  
      # Use original non-leader calls
      relation_get = _relation_get
      relation_set = _relation_set
  
      rdata = relation_get()
      echo_data = {}
      if includes is None:
          echo_data = rdata.copy()
          for ex in ['private-address', 'public-address']:
              if ex in echo_data:
                  echo_data.pop(ex)
      else:
          for attribute, value in six.iteritems(rdata):
              for include in includes:
                  if include in attribute:
                      echo_data[attribute] = value
      if len(echo_data) > 0:
          relation_set(relation_settings=echo_data)