1. Summary
In valid py
file I get warning D100: Missing docstring in public module
.
2. Settings
My pelicanconf.py
:
#!/usr/bin/env python # -*- coding: utf-8 -*- # import logging """ logging pelican module. For disabling warnings: http://docs.getpelican.com/en/stable/settings.html#logging """ import sys """sys module. For download plugins from “plugins” folder. """ # That Pelican see plugins from this folder sys.path.append('plugins') # **************************************************************************** # * General * # **************************************************************************** AUTHOR = 'Саша Черных' SITENAME = 'Поиск Кристиниты' SITEURL = 'http://kristinita.ru' TIMEZONE = 'Europe/Moscow' DEFAULT_LANG = 'en' # **************************************************************************** # * Feed * # **************************************************************************** # Feed generation, perhaps, not desired when developing FEED_ALL_ATOM = 'feeds/all.atom.xml' CATEGORY_FEED_ATOM = 'feeds/%s.atom.xml' TRANSLATION_FEED_ATOM = None AUTHOR_FEED_ATOM = None AUTHOR_FEED_RSS = None # Blogroll # LINKS = (('Pelican', 'http://getpelican.com/'), # ('Python.org', 'http://python.org/'), # ('Jinja2', 'http://jinja.pocoo.org/'), # ('You can edit those links in your config file', '#'),) # Social widget # SOCIAL = (('You can add links in your config file', '#'), # ('Another social link', '#'),) # **************************************************************************** # * Markdown * # **************************************************************************** # Include Markdown extensions # http://docs.getpelican.com/en/stable/settings.html?highlight=MARKDOWN#basic-settings # https://pythonhosted.org/Markdown/extensions/#third-party-extensions MARKDOWN = { 'extension_configs': { # Fenced code blocks # https://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html 'markdown.extensions.fenced_code': {}, }, 'output_format': 'html5', } # **************************************************************************** # * Generation * # **************************************************************************** # Delete old site before building DELETE_OUTPUT_DIRECTORY = True # Do not touch in generation process OUTPUT_RETENTION = [".git"] LOAD_CONTENT_CACHE = False # Uncomment following line if you want document-relative URLs when developing RELATIVE_URLS = True # Original format without rendering. If true, md rendering to md, # not md → html OUTPUT_SOURCES = False # **************************************************************************** # * Plugins * # **************************************************************************** PLUGIN_PATHS = ['pelican-plugins'] PLUGINS = ['pagefixer', 'pelican_javascript', 'sitemap', 'section_number'] # Sitemap # https://github.com/getpelican/pelican-plugins/tree/master/sitemap SITEMAP = { 'format': 'xml', 'priorities': { 'articles': 0, 'indexes': 0.5, 'pages': 1 }, 'changefreqs': { 'articles': 'never', 'indexes': 'weekly', 'pages': 'always' } } # Section number # https://github.com/getpelican/pelican-plugins/tree/master/section_number SECTION_NUMBER_MAX = 5 # Replacer # https://github.com/narusemotoki/replacer.git REPLACES = ( (u'css\/personal', u'..\/css\/personal'), ) # **************************************************************************** # * Paths * # **************************************************************************** # Path for site content PATH = 'content' # Path for pages # Don't set “PAGE_PATHS = ['']”! See # https://github.com/getpelican/pelican/issues/2123 PAGE_PATHS = ['Gingerinas', 'Giologica', 'Life-hacks', 'Sasha-Black', 'Smert-svobode', 'Sublime-Text'] # Path for articles # [Hack] That exclude articles, include non-exicting folder. # «ARTICLE_PATHS = None» — critical error, integer parameter ARTICLE_PATHS = ['None'] # Non-modified files and folders # [Hack] The register matters. 404.md & 404.html don't work. STATIC_PATHS = [''] # That filename = Slug, not necessary to write slug manually for each article SLUGIFY_SOURCE = 'basename' # Extra path metadata # http://manos.im/blog/static-site-pelican-grunt-travis-github-pages/ PAGE_URL = '{slug}.html' PAGE_SAVE_AS = PAGE_URL CATEGORY_URL = 'category/{slug}.html' CATEGORY_SAVE_AS = CATEGORY_URL TAG_URL = 'tag/{slug}.html' TAG_SAVE_AS = TAG_URL TAGS_SAVE_AS = 'tag/alltags.html' # **************************************************************************** # * Other * # **************************************************************************** # Theme THEME = 'themes/sashapelican' # Pagination — division of articles DEFAULT_PAGINATION = False TYPOGRIFY = True # Disable logging of empty alt attribute, needs “import logging” module LOG_FILTER = [(logging.WARN, 'Empty alt attribute for image %s in %s')]
3. Steps to reproduce
I reproduce the problem in a version of Sublime Text without plugins and user settings.
I install Flake8Lint → I restart Sublime Text → I open pelicanconf.py
.
4. Expected behavior
If I check my file in a terminal:
D:Kristinita>flake8 -v pelicanconf.py flake8.plugins.manager MainProcess 226 INFO Loading entry-points for "flake8.extension". flake8.plugins.manager MainProcess 288 INFO Loading entry-points for "flake8.listen". flake8.plugins.manager MainProcess 288 INFO Loading entry-points for "flake8.report". flake8.plugins.manager MainProcess 290 INFO Loading plugin "C90" from entry-point. flake8.plugins.manager MainProcess 291 INFO Loading plugin "F" from entry-point. flake8.plugins.manager MainProcess 314 INFO Loading plugin "pycodestyle.blank_lines" from entry-point. flake8.plugins.manager MainProcess 320 INFO Loading plugin "pycodestyle.break_around_binary_operator" from entry-point. flake8.plugins.manager MainProcess 320 INFO Loading plugin "pycodestyle.comparison_negative" from entry-point. flake8.plugins.manager MainProcess 320 INFO Loading plugin "pycodestyle.comparison_to_singleton" from entry-point. flake8.plugins.manager MainProcess 320 INFO Loading plugin "pycodestyle.comparison_type" from entry-point. flake8.plugins.manager MainProcess 321 INFO Loading plugin "pycodestyle.compound_statements" from entry-point. flake8.plugins.manager MainProcess 321 INFO Loading plugin "pycodestyle.continued_indentation" from entry-point. flake8.plugins.manager MainProcess 321 INFO Loading plugin "pycodestyle.explicit_line_join" from entry-point. flake8.plugins.manager MainProcess 321 INFO Loading plugin "pycodestyle.extraneous_whitespace" from entry-point. flake8.plugins.manager MainProcess 321 INFO Loading plugin "pycodestyle.imports_on_separate_lines" from entry-point. flake8.plugins.manager MainProcess 322 INFO Loading plugin "pycodestyle.indentation" from entry-point. flake8.plugins.manager MainProcess 324 INFO Loading plugin "pycodestyle.maximum_line_length" from entry-point. flake8.plugins.manager MainProcess 325 INFO Loading plugin "pycodestyle.missing_whitespace" from entry-point. flake8.plugins.manager MainProcess 327 INFO Loading plugin "pycodestyle.missing_whitespace_after_import_keyword" from entry-point. flake8.plugins.manager MainProcess 330 INFO Loading plugin "pycodestyle.missing_whitespace_around_operator" from entry-point. flake8.plugins.manager MainProcess 331 INFO Loading plugin "pycodestyle.module_imports_on_top_of_file" from entry-point. flake8.plugins.manager MainProcess 331 INFO Loading plugin "pycodestyle.python_3000_backticks" from entry-point. flake8.plugins.manager MainProcess 331 INFO Loading plugin "pycodestyle.python_3000_has_key" from entry-point. flake8.plugins.manager MainProcess 331 INFO Loading plugin "pycodestyle.python_3000_not_equal" from entry-point. flake8.plugins.manager MainProcess 331 INFO Loading plugin "pycodestyle.python_3000_raise_comma" from entry-point. flake8.plugins.manager MainProcess 333 INFO Loading plugin "pycodestyle.tabs_obsolete" from entry-point. flake8.plugins.manager MainProcess 333 INFO Loading plugin "pycodestyle.tabs_or_spaces" from entry-point. flake8.plugins.manager MainProcess 333 INFO Loading plugin "pycodestyle.trailing_blank_lines" from entry-point. flake8.plugins.manager MainProcess 333 INFO Loading plugin "pycodestyle.trailing_whitespace" from entry-point. flake8.plugins.manager MainProcess 333 INFO Loading plugin "pycodestyle.whitespace_around_comma" from entry-point. flake8.plugins.manager MainProcess 333 INFO Loading plugin "pycodestyle.whitespace_around_keywords" from entry-point. flake8.plugins.manager MainProcess 334 INFO Loading plugin "pycodestyle.whitespace_around_named_parameter_equals" from entry-point. flake8.plugins.manager MainProcess 334 INFO Loading plugin "pycodestyle.whitespace_around_operator" from entry-point. flake8.plugins.manager MainProcess 334 INFO Loading plugin "pycodestyle.whitespace_before_comment" from entry-point. flake8.plugins.manager MainProcess 334 INFO Loading plugin "pycodestyle.whitespace_before_parameters" from entry-point. flake8.plugins.manager MainProcess 334 INFO Loading plugin "default" from entry-point. flake8.plugins.manager MainProcess 338 INFO Loading plugin "pylint" from entry-point. flake8.plugins.manager MainProcess 343 INFO Loading plugin "quiet-filename" from entry-point. flake8.plugins.manager MainProcess 345 INFO Loading plugin "quiet-nothing" from entry-point. flake8.checker MainProcess 349 WARNING The --jobs option is not available on Windows due to a bug (https://bugs.python.org/issue27649) in Python 2.7.11+ and 3.3+. We have detected that you are running an unsupported version of Python on Windows. Ignoring --jobs arguments. flake8.checker MainProcess 349 INFO Making checkers flake8.checker MainProcess 356 INFO Checking 1 files flake8.main.application MainProcess 400 INFO Finished running flake8.main.application MainProcess 401 INFO Reporting errors flake8.main.application MainProcess 401 INFO Found a total of 0 violations and reported 0
Also, I don’t get a warning, if I use SublimeLinter-flake8 package.
5. Actual behavior
6. Environment
Operating system and version:
Windows 10 Enterprise LTSB 64-bit EN
Sublime Text:
Build 3126
Python:
3.6.1
Flake8:
3.3.0 (mccabe: 0.6.1, pycodestyle: 2.3.1, pyflakes: 1.5.0) CPython 3.6.1 on Windows
Thanks.
I installed atom for python programming
and also installed Linter and flake8
packages but everything I write in text editor I get this warning :
D100 — Missing docstring in public module
I already tried
pip uninstall flake8-docstrings pip install Flake8-pep257
How can I fix this warning ?
NAND
6578 silver badges22 bronze badges
asked Sep 13, 2017 at 8:28
Its nothing but a comment like this on the top of your program. According to Python Documentation it should be there before every function and program. Here is a simple docstring code
«»»Return the pathname of the KOS root directory.»»»
answered May 19, 2018 at 7:16
You can configure linter-flake8 like any Atom package by editing the settings in Atom -> Preferences -> Packages -> linter-flake8.
Use «ignore error codes» for any errors that you don’t want to see.
answered Sep 13, 2017 at 8:34
mdegismdegis
2,0682 gold badges23 silver badges39 bronze badges
0
install «linter-ui-default dependencies» from the atom packages store..
It helped me.. for the first time it could not be installed. I restarted Atom and it asked me to install this package. clicking on yes it was installed successfully. And now I am not getting any error.
answered Feb 27, 2018 at 10:49
Usman GillUsman Gill
314 silver badges12 bronze badges
Вы пробовали flake8-pep257
? У одного из них проблема с вводом stdin
, и из вашей проблемы я предполагаю, что это flake8-docstrings
.
да, это то, что установлено, так что я должен понизить или обновить до другой версии ??
Это два разных пакета, которые вы установили?
У меня установлены flake8, flake8-docstrings и взлом через pip
Вы все еще видите это, если запустите следующее?
pip uninstall flake8-docstrings
pip install flake8-pep257
да, все равно появляется ошибка после выполнения вышеуказанного.
Со вчерашнего дня я тоже получил эту ошибку. Я думаю, что flake8 недавно получил обновление, может быть оно оттуда пришло.
flake8==3.0.2
flake8-docstrings==1.0.2
PS: flake8-pep257 кажется устаревшим.
Вы видите то же самое, когда делаете cat foo.py | flake8 -
?
Да, я вижу то же самое с этой командой. Странно, что с flake8 foo.py
ничего не выводит…: — /
Так это ошибка в flake8 [-docstrings]?
Скорее всего, это та самая ошибка, которую никогда не исправляли.
Насколько я понимаю, обработка stdin
input следует совершенно по другому пути и несколько легко ломается с помощью плагинов для flake8
.
Отметка как закрытая — это внешняя проблема, которую мы здесь не контролируем.
Чтобы исправить это предупреждение, я установил flake8-pep257.
pip install flake8-pep257
Я пробовал запустить pip install flake8-pep257
, но это не помогло. Похоже, что flake8-pep257 и pep257 были переименованы в flake8-docstrings и pydocstyle соответственно. Так что я не думаю, что в flake8-pep257 больше должна быть потребность.
@mlalkaka flake8-docstrings
— это модуль, отличный от flake8-pep257
, а не переименование.
Ой, извините за это, я был неправ. Похоже, только pep257 переименовали в pydocstyle. Пакеты flake8-docstrings и flake8-pep257 независимы, но некоторое время не было обновлений для flake8-pep257.
Да, и, к сожалению, у обоих поочередно возникали проблемы с правильной работой, и на данный момент я не уверен, что, если и то и другое, на самом деле работает.
Была ли эта страница полезной?
0 / 5 — 0 рейтинги
Николай Коренга
Здравствуйте!
Установил «Wemake Python Styleguide». Линтер выдаёт следующее:
╰─>$ poetry run flake8 BRAIN_GAMES
BRAIN_GAMES/__init__.py:1:1: D400 First line should end with a period
BRAIN_GAMES/cli.py:1:1: D100 Missing docstring in public module
BRAIN_GAMES/cli.py:5:1: I003 isort expected 1 blank line in imports, found 0
--- BRAIN_GAMES/cli.py:before
+++ BRAIN_GAMES/cli.py:after
@@ -2,6 +2,7 @@
# docstring
import prompt
+
# docstring
BRAIN_GAMES/cli.py:8:1: D103 Missing docstring in public function
BRAIN_GAMES/cli.py:10:5: WPS421 Found wrong function call: print
BRAIN_GAMES/cli.py:10:11: P101 format string does contain unindexed parameters
BRAIN_GAMES/cli.py:14:1: D103 Missing docstring in public function
BRAIN_GAMES/scripts/brain_games.py:0:1: WPS453 Found executable mismatch: shebang is present but the file is not executable
BRAIN_GAMES/scripts/brain_games.py:1:1: D100 Missing docstring in public module
BRAIN_GAMES/scripts/brain_games.py:5:1: I003 isort expected 1 blank line in imports, found 0
--- BRAIN_GAMES/scripts/brain_games.py:before
+++ BRAIN_GAMES/scripts/brain_games.py:after
@@ -2,6 +2,7 @@
from BRAIN_GAMES.cli import welcome_user
+
# docstring in function
BRAIN_GAMES/scripts/brain_games.py:8:1: D103 Missing docstring in public function
BRAIN_GAMES/scripts/brain_games.py:9:5: WPS421 Found wrong function call: print
BRAIN_GAMES/scripts/brain_games.py:14:1: D103 Missing docstring in public function
BRAIN_GAMES/scripts/brain_games.py:20:1: W391 blank line at end of file
BRAIN_GAMES/scripts/__init__.py:1:1: D104 Missing docstring in public package
Ошибки какие-то нелепые, исправление их приводит к ещё большим ошибкам. Точно возможно исправить все ошибки?
И ещё вопрос: Задания более-менее получаются, но впечатление такое, будто ничему не учишься. Это нормально?
Сергей К.
Добрый день!
WPS – действительно, очень суровый линтер. В самом проекте мы такой задачи не ставим и предлагаем использовать flake8. Но вы можете себя проверить и использовать WPS. Всё же его ошибки можно исправить.
После первого проекта вы должны научиться разворачивать локальное окружение для разработки, создавать пакеты на базе менеджера Poetry, настраивать и запускать собственные приложения. Это непростые задачи и большой шаг в профессиональном развитии.
0
Pylint выдает ошибки, что в некоторых файлах отсутствуют строки документации. Я пытаюсь добавить строки документации к каждому классу, методу и функции, но кажется, что Pylint также проверяет, что файлы должны быть строкой документации в начале. Могу ли я отключить это как-то? Я хотел бы получить уведомление о том, что в классе, функции или методе отсутствует строка документа, но для файла не обязательно иметь строку документа.
(Есть ли термин юридического жаргона, часто встречающийся в начале проприетарного исходного файла? Какие-нибудь примеры? Я не знаю, можно ли публиковать такой тривиальный вопрос отдельно.)
8 ответов
Лучший ответ
Для модуля Python полезно иметь строку документации, объясняющую, что делает модуль, что он предоставляет, примеры использования классов. Это отличается от комментариев, которые вы часто видите в начале файла, содержащего информацию об авторских правах и лицензии, который IMO не должен указывать в строке документации (некоторые даже утверждают, что они должны вообще исчезнуть, см., Например, http://hackerboss.com/get-rid-of-templates/)
С помощью пилинта 2.4 и выше вы можете различать различные missing-docstring
, используя три следующих под-сообщения:
C0114
(missing-module-docstring
)C0115
(missing-class-docstring
)C0116
(missing-function-docstring
)
Так что следующий .pylintrc
файл должен работать:
[MASTER]
disable=
C0114, # missing-module-docstring
В предыдущих версиях Pylint у него не было отдельного кода для различных мест, где могут находиться строки документации, поэтому все, что вы можете сделать, это отключить C0111. Проблема в том, что если вы отключите это в области видимости модуля, то он будет отключен повсюду в модуле (то есть вы не получите никакой строки C для отсутствующей строки документации функции / класса / метода. Что, возможно, нехорошо.
Итак, я предлагаю добавить эту маленькую недостающую строку документации, говоря что-то вроде:
"""
high level support for doing this and that.
"""
Достаточно скоро вы найдете полезные вещи, например, предоставите примеры того, как использовать различные классы / функции модуля, которые не обязательно принадлежат отдельным строкам документации классов / функций (например, как они взаимодействовать или что-то вроде краткого руководства).
69
Pierre.Sassoulas
21 Окт 2019 в 11:41
Нет. В настоящее время Pylint не позволяет вам различать предупреждения в строке документации.
Однако вы можете использовать flake8 для проверки всего кода Python вместе с расширением doc-string, чтобы игнорировать это предупреждение.
Установите расширение doc-string с помощью pip (внутренне оно использует pydocstyle).
pip install flake8_docstrings
Затем вы можете просто использовать переключатель --ignore D100
. Например, flake8 file.py --ignore D100
7
Sayse
4 Сен 2018 в 06:06
Просто поместите следующие строки в начале любого файла, который вы хотите отключить эти предупреждения.
# pylint: disable=missing-module-docstring
# pylint: disable=missing-class-docstring
# pylint: disable=missing-function-docstring
2
Keven Li
21 Янв 2020 в 07:29
Я искал ответ, потому что, как сказал @cerin, в проектах Django добавление строк документации модуля в каждый из файлов, автоматически генерируемых django при создании нового приложения, является обременительным и излишним.
Таким образом, в качестве обходного пути к тому факту, что Pylint не позволяет указать разницу в типах строк документации, вы можете сделать это:
pylint */*.py --msg-template='{path}: {C}:{line:3d},{column:2d}: {msg}' | grep docstring | grep -v module
Вы должны обновить шаблон msg, чтобы при выполнении grep вы все равно знали имя файла. Это возвращает все остальные типы отсутствующих строк документации, за исключением модулей.
Затем вы можете исправить все эти ошибки, а затем просто запустить:
pylint */*.py --disable=missing-docstring
8
mattsl
15 Сен 2016 в 08:08
Я думаю, что исправить это относительно легко без отключения этой функции.
def kos_root():
"""Return the pathname of the KOS root directory."""
global _kos_root
if _kos_root: return _kos_root
Все, что вам нужно сделать, это добавить строку тройных двойных кавычек в каждую функцию.
7
Carlos E Rodriguez
23 Ноя 2016 в 03:34
С помощью пилинта 2.4 и выше вы можете различать различные missing-docstring
, используя три следующих под-сообщения:
C0114
(missing-module-docstring
)C0115
(missing-class-docstring
)C0116
(missing-function-docstring
)
Так что следующий .pylintrc
файл должен работать:
[MASTER]
disable=
C0114, # missing-module-docstring
2
Pierre.Sassoulas
10 Сен 2019 в 13:31
Edit "C:UsersYour UserAppDataRoamingCodeUsersettings.json" and add
python.linting.pylintArgs lines at the end as shown below:
{
"team.showWelcomeMessage": false,
"python.dataScience.sendSelectionToInteractiveWindow": true,
"git.enableSmartCommit": true,
"powershell.codeFormatting.useCorrectCasing": true,
"files.autoSave": "onWindowChange",
"python.linting.pylintArgs": [
"--load-plugins=pylint_django",
"--errors-only"
],
}
1
aarw76
24 Сен 2019 в 13:12
Уже поздно, но все же я нашел это полезным. Так что делюсь. можно найти здесь.
Вы можете добавить флаг «—errors-only» для pylint, чтобы отключить предупреждения.
Для этого перейдите в настройки. Отредактируйте следующую строку:
"python.linting.pylintArgs": []
В качестве
"python.linting.pylintArgs": ["--errors-only"]
И тебе хорошо идти!
46
Nilesh Kevlani
10 Ноя 2017 в 16:35