diff --git a/docs/release_notes.rst b/docs/release_notes.rst index 13c677fb..01458c23 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -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 --------------------------- diff --git a/src/pydocstyle/checker.py b/src/pydocstyle/checker.py index f5b34f32..ae608068 100644 --- a/src/pydocstyle/checker.py +++ b/src/pydocstyle/checker.py @@ -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 diff --git a/src/tests/test_cases/sections.py b/src/tests/test_cases/sections.py index 00609386..f8158ec7 100644 --- a/src/tests/test_cases/sections.py +++ b/src/tests/test_cases/sections.py @@ -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 "