I have a method in a Python class that I use functools.wraps
to assign a docstring. Here is the exact code I use:
facade.py
#!/usr/bin/env python3
"""Facade."""
from functools import wraps
import back_end
@wraps(back_end.some_method)
def renamed_method(str_to_print): # noinspection PyMissingOrEmptyDocstring
back_end.some_method(str_to_print)
back_end.py
#!/usr/bin/env python3
"""Back End."""
def some_method(some_str: str) -> None:
"""Prints out a string.
Args:
some_str: A string to print
"""
print(some_str)
PyCharm inspection warns Missing docstring
on the method renamed_method
. This is what it looks like on my end:
I added # pylint: disable=C0111
to the same line, and it does not make the warning go away.
How can I make this warning go away? I do not want to uncheck the inspection globally.
FYI, I use PyCharm CE 2018.3.7
. I also just updated to PyCharm CE 2019.2.2
and got the same results. I use the default settings, only things I have changed are using Google docstring format and checking all inspection options for Python.
#1: Lightbulb --> Suppression Option
I looked at this answer: https://stackoverflow.com/a/51148355/11163122
Also documented on PyCharm's website here.
And I don't get the suppression options it promises.
#2: noinspection comment
I also tried: # noinspection PyMissingOrEmptyDocstring
(full list here). Here is the full attempt:
@wraps(back_end.some_method)
def renamed_method(str_to_print): # noinspection PyMissingOrEmptyDocstring
back_end.some_method(str_to_print)
And an image of what I am seeing:
Why do I use the functools.wraps
decorator? See facade pattern.
PyCharm allows you to suppress (instead of disable) the inspection.
You can click the lightbulb and select 'suppress for this class' or add this manually:
# noinspection PyMissingOrEmptyDocstring
More here https://www.jetbrains.com/help/pycharm/disabling-and-enabling-inspections.html#suppress-inspections
Specific to the example as given, this won't work:
@wraps(back_end.some_method)
def renamed_method(str_to_print): # noinspection PyMissingOrEmptyDocstring
back_end.some_method(str_to_print)
But this will:
# noinspection PyMissingOrEmptyDocstring
@wraps(back_end.some_method)
def renamed_method(str_to_print):
back_end.some_method(str_to_print)