Python docstring formatter
Project description
docmat
Python docstring formatter.
- Main Functionalities
- Installation
- Usage
- Supported docstring formats
- Examples
- Integration with VSCode
- Roadmap
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
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:
-
Install
docmatin the python environment used by VSCode following the installation steps -
Open the Keyboard Shortcuts configuration file in VSCode
Preferences > Keyboard Shortcuts > Open Keyboard Shortcuts (JSON) [icon in the top-right]this will open thekeybindings.jsonfile containing the keyboard shortcuts. -
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. -
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file docmat-0.1.0a1.tar.gz.
File metadata
- Download URL: docmat-0.1.0a1.tar.gz
- Upload date:
- Size: 8.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.9.5 Darwin/19.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
016f848cdca76a17773a320ef8af35c97331ffa1c10bec74a82d9d65cb489e5d
|
|
| MD5 |
2ce0e0871ee23e2a9794b39f401f3c17
|
|
| BLAKE2b-256 |
ec960bcbd7df54d6db377f73ce7d18acf263a6d060e82a8164884d3ee5b39750
|
File details
Details for the file docmat-0.1.0a1-py3-none-any.whl.
File metadata
- Download URL: docmat-0.1.0a1-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.9.5 Darwin/19.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0271b825c15041b5ec23e8a189e62eb5c49385935ac7020a99eca49f80b7408d
|
|
| MD5 |
331faf7efe476959fefd300c799a8da5
|
|
| BLAKE2b-256 |
6c15355319f1964d5325f687906d31ed20422f20dc9bbf55782cd0de898c022a
|