Skip to main content

Python docstring formatter

Project description

docmat

Python docstring formatter.

Main Functionalities

  • Adjusts indentation and spacing.
  • Wraps all docstring text.

Installation

pip install docmat

Usage

In order to format the docstring of a file, run in a terminal shell:

docmat <filename>|<folder>|<glob>

Examples:

docmat to_format.py
docmat to_format.py other_file_to_format.py
docmat to_format.py --line-length 79
docmat directory
docmat directory/*

Supported docstring formats

  • Google

Adding support for other docstring formats is in the Roadmap.

Examples

Before:

def func():
    """
    This fits in one line.
    """

After:

def func():
    """This fits in one line."""

Before:

def func():
    """start with lower letter, dot missing"""

After:

def func():
    """Start with lower letter, dot missing."""

Before:

def func():
    """
    In this docstring a newline after the summary is missing.
    Summary and description should be separated by a newline.
    """

After:

def func():
    """
    In this docstring a newline after the summary is missing.

    Summary and description should be separated by a newline.
    """

Before:

def func():
    """
    Summary.

    The length of the function description in this specific function exceeds the maximum line length, that in this case is left to the default value `88`. This block of text should be wrapped.
    """

After:

def func():
    """Summary.

    The length of the function description in this specific function exceeds the maximum
    line length, that in this case is left to the default value `88`. This block of text
    should be wrapped.
    """

Adding the parameter --wrap-summary

Before:

def func():
    """By default, the summary line is not wrapped even if it exceeds the maximum line length.

    This behavior can be overriden by adding the `--wrap-summary` command line parameter
    """

After:

def func():
    """By default, the summary line is not wrapped even if it exceeds the maximum line
    length.

    This behavior can be overriden by adding the `--wrap-summary` command line
    parameter.
    """

Before:

def func(arg1, arg2):
    """Summary.

    args:
    arg1(type): The indentation level of this argument is not correct.
    arg2(type): In this case, the description of this argument exceeds the maximum line length and it needs to be wrapped.
    """

After:

def func(arg1, arg2):
    """Summary.

    Args:
        arg1(type): The indentation level of this argument is not correct.
        arg2(type): In this case, the description of this argument exceeds the maximum
            line length and it needs to be wrapped.
    """

Integration with VSCode

docmat will be integrated with VSCode using a dedicated extension (see also roadmap).

In the meantime, docmat can be used from VSCode with a keyboard shortcut. Here are the steps to make it work:

  1. Install docmat in the python environment used by VSCode following the installation steps

  2. Open the Keyboard Shortcuts configuration file in VSCode Preferences > Keyboard Shortcuts > Open Keyboard Shortcuts (JSON) [icon in the top-right] this will open the keybindings.json file containing the keyboard shortcuts.

  3. Associate the docmat command to a key-binding by adding the following entry to the keybindings list:

    [
        {
            "key": "shift+alt+d",
            "command": "workbench.action.terminal.sendSequence",
            "args": {
                "text": "docmat '${file}'\u000D"
            }
        }
    ]
    

    The suggested key-binding is shift+alt+D, but you can change it to whatever you like.

  4. Save the file.

Now, every time you are working on a python file you can hit shift+alt+D and the docmat command will be executed in the VSCode terminal on the file that you have currently opened. Eventual errors or log messages will be shown there. Please note that the environment where docmat is installed should be active in the VSCode integrated terminal prior to using the shortcut.

Roadmap

  • Add support for a no-format comment token.
  • Add support for bullet lists.
  • Add support for other docstring formats:
    • Numpydoc
    • reST
    • Epytext
  • Integrate with pre-commit.
  • Create VSCode extension.
  • Add support for code examples in docstring.

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

docmat-0.1.0a1.tar.gz (8.6 kB view hashes)

Uploaded Source

Built Distribution

docmat-0.1.0a1-py3-none-any.whl (8.9 kB view hashes)

Uploaded Python 3

Supported by

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