Skip to content
This repository has been archived by the owner on Nov 3, 2023. It is now read-only.

Commit

Permalink
Fix bug with google style arg regex
Browse files Browse the repository at this point in the history
Currently, due to the way the regex was specified, the regex
matcher was getting thrown off by types that used colons.

This change makes the regex robust to such type and fixes #443
  • Loading branch information
samj1912 committed May 5, 2020
1 parent ebc5466 commit 8f75135
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 3 deletions.
2 changes: 2 additions & 0 deletions docs/release_notes.rst
Expand Up @@ -15,6 +15,8 @@ Bug Fixes

* Update convention support documentation (#386, #393)
* Detect inner asynchronous functions for D202 (#467)
* Fix a bug in parsing Google-style argument description.
The bug caused some argument names to go unreported in D417 (#448).

5.0.2 - January 8th, 2020
---------------------------
Expand Down
6 changes: 3 additions & 3 deletions src/pydocstyle/checker.py
Expand Up @@ -96,9 +96,9 @@ class ConventionChecker:
r"(\w+)" # Followed by 1 or more unicode chars, numbers or underscores
# The above is captured as the first group as this is the paramater name.
r"\s*" # Followed by 0 or more whitespace characters
r"\(?(.*?)\)?" # Matches patterns contained within round brackets.
# The `(.*?)` is the second capturing group which matches any sequence of
# characters in a non-greedy way (denoted by the `*?`)
r"(\(.*?\))?" # Matches patterns contained within round brackets.
# The `.*?`matches any sequence of characters in a non-greedy
# way (denoted by the `*?`)
r"\s*" # Followed by 0 or more whitespace chars
r":" # Followed by a colon
".+" # Followed by 1 or more characters - which is the docstring for the parameter
Expand Down
30 changes: 30 additions & 0 deletions src/tests/test_cases/sections.py
Expand Up @@ -335,6 +335,36 @@ def test_missing_args_static_method(a, x, y, _test, z=3): # noqa: D213, D407
"""

@staticmethod
@expect("D417: Missing argument descriptions in the docstring "
"(argument(s) a, b are missing descriptions in "
"'test_missing_docstring' docstring)", arg_count=2)
def test_missing_docstring(a, b): # noqa: D213, D407
"""Test a valid args section.
Args:
a:
"""

@staticmethod
@expect("D417: Missing argument descriptions in the docstring "
"(argument(s) skip, verbose are missing descriptions in "
"'test_missing_docstring_another' docstring)", arg_count=2)
def test_missing_docstring_another(skip, verbose): # noqa: D213, D407
"""Do stuff.
Args:
skip (:attr:`.Skip`):
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Etiam at tellus a tellus faucibus maximus. Curabitur tellus
mauris, semper id vehicula ac, feugiat ut tortor.
verbose (bool):
If True, print out as much infromation as possible.
If False, print out concise "one-liner" information.
"""


@expect(_D213)
@expect("D417: Missing argument descriptions in the docstring "
Expand Down

0 comments on commit 8f75135

Please sign in to comment.