diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml
index fe0637ca4..d5137af4a 100644
--- a/.github/workflows/lint.yaml
+++ b/.github/workflows/lint.yaml
@@ -14,7 +14,8 @@ jobs:
python-version: "3.10"
- name: Install Ruff
run: |
- python -m pip install ruff>=0.5
- - name: Format check (Ruff)
+ python -m pip install ruff>=0.6
+ - name: Lint using Ruff
run: |
ruff format --check
+ ruff check
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 1b5e05178..ab4763002 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,7 +1,9 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
- rev: v0.5.7
+ rev: v0.6.0
hooks:
+ - id: ruff
+ args: [ --fix ]
- id: ruff-format
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
@@ -14,11 +16,6 @@ repos:
- id: check-yaml
- id: mixed-line-ending
args: ['--fix=lf']
- - repo: https://github.com/PyCQA/isort
- rev: 5.13.2
- hooks:
- - id: isort
- exclude: ^(oauth2_provider/migrations/|tests/migrations/)
- repo: https://github.com/PyCQA/flake8
rev: 7.1.1
hooks:
diff --git a/docs/contributing.rst b/docs/contributing.rst
index c31e72990..ca72a74a5 100644
--- a/docs/contributing.rst
+++ b/docs/contributing.rst
@@ -28,13 +28,12 @@ Code Style
==========
The project uses `flake8 `_ for linting,
-`black `_ for formatting the code,
-`isort `_ for formatting and sorting imports,
+`ruff `_ for formatting the code and sorting imports,
and `pre-commit `_ for checking/fixing commits for
correctness before they are made.
You will need to install ``pre-commit`` yourself, and then ``pre-commit`` will
-take care of installing ``flake8``, ``black`` and ``isort``.
+take care of installing ``flake8`` and ``ruff``.
After cloning your repository, go into it and run::
@@ -42,14 +41,14 @@ After cloning your repository, go into it and run::
to install the hooks. On the next commit that you make, ``pre-commit`` will
download and install the necessary hooks (a one off task). If anything in the
-commit would fail the hooks, the commit will be abandoned. For ``black`` and
-``isort``, any necessary changes will be made automatically, but not staged.
+commit would fail the hooks, the commit will be abandoned. For ``ruff``, any
+necessary changes will be made automatically, but not staged.
Review the changes, and then re-stage and commit again.
Using ``pre-commit`` ensures that code that would fail in QA does not make it
into a commit in the first place, and will save you time in the long run. You
can also (largely) stop worrying about code style, although you should always
-check how the code looks after ``black`` has formatted it, and think if there
+check how the code looks after ``ruff`` has formatted it, and think if there
is a better way to structure the code so that it is more readable.
Documentation
diff --git a/pyproject.toml b/pyproject.toml
index 568f7f3de..0de9634fd 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -8,3 +8,10 @@ ignore-words-list = 'assertIn'
[tool.ruff]
line-length = 110
exclude = [".tox", "oauth2_provider/migrations/", "tests/migrations/", "manage.py"]
+
+[tool.ruff.lint]
+select = ["I", "Q"]
+
+[tool.ruff.lint.isort]
+lines-after-imports = 2
+known-first-party = ["oauth2_provider"]
diff --git a/tox.ini b/tox.ini
index bf945d882..52a5c76de 100644
--- a/tox.ini
+++ b/tox.ini
@@ -98,8 +98,6 @@ skip_install = True
commands = flake8 {toxinidir}
deps =
flake8
- flake8-isort
- flake8-quotes
[testenv:migrations]
setenv =
@@ -138,15 +136,3 @@ exclude = docs/, oauth2_provider/migrations/, tests/migrations/, .tox/, build/,
application-import-names = oauth2_provider
inline-quotes = double
extend-ignore = E203, W503
-
-[isort]
-default_section = THIRDPARTY
-known_first_party = oauth2_provider
-line_length = 110
-lines_after_imports = 2
-multi_line_output = 3
-include_trailing_comma = True
-force_grid_wrap = 0
-use_parentheses = True
-ensure_newline_before_comments = True
-skip = oauth2_provider/migrations/, .tox/, tests/migrations/