docs: def give_repr(cls):  # pragma: no cover
      r"""Patch a class to give it a generic __repr__ method
      that works by inspecting the instance dictionary.
  
      Parameters
      ----------
      cls: type
          The class to add a generic __repr__ to.
  
      Returns
      -------
      cls: type
          The passed class is returned
      """
      def reprer(self):
          attribs = ', '.join(["%s=%r" % (k, v) for k, v in self.__dict__.items() if not k.startswith("_")])
          wrap = "{self.__class__.__name__}({attribs})".format(self=self, attribs=attribs)
          return wrap
      cls.__repr__ = reprer
      return cls