Skip to main content

docsource: Parse, check and update doc-string documentation

docsource parses Python documentation strings (a.k.a. doc-string) for (data) classes and functions.

A doc-string is broken down into the following components:

  • A short description, which is the first block of text in the documentation string, and ends with a double newline or a parameter block.
  • A long description, which is the optional block of text following the short description, and ends with a parameter block.
  • A parameter block of named parameter and description string pairs in ReST-style, each declared with param.
  • A returns declaration, which adds explanation to the return value.
  • A raises declaration, which adds explanation to the exception type raised by the function on error.
class SampleClass:
    def instance_method(self, a: str, b: int | None) -> str:
        """
        Short description of an instance method.

        :param a: Short description for `a`.
        :param b: Short description for `b`.
        :returns: A return value.
        :raise TypeError: A type exception rarely raised.
        :raise ValueError: A value exception rarely raised.
        :raise CustomException: A custom exception.
        """
        return ""

When the doc-string is attached to a data class, it is understood as the documentation string of the class __init__ method.

Compliance

docsource verifies if

  • parameters listed in the function doc-string have corresponding parameters in the function signature,
  • parameters declared in a function signature have corresponding doc-string entries (strict mode only),
  • data-class members listed in the function doc-string have corresponding member variables in the data-class definition,
  • members declared in a data-class have corresponding doc-string entries (strict mode only).

Enumerations

Python's own doc-string mechanism doesn't allow attaching a description to enumeration members. However, documentation toolchains such as Sphinx's autodoc support this with a string literal immediately following the enumeration member value assignment:

@enum.unique
class EnumType(enum.Enum):
    ENABLED = "enabled"
    "Documents the enumeration member `ENABLED`."

    DISABLED = "disabled"
    "Documents the enumeration member `DISABLED`."

docsource can parse source code with Python's ast module to extract these description text strings.

Documentation style

docsource can normalize code documentation by reading source code (with Python's ast), identifying doc-string literals, parsing doc-string text, and producing a standardized doc-string with short description, and ReST-style parameter, return value and exception declarations.

Refer to the source

  • The function parse_type parses a ReST-style doc-string attached to a class or function into doc-string components, encapsulated in the class Docstring.
  • The function parse_text parses raw doc-string text into its components.
  • check_docstring verifies data-class and function doc-string text.
  • enum_labels extracts textual description for enumeration members.
  • update_docstring standardizes doc-string literals in Python source code.

Metadata

Release files for docsource 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for docsource 0.1.0
File Size Uploaded
docsource-0.1.0.tar.gz 12.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for docsource 0.1.0
File Interpreter ABI Platform
docsource-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 24.8 kB

Release files / docsource-0.1.0.tar.gz

Download URL docsource-0.1.0.tar.gz
Size 12.9 kB
Tags Source
SHA-256 checksum
How to use checksums
adbdc8204924201591e49a930974cf639b598e6c1e41cc3da837857ca183d8be
BLAKE2b-256 checksum
How to use checksums
2d4a9bde6b4e09e8e5dcf7de35e11d89e92c32be3cb229001c2d68b6e8bf9ae9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.8

Release files / docsource-0.1.0-py3-none-any.whl

Download URL docsource-0.1.0-py3-none-any.whl
Size 11.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cfb1cecb177a4baadd6b85c88e7140ad1a2056de37f29b0188dc6f5ab9a4e603
BLAKE2b-256 checksum
How to use checksums
eea6e090addae43be66a48ba0a2afb4d1071a75ba0df06a6162c497e5b62579e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.8

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page