diff --git a/src/ocrmypdf/_pipeline.py b/src/ocrmypdf/_pipeline.py
index e2ea0ee5..2705b2ab 100644
--- a/src/ocrmypdf/_pipeline.py
+++ b/src/ocrmypdf/_pipeline.py
@@ -41,7 +41,7 @@ from .helpers import safe_symlink
from .hocrtransform import HocrTransform
from .optimize import optimize
from .pdfa import generate_pdfa_ps
-from .pdfinfo import Colorspace, PdfInfo, Encoding
+from .pdfinfo import Colorspace, Encoding, PdfInfo
VECTOR_PAGE_DPI = 400
diff --git a/src/ocrmypdf/_sync.py b/src/ocrmypdf/_sync.py
index 27262135..5b27a8f0 100644
--- a/src/ocrmypdf/_sync.py
+++ b/src/ocrmypdf/_sync.py
@@ -25,8 +25,8 @@ import threading
from collections import namedtuple
from tempfile import mkdtemp
-from tqdm import tqdm
import PIL
+from tqdm import tqdm
from ._graft import OcrGrafter
from ._jobcontext import PDFContext, cleanup_working_files, make_logger
diff --git a/src/ocrmypdf/api.py b/src/ocrmypdf/api.py
index 29b25a38..9a2cdb2f 100644
--- a/src/ocrmypdf/api.py
+++ b/src/ocrmypdf/api.py
@@ -21,7 +21,7 @@ import sys
import warnings
from enum import IntEnum
from pathlib import Path
-from typing import List, Optional, Dict
+from typing import Dict, List, Optional
from tqdm import tqdm
diff --git a/src/ocrmypdf/exec/__init__.py b/src/ocrmypdf/exec/__init__.py
index b571c333..0666621a 100644
--- a/src/ocrmypdf/exec/__init__.py
+++ b/src/ocrmypdf/exec/__init__.py
@@ -20,11 +20,12 @@
import logging
import os
import re
-import sys
import shutil
+import sys
from collections.abc import Mapping
from functools import lru_cache
-from subprocess import PIPE, STDOUT, CalledProcessError, run as subprocess_run
+from subprocess import PIPE, STDOUT, CalledProcessError
+from subprocess import run as subprocess_run
from ..exceptions import ExitCode, MissingDependencyError
diff --git a/src/ocrmypdf/exec/ghostscript.py b/src/ocrmypdf/exec/ghostscript.py
index 7c36eb30..5f6bc61f 100644
--- a/src/ocrmypdf/exec/ghostscript.py
+++ b/src/ocrmypdf/exec/ghostscript.py
@@ -18,20 +18,20 @@
"""Interface to Ghostscript executable"""
import logging
-import re
import os
+import re
import warnings
from contextlib import suppress
from functools import lru_cache
from io import BytesIO
from os import fspath
from pathlib import Path
-from subprocess import PIPE, CalledProcessError
from shutil import which
+from subprocess import PIPE, CalledProcessError
from PIL import Image
-from ..exceptions import SubprocessOutputError, MissingDependencyError
+from ..exceptions import MissingDependencyError, SubprocessOutputError
from . import get_version, run
gslog = logging.getLogger()
diff --git a/src/ocrmypdf/exec/tesseract.py b/src/ocrmypdf/exec/tesseract.py
index 26332976..16edb7cb 100644
--- a/src/ocrmypdf/exec/tesseract.py
+++ b/src/ocrmypdf/exec/tesseract.py
@@ -17,11 +17,11 @@
"""Interface to Tesseract executable"""
+import logging
import os
import shutil
from collections import namedtuple
from contextlib import suppress
-import logging
from os import fspath
from subprocess import PIPE, STDOUT, CalledProcessError, TimeoutExpired
diff --git a/src/ocrmypdf/exec/unpaper.py b/src/ocrmypdf/exec/unpaper.py
index 1143c0e9..2984b455 100644
--- a/src/ocrmypdf/exec/unpaper.py
+++ b/src/ocrmypdf/exec/unpaper.py
@@ -29,7 +29,8 @@ from tempfile import TemporaryDirectory
from PIL import Image
from ..exceptions import MissingDependencyError, SubprocessOutputError
-from . import get_version, run as external_run
+from . import get_version
+from . import run as external_run
@lru_cache(maxsize=1)
diff --git a/src/ocrmypdf/leptonica.py b/src/ocrmypdf/leptonica.py
index 344c2d9e..7ff3a265 100644
--- a/src/ocrmypdf/leptonica.py
+++ b/src/ocrmypdf/leptonica.py
@@ -33,9 +33,9 @@ from io import BytesIO
from os import fspath
from tempfile import TemporaryFile
-from .lib._leptonica import ffi
from .exceptions import MissingDependencyError
from .exec import shim_paths_with_program_files
+from .lib._leptonica import ffi
# pylint: disable=protected-access
diff --git a/tests/conftest.py b/tests/conftest.py
index 1b1ece82..8521827f 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -21,10 +21,11 @@ import platform
import sys
from pathlib import Path
from subprocess import PIPE, run
-from ocrmypdf import api, cli
import pytest
+from ocrmypdf import api, cli
+
pytest_plugins = ['helpers_namespace']
try:
diff --git a/tests/spoof/gs_feature_elision.py b/tests/spoof/gs_feature_elision.py
index f9856311..a06deaf3 100755
--- a/tests/spoof/gs_feature_elision.py
+++ b/tests/spoof/gs_feature_elision.py
@@ -25,14 +25,12 @@ import os
import sys
from subprocess import check_call
+from gs import real_ghostscript
"""Replicate one type of Ghostscript feature elision warning during
PDF/A creation."""
-from gs import real_ghostscript
-
-
elision_warning = """GPL Ghostscript 9.20: Setting Overprint Mode to 1
not permitted in PDF/A-2, overprint mode not set"""
diff --git a/tests/spoof/gs_pdfa_failure.py b/tests/spoof/gs_pdfa_failure.py
index 6dd90e29..1d9fdf7d 100755
--- a/tests/spoof/gs_pdfa_failure.py
+++ b/tests/spoof/gs_pdfa_failure.py
@@ -23,12 +23,12 @@
import os
import sys
+from gs import real_ghostscript
+
"""Replicate Ghostscript PDF/A conversion failure by suppressing some
arguments"""
-from gs import real_ghostscript
-
def main():
if '--version' in sys.argv:
diff --git a/tests/spoof/gs_raster_failure.py b/tests/spoof/gs_raster_failure.py
index c07b881b..067f8a6f 100755
--- a/tests/spoof/gs_raster_failure.py
+++ b/tests/spoof/gs_raster_failure.py
@@ -24,11 +24,10 @@
import os
import sys
-"""Replicate Ghostscript raster failure while allowing rendering"""
-
-
from gs import real_ghostscript
+"""Replicate Ghostscript raster failure while allowing rendering"""
+
def main():
if '--version' in sys.argv:
diff --git a/tests/spoof/gs_render_failure.py b/tests/spoof/gs_render_failure.py
index a43833a8..65509f5d 100755
--- a/tests/spoof/gs_render_failure.py
+++ b/tests/spoof/gs_render_failure.py
@@ -25,7 +25,6 @@
import os
import sys
-
from gs import real_ghostscript
diff --git a/tests/spoof/tesseract_badutf8.py b/tests/spoof/tesseract_badutf8.py
index 472a47a9..3cbb6625 100755
--- a/tests/spoof/tesseract_badutf8.py
+++ b/tests/spoof/tesseract_badutf8.py
@@ -22,7 +22,6 @@
import sys
-
"""Tesseract bad utf8 spoof
In 'hocr' mode or 'pdf' mode, return error code 1 and some non-Unicode
diff --git a/tests/spoof/tesseract_cache.py b/tests/spoof/tesseract_cache.py
index 83c09535..adf3e257 100755
--- a/tests/spoof/tesseract_cache.py
+++ b/tests/spoof/tesseract_cache.py
@@ -59,7 +59,6 @@ import subprocess
import sys
from pathlib import Path
-
__version__ = subprocess.check_output(
['tesseract', '--version'], stderr=subprocess.STDOUT
).decode()
diff --git a/tests/test_acroform.py b/tests/test_acroform.py
index 48b9ff91..cb188e80 100644
--- a/tests/test_acroform.py
+++ b/tests/test_acroform.py
@@ -19,7 +19,6 @@ import pytest
import ocrmypdf
-
check_ocrmypdf = pytest.helpers.check_ocrmypdf
diff --git a/tests/test_completion.py b/tests/test_completion.py
index 8837fbe2..ccb024aa 100644
--- a/tests/test_completion.py
+++ b/tests/test_completion.py
@@ -15,7 +15,7 @@
# You should have received a copy of the GNU General Public License
# along with OCRmyPDF. If not, see .
-from subprocess import run, PIPE
+from subprocess import PIPE, run
import pytest
diff --git a/tests/test_ghostscript.py b/tests/test_ghostscript.py
index c659fd68..c74b4952 100644
--- a/tests/test_ghostscript.py
+++ b/tests/test_ghostscript.py
@@ -18,7 +18,6 @@
import logging
from decimal import Decimal
-
import pikepdf
import pytest
from PIL import Image
diff --git a/tests/test_graft.py b/tests/test_graft.py
index 52aa336c..a14e3cee 100644
--- a/tests/test_graft.py
+++ b/tests/test_graft.py
@@ -18,10 +18,10 @@
import os
from unittest.mock import patch
+import pikepdf
import pytest
import ocrmypdf
-import pikepdf
def test_no_glyphless_graft(resources, outdir):
diff --git a/tests/test_image_input.py b/tests/test_image_input.py
index b5deedb4..ceb94cbe 100644
--- a/tests/test_image_input.py
+++ b/tests/test_image_input.py
@@ -17,10 +17,10 @@
from unittest.mock import patch
-import pytest
-from PIL import Image
import img2pdf
import pikepdf
+import pytest
+from PIL import Image
import ocrmypdf
diff --git a/tests/test_lept.py b/tests/test_lept.py
index 116060c3..8f7a12d0 100644
--- a/tests/test_lept.py
+++ b/tests/test_lept.py
@@ -16,8 +16,8 @@
# along with OCRmyPDF. If not, see .
-from os import fspath
import os
+from os import fspath
from pickle import dumps, loads
from unittest.mock import patch
diff --git a/tests/test_metadata.py b/tests/test_metadata.py
index 6d33db12..530dae10 100644
--- a/tests/test_metadata.py
+++ b/tests/test_metadata.py
@@ -17,22 +17,22 @@
import datetime
-from datetime import timezone
import logging
import mmap
-from os import fspath
import os
+from datetime import timezone
+from os import fspath
from pathlib import Path
from shutil import copyfile, move
from unittest.mock import MagicMock, patch
-import pytest
-
import pikepdf
+import pytest
+from pikepdf.models.metadata import decode_pdf_date
+
from ocrmypdf._jobcontext import PDFContext
from ocrmypdf.exceptions import ExitCode
from ocrmypdf.pdfa import SRGB_ICC_PROFILE, file_claims_pdfa, generate_pdfa_ps
-from pikepdf.models.metadata import decode_pdf_date
try:
import fitz
diff --git a/tests/test_optimize.py b/tests/test_optimize.py
index 85bcc1a5..0c78d653 100644
--- a/tests/test_optimize.py
+++ b/tests/test_optimize.py
@@ -19,10 +19,10 @@ import logging
from os import fspath
from pathlib import Path
+import pikepdf
import pytest
from PIL import Image
-import pikepdf
from ocrmypdf import optimize as opt
from ocrmypdf.exec import jbig2enc, pngquant
from ocrmypdf.exec.ghostscript import rasterize_pdf
diff --git a/tests/test_page_numbers.py b/tests/test_page_numbers.py
index 46643037..1fb494c4 100644
--- a/tests/test_page_numbers.py
+++ b/tests/test_page_numbers.py
@@ -19,8 +19,8 @@ import pytest
import ocrmypdf
from ocrmypdf._validation import _pages_from_ranges
-from ocrmypdf.pdfinfo import PdfInfo
from ocrmypdf.exceptions import BadArgsError
+from ocrmypdf.pdfinfo import PdfInfo
@pytest.mark.parametrize(
diff --git a/tests/test_pdfinfo.py b/tests/test_pdfinfo.py
index a775e950..b6455aa6 100644
--- a/tests/test_pdfinfo.py
+++ b/tests/test_pdfinfo.py
@@ -20,11 +20,11 @@ from math import isclose
from tempfile import NamedTemporaryFile
import img2pdf
+import pikepdf
import pytest
from PIL import Image
from reportlab.pdfgen.canvas import Canvas
-import pikepdf
from ocrmypdf import pdfinfo
from ocrmypdf.pdfinfo import Colorspace, Encoding
diff --git a/tests/test_rotation.py b/tests/test_rotation.py
index 7aaead96..05d42300 100644
--- a/tests/test_rotation.py
+++ b/tests/test_rotation.py
@@ -21,10 +21,10 @@ from os import fspath
from unittest.mock import Mock
import img2pdf
+import pikepdf
import pytest
from PIL import Image
-import pikepdf
from ocrmypdf import leptonica
from ocrmypdf.exec import ghostscript, tesseract
from ocrmypdf.pdfinfo import PdfInfo
diff --git a/tests/test_stdio.py b/tests/test_stdio.py
index ce2076b1..1f260cfb 100644
--- a/tests/test_stdio.py
+++ b/tests/test_stdio.py
@@ -18,7 +18,7 @@
import os
import sys
from pathlib import Path
-from subprocess import DEVNULL, PIPE, run, Popen, CalledProcessError
+from subprocess import DEVNULL, PIPE, CalledProcessError, Popen, run
import pytest
diff --git a/tests/test_unpaper.py b/tests/test_unpaper.py
index 4242743c..17dcd6c4 100644
--- a/tests/test_unpaper.py
+++ b/tests/test_unpaper.py
@@ -20,8 +20,8 @@ from unittest.mock import patch
import pytest
-from ocrmypdf.cli import parser
from ocrmypdf._validation import check_options
+from ocrmypdf.cli import parser
from ocrmypdf.exceptions import ExitCode, MissingDependencyError
from ocrmypdf.exec import unpaper
diff --git a/tests/test_validation.py b/tests/test_validation.py
index 0ac16e24..fb03de3b 100644
--- a/tests/test_validation.py
+++ b/tests/test_validation.py
@@ -23,7 +23,7 @@ import pytest
import ocrmypdf._validation as vd
from ocrmypdf.api import create_options
-from ocrmypdf.exceptions import MissingDependencyError, BadArgsError
+from ocrmypdf.exceptions import BadArgsError, MissingDependencyError
from ocrmypdf.pdfinfo import PdfInfo