From f26c6eceaa6104a95d2230d1906a236d6127c9b4 Mon Sep 17 00:00:00 2001 From: Oliver Sauder Date: Sun, 22 Nov 2020 21:48:48 +0100 Subject: [PATCH 1/3] Add pre-commit configuration --- .pre-commit-config.yaml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..49f72fe2 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,21 @@ +repos: + - repo: local + hooks: + - id: black + stages: [commit] + name: black + language: system + entry: black + types: [python] + - id: isort + stages: [commit] + name: isort + language: system + entry: isort + types: [python] + - id: flake8 + stages: [commit] + name: flake8 + language: system + entry: flake8 + types: [python] From acaec9508d3dd2f034d4e4dc9fd4fdde7592f08d Mon Sep 17 00:00:00 2001 From: Oliver Sauder Date: Sun, 22 Nov 2020 21:49:33 +0100 Subject: [PATCH 2/3] Incooperate pre-commit usage into CONTRIBUTING.md --- README.rst | 12 -------- docs/CONTRIBUTING.md | 65 ++++++++++++++++++++++++++++++-------------- 2 files changed, 44 insertions(+), 33 deletions(-) diff --git a/README.rst b/README.rst index 7ffbcc0e..3501e8a1 100644 --- a/README.rst +++ b/README.rst @@ -142,18 +142,6 @@ Browse to * http://localhost:8000/openapi for the schema view's OpenAPI specification document. -Running Tests and linting -^^^^^^^^^^^^^^^^^^^^^^^^^ - -It is recommended to create a virtualenv for testing. Assuming it is already -installed and activated: - -:: - - $ pip install -Ur requirements.txt - $ flake8 - $ pytest - ----- Usage ----- diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 5ab82991..5e09ef32 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -1,30 +1,53 @@ -Contributing -============ +# Contributing -DJA should be easy to contribute to. +Django REST Framework JSON API (aka DJA) should be easy to contribute to. If anything is unclear about how to contribute, please submit an issue on GitHub so that we can fix it! -How ---- +Before writing any code, have a conversation on a GitHub issue to see +if the proposed change makes sense for the project. -Before writing any code, -have a conversation on a GitHub issue -to see if the proposed change makes sense -for the project. +## Setup development environment -Fork DJA on [GitHub](https://github.com/django-json-api/django-rest-framework-json-api) and -[submit a Pull Request](https://help.github.com/articles/creating-a-pull-request/) -when you're ready. +### Clone -For maintainers ---------------- +To start developing on Django REST Framework JSON API you need to first clone the repository: -To upload a release (using version 1.2.3 as the example): + git clone https://github.com/django-json-api/django-rest-framework-json-api.git -```bash -(venv)$ python setup.py sdist bdist_wheel -(venv)$ twine upload dist/* -(venv)$ git tag -a v1.2.3 -m 'Release 1.2.3' -(venv)$ git push --tags -``` +### Testing + +To run tests clone the repository, and then: + + # Setup the virtual environment + python3 -m venv env + source env/bin/activate + pip install -r requirements.txt + + # Format code + black . + + # Run linting + flake8 + + # Run tests + pytest + +### Setup pre-commit + +pre-commit hooks is an additional option to check linting and formatting of code independent of +an editor before you commit your changes with git. + +To setup pre-commit hooks first create a testing environment as explained above before running below commands: + + pip install pre-commit + pre-commit install + +## For maintainers + +To upload a release (using version 1.2.3 as the example) first setup testing environment as above before running below commands: + + python setup.py sdist bdist_wheel + twine upload dist/* + git tag -a v1.2.3 -m 'Release 1.2.3' + git push --tags From 80fa5f4c54179c942e499b07115493623a5d6c08 Mon Sep 17 00:00:00 2001 From: Oliver Sauder Date: Thu, 3 Dec 2020 22:22:03 +0400 Subject: [PATCH 3/3] Document how to use tox --- docs/CONTRIBUTING.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 5e09ef32..c3f7d0f1 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -33,6 +33,13 @@ To run tests clone the repository, and then: # Run tests pytest +### Running against multiple environments + +You can also use the excellent [tox](https://tox.readthedocs.io/en/latest/) testing tool to run the tests against all supported versions of Python and Django. Install `tox` globally, and then simply run: + + tox + + ### Setup pre-commit pre-commit hooks is an additional option to check linting and formatting of code independent of