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: I9b979afcd45e6a51252ccccb686b01beeb9157f8
Signed-off-by: Moisés Guimarães de Medeiros <moguimar@redhat.com>
This commit is contained in:
Hervé Beraud 2020-07-21 13:43:23 +02:00
parent 0ef4eb20b4
commit ff156664e6
11 changed files with 69 additions and 88 deletions

35
.pre-commit-config.yaml Normal file
View File

@ -0,0 +1,35 @@
# We from the Oslo project decided to pin repos based on the
# commit hash instead of the version tag to prevend arbitrary
# code from running in developer's machines. To update to a
# newer version, run `pre-commit autoupdate` and then replace
# the newer versions with their commit hash.
default_language_version:
python: python3
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: ebc15addedad713c86ef18ae9632c88e187dd0af # 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://gitlab.com/pycqa/flake8
rev: 181bb46098dddf7e2d45319ea654b4b4d58c2840 # 3.8.3
hooks:
- id: flake8
additional_dependencies:
- hacking>=3.0.1,<3.1.0

View File

@ -1,4 +1,17 @@
# -*- coding: utf-8 -*- # -*- 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.
# #
# This file is execfile()d with the current directory set to its # This file is execfile()d with the current directory set to its
# containing dir. # containing dir.
@ -9,19 +22,8 @@
# All configuration values have a default; values that are commented out # All configuration values have a default; values that are commented out
# serve to show the default. # serve to show the default.
import sys
import os
# 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('.'))
# -- 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 # Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones. # ones.
@ -32,15 +34,9 @@ extensions = [
] ]
# Add any paths that contain templates here, relative to this directory.
# templates_path = ['_templates']
# The suffix of source filenames. # The suffix of source filenames.
source_suffix = '.rst' source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document. # The master toctree document.
master_doc = 'index' master_doc = 'index'
@ -66,45 +62,13 @@ release = '1.0'
openstackdocs_bug_tag = "doc-builds" openstackdocs_bug_tag = "doc-builds"
openstackdocs_bug_project = 'openstack-doc-tools' openstackdocs_bug_project = 'openstack-doc-tools'
# 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 # List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files. # directories to ignore when looking for source files.
exclude_patterns = ['_build'] exclude_patterns = ['_build']
# 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. # The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx' pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# If true, keep warnings as "system message" paragraphs in the built documents.
#keep_warnings = False
# -- Options for HTML output ---------------------------------------------- # -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for # The theme to use for HTML and HTML Help pages. See the documentation for
@ -123,36 +87,3 @@ html_theme = 'openstackdocs'
html_theme_options = {"sidebar_dropdown": "api_ref", html_theme_options = {"sidebar_dropdown": "api_ref",
"display_badge": False, "display_badge": False,
"sidebar_mode": "toc"} "sidebar_mode": "toc"}
# 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/css']
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
#html_extra_path = []
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'

View File

@ -1,4 +1,17 @@
# -*- coding: utf-8 -*- # -*- 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.
# #
# openstackdocstheme documentation build configuration file # openstackdocstheme documentation build configuration file

View File

@ -149,6 +149,6 @@ a new database instance.
#. Click the :guilabel:`Restore From Database` tab and make sure that this #. Click the :guilabel:`Restore From Database` tab and make sure that this
new instance is based on the correct backup. new instance is based on the correct backup.
#. Click :guilabel:`Launch`. #. Click :guilabel:`Launch`.
The new instance appears in the database instances list. The new instance appears in the database instances list.

View File

@ -682,4 +682,4 @@
<glyph unicode="&#xf2be;" horiz-adv-x="1792" /> <glyph unicode="&#xf2be;" horiz-adv-x="1792" />
<glyph unicode="&#xf500;" horiz-adv-x="1792" /> <glyph unicode="&#xf500;" horiz-adv-x="1792" />
</font> </font>
</defs></svg> </defs></svg>

Before

Width:  |  Height:  |  Size: 382 KiB

After

Width:  |  Height:  |  Size: 382 KiB

View File

@ -285,4 +285,4 @@
<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" /> <glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" /> <glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font> </font>
</defs></svg> </defs></svg>

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 106 KiB

View File

@ -50,7 +50,7 @@
c-3.237,0-5.635,2.655-5.635,6.334v0.233c0,3.679,2.329,6.264,5.542,6.264C116.597,23.915,117.831,23.147,118.809,22.053z"/> c-3.237,0-5.635,2.655-5.635,6.334v0.233c0,3.679,2.329,6.264,5.542,6.264C116.597,23.915,117.831,23.147,118.809,22.053z"/>
<g> <g>
<polygon fill="#4E4540" points="126.863,17.254 125.016,19.239 127.493,23.659 130.544,23.659 "/> <polygon fill="#4E4540" points="126.863,17.254 125.016,19.239 127.493,23.659 130.544,23.659 "/>
<polygon fill="#4E4540" points="127.307,11.317 123.092,16.743 123.092,6.847 120.461,6.847 120.461,23.659 123.092,23.659 <polygon fill="#4E4540" points="127.307,11.317 123.092,16.743 123.092,6.847 120.461,6.847 120.461,23.659 123.092,23.659
123.092,20.097 130.428,11.317 "/> 123.092,20.097 130.428,11.317 "/>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -41,7 +41,7 @@
c-1.808,0-3.147,1.482-3.147,3.537v0.13c0,2.055,1.3,3.498,3.095,3.498C48.599,48.84,49.288,48.412,49.834,47.8z"/> c-1.808,0-3.147,1.482-3.147,3.537v0.13c0,2.055,1.3,3.498,3.095,3.498C48.599,48.84,49.288,48.412,49.834,47.8z"/>
<g> <g>
<polygon fill="#4E4540" points="54.331,45.12 53.3,46.229 54.683,48.697 56.387,48.697 "/> <polygon fill="#4E4540" points="54.331,45.12 53.3,46.229 54.683,48.697 56.387,48.697 "/>
<polygon fill="#4E4540" points="54.579,41.806 52.226,44.835 52.226,39.309 50.756,39.309 50.756,48.697 52.226,48.697 <polygon fill="#4E4540" points="54.579,41.806 52.226,44.835 52.226,39.309 50.756,39.309 50.756,48.697 52.226,48.697
52.226,46.708 56.322,41.806 "/> 52.226,46.708 56.322,41.806 "/>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -4,4 +4,3 @@ features:
for repositories that have ``stable/`` branches. The badge is not for repositories that have ``stable/`` branches. The badge is not
displayed for api-ref, api-guide and releasenotes documents. It displayed for api-ref, api-guide and releasenotes documents. It
can be disabled with the ``display_badge`` html theme option. can be disabled with the ``display_badge`` html theme option.

View File

@ -6,3 +6,5 @@ hacking>=3.0.1,<3.1.0 # Apache-2.0
# this is required for the docs build jobs # this is required for the docs build jobs
sphinx>=2.0.0,!=2.1.0 # BSD sphinx>=2.0.0,!=2.1.0 # BSD
pre-commit>=2.6.0 # MIT

View File

@ -18,6 +18,7 @@ whitelist_externals =
[testenv:pep8] [testenv:pep8]
commands = commands =
pre-commit run -a
flake8 openstackdocstheme flake8 openstackdocstheme
[testenv:venv] [testenv:venv]