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
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