Skip to content

Commit

Permalink
Add pre-commit hook
Browse files Browse the repository at this point in the history
First pass at adding a pre-commit hook to enforce
formatting and linting standards.

This adds the pre-commit command to run on a
limited set of directories. Subsequent changes
will remove excluded folders and run formatting on
them as well.

The command will use the standard pre-commit hooks
for yaml, whitespace, and end of line linting.

It will also use `ruff` configured identically to
the Python SDK repositories.

The intention is to start enforcing formatting and
linting standards on edited code. Running the
pre-commit hook manually will make numerous
changes that should be broken into multiple
phases.
  • Loading branch information
kdaily committed Dec 6, 2024
1 parent bf05341 commit f932015
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 1 deletion.
29 changes: 29 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
exclude: "\
^(\
.changes|\
.github|\
awscli/examples|\
awscli/topics|\
awscli/botocore|\
awscli/s3transfer|\
awscli/doc|\
exe/assets|\
tests/functional/cloudformation/deploy_templates/booleans/input.yml|\
tests/functional/cloudformation/deploy_templates/nested-tag/input.yml|\
tests/|\
CHANGELOG.rst|\
configure\
)"
repos:
- repo: 'https://github.com/pre-commit/pre-commit-hooks'
rev: v4.5.0
hooks:
- id: check-yaml
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.4.8
hooks:
- id: ruff
args: [ --fix ]
- id: ruff-format
24 changes: 23 additions & 1 deletion CONTRIBUTING.rst
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ Also, ensure your commit messages match this format::
Describe your changes in the imperative mood, e.g.
"Add foo to bar", "Update foo component for bar",
"Fix race condition for foo".

The body of the commit message can include:

* an explanation of the problem and what this change
Expand Down Expand Up @@ -120,6 +120,28 @@ can run these commands::
When you push to your remote, the output will contain a URL you
can use to open a pull request.

Codestyle
---------
This project uses `ruff <https://github.com/astral-sh/ruff>`__ to enforce
codstyle requirements. We've codified this process using a tool called
`pre-commit <https://pre-commit.com/>`__. pre-commit allows us to specify a
config file with all tools required for code linting, and surfaces either a
git commit hook, or single command, for enforcing these.

To validate your pull request prior to publishing, you can use the following
`installation guide <https://pre-commit.com/#install>`__ to setup pre-commit.

If you don't want to use the git commit hook, you can run the below command
to automatically perform the codestyle validation:

.. code-block:: bash
$ pre-commit run
This will automatically perform simple updates (such as white space clean up)
and provide a list of any failing checks. After these are addressed,
you can commit the changes prior to publishing the pull request.


Reporting Issues
----------------
Expand Down
25 changes: 25 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -130,3 +130,28 @@ markers = [

[tool.black]
line-length = 80

[tool.ruff.lint]
# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default.
# Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or
# McCabe complexity (`C901`) by default.
select = ["E4", "E7", "E9", "F", "I", "UP"]
ignore = []

# Allow fix for all enabled rules (when `--fix`) is provided.
fixable = ["ALL"]
unfixable = []

# Allow unused variables when underscore-prefixed.
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"

[tool.ruff.format]
# Like Black, use double quotes for strings, spaces for indents
# and trailing commas.
quote-style = "preserve"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"

docstring-code-format = false
docstring-code-line-length = "dynamic"

0 comments on commit f932015

Please sign in to comment.