Skip to content

Commit

Permalink
Add docformatter which formats Python docstrings to PEP 257
Browse files Browse the repository at this point in the history
  • Loading branch information
meliache committed Dec 6, 2023
1 parent 8f512db commit 89ea943
Show file tree
Hide file tree
Showing 6 changed files with 71 additions and 0 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,14 @@ The format is based on [Keep a Changelog].
([#263]).
* [denofmt](https://docs.deno.com/runtime/manual/tools/formatter) for
js, jsx, ts, tsx, json, jsonc, md files. ([#264])
* [docformatter](https://github.com/PyCQA/docformatter) for Python docstrings ([#267])

[#229]: https://github.com/radian-software/apheleia/pull/229
[#260]: https://github.com/radian-software/apheleia/pull/260
[#261]: https://github.com/radian-software/apheleia/pull/261
[#263]: https://github.com/radian-software/apheleia/pull/263
[#264]: https://github.com/radian-software/apheleia/pull/264
[#267]: https://github.com/radian-software/apheleia/pull/267

## 4.0 (released 2023-11-23)
### Breaking changes
Expand Down
1 change: 1 addition & 0 deletions apheleia-formatters.el
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
(denofmt-md . ("deno" "fmt" "-" "--ext" "md"))
(denofmt-ts . ("deno" "fmt" "-" "--ext" "ts"))
(denofmt-tsx . ("deno" "fmt" "-" "--ext" "tsx"))
(docformatter . ("apheleia-docformatter" file))
(elm-format . ("elm-format" "--yes" "--stdin"))
(fish-indent . ("fish_indent"))
(fourmolu . ("fourmolu"))
Expand Down
10 changes: 10 additions & 0 deletions scripts/formatters/apheleia-docformatter
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/sh

output=$(docformatter "$@")

# On successful change docformatter gives exit code of 3.
# Raise error for all other positive exit codes
ret=$?
[ $ret -gt 0 ] && [ $ret -ne 3 ] && exit $ret

echo "${output}" | patch --quiet --output=-
2 changes: 2 additions & 0 deletions test/formatters/installers/docformatter.bash
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
apt-get install -y python3-pip
pip3 install docformatter
26 changes: 26 additions & 0 deletions test/formatters/samplecode/docformatter/in.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
def single_line_doc():
"""
Line break not necessary
"""


def extend_first_line():
"""First line
first line continuation
"""


def add_line_break():
"""First line.
Second line.
"""


def long_lines():
"""
Nullam eu ante vel est convallis dignissim. Fusce suscipit, wisi nec facilisis facilisis, est dui fermentum leo, quis tempor ligula erat quis odio. Nunc porta vulputate tellus. Nunc rutrum turpis sed pede. Sed bibendum. Aliquam posuere. Nunc aliquet, augue nec adipiscing interdum, lacus tellus malesuada massa, quis varius mi purus non odio. Pellentesque condimentum, magna ut suscipit hendrerit, ipsum augue ornare nulla, non luctus diam neque sit amet urna. Curabitur vulputate vestibulum lorem. Fusce sagittis, libero non molestie mollis, magna orci ultrices dolor, at vulputate neque nulla lacinia eros. Sed id ligula quis est convallis tempor. Curabitur lacinia pulvinar nibh. Nam a sapien.
"""
30 changes: 30 additions & 0 deletions test/formatters/samplecode/docformatter/out.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
def single_line_doc():
"""Line break not necessary."""


def extend_first_line():
"""First line first line continuation."""


def add_line_break():
"""First line.
Second line.
"""


def long_lines():
"""Nullam eu ante vel est convallis dignissim.
Fusce suscipit, wisi nec facilisis facilisis, est dui fermentum leo,
quis tempor ligula erat quis odio. Nunc porta vulputate tellus.
Nunc rutrum turpis sed pede. Sed bibendum. Aliquam posuere. Nunc
aliquet, augue nec adipiscing interdum, lacus tellus malesuada
massa, quis varius mi purus non odio. Pellentesque condimentum,
magna ut suscipit hendrerit, ipsum augue ornare nulla, non luctus
diam neque sit amet urna. Curabitur vulputate vestibulum lorem.
Fusce sagittis, libero non molestie mollis, magna orci ultrices
dolor, at vulputate neque nulla lacinia eros. Sed id ligula quis
est convallis tempor. Curabitur lacinia pulvinar nibh. Nam a
sapien.
"""

0 comments on commit 89ea943

Please sign in to comment.