Add py files in doc directories to pep8 check

Change-Id: Idb4f8864ab51f5e4ee2eef7745d40d5d8b5e57ce
This commit is contained in:
chenhb-zte 2017-04-01 11:13:03 +08:00
parent c63ba779ae
commit 16809b37a7
10 changed files with 93 additions and 97 deletions

View File

@ -21,8 +21,7 @@ from docutils.parsers import rst
from rally.cli import cliutils
from rally.cli import main
from rally.cli import manage
from utils import (category, subcategory, hint, make_definition, note,
paragraph, parse_text, warning)
import utils
class Parser(object):
@ -73,22 +72,24 @@ DEFAULT_UUIDS_CMD = {
def compose_note_about_default_uuids(argument, dest):
# TODO(andreykurilin): add references to commands
return note("The default value for the ``%(arg)s`` argument is taken from "
"the Rally environment. Usually, the default value is equal to"
" the UUID of the last successful run of ``%(cmd)s``, if the "
"``--no-use`` argument was not used." % {
"arg": argument,
"cmd": "``, ``".join(DEFAULT_UUIDS_CMD[dest])})
return utils.note(
"The default value for the ``%(arg)s`` argument is taken from "
"the Rally environment. Usually, the default value is equal to"
" the UUID of the last successful run of ``%(cmd)s``, if the "
"``--no-use`` argument was not used." % {
"arg": argument,
"cmd": "``, ``".join(DEFAULT_UUIDS_CMD[dest])})
def compose_use_cmd_hint_msg(cmd):
return hint("You can set the default value by executing ``%(cmd)s <uuid>``"
" (ref__).\n\n __ #%(ref)s" % {"cmd": cmd,
"ref": cmd.replace(" ", "-")})
return utils.hint(
"You can set the default value by executing ``%(cmd)s <uuid>``"
" (ref__).\n\n __ #%(ref)s" % {"cmd": cmd,
"ref": cmd.replace(" ", "-")})
def make_arguments_section(category_name, cmd_name, arguments, defaults):
elements = [paragraph("**Command arguments**:")]
elements = [utils.paragraph("**Command arguments**:")]
for args, kwargs in arguments:
# for future changes...
# :param args: a single command argument which can represented by
@ -109,14 +110,14 @@ def make_arguments_section(category_name, cmd_name, arguments, defaults):
# "use" command with reference
if dest in ("deployment", "task"):
description.append(compose_note_about_default_uuids(
args[0], dest))
args[0], dest))
description.append(
compose_use_cmd_hint_msg("rally %s use" % dest))
compose_use_cmd_hint_msg("rally %s use" % dest))
elif dest == "verification":
description.append(compose_note_about_default_uuids(
args[0], dest))
args[0], dest))
description.append(
compose_use_cmd_hint_msg("rally verify use"))
compose_use_cmd_hint_msg("rally verify use"))
description.append(kwargs.get("help"))
@ -138,7 +139,8 @@ def make_arguments_section(category_name, cmd_name, arguments, defaults):
if metavar:
args = ["%s %s" % (arg, metavar) for arg in args]
elements.extend(make_definition(", ".join(args), ref, description))
elements.extend(utils.make_definition(", ".join(args),
ref, description))
return elements
@ -154,8 +156,8 @@ def make_command_section(category_name, name, parser):
# NOTE(andreykurilin): there is only one category in rally-manage, so
# let's just hardcode it.
cmd = "rally-manage" if category_name == "db" else "rally"
section = subcategory("%s %s %s" % (cmd, category_name, name))
section.extend(parse_text(parser["description"]))
section = utils.subcategory("%s %s %s" % (cmd, category_name, name))
section.extend(utils.parse_text(parser["description"]))
if parser["parser"].arguments:
defaults = get_defaults(parser["parser"].defaults["action_fn"])
section.extend(make_arguments_section(
@ -164,7 +166,7 @@ def make_command_section(category_name, name, parser):
def make_category_section(name, parser):
category_obj = category("Category: %s" % name)
category_obj = utils.category("Category: %s" % name)
# NOTE(andreykurilin): we are re-using `_add_command_parsers` method from
# `rally.cli.cliutils`, but, since it was designed to print help message,
# generated description for categories contains specification for all
@ -177,9 +179,9 @@ def make_category_section(name, parser):
if description.startswith("[Deprecated"):
i = description.find("]")
msg = description[1:i]
description = description[i+1:].strip()
category_obj.append(warning(msg))
category_obj.extend(parse_text(description))
description = description[i + 1:].strip()
category_obj.append(utils.warning(msg))
category_obj.extend(utils.parse_text(description))
for command in sorted(parser.subparser.parsers.keys()):
subparser = parser.subparser.parsers[command]
@ -196,14 +198,14 @@ class CLIReferenceDirective(rst.Directive):
categories = copy.copy(main.categories)
categories["db"] = manage.DBCommands
if "group" in self.options:
categories = {k: v for k,v in categories.items()
categories = {k: v for k, v in categories.items()
if k == self.options["group"]}
cliutils._add_command_parsers(categories, parser)
content = []
for category in sorted(categories.keys()):
for cg in sorted(categories.keys()):
content.append(make_category_section(
category, parser.parsers[category]["parser"]))
cg, parser.parsers[cg]["parser"]))
return content

View File

@ -21,27 +21,26 @@ from oslo_utils import importutils
def include_var(name, rawtext, text, lineno, inliner, options=None,
content=None):
"""
"""include variable
:param name: The local name of the interpreted role, the role name
actually used in the document.
actually used in the document.
:param rawtext: A string containing the enitre interpreted text input,
including the role and markup. Return it as a problematic node
linked to a system message if a problem is encountered.
including the role and markup. Return it as a problematic
node linked to a system message if a problem is
encountered.
:param text: The interpreted text content.
:param lineno: The line number where the interpreted text begins.
:param inliner: The docutils.parsers.rst.states.Inliner object that
called include_var. It contains the several attributes useful for
error reporting and document tree access.
called include_var. It contains the several attributes
useful for error reporting and document tree access.
:param options: A dictionary of directive options for customization
(from the "role" directive), to be interpreted by the role function.
Used for additional attributes for the generated elements and other
functionality.
(from the 'role' directive), to be interpreted by the
role function. Used for additional attributes for the
generated elements and other functionality.
:param content: A list of strings, the directive content for
customization (from the "role" directive). To be interpreted by the
role function.
customization (from the 'role' directive). To be
interpreted by the role function.
:return:
"""
obj = importutils.import_class(text)

View File

@ -21,8 +21,7 @@ import re
from rally.common.plugin import discover
from rally.common.plugin import plugin
from rally import plugins
from utils import category, subcategory, section, paragraph, parse_text, \
make_definitions, note
import utils
JSON_SCHEMA_TYPES_MAP = {"boolean": "bool",
@ -210,26 +209,26 @@ class PluginsReferenceDirective(rst.Directive):
if "type" in item:
iname += " (%s)" % item["type"]
terms.append((iname, [item["doc"]]))
return make_definitions(title=title,
ref_prefix=ref_prefix,
terms=terms,
descriptions=description)
return utils.make_definitions(title=title,
ref_prefix=ref_prefix,
terms=terms,
descriptions=description)
def _make_plugin_section(self, plugin_cls, base_name=None):
section_name = plugin_cls.get_name()
if base_name:
section_name += " [%s]" % base_name
section_obj = section(section_name)
section_obj = utils.section(section_name)
info = plugin_cls.get_info()
if info["title"]:
section_obj.append(paragraph(info["title"]))
section_obj.append(utils.paragraph(info["title"]))
if info["description"]:
section_obj.extend(parse_text(info["description"]))
section_obj.extend(utils.parse_text(info["description"]))
if info["namespace"]:
section_obj.append(paragraph(
section_obj.append(utils.paragraph(
"**Namespace**: %s" % info["namespace"]))
if base_name:
@ -242,7 +241,7 @@ class PluginsReferenceDirective(rst.Directive):
ref_prefix))
if info["returns"]:
section_obj.extend(parse_text(
section_obj.extend(utils.parse_text(
"**Returns**:\n%s" % info["returns"]))
if info["schema"]:
@ -259,8 +258,9 @@ class PluginsReferenceDirective(rst.Directive):
description=["*Dictionary is expected. Keys should "
"follow pattern(s) described bellow.*"]))
elif "oneOf" in schema:
section_obj.append(note("One of the following groups of "
"parameters should be provided."))
section_obj.append(utils.note(
"One of the following groups of "
"parameters should be provided."))
for i, oneOf in enumerate(schema["oneOf"], 1):
description = None
if oneOf.get("doc", None):
@ -279,15 +279,15 @@ class PluginsReferenceDirective(rst.Directive):
filename = info["module"].replace(".", "/")
ref = "https://github.com/openstack/rally/blob/master/%s.py" % filename
section_obj.extend(parse_text("**Module**:\n`%s`__\n\n__ %s"
% (info["module"], ref)))
section_obj.extend(utils.parse_text("**Module**:\n`%s`__\n\n__ %s"
% (info["module"], ref)))
return section_obj
def _make_plugin_base_section(self, base_cls, base_name=None):
if base_name:
title = ("%ss" % base_name if base_name[-1] != "y"
else "%sies" % base_name[:-1])
subcategory_obj = subcategory(title)
subcategory_obj = utils.subcategory(title)
else:
subcategory_obj = []
for p in sorted(base_cls.get_all(), key=lambda o: o.get_name()):
@ -301,7 +301,7 @@ class PluginsReferenceDirective(rst.Directive):
@staticmethod
def _parse_class_name(cls):
name = ""
for word in re.split(r'([A-Z][a-z]*)', cls.__name__):
for word in re.split(r"([A-Z][a-z]*)", cls.__name__):
if word:
if len(word) > 1 and name:
name += " "
@ -345,7 +345,7 @@ class PluginsReferenceDirective(rst.Directive):
if base_name in IGNORED_BASES:
continue
if category_name not in categories:
categories[category_name] = category(category_name)
categories[category_name] = utils.category(category_name)
category_of_base = categories[category_name]
category_of_base.append(self._make_plugin_base_section(base_cls,
base_name))

View File

@ -18,8 +18,8 @@ Docutils is awful library. Let's apply some hacks and aliases to simplify usage
from docutils import frontend
from docutils import nodes
from docutils import utils
from docutils.parsers import rst
from docutils import utils
import string
import six
@ -27,7 +27,8 @@ import six
def parse_text(text):
parser = rst.Parser()
settings = frontend.OptionParser(components=(rst.Parser,)).get_default_values()
settings = frontend.OptionParser(
components=(rst.Parser,)).get_default_values()
document = utils.new_document(text, settings)
parser.parse(text, document)
return document.children
@ -45,8 +46,8 @@ def make_definition(term, ref, descriptions):
"""Constructs definition with reference to it."""
ref = ref.replace("_", "-").replace(" ", "-")
definition = parse_text(
".. _%(ref)s:\n\n* *%(term)s* [ref__]\n\n__ #%(ref)s" %
{"ref": ref, "term": term})
".. _%(ref)s:\n\n* *%(term)s* [ref__]\n\n__ #%(ref)s" %
{"ref": ref, "term": term})
for descr in descriptions:
if descr:
if isinstance(descr, (six.text_type, six.binary_type)):

View File

@ -21,7 +21,7 @@
# All configuration values have a default; values that are commented out
# serve to show the default.
import datetime
import datetime as dt
import os
import subprocess
import sys
@ -31,20 +31,20 @@ import rally.common.version
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.extend([
# os.path.abspath("../.."),
# os.path.abspath("../"),
# os.path.abspath("./")
#])
# sys.path.extend([
# os.path.abspath("../.."),
# os.path.abspath("../"),
# os.path.abspath("./")
# ])
sys.path.insert(0, os.path.abspath('../../'))
sys.path.insert(0, os.path.abspath('../'))
sys.path.insert(0, os.path.abspath('./'))
sys.path.insert(0, os.path.abspath("../../"))
sys.path.insert(0, os.path.abspath("../"))
sys.path.insert(0, os.path.abspath("./"))
# -- General configuration ----------------------------------------------------
on_rtd = os.environ.get('READTHEDOCS') == 'True'
on_rtd = os.environ.get("READTHEDOCS") == "True"
# If your documentation needs a minimal Sphinx version, state it here.
# needs_sphinx = "1.0"
@ -79,7 +79,7 @@ master_doc = "index"
# General information about the project.
project = u"Rally"
copyright = u"%d, OpenStack Foundation" % datetime.datetime.now().year
copyright = u"%d, OpenStack Foundation" % dt.datetime.now().year
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@ -147,7 +147,7 @@ else:
# Add any paths that contain custom themes here, relative to this directory.
if not on_rtd:
import oslosphinx
theme_dir = os.path.join(os.path.dirname(oslosphinx.__file__), 'theme')
theme_dir = os.path.join(os.path.dirname(oslosphinx.__file__), "theme")
html_theme_path = [theme_dir, "_templates"]
else:
html_theme_path = []
@ -181,14 +181,14 @@ else:
git_cmd = [
"git", "log", "--pretty=format:'%ad, commit %h'", "--date=local", "-n1"]
html_last_updated_fmt = subprocess.Popen(
git_cmd, stdout=subprocess.PIPE).communicate()[0]
git_cmd, stdout=subprocess.PIPE).communicate()[0]
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
html_use_smartypants = False
# Custom sidebar templates, maps document names to template names.
html_sidebars = {'**': ['searchbox.html', 'globaltoc.html']}
html_sidebars = {"**": ["searchbox.html", "globaltoc.html"]}
# Additional templates that should be rendered to pages, maps page names to
# template names.
@ -227,14 +227,12 @@ htmlhelp_basename = "%sdoc" % project
# -- Options for LaTeX output -------------------------------------------------
latex_elements = {
# The paper size ("letterpaper" or "a4paper").
#"papersize": "letterpaper",
# The font size ("10pt", "11pt" or "12pt").
#"pointsize": "10pt",
# Additional stuff for the LaTeX preamble.
#"preamble": "",
# The paper size ("letterpaper" or "a4paper").
# "papersize": "letterpaper",
# The font size ("10pt", "11pt" or "12pt").
# "pointsize": "10pt",
# Additional stuff for the LaTeX preamble.
# "preamble": "",
}
# Grouping the document tree into LaTeX files. List of tuples
@ -286,9 +284,10 @@ latex_documents = [
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
("index", "Rally", u"Rally Documentation",
u"Rally Team", "Rally", "Testing framework and tool for all kinds of tests",
"Development"),
("index", "Rally", u"Rally Documentation",
u"Rally Team", "Rally",
"Testing framework and tool for all kinds of tests",
"Development"),
]
# Documents to append as an appendix to all manuals.

View File

@ -13,13 +13,9 @@
# License for the specific language governing permissions and limitations
# under the License.
from rally import plugins
from rally.common.plugin import discover
from rally.common.plugin import info
from rally.common.plugin import plugin
from rally.deployment import engine
from rally.deployment.serverprovider import provider
from rally.task import sla
from rally import plugins
from tests.unit import test
EXCEPTIONS_DOCSTR = "missed_docstrings.txt"
@ -28,7 +24,6 @@ EXCEPTIONS_FORMAT = "wrong_format.txt"
class DocstringsTestCase(test.TestCase):
def setUp(self):
super(DocstringsTestCase, self).setUp()
plugins.load()

View File

@ -69,7 +69,7 @@ class TestFormat(testtools.TestCase):
docs_dir = os.path.join(os.path.dirname(__file__), os.pardir,
os.pardir, os.pardir, "doc")
for root, dirnames, filenames in os.walk(docs_dir):
for filename in fnmatch.filter(filenames, '*.rst'):
for filename in fnmatch.filter(filenames, "*.rst"):
files.append(os.path.join(root, filename))
for filename in files:

View File

@ -74,7 +74,7 @@ class TitlesTestCase(test.TestCase):
self.assertTrue(
len(line) < 80,
msg="%s:%d: Line limited to a maximum of 79 characters." %
(tpl, i+1))
(tpl, i + 1))
def _check_no_cr(self, tpl, raw):
matches = re.findall("\r", raw)
@ -88,7 +88,7 @@ class TitlesTestCase(test.TestCase):
trailing_spaces = re.findall(" +$", line)
self.assertEqual(
len(trailing_spaces), 0,
"Found trailing spaces on line %s of %s" % (i+1, tpl))
"Found trailing spaces on line %s of %s" % (i + 1, tpl))
def test_template(self):
with open(os.path.join(self.specs_path, "template.rst")) as f:

View File

@ -22,8 +22,8 @@ import traceback
import yaml
from rally import api
from rally.task import scenario
from rally.task import engine
from rally.task import scenario
from tests.unit import test

View File

@ -78,7 +78,7 @@ commands = python {toxinidir}/tests/ci/sync_requirements.py {posargs}
[flake8]
ignore = H703,H105
show-source = true
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,tools,build,setup.py
exclude=.venv,.git,.tox,dist,*lib/python*,*egg,tools,build,setup.py
[hacking]
import_exceptions = rally.common.i18n