D100 missing docstring in public module как исправить

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 """ ...

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

Actual

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's user avatar

NAND

6578 silver badges22 bronze badges

asked Sep 13, 2017 at 8:28

Sami Soheili's user avatar

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

Rakesh Kumar's user avatar

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

mdegis's user avatar

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 Gill's user avatar

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

Понравилась статья? Поделить с друзьями:
  • D02c24 ошибка bmw f30
  • D01c0c ошибка bmw
  • D01b2a ошибка bmw f15
  • D019c3 ошибка bmw
  • D019bf ошибка bmw