diff --git a/README.rst b/README.rst index 1957ea33..f55e05ff 100644 --- a/README.rst +++ b/README.rst @@ -55,7 +55,7 @@ Run Links ----- -* `Read the full documentation here `_. +* `Read the full documentation here `_. * `Fork pydocstyle on GitHub `_. diff --git a/docs/release_notes.rst b/docs/release_notes.rst index 00466a57..671e4691 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -16,6 +16,8 @@ Bug Fixes * Update convention support documentation (#386, #393) * Detect inner asynchronous functions for D202 (#467) * Fix indentation error while parsing class methods (#441). +* 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 d7739247..8e3be2c4 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/pydocstyle/config.py b/src/pydocstyle/config.py index e1fbc0a9..60d11f00 100644 --- a/src/pydocstyle/config.py +++ b/src/pydocstyle/config.py @@ -463,7 +463,7 @@ def _expand_error_codes(code_parts): 'known errors: %s', part) expanded_codes.update(codes_to_add) except TypeError as e: - raise IllegalConfiguration(e) + raise IllegalConfiguration(e) from e return expanded_codes diff --git a/src/tests/test_cases/sections.py b/src/tests/test_cases/sections.py index ad37312f..2200ddfe 100644 --- a/src/tests/test_cases/sections.py +++ b/src/tests/test_cases/sections.py @@ -354,6 +354,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 "