Package: inherit-docstring
inherit-docstringA python decorator to inherit docstring.Easily inherit docstrings from parent classes with@inherit_docstringdecorator, designed specifically forthe NumPy docstring style.Use inherit-docstring to streamline your documentation process, ensuring consistency and reducing redundancy!FeaturesAutomatic Inheritance: Just add the@inherit_docstringdecorator, and the child class will seamlessly inherit the parent's class and function docstrings.Structured Sections: Docstrings are broken into sections likeAttributes,Notes, etc. Each section is denoted by its title followed by---.Header Section: An exclusiveHeadersection is introduced for the starting portion of the docstring without a specific title.Parameter Sections: Certain sections are treated as parameter sections where the content is interpreted as parameter explanations. They include:AttributesParametersReturnsYieldsReceivesRaisesWarnsWarningsDeprecated sections: Sections starting with.. deprecated:: x.y.z, is parsed as deprecated sections.BehaviorIf a child class function lacks a docstring, it inherits the parent's docstring verbatim.For functions where both parent and child have docstrings:Section-wise Merge: Docstrings are combined on a section-by-section basis.Parameter-wise Merge: Within parameter sections, docstrings are combined parameter by parameter.Child Priority: When both parent and child provide docstrings for the same function or parameter, the child's version is prioritized.RequirementPython >=3.9Poetry (For development)InstallationBy pip:$ pip3 install inherit-docstringUsageAddinherit_docstringdecorator to the inherited class:from inherit_docstring import inherit_docstring

class Parent:
    """Parent class.

    This is an explanation.

    Attributes
    ----------
    name: str
        The name of
        the parent.
    age:
        The age. w/o type.

    Notes
    -----
    This is parent's note.
    """

    name: str = 'parent'
    age: int = 40

    def func1(self, param1: int, param2: int) -> int:
        """Parent's func1.

        Parameters
        ----------
        param1: int
            First input.
        param2: int
            Second input.

        Returns
        -------
        ret: int
            param1 + param2
        """

        return param1 + param2

    def func2(self) -> None:
        """Parent's func2.

        Returns
        -------
        ret: str
            something
        """

        return 'Something'

@inherit_docstring
class Child(Parent):
    """Child class.

    Attributes
    ----------
    sex: str
        Additional attributes.
        girl or boy.
    """

    sex: str = "boy"

    def func1(self, param1: int, param2: int) -> int:
        """Child's func1.

        Returns
        -------
        ret: int
            param1 - param2
        """

        return param1 - param2Child class' help will be:class Child(Parent)
 |  Child class.
 |
 |  Attributes
 |  ----------
 |  name: str
 |      The name of
 |      the parent.
 |  age:
 |      The age. w/o type.
 |  sex: str
 |      Additional attributes.
 |      girl or boy.
 |
 |  Notes
 |  -----
 |  This is parent's note.
 |
 |  Method resolution order:
 |      Child
 |      Parent
 |      builtins.object
 |
 |  Methods defined here:
 |
 |  func1(self, param1: int, param2: int) -> int
 |      Child's func1.
 |
 |      Parameters
 |      ----------
 |      param1: int
 |          First input.
 |      param2: int
 |          Second input.
 |
 |      Returns
 |      -------
 |      ret: int
 |          param1 - param2