Add pre-commit
This is helpful to automate code style checks at runtime. We include documentation on how to run this as well as a general overview of style guidelines in OSC. Change-Id: I2dc5a0f760ce53269ae25677560b2611cc6bfd91 Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
This commit is contained in:
parent
8e3dde03f9
commit
87e6828678
29
.pre-commit-config.yaml
Normal file
29
.pre-commit-config.yaml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
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.4.0
|
||||||
|
hooks:
|
||||||
|
- id: trailing-whitespace
|
||||||
|
- id: mixed-line-ending
|
||||||
|
args: ['--fix', 'lf']
|
||||||
|
exclude: '.*\.(svg)$'
|
||||||
|
- id: check-byte-order-marker
|
||||||
|
- id: check-executables-have-shebangs
|
||||||
|
- id: check-merge-conflict
|
||||||
|
- id: debug-statements
|
||||||
|
- id: check-yaml
|
||||||
|
files: .*\.(yaml|yml)$
|
||||||
|
- repo: local
|
||||||
|
hooks:
|
||||||
|
- id: flake8
|
||||||
|
name: flake8
|
||||||
|
additional_dependencies:
|
||||||
|
- hacking>=2.0.0
|
||||||
|
- flake8-import-order>=0.13
|
||||||
|
language: python
|
||||||
|
entry: flake8
|
||||||
|
files: '^.*\.py$'
|
||||||
|
exclude: '^(doc|releasenotes|tools)/.*$'
|
@ -6,16 +6,18 @@ Communication
|
|||||||
-------------
|
-------------
|
||||||
|
|
||||||
IRC Channel
|
IRC Channel
|
||||||
===========
|
~~~~~~~~~~~
|
||||||
|
|
||||||
The OpenStackClient team doesn't have regular meetings so if you have
|
The OpenStackClient team doesn't have regular meetings so if you have
|
||||||
questions or anything you want to discuss, come to our channel:
|
questions or anything you want to discuss, come to our channel:
|
||||||
#openstack-sdks
|
#openstack-sdks
|
||||||
|
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
-------
|
-------
|
||||||
|
|
||||||
Tox prerequisites and installation
|
Tox prerequisites and installation
|
||||||
==================================
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Install the prerequisites for Tox:
|
Install the prerequisites for Tox:
|
||||||
|
|
||||||
@ -23,23 +25,22 @@ Install the prerequisites for Tox:
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
$ apt-get install gcc gettext python-dev libxml2-dev libxslt1-dev \
|
$ apt-get install gcc gettext python3-dev libxml2-dev libxslt1-dev \
|
||||||
zlib1g-dev
|
zlib1g-dev
|
||||||
|
|
||||||
You may need to use pip install for some packages.
|
You may need to use pip install for some packages.
|
||||||
|
|
||||||
|
|
||||||
* On RHEL or CentOS including Fedora:
|
* On RHEL or CentOS including Fedora:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
$ yum install gcc python-devel libxml2-devel libxslt-devel
|
$ yum install gcc python3-devel libxml2-devel libxslt-devel
|
||||||
|
|
||||||
* On openSUSE or SUSE linux Enterprise:
|
* On openSUSE or SUSE linux Enterprise:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
$ zypper install gcc python-devel libxml2-devel libxslt-devel
|
$ zypper install gcc python3-devel libxml2-devel libxslt-devel
|
||||||
|
|
||||||
Install python-tox:
|
Install python-tox:
|
||||||
|
|
||||||
@ -70,7 +71,7 @@ environments with the ``-e`` option, separated by spaces:
|
|||||||
See ``tox.ini`` for the full list of available test environments.
|
See ``tox.ini`` for the full list of available test environments.
|
||||||
|
|
||||||
Running functional tests
|
Running functional tests
|
||||||
========================
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
OpenStackClient also maintains a set of functional tests that are optimally
|
OpenStackClient also maintains a set of functional tests that are optimally
|
||||||
designed to be run against OpenStack's gate. Optionally, a developer may
|
designed to be run against OpenStack's gate. Optionally, a developer may
|
||||||
@ -90,7 +91,7 @@ To run a specific functional test:
|
|||||||
$ tox -e functional -- --regex functional.tests.compute.v2.test_server
|
$ tox -e functional -- --regex functional.tests.compute.v2.test_server
|
||||||
|
|
||||||
Running with PDB
|
Running with PDB
|
||||||
================
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Using PDB breakpoints with ``tox`` and ``testr`` normally does not work since
|
Using PDB breakpoints with ``tox`` and ``testr`` normally does not work since
|
||||||
the tests fail with a `BdbQuit` exception rather than stopping at the
|
the tests fail with a `BdbQuit` exception rather than stopping at the
|
||||||
@ -109,8 +110,32 @@ For reference, the `debug`_ ``tox`` environment implements the instructions
|
|||||||
.. _`debug`: https://wiki.openstack.org/wiki/Testr#Debugging_.28pdb.29_Tests
|
.. _`debug`: https://wiki.openstack.org/wiki/Testr#Debugging_.28pdb.29_Tests
|
||||||
|
|
||||||
|
|
||||||
Building the Documentation
|
Coding Style
|
||||||
--------------------------
|
------------
|
||||||
|
|
||||||
|
OpenStackClient uses `flake8`__ along with `hacking`__, an OpenStack-specific
|
||||||
|
superset of ``flake8`` rules, to enforce coding style. This can be run manually
|
||||||
|
using ``tox``:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ tox -e pep8
|
||||||
|
|
||||||
|
Alternatively, you can use the `pre-commit framework`__ to allow running of
|
||||||
|
some linters on each commit. This must be enabled locally to function:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ pip install --user pre-commit
|
||||||
|
$ pre-commit install --allow-missing-config
|
||||||
|
|
||||||
|
.. __: https://flake8.pycqa.org/en/latest/
|
||||||
|
.. __: https://docs.openstack.org/hacking/latest/user/hacking.html
|
||||||
|
.. __: https://pre-commit.com/
|
||||||
|
|
||||||
|
|
||||||
|
Documentation
|
||||||
|
-------------
|
||||||
|
|
||||||
The documentation is generated with Sphinx using the ``tox`` command. To
|
The documentation is generated with Sphinx using the ``tox`` command. To
|
||||||
create HTML docs, run the commands:
|
create HTML docs, run the commands:
|
||||||
@ -121,6 +146,7 @@ create HTML docs, run the commands:
|
|||||||
|
|
||||||
The resultant HTML will be in the ``doc/build/html`` directory.
|
The resultant HTML will be in the ``doc/build/html`` directory.
|
||||||
|
|
||||||
|
|
||||||
Release Notes
|
Release Notes
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
@ -156,6 +182,7 @@ To run the commands and see results:
|
|||||||
|
|
||||||
At last, look at the generated release notes files in ``releasenotes/build/html`` in your browser.
|
At last, look at the generated release notes files in ``releasenotes/build/html`` in your browser.
|
||||||
|
|
||||||
|
|
||||||
Testing new code
|
Testing new code
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
@ -174,7 +201,7 @@ or
|
|||||||
$ pip install -e .
|
$ pip install -e .
|
||||||
|
|
||||||
Standardize Import Format
|
Standardize Import Format
|
||||||
=========================
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
More information about Import Format, see `Import Order Guide
|
More information about Import Format, see `Import Order Guide
|
||||||
<https://docs.openstack.org/hacking/latest/user/hacking.html#imports>`__.
|
<https://docs.openstack.org/hacking/latest/user/hacking.html#imports>`__.
|
||||||
@ -193,7 +220,7 @@ The import order shows below:
|
|||||||
{{begin your code}}
|
{{begin your code}}
|
||||||
|
|
||||||
Example
|
Example
|
||||||
~~~~~~~
|
^^^^^^^
|
||||||
|
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user