Skip to main content

A python decorator to inherit docstring.

Project description

inherit-docstring

test test coverage

A python decorator to inherit docstring.

Easily inherit docstrings from parent classes with @inherit_docstring decorator, designed specifically for the NumPy docstring style.

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

inherit_docstring-0.2.1.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

inherit_docstring-0.2.1-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file inherit_docstring-0.2.1.tar.gz.

File metadata

  • Download URL: inherit_docstring-0.2.1.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for inherit_docstring-0.2.1.tar.gz
Algorithm Hash digest
SHA256 32ca474f60c369c7ccf7c71f7789df0acbab2bc576719efe9373b9f93f689c53
MD5 a68dd6383d1c8b4a03f597348ff4da5f
BLAKE2b-256 a318553e516553ebcb70456c75eb9ecb81d6870ffcedff72ff5bd45d9288f8ba

See more details on using hashes here.

File details

Details for the file inherit_docstring-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: inherit_docstring-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for inherit_docstring-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3704e449e64f744152a0ce344a08bba95c19213158edc4e7ae3f0422eeb00cd2
MD5 9479e2e099edaf8b044ef6d06d8c331d
BLAKE2b-256 4d954a0dc0db81fca3d6fb73b6a8319d468236376d344f5ce55b32562844324d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page