[code-quality] pylint --no-docstring-rgx issues

Bassam Khouri bassam.khouri at gmail.com
Mon Jul 15 15:27:41 EDT 2019


I had looked at the pylint source code, and did some python
troubleshooting, I discovered the matching was only checking against the
beginning of the line.  Someone in the community also offered the same
suggestion (which prompted me to reply to my own post in hopes this may
help someone else).   In the end, I used the following:

(?i)(?P<start>^(tests?)?_)|(?P<end>.*tests$)

I know (?P<text>) is not needed as it can't be used, but I find it useful
for reading the regular expression and helping determine what a group is
expected to match.

Bassam

On Wed, May 29, 2019 at 11:22 AM Bassam Khouri <bassam.khouri at gmail.com>
wrote:

> Hi,
>
> I'm trying to configure the no-docstring-rgx option to ignore function
> and class names that:
> - Starts with _
> - Starts with test_
> - Ends with tests
> - Ends with Tests
>
> I came up with the following regular expression:
>
> (^(test)?_)|((T|t)ests$)
>
>
> When I test the regular expression on https://regex101.com/r/3BXmsa/6, it
> matches the text I expect it to match.
>
> However, when I run pylint against my code, it still reports a docstring
> is missing for a class name that ends with Tests.
>
> For example, if I have the following python 3 code.
>
> import unittest
>
>
> class _Utils(unittest.TestCase):
>     pass
>
>
> class Test_Foo(unittest.TestCase):
>     pass
>
>
> class test_Foo(unittest.TestCase):
>     pass
>
>
> class UtilsTests(unittest.TestCase):
>
>     def test_function_name(self):
>         pass
>
>     def _foo(self):
>         pass
>
>     def my_tests(self):
>         pass
>
>
> if __name__ == "__main__":
>     unittest.main()
>
>
> Running pylint --disable=all --enable=missing-docstring
> --no-docstring-rgx='(^(test)?_)|((T|t)ests$)' ./test.py yields
>
> $ pylint --disable=all --enable=missing-docstring
> --no-docstring-rgx='(^(test)?_)|((T|t)ests$)' ./test.py
>
> ************* Module test
>
> test.py:1:0: C0111: Missing module docstring (missing-docstring)
>
> test.py:8:0: C0111: Missing class docstring (missing-docstring)
>
> test.py:16:0: C0111: Missing class docstring (missing-docstring)
>
> test.py:24:4: C0111: Missing method docstring (missing-docstring)
>
>
> ------------------------------------------------------------------
>
> Your code has been rated at 7.50/10 (previous run: 7.50/10, +0.00)
>
>
> I was only expecting to see the Missing module docstring violation, and
> the missing class docstring on line 8.
>
> Here is my environment:
>
> $ pylint --version
>
> pylint 2.3.1
>
> astroid 2.2.5
>
> Python 3.7.3 (default, Mar 27 2019, 09:23:15)
>
> [Clang 10.0.1 (clang-1001.0.46.3)]
>
> Any ideas what is going on and how to fix it?
>
> Cheers,
>
> Bassam
> ---
> "What we can or cannot do, what we consider possible or impossible, is
> rarely a function of our true capability. It is more likely a function of
> our beliefs about who we are." - Tony Robbins
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/code-quality/attachments/20190715/c34ee1e7/attachment.html>


More information about the code-quality mailing list