summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHervé Beraud <hberaud@redhat.com>2020-07-21 13:40:33 +0200
committerHervé Beraud <hberaud@redhat.com>2020-09-15 13:40:37 +0200
commitde9b2fc6a184611531c46d519797c428a0aeaead (patch)
tree7f8e84c523283f2188c64bc28c7010811b6fe83e
parente9204ee7b702f67c4de1c777db9482b065126407 (diff)
downloadstevedore-de9b2fc6a184611531c46d519797c428a0aeaead.tar.gz
Adding pre-commit
Introduced changes: - pre-commit config and rules. - Add pre-commit to pep8 gate, Flake8 is covered in the pre-commit hooks. - Applying fixes for pre-commit compliance in all code. Also commit hash will be used instead of version tags in pre-commit to prevend arbitrary code from running in developer's machines. pre-commit will be used to: - trailing whitespace; - Replaces or checks mixed line ending (mixed-line-ending); - Forbid files which have a UTF-8 byte-order marker (check-byte-order-marker); - Checks that non-binary executables have a proper shebang (check-executables-have-shebangs); - Check for files that contain merge conflict strings (check-merge-conflict); - Check for debugger imports and py37+ breakpoint() calls in python source (debug-statements); - Attempts to load all yaml files to verify syntax (check-yaml); - Run flake8 checks (flake8) (local) For further details about tests please refer to: https://github.com/pre-commit/pre-commit-hooks Change-Id: I045fa1cd7932d960e1cf49b2c335c7acdeba0b46 Signed-off-by: Moisés Guimarães de Medeiros <moguimar@redhat.com>
-rw-r--r--.pre-commit-config.yaml35
-rw-r--r--doc/Makefile188
-rw-r--r--doc/source/conf.py229
-rw-r--r--doc/source/user/essays/pycon2013.rst4
-rw-r--r--doc/source/user/tutorial/creating_plugins.rst4
-rw-r--r--doc/source/user/tutorial/naming.rst2
-rw-r--r--releasenotes/source/conf.py2
-rw-r--r--stevedore/_cache.py3
-rw-r--r--stevedore/driver.py6
-rw-r--r--stevedore/example/base.py15
-rw-r--r--stevedore/example/load_as_driver.py14
-rw-r--r--stevedore/example/load_as_extension.py14
-rw-r--r--stevedore/example/setup.py17
-rw-r--r--stevedore/example/simple.py16
-rw-r--r--stevedore/example2/fields.py15
-rw-r--r--stevedore/example2/setup.py17
-rw-r--r--stevedore/extension.py8
-rw-r--r--stevedore/tests/test_dispatch.py2
-rw-r--r--stevedore/tests/test_test_manager.py15
-rw-r--r--test-requirements.txt3
-rw-r--r--tox.ini7
21 files changed, 317 insertions, 299 deletions
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..a9cb953
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,35 @@
+---
+default_language_version:
+ # force all unspecified python hooks to run python3
+ python: python3
+repos:
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v3.1.0
+ hooks:
+ - id: trailing-whitespace
+ # Replaces or checks mixed line ending
+ - id: mixed-line-ending
+ args: ['--fix', 'lf']
+ exclude: '.*\.(svg)$'
+ # Forbid files which have a UTF-8 byte-order marker
+ - id: check-byte-order-marker
+ # Checks that non-binary executables have a proper shebang
+ - id: check-executables-have-shebangs
+ # Check for files that contain merge conflict strings.
+ - id: check-merge-conflict
+ # Check for debugger imports and py37+ breakpoint()
+ # calls in python source
+ - id: debug-statements
+ - id: check-yaml
+ files: .*\.(yaml|yml)$
+ - repo: https://github.com/Lucas-C/pre-commit-hooks
+ rev: v1.1.7
+ hooks:
+ - id: remove-tabs
+ exclude: '.*\.(svg)$'
+ - repo: https://gitlab.com/pycqa/flake8
+ rev: 3.8.3
+ hooks:
+ - id: flake8
+ additional_dependencies:
+ - hacking>=3.0.1,<3.1.0
diff --git a/doc/Makefile b/doc/Makefile
index cc35949..efd594b 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -17,137 +17,137 @@ I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
help:
- @echo "Please use \`make <target>' where <target> is one of"
- @echo " html to make standalone HTML files"
- @echo " dirhtml to make HTML files named index.html in directories"
- @echo " singlehtml to make a single large HTML file"
- @echo " pickle to make pickle files"
- @echo " json to make JSON files"
- @echo " htmlhelp to make HTML files and a HTML help project"
- @echo " qthelp to make HTML files and a qthelp project"
- @echo " devhelp to make HTML files and a Devhelp project"
- @echo " epub to make an epub"
- @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
- @echo " latexpdf to make LaTeX files and run them through pdflatex"
- @echo " text to make text files"
- @echo " man to make manual pages"
- @echo " texinfo to make Texinfo files"
- @echo " info to make Texinfo files and run them through makeinfo"
- @echo " gettext to make PO message catalogs"
- @echo " changes to make an overview of all changed/added/deprecated items"
- @echo " linkcheck to check all external links for integrity"
- @echo " doctest to run all doctests embedded in the documentation (if enabled)"
+ @echo "Please use \`make <target>' where <target> is one of"
+ @echo " html to make standalone HTML files"
+ @echo " dirhtml to make HTML files named index.html in directories"
+ @echo " singlehtml to make a single large HTML file"
+ @echo " pickle to make pickle files"
+ @echo " json to make JSON files"
+ @echo " htmlhelp to make HTML files and a HTML help project"
+ @echo " qthelp to make HTML files and a qthelp project"
+ @echo " devhelp to make HTML files and a Devhelp project"
+ @echo " epub to make an epub"
+ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+ @echo " latexpdf to make LaTeX files and run them through pdflatex"
+ @echo " text to make text files"
+ @echo " man to make manual pages"
+ @echo " texinfo to make Texinfo files"
+ @echo " info to make Texinfo files and run them through makeinfo"
+ @echo " gettext to make PO message catalogs"
+ @echo " changes to make an overview of all changed/added/deprecated items"
+ @echo " linkcheck to check all external links for integrity"
+ @echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean:
- -rm -rf $(BUILDDIR)/*
+ -rm -rf $(BUILDDIR)/*
html:
- $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
- @echo
- @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+ @echo
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
- $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
- @echo
- @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+ $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+ @echo
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
- $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
- @echo
- @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+ $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+ @echo
+ @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
- $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
- @echo
- @echo "Build finished; now you can process the pickle files."
+ $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+ @echo
+ @echo "Build finished; now you can process the pickle files."
json:
- $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
- @echo
- @echo "Build finished; now you can process the JSON files."
+ $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+ @echo
+ @echo "Build finished; now you can process the JSON files."
htmlhelp:
- $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
- @echo
- @echo "Build finished; now you can run HTML Help Workshop with the" \
- ".hhp project file in $(BUILDDIR)/htmlhelp."
+ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+ @echo
+ @echo "Build finished; now you can run HTML Help Workshop with the" \
+ ".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
- $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
- @echo
- @echo "Build finished; now you can run "qcollectiongenerator" with the" \
- ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
- @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/stevedore.qhcp"
- @echo "To view the help file:"
- @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/stevedore.qhc"
+ $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+ @echo
+ @echo "Build finished; now you can run "qcollectiongenerator" with the" \
+ ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+ @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/stevedore.qhcp"
+ @echo "To view the help file:"
+ @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/stevedore.qhc"
devhelp:
- $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
- @echo
- @echo "Build finished."
- @echo "To view the help file:"
- @echo "# mkdir -p $$HOME/.local/share/devhelp/stevedore"
- @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/stevedore"
- @echo "# devhelp"
+ $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+ @echo
+ @echo "Build finished."
+ @echo "To view the help file:"
+ @echo "# mkdir -p $$HOME/.local/share/devhelp/stevedore"
+ @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/stevedore"
+ @echo "# devhelp"
epub:
- $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
- @echo
- @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+ $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+ @echo
+ @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo
- @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
- @echo "Run \`make' in that directory to run these through (pdf)latex" \
- "(use \`make latexpdf' here to do that automatically)."
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ @echo
+ @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+ @echo "Run \`make' in that directory to run these through (pdf)latex" \
+ "(use \`make latexpdf' here to do that automatically)."
latexpdf:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo "Running LaTeX files through pdflatex..."
- $(MAKE) -C $(BUILDDIR)/latex all-pdf
- @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ @echo "Running LaTeX files through pdflatex..."
+ $(MAKE) -C $(BUILDDIR)/latex all-pdf
+ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text:
- $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
- @echo
- @echo "Build finished. The text files are in $(BUILDDIR)/text."
+ $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+ @echo
+ @echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
- $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
- @echo
- @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+ $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+ @echo
+ @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
texinfo:
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
- @echo
- @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
- @echo "Run \`make' in that directory to run these through makeinfo" \
- "(use \`make info' here to do that automatically)."
+ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+ @echo
+ @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
+ @echo "Run \`make' in that directory to run these through makeinfo" \
+ "(use \`make info' here to do that automatically)."
info:
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
- @echo "Running Texinfo files through makeinfo..."
- make -C $(BUILDDIR)/texinfo info
- @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+ @echo "Running Texinfo files through makeinfo..."
+ make -C $(BUILDDIR)/texinfo info
+ @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
gettext:
- $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
- @echo
- @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+ $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+ @echo
+ @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
changes:
- $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
- @echo
- @echo "The overview file is in $(BUILDDIR)/changes."
+ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+ @echo
+ @echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
- $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
- @echo
- @echo "Link check complete; look for any errors in the above output " \
- "or in $(BUILDDIR)/linkcheck/output.txt."
+ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+ @echo
+ @echo "Link check complete; look for any errors in the above output " \
+ "or in $(BUILDDIR)/linkcheck/output.txt."
doctest:
- $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
- @echo "Testing of doctests in the sources finished, look at the " \
- "results in $(BUILDDIR)/doctest/output.txt."
+ $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+ @echo "Testing of doctests in the sources finished, look at the " \
+ "results in $(BUILDDIR)/doctest/output.txt."
diff --git a/doc/source/conf.py b/doc/source/conf.py
index d3b088a..5f3e370 100644
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -1,9 +1,24 @@
# -*- coding: utf-8 -*-
+# Copyright (C) 2020 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
#
# stevedore documentation build configuration file, created by
# sphinx-quickstart on Sun Jul 22 14:01:09 2012.
#
-# This file is execfile()d with the current directory set to its containing dir.
+# This file is execfile()d with the current directory set to its
+# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
@@ -11,30 +26,28 @@
# All configuration values have a default; values that are commented out
# serve to show the default.
-import datetime
-
-# make openstackdocstheme an optional dependency. stevedore is a low level lib
+# make openstackdocstheme an optional dependency. stevedore is a
+# low level lib
# that is used outside of OpenStack. Not having something OpenStack specific
# as build requirement is a good thing.
try:
- import openstackdocstheme
+ import openstackdocstheme # noqa
except ImportError:
has_openstackdocstheme = False
else:
has_openstackdocstheme = True
-# If extensions (or modules to document with autodoc) are in another directory,
+# 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.insert(0, os.path.abspath('.'))
+# documentation root, use os.path.abspath to make it absolute,
+# like shown here.sys.path.insert(0, os.path.abspath('.'))
-# -- General configuration -----------------------------------------------------
+# -- General configuration -----------------------------------------
-# If your documentation needs a minimal Sphinx version, state it here.
-#needs_sphinx = '1.0'
-
-# Add any Sphinx extension module names here, as strings. They can be extensions
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+# Add any Sphinx extension module names here, as strings.
+# They can be extensions coming with Sphinx (named 'sphinx.ext.*')
+# or your custom ones.
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.todo',
@@ -57,9 +70,6 @@ templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
-# The encoding of source files.
-#source_encoding = 'utf-8-sig'
-
# The master toctree document.
master_doc = 'index'
@@ -68,195 +78,64 @@ project = u'stevedore'
copyright = u'2016, DreamHost'
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-#today_fmt = '%B %d, %Y'
-
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = []
-# The reST default role (used for this markup: `text`) to use for all documents.
-#default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#show_authors = False
-
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'native'
-# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
-
-
-# -- Options for HTML output ---------------------------------------------------
+# -- Options for HTML output ------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
-#html_theme = 'default'
if has_openstackdocstheme:
html_theme = 'openstackdocs'
-# Theme options are theme-specific and customize the look and feel of a theme
-# further. For a list of options available for each theme, see the
-# documentation.
-#html_theme_options = {}
-
-# Add any paths that contain custom themes here, relative to this directory.
-#html_theme_path = []
-
-# The name for this set of Sphinx documents. If None, it defaults to
-# "<project> v<release> documentation".
-#html_title = None
-
-# A shorter title for the navigation bar. Default is the same as html_title.
-#html_short_title = None
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-#html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-#html_static_path = ['_static']
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-#html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#html_additional_pages = {}
-
-# If false, no module index is generated.
-#html_domain_indices = True
-
-# If false, no index is generated.
-#html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-#html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
-
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-#html_show_sphinx = True
-
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-#html_show_copyright = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it. The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# This is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = None
-
# Output file base name for HTML help builder.
htmlhelp_basename = 'stevedoredoc'
-# -- Options for LaTeX output --------------------------------------------------
-
-latex_elements = {
-# The paper size ('letterpaper' or 'a4paper').
-#'papersize': 'letterpaper',
+# -- Options for LaTeX output ----------------------------------------
-# The font size ('10pt', '11pt' or '12pt').
-#'pointsize': '10pt',
-
-# Additional stuff for the LaTeX preamble.
-#'preamble': '',
-}
+latex_elements = {}
# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, documentclass [howto/manual]).
+# (source start file, target name, title, author,
+# documentclass [howto/manual]).
latex_documents = [
- ('index', 'stevedore.tex', u'stevedore Documentation',
- u'DreamHost', 'manual'),
+ (
+ 'index',
+ 'stevedore.tex',
+ u'stevedore Documentation',
+ u'DreamHost',
+ 'manual'
+ ),
]
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# If true, show page references after internal links.
-#latex_show_pagerefs = False
-
-# If true, show URL addresses after external links.
-#latex_show_urls = False
-
-# Documents to append as an appendix to all manuals.
-#latex_appendices = []
-
-# If false, no module index is generated.
-#latex_domain_indices = True
-
-
-# -- Options for manual page output --------------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-# man_pages = [
-# ('index', 'stevedore', u'stevedore Documentation',
-# [u'DreamHost'], 1)
-# ]
-
-# If true, show URL addresses after external links.
-#man_show_urls = False
-
-
-# -- Options for Texinfo output ------------------------------------------------
+# -- Options for Texinfo output -------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
- ('index', 'stevedore', u'stevedore Documentation',
- u'DreamHost', 'stevedore', 'One line description of project.',
- 'Miscellaneous'),
+ (
+ 'index',
+ 'stevedore',
+ u'stevedore Documentation',
+ u'DreamHost',
+ 'stevedore',
+ 'One line description of project.',
+ 'Miscellaneous'
+ ),
]
-# Documents to append as an appendix to all manuals.
-#texinfo_appendices = []
-
-# If false, no module index is generated.
-#texinfo_domain_indices = True
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-#texinfo_show_urls = 'footnote'
-
extlinks = {
'issue': ('https://github.com/dreamhost/stevedore/issues/%s', 'issue '),
}
-autodoc_default_options = {'members': None, 'special-members': None, 'show-inheritance': None}
+autodoc_default_options = {
+ 'members': None,
+ 'special-members': None,
+ 'show-inheritance': None
+}
diff --git a/doc/source/user/essays/pycon2013.rst b/doc/source/user/essays/pycon2013.rst
index f2bc8fa..a06a47a 100644
--- a/doc/source/user/essays/pycon2013.rst
+++ b/doc/source/user/essays/pycon2013.rst
@@ -88,7 +88,7 @@ several different areas.
OpenStack is a collection of components that cooperate to provide
`Infrastructure as a Service`_ features. Each component manages a
different aspect of the cloud and uses a message bus to communicate
-with the other components.
+with the other components.
All of the components generate notification messages when events
happen (like instances being created or destroyed). Capturing those
@@ -453,7 +453,7 @@ unexpected errors from the plugins any time we call into them.
Invocation
----------
-We used all three invocation patterns, in different places.
+We used all three invocation patterns, in different places.
1. We only use one storage system at a time, so we treat the storage
plugin like a driver.
diff --git a/doc/source/user/tutorial/creating_plugins.rst b/doc/source/user/tutorial/creating_plugins.rst
index eefe76b..114de28 100644
--- a/doc/source/user/tutorial/creating_plugins.rst
+++ b/doc/source/user/tutorial/creating_plugins.rst
@@ -33,7 +33,7 @@ A Plugin Base Class
===================
Step 1 above is to define an abstract base class for the API that
-needs to be implemented by each plugin.
+needs to be implemented by each plugin.
.. literalinclude:: ../../../../stevedore/example/base.py
:language: python
@@ -104,7 +104,7 @@ for stevedore is located in ``stevedore.egg-info/entry_points.txt``:
[stevedore.example.formatter]
simple = stevedore.example.simple:Simple
plain = stevedore.example.simple:Simple
-
+
[stevedore.test.extension]
t2 = stevedore.tests.test_extension:FauxExtension
t1 = stevedore.tests.test_extension:FauxExtension
diff --git a/doc/source/user/tutorial/naming.rst b/doc/source/user/tutorial/naming.rst
index 5a155c1..b6ab448 100644
--- a/doc/source/user/tutorial/naming.rst
+++ b/doc/source/user/tutorial/naming.rst
@@ -11,7 +11,7 @@ module is imported (i.e., it needs to be a module-level global).
Names and Namespaces
====================
-Entry points are registered using a *name* in a *namespace*.
+Entry points are registered using a *name* in a *namespace*.
Entry point names are usually considered user-visible. For example,
they frequently appear in configuration files where a driver is being
diff --git a/releasenotes/source/conf.py b/releasenotes/source/conf.py
index e59270e..6d53444 100644
--- a/releasenotes/source/conf.py
+++ b/releasenotes/source/conf.py
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
+# Copyright (C) 2020 Red Hat, Inc.
+#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
diff --git a/stevedore/_cache.py b/stevedore/_cache.py
index 28a45fa..cd0e1cd 100644
--- a/stevedore/_cache.py
+++ b/stevedore/_cache.py
@@ -72,8 +72,7 @@ def _ftobytes(f):
def _hash_settings_for_path(path):
- """Return a hash and the path settings that created it.
- """
+ """Return a hash and the path settings that created it."""
paths = []
h = hashlib.sha256()
diff --git a/stevedore/driver.py b/stevedore/driver.py
index 167dc67..e21e4ce 100644
--- a/stevedore/driver.py
+++ b/stevedore/driver.py
@@ -10,7 +10,8 @@
# License for the specific language governing permissions and limitations
# under the License.
-from .exception import NoMatches, MultipleMatches
+from .exception import MultipleMatches
+from .exception import NoMatches
from .named import NamedExtensionManager
@@ -142,7 +143,6 @@ class DriverManager(NamedExtensionManager):
@property
def driver(self):
- """Returns the driver being used by this manager.
- """
+ """Returns the driver being used by this manager."""
ext = self.extensions[0]
return ext.obj if ext.obj else ext.plugin
diff --git a/stevedore/example/base.py b/stevedore/example/base.py
index 08f8a5c..cd48bf2 100644
--- a/stevedore/example/base.py
+++ b/stevedore/example/base.py
@@ -1,3 +1,18 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2020 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
import abc
diff --git a/stevedore/example/load_as_driver.py b/stevedore/example/load_as_driver.py
index 6838c9d..a3de5df 100644
--- a/stevedore/example/load_as_driver.py
+++ b/stevedore/example/load_as_driver.py
@@ -1,3 +1,17 @@
+# Copyright (C) 2020 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
import argparse
from stevedore import driver
diff --git a/stevedore/example/load_as_extension.py b/stevedore/example/load_as_extension.py
index f751852..1af1f46 100644
--- a/stevedore/example/load_as_extension.py
+++ b/stevedore/example/load_as_extension.py
@@ -1,3 +1,17 @@
+# Copyright (C) 2020 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
import argparse
from stevedore import extension
diff --git a/stevedore/example/setup.py b/stevedore/example/setup.py
index 33e2aee..c0ea667 100644
--- a/stevedore/example/setup.py
+++ b/stevedore/example/setup.py
@@ -1,4 +1,19 @@
-from setuptools import setup, find_packages
+# Copyright (C) 2020 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+from setuptools import find_packages
+from setuptools import setup
setup(
name='stevedore-examples',
diff --git a/stevedore/example/simple.py b/stevedore/example/simple.py
index 1cad96a..0cc3acd 100644
--- a/stevedore/example/simple.py
+++ b/stevedore/example/simple.py
@@ -1,9 +1,21 @@
+# Copyright (C) 2020 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
from stevedore.example import base
class Simple(base.FormatterBase):
- """A very basic formatter.
- """
+ """A very basic formatter."""
def format(self, data):
"""Format the data and return unicode text.
diff --git a/stevedore/example2/fields.py b/stevedore/example2/fields.py
index f5c8e19..82db747 100644
--- a/stevedore/example2/fields.py
+++ b/stevedore/example2/fields.py
@@ -1,3 +1,18 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2020 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
import textwrap
from stevedore.example import base
diff --git a/stevedore/example2/setup.py b/stevedore/example2/setup.py
index 31d7145..2293c66 100644
--- a/stevedore/example2/setup.py
+++ b/stevedore/example2/setup.py
@@ -1,4 +1,19 @@
-from setuptools import setup, find_packages
+# Copyright (C) 2020 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+from setuptools import find_packages
+from setuptools import setup
setup(
name='stevedore-examples2',
diff --git a/stevedore/extension.py b/stevedore/extension.py
index 2ccdc27..4aeda06 100644
--- a/stevedore/extension.py
+++ b/stevedore/extension.py
@@ -13,8 +13,8 @@
"""ExtensionManager
"""
-import operator
import logging
+import operator
from . import _cache
from .exception import NoMatches
@@ -331,8 +331,7 @@ class ExtensionManager(object):
LOG.exception(err)
def items(self):
- """
- Return an iterator of tuples of the form (name, extension).
+ """Return an iterator of tuples of the form (name, extension).
This is analogous to the Mapping.items() method.
"""
@@ -356,6 +355,5 @@ class ExtensionManager(object):
return self._extensions_by_name[name]
def __contains__(self, name):
- """Return true if name is in list of enabled extensions.
- """
+ """Return true if name is in list of enabled extensions."""
return any(extension.name == name for extension in self.extensions)
diff --git a/stevedore/tests/test_dispatch.py b/stevedore/tests/test_dispatch.py
index f1c305a..e54e492 100644
--- a/stevedore/tests/test_dispatch.py
+++ b/stevedore/tests/test_dispatch.py
@@ -10,8 +10,8 @@
# License for the specific language governing permissions and limitations
# under the License.
-from stevedore.tests import utils
from stevedore import dispatch
+from stevedore.tests import utils
def check_dispatch(ep, *args, **kwds):
diff --git a/stevedore/tests/test_test_manager.py b/stevedore/tests/test_test_manager.py
index 54bb454..3ada139 100644
--- a/stevedore/tests/test_test_manager.py
+++ b/stevedore/tests/test_test_manager.py
@@ -10,15 +10,20 @@
# License for the specific language governing permissions and limitations
# under the License.
-from unittest.mock import Mock, sentinel
+from unittest.mock import Mock
+from unittest.mock import sentinel
-from stevedore import (ExtensionManager, NamedExtensionManager, HookManager,
- DriverManager, EnabledExtensionManager)
-from stevedore.dispatch import (DispatchExtensionManager,
- NameDispatchExtensionManager)
+from stevedore.dispatch import DispatchExtensionManager
+from stevedore.dispatch import NameDispatchExtensionManager
from stevedore.extension import Extension
from stevedore.tests import utils
+from stevedore import DriverManager
+from stevedore import EnabledExtensionManager
+from stevedore import ExtensionManager
+from stevedore import HookManager
+from stevedore import NamedExtensionManager
+
test_extension = Extension('test_extension', None, None, None)
test_extension2 = Extension('another_one', None, None, None)
diff --git a/test-requirements.txt b/test-requirements.txt
index 7b203a2..1964dd1 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -6,3 +6,6 @@ coverage!=4.4,>=4.0 # Apache-2.0
stestr>=2.0.0 # Apache-2.0
# sphinx is needed for testing the sphinxext module
sphinx>=2.0.0,!=2.1.0 # BSD
+
+bandit>=1.6.0,<1.7.0 # Apache-2.0
+pre-commit>=2.6.0 # MIT
diff --git a/tox.ini b/tox.ini
index 72dd206..ae86fcb 100644
--- a/tox.ini
+++ b/tox.ini
@@ -20,17 +20,14 @@ deps =
commands = {posargs}
[testenv:pep8]
-deps =
- flake8 # MIT
- bandit>=1.1.0,<1.6.0 # Apache-2.0
ignore = E251
commands =
- flake8 stevedore setup.py
+ pre-commit run -a
# Run security linter
bandit -r stevedore -x tests -n5
[flake8]
-ignore = E251
+ignore = E251,H405
show-source = True
exclude=.venv,.git,.tox,dist,*lib/python*,*egg,build