aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md2
-rw-r--r--apheleia-formatters.el6
-rw-r--r--test/formatters/installers/ruff-isort.bash2
-rw-r--r--test/formatters/samplecode/ruff-isort/in.py20
-rw-r--r--test/formatters/samplecode/ruff-isort/out.py26
5 files changed, 56 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d0e7a56..33e52b3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -25,6 +25,7 @@ The format is based on [Keep a Changelog].
for JSON ([#257]).
* [`robotidy`](https://robotidy.readthedocs.io) for Robot Framework files
([#263]).
+* [`ruff-isort`](https://github.com/astral-sh/ruff) for [Python](https://python.org) imports using ruff ([#279]).
* [denofmt](https://docs.deno.com/runtime/manual/tools/formatter) for
js, jsx, ts, tsx, json, jsonc, md files. ([#264])
* [docformatter](https://github.com/PyCQA/docformatter) for Python docstrings ([#267])
@@ -51,6 +52,7 @@ The format is based on [Keep a Changelog].
[#271]: https://github.com/radian-software/apheleia/pull/271
[#274]: https://github.com/radian-software/apheleia/issues/274
[#275]: https://github.com/radian-software/apheleia/pull/275
+[#279]: https://github.com/radian-software/apheleia/pull/279
## 4.0 (released 2023-11-23)
### Breaking changes
diff --git a/apheleia-formatters.el b/apheleia-formatters.el
index a9c08b4..0e56ae8 100644
--- a/apheleia-formatters.el
+++ b/apheleia-formatters.el
@@ -167,6 +167,12 @@
(apheleia-formatters-fill-column "--line-length")
"--stdin-filename" filepath
"-"))
+ (ruff-isort . ("ruff" "check"
+ "-n"
+ "--select" "I"
+ "--fix" "--fix-only"
+ "--stdin-filename" filepath
+ "-"))
(shfmt . ("shfmt"
"-filename" filepath
"-ln" (cl-case (bound-and-true-p sh-shell)
diff --git a/test/formatters/installers/ruff-isort.bash b/test/formatters/installers/ruff-isort.bash
new file mode 100644
index 0000000..9f5bf1a
--- /dev/null
+++ b/test/formatters/installers/ruff-isort.bash
@@ -0,0 +1,2 @@
+apt-get install -y python3-pip
+pip install ruff
diff --git a/test/formatters/samplecode/ruff-isort/in.py b/test/formatters/samplecode/ruff-isort/in.py
new file mode 100644
index 0000000..5bd6f7f
--- /dev/null
+++ b/test/formatters/samplecode/ruff-isort/in.py
@@ -0,0 +1,20 @@
+from my_lib import Object
+
+import os
+
+from my_lib import Object3
+
+from my_lib import Object2
+
+import sys
+
+from third_party import lib15, lib1, lib2, lib3, lib4, lib5, lib6, lib7, lib8, lib9, lib10, lib11, lib12, lib13, lib14
+
+import sys
+
+from __future__ import absolute_import
+
+from third_party import lib3
+
+print("Hey")
+print("yo")
diff --git a/test/formatters/samplecode/ruff-isort/out.py b/test/formatters/samplecode/ruff-isort/out.py
new file mode 100644
index 0000000..f1d5c1c
--- /dev/null
+++ b/test/formatters/samplecode/ruff-isort/out.py
@@ -0,0 +1,26 @@
+from __future__ import absolute_import
+
+import os
+import sys
+
+from my_lib import Object, Object2, Object3
+from third_party import (
+ lib1,
+ lib2,
+ lib3,
+ lib4,
+ lib5,
+ lib6,
+ lib7,
+ lib8,
+ lib9,
+ lib10,
+ lib11,
+ lib12,
+ lib13,
+ lib14,
+ lib15,
+)
+
+print("Hey")
+print("yo")