inherit-docstring


Nameinherit-docstring JSON
Version 0.1.4 PyPI version JSON
download
home_pagehttps://github.com/rcmdnk/inherit-docstring
SummaryA python decorator to inherit docstring.
upload_time2024-05-22 23:53:36
maintainerNone
docs_urlNone
authorrcmdnk
requires_python<4.0,>=3.9
licenseApache-2.0
keywords docstring inherit decorator
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # inherit-docstring

[![test](https://github.com/rcmdnk/inherit-docstring/actions/workflows/test.yml/badge.svg)](https://github.com/rcmdnk/inherit-docstring/actions/workflows/test.yml)
[![test coverage](https://img.shields.io/badge/coverage-check%20here-blue.svg)](https://github.com/rcmdnk/inherit-docstring/tree/coverage)

A python decorator to inherit docstring.

Easily inherit docstrings from parent classes with `@inherit_docstring` decorator, designed specifically for [the NumPy docstring style](https://numpydoc.readthedocs.io/en/latest/format.html).

Use inherit-docstring to streamline your documentation process, ensuring consistency and reducing redundancy!

## Features

- Automatic Inheritance: Just add the `@inherit_docstring` decorator, and the child class will seamlessly inherit the parent's class and function docstrings.
- Structured Sections: Docstrings are broken into sections like `Attributes`, `Notes`, etc. Each section is denoted by its title followed by `---`.
- Header Section: An exclusive `Header` section 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:
  - Attributes
  - Parameters
  - Returns
  - Yields
  - Receives
  - Raises
  - Warns
  - Warnings
- Deprecated sections: Sections starting with `.. deprecated:: x.y.z`, is parsed as deprecated sections.

## Behavior

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

## Requirement

- Python >=3.9
- Poetry (For development)

## Installation

By pip:

```
$ pip3 install inherit-docstring
```

## Usage

Add `inherit_docstring` decorator 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 - param2
```

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

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/rcmdnk/inherit-docstring",
    "name": "inherit-docstring",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.9",
    "maintainer_email": null,
    "keywords": "docstring, inherit, decorator",
    "author": "rcmdnk",
    "author_email": "rcmdnk@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/83/f8/2110b342dc41fb6169b952b9673704cf41735c71a0947690dbb9844917f9/inherit_docstring-0.1.4.tar.gz",
    "platform": null,
    "description": "# inherit-docstring\n\n[![test](https://github.com/rcmdnk/inherit-docstring/actions/workflows/test.yml/badge.svg)](https://github.com/rcmdnk/inherit-docstring/actions/workflows/test.yml)\n[![test coverage](https://img.shields.io/badge/coverage-check%20here-blue.svg)](https://github.com/rcmdnk/inherit-docstring/tree/coverage)\n\nA python decorator to inherit docstring.\n\nEasily inherit docstrings from parent classes with `@inherit_docstring` decorator, designed specifically for [the NumPy docstring style](https://numpydoc.readthedocs.io/en/latest/format.html).\n\nUse inherit-docstring to streamline your documentation process, ensuring consistency and reducing redundancy!\n\n## Features\n\n- Automatic Inheritance: Just add the `@inherit_docstring` decorator, and the child class will seamlessly inherit the parent's class and function docstrings.\n- Structured Sections: Docstrings are broken into sections like `Attributes`, `Notes`, etc. Each section is denoted by its title followed by `---`.\n- Header Section: An exclusive `Header` section is introduced for the starting portion of the docstring without a specific title.\n- Parameter Sections: Certain sections are treated as parameter sections where the content is interpreted as parameter explanations. They include:\n  - Attributes\n  - Parameters\n  - Returns\n  - Yields\n  - Receives\n  - Raises\n  - Warns\n  - Warnings\n- Deprecated sections: Sections starting with `.. deprecated:: x.y.z`, is parsed as deprecated sections.\n\n## Behavior\n\n- If a child class function lacks a docstring, it inherits the parent's docstring verbatim.\n- For functions where both parent and child have docstrings:\n  - Section-wise Merge: Docstrings are combined on a section-by-section basis.\n  - Parameter-wise Merge: Within parameter sections, docstrings are combined parameter by parameter.\n  - Child Priority: When both parent and child provide docstrings for the same function or parameter, the child's version is prioritized.\n\n## Requirement\n\n- Python >=3.9\n- Poetry (For development)\n\n## Installation\n\nBy pip:\n\n```\n$ pip3 install inherit-docstring\n```\n\n## Usage\n\nAdd `inherit_docstring` decorator to the inherited class:\n\n```\nfrom inherit_docstring import inherit_docstring\n\nclass Parent:\n    \"\"\"Parent class.\n\n    This is an explanation.\n\n    Attributes\n    ----------\n    name: str\n        The name of\n        the parent.\n    age:\n        The age. w/o type.\n\n    Notes\n    -----\n    This is parent's note.\n    \"\"\"\n\n    name: str = 'parent'\n    age: int = 40\n\n    def func1(self, param1: int, param2: int) -> int:\n        \"\"\"Parent's func1.\n\n        Parameters\n        ----------\n        param1: int\n            First input.\n        param2: int\n            Second input.\n\n        Returns\n        -------\n        ret: int\n            param1 + param2\n        \"\"\"\n\n        return param1 + param2\n\n    def func2(self) -> None:\n        \"\"\"Parent's func2.\n\n        Returns\n        -------\n        ret: str\n            something\n        \"\"\"\n\n        return 'Something'\n\n@inherit_docstring\nclass Child(Parent):\n    \"\"\"Child class.\n\n    Attributes\n    ----------\n    sex: str\n        Additional attributes.\n        girl or boy.\n    \"\"\"\n\n    sex: str = \"boy\"\n\n    def func1(self, param1: int, param2: int) -> int:\n        \"\"\"Child's func1.\n\n        Returns\n        -------\n        ret: int\n            param1 - param2\n        \"\"\"\n\n        return param1 - param2\n```\n\nChild class' help will be:\n\n```\nclass Child(Parent)\n |  Child class.\n |\n |  Attributes\n |  ----------\n |  name: str\n |      The name of\n |      the parent.\n |  age:\n |      The age. w/o type.\n |  sex: str\n |      Additional attributes.\n |      girl or boy.\n |\n |  Notes\n |  -----\n |  This is parent's note.\n |\n |  Method resolution order:\n |      Child\n |      Parent\n |      builtins.object\n |\n |  Methods defined here:\n |\n |  func1(self, param1: int, param2: int) -> int\n |      Child's func1.\n |\n |      Parameters\n |      ----------\n |      param1: int\n |          First input.\n |      param2: int\n |          Second input.\n |\n |      Returns\n |      -------\n |      ret: int\n |          param1 - param2\n```\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "A python decorator to inherit docstring.",
    "version": "0.1.4",
    "project_urls": {
        "Homepage": "https://github.com/rcmdnk/inherit-docstring",
        "Repository": "https://github.com/rcmdnk/inherit-docstring"
    },
    "split_keywords": [
        "docstring",
        " inherit",
        " decorator"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b87f7ff1a8cffc40c9cc8d89660cb91841f903a1e0b2bf03a0bd2a5f6e67ee5f",
                "md5": "a7aef27401d350a76355198eb10d2f35",
                "sha256": "9e77f7e20e6faf0a924244967abd37380233679d1680e102a2ff1e49fd0c74a1"
            },
            "downloads": -1,
            "filename": "inherit_docstring-0.1.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a7aef27401d350a76355198eb10d2f35",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.9",
            "size": 9160,
            "upload_time": "2024-05-22T23:53:35",
            "upload_time_iso_8601": "2024-05-22T23:53:35.084322Z",
            "url": "https://files.pythonhosted.org/packages/b8/7f/7ff1a8cffc40c9cc8d89660cb91841f903a1e0b2bf03a0bd2a5f6e67ee5f/inherit_docstring-0.1.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "83f82110b342dc41fb6169b952b9673704cf41735c71a0947690dbb9844917f9",
                "md5": "479e597f8af34b84c9433dd43755a873",
                "sha256": "9fca2f69aa9f140ada0a3b67430163bb0e0d6e6a3f28e1a3bf4c4dba1134aa0c"
            },
            "downloads": -1,
            "filename": "inherit_docstring-0.1.4.tar.gz",
            "has_sig": false,
            "md5_digest": "479e597f8af34b84c9433dd43755a873",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.9",
            "size": 8803,
            "upload_time": "2024-05-22T23:53:36",
            "upload_time_iso_8601": "2024-05-22T23:53:36.420822Z",
            "url": "https://files.pythonhosted.org/packages/83/f8/2110b342dc41fb6169b952b9673704cf41735c71a0947690dbb9844917f9/inherit_docstring-0.1.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-22 23:53:36",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "rcmdnk",
    "github_project": "inherit-docstring",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "inherit-docstring"
}
        
Elapsed time: 0.85617s