diff --git a/misc/watcher.py b/misc/watcher.py
index d2381050..4b5e4675 100644
--- a/misc/watcher.py
+++ b/misc/watcher.py
@@ -38,7 +38,7 @@ ON_SUCCESS_DELETE = bool(os.getenv('OCR_ON_SUCCESS_DELETE', ''))
DESKEW = bool(os.getenv('OCR_DESKEW', ''))
OCR_JSON_SETTINGS = json.loads(os.getenv('OCR_JSON_SETTINGS', '{}'))
POLL_NEW_FILE_SECONDS = int(os.getenv('OCR_POLL_NEW_FILE_SECONDS', '1'))
-USE_POLLING = bool(os.getenv('OCR_USE_POLLING', False))
+USE_POLLING = bool(os.getenv('OCR_USE_POLLING', ''))
LOGLEVEL = os.getenv('OCR_LOGLEVEL', 'INFO').upper()
PATTERNS = ['*.pdf']
diff --git a/src/ocrmypdf/__main__.py b/src/ocrmypdf/__main__.py
index 69d68db4..474c9678 100755
--- a/src/ocrmypdf/__main__.py
+++ b/src/ocrmypdf/__main__.py
@@ -26,14 +26,13 @@ from ocrmypdf._plugin_manager import get_parser_options_plugins
from ocrmypdf._sync import run_pipeline
from ocrmypdf._validation import check_closed_streams, check_options
from ocrmypdf.api import Verbosity, configure_logging
-from ocrmypdf.cli import get_parser, plugins_only_parser
from ocrmypdf.exceptions import BadArgsError, ExitCode, MissingDependencyError
log = logging.getLogger('ocrmypdf')
def run(args=None):
- parser, options, plugin_manager = get_parser_options_plugins(args=args)
+ _parser, options, plugin_manager = get_parser_options_plugins(args=args)
if not check_closed_streams(options):
return ExitCode.bad_args
diff --git a/src/ocrmypdf/_exec/tesseract.py b/src/ocrmypdf/_exec/tesseract.py
index a253db74..bfa6305d 100644
--- a/src/ocrmypdf/_exec/tesseract.py
+++ b/src/ocrmypdf/_exec/tesseract.py
@@ -21,11 +21,10 @@ import logging
import os
import shutil
from collections import namedtuple
-from contextlib import suppress
from os import fspath
from pathlib import Path
from subprocess import PIPE, STDOUT, CalledProcessError, TimeoutExpired
-from typing import List, Optional
+from typing import List
from PIL import Image
@@ -34,7 +33,6 @@ from ocrmypdf.exceptions import (
SubprocessOutputError,
TesseractConfigError,
)
-from ocrmypdf.helpers import safe_symlink
from ocrmypdf.subprocess import get_version, run
log = logging.getLogger(__name__)
diff --git a/src/ocrmypdf/_pipeline.py b/src/ocrmypdf/_pipeline.py
index 20bc3dfb..689d2542 100644
--- a/src/ocrmypdf/_pipeline.py
+++ b/src/ocrmypdf/_pipeline.py
@@ -28,7 +28,7 @@ from pikepdf.models.metadata import encode_pdf_date
from PIL import Image, ImageColor, ImageDraw
from ocrmypdf import leptonica
-from ocrmypdf._exec import ghostscript, unpaper
+from ocrmypdf._exec import unpaper
from ocrmypdf._version import PROGRAM_NAME
from ocrmypdf._version import __version__ as VERSION
from ocrmypdf.exceptions import (
diff --git a/src/ocrmypdf/_plugin_manager.py b/src/ocrmypdf/_plugin_manager.py
index 9f328c69..baa25e4a 100644
--- a/src/ocrmypdf/_plugin_manager.py
+++ b/src/ocrmypdf/_plugin_manager.py
@@ -61,7 +61,7 @@ def get_parser_options_plugins(
plugin_manager = get_plugin_manager(pre_options.plugins)
parser = get_parser()
- plugin_manager.hook.add_options(parser=parser)
+ plugin_manager.hook.add_options(parser=parser) # pylint: disable=no-member
options = parser.parse_args(args=args)
return parser, options, plugin_manager
diff --git a/src/ocrmypdf/api.py b/src/ocrmypdf/api.py
index 7e389d88..a0cb19f5 100644
--- a/src/ocrmypdf/api.py
+++ b/src/ocrmypdf/api.py
@@ -15,14 +15,13 @@
# You should have received a copy of the GNU General Public License
# along with OCRmyPDF. If not, see .
-import inspect
import logging
import os
import sys
from argparse import ArgumentParser
from enum import IntEnum
from pathlib import Path
-from typing import Dict, Iterable
+from typing import Iterable
from ocrmypdf._logging import PageNumberFilter, TqdmConsole
from ocrmypdf._plugin_manager import get_plugin_manager
diff --git a/src/ocrmypdf/builtin_plugins/ghostscript.py b/src/ocrmypdf/builtin_plugins/ghostscript.py
index e451c771..63f79f5e 100644
--- a/src/ocrmypdf/builtin_plugins/ghostscript.py
+++ b/src/ocrmypdf/builtin_plugins/ghostscript.py
@@ -16,13 +16,11 @@
# along with OCRmyPDF. If not, see .
import logging
-from pathlib import Path
from ocrmypdf import hookimpl
from ocrmypdf._exec import ghostscript
from ocrmypdf._validation import HOCR_OK_LANGS
from ocrmypdf.exceptions import MissingDependencyError
-from ocrmypdf.helpers import Resolution
from ocrmypdf.subprocess import check_external_program
log = logging.getLogger(__name__)
diff --git a/src/ocrmypdf/builtin_plugins/tesseract_ocr.py b/src/ocrmypdf/builtin_plugins/tesseract_ocr.py
index bd15ddbe..dced0c9b 100644
--- a/src/ocrmypdf/builtin_plugins/tesseract_ocr.py
+++ b/src/ocrmypdf/builtin_plugins/tesseract_ocr.py
@@ -15,7 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with OCRmyPDF. If not, see .
-import argparse
import logging
import os
diff --git a/src/ocrmypdf/pluginspec.py b/src/ocrmypdf/pluginspec.py
index e3961fbf..ed6d0eda 100644
--- a/src/ocrmypdf/pluginspec.py
+++ b/src/ocrmypdf/pluginspec.py
@@ -15,7 +15,7 @@
# You should have received a copy of the GNU General Public License
# along with OCRmyPDF. If not, see .
-from abc import ABC, abstractstaticmethod
+from abc import ABC, abstractmethod, abstractstaticmethod
from argparse import ArgumentParser, Namespace
from collections import namedtuple
from pathlib import Path
@@ -134,7 +134,7 @@ class OcrEngine(ABC):
def creator_tag(options: Namespace) -> str:
"""Returns the creator tag to identify this software's role in creating the PDF."""
- @abstractstaticmethod
+ @abstractmethod
def __str__(self):
"""Returns name of OCR engine and version."""
diff --git a/tests/conftest.py b/tests/conftest.py
index adcd1354..849e29d0 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -15,7 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with OCRmyPDF. If not, see .
-import ast
import os
import platform
import sys
@@ -24,7 +23,7 @@ from subprocess import PIPE, run
import pytest
-from ocrmypdf import api, cli, pdfinfo
+from ocrmypdf import api, pdfinfo
from ocrmypdf._exec import unpaper
from ocrmypdf._plugin_manager import get_parser_options_plugins
diff --git a/tests/plugins/gs_raster_failure.py b/tests/plugins/gs_raster_failure.py
index 98b1984c..fbf3d5cd 100644
--- a/tests/plugins/gs_raster_failure.py
+++ b/tests/plugins/gs_raster_failure.py
@@ -25,7 +25,6 @@ from unittest.mock import patch
from ocrmypdf import hookimpl
from ocrmypdf.builtin_plugins import ghostscript
-from ocrmypdf.subprocess import run
def raise_gs_fail(*args, **kwargs):
diff --git a/tests/plugins/gs_render_failure.py b/tests/plugins/gs_render_failure.py
index c27a5801..e3cee162 100644
--- a/tests/plugins/gs_render_failure.py
+++ b/tests/plugins/gs_render_failure.py
@@ -19,13 +19,11 @@
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-from pathlib import Path
from subprocess import CalledProcessError
from unittest.mock import patch
from ocrmypdf import hookimpl
from ocrmypdf.builtin_plugins import ghostscript
-from ocrmypdf.subprocess import run
def raise_gs_fail(*args, **kwargs):
diff --git a/tests/plugins/tesseract_crash.py b/tests/plugins/tesseract_crash.py
index 74c3970a..c76bafd5 100755
--- a/tests/plugins/tesseract_crash.py
+++ b/tests/plugins/tesseract_crash.py
@@ -20,7 +20,6 @@
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
import signal
-import sys
from subprocess import CalledProcessError
from unittest.mock import patch
diff --git a/tests/test_ghostscript.py b/tests/test_ghostscript.py
index a2dd90d7..af14f3b3 100644
--- a/tests/test_ghostscript.py
+++ b/tests/test_ghostscript.py
@@ -26,9 +26,11 @@ from ocrmypdf._exec.ghostscript import rasterize_pdf
from ocrmypdf.exceptions import ExitCode
from ocrmypdf.helpers import Resolution
-check_ocrmypdf = pytest.helpers.check_ocrmypdf
-run_ocrmypdf = pytest.helpers.run_ocrmypdf
-run_ocrmypdf_api = pytest.helpers.run_ocrmypdf_api
+check_ocrmypdf = pytest.helpers.check_ocrmypdf # pylint: disable=no-member
+run_ocrmypdf = pytest.helpers.run_ocrmypdf # pylint: disable=no-member
+run_ocrmypdf_api = pytest.helpers.run_ocrmypdf_api # pylint: disable=no-member
+
+# pylint: disable=redefined-outer-name
@pytest.fixture
@@ -37,7 +39,7 @@ def francais(resources):
return path, pikepdf.open(path)
-def test_rasterize_size(francais, outdir, caplog):
+def test_rasterize_size(francais, outdir):
path, pdf = francais
page_size_pts = (pdf.pages[0].MediaBox[2], pdf.pages[0].MediaBox[3])
assert pdf.pages[0].MediaBox[0] == pdf.pages[0].MediaBox[1] == 0
@@ -86,7 +88,7 @@ def test_rasterize_rotated(francais, outdir, caplog):
def test_gs_render_failure(resources, outpdf):
- p, out, err = run_ocrmypdf(
+ p, _out, err = run_ocrmypdf(
resources / 'blank.pdf',
outpdf,
'--plugin',
@@ -99,7 +101,7 @@ def test_gs_render_failure(resources, outpdf):
def test_gs_raster_failure(resources, outpdf):
- p, out, err = run_ocrmypdf(
+ p, _out, err = run_ocrmypdf(
resources / 'francais.pdf',
outpdf,
'--plugin',
@@ -112,7 +114,7 @@ def test_gs_raster_failure(resources, outpdf):
def test_ghostscript_pdfa_failure(resources, outpdf):
- p, out, err = run_ocrmypdf(
+ p, _out, _err = run_ocrmypdf(
resources / 'francais.pdf',
outpdf,
'--plugin',
diff --git a/tests/test_helpers.py b/tests/test_helpers.py
index 47139bec..8b3f6748 100644
--- a/tests/test_helpers.py
+++ b/tests/test_helpers.py
@@ -18,7 +18,6 @@
import logging
import multiprocessing
import os
-from pathlib import Path
from unittest.mock import MagicMock
import pytest
diff --git a/tests/test_hocrtransform.py b/tests/test_hocrtransform.py
index 1a1f817a..e8ed04bb 100644
--- a/tests/test_hocrtransform.py
+++ b/tests/test_hocrtransform.py
@@ -15,8 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with OCRmyPDF. If not, see .
-from pathlib import Path
-
import pytest
from PIL import Image
diff --git a/tests/test_pdfinfo.py b/tests/test_pdfinfo.py
index 558995fc..8bb2cc01 100644
--- a/tests/test_pdfinfo.py
+++ b/tests/test_pdfinfo.py
@@ -17,7 +17,6 @@
import pickle
from math import isclose
-from tempfile import NamedTemporaryFile
import img2pdf
import pikepdf
@@ -26,7 +25,6 @@ from PIL import Image
from reportlab.pdfgen.canvas import Canvas
from ocrmypdf import pdfinfo
-from ocrmypdf._exec import ghostscript
from ocrmypdf.pdfinfo import Colorspace, Encoding
# pylint: disable=protected-access
@@ -110,7 +108,7 @@ def test_single_page_inline_image(outdir):
assert pdfimage.width == 8
-def test_jpeg(resources, outdir):
+def test_jpeg(resources):
filename = resources / 'c02-22.pdf'
pdf = pdfinfo.PdfInfo(filename)
@@ -133,7 +131,7 @@ def test_no_contents(resources):
pdf = pdfinfo.PdfInfo(filename)
assert len(pdf[0].images) == 0
- assert pdf[0].has_text == False
+ assert not pdf[0].has_text
def test_oversized_page(resources):
diff --git a/tests/test_rotation.py b/tests/test_rotation.py
index f0e7fcfd..2a8056ba 100644
--- a/tests/test_rotation.py
+++ b/tests/test_rotation.py
@@ -15,10 +15,8 @@
# You should have received a copy of the GNU General Public License
# along with OCRmyPDF. If not, see .
-import logging
from io import BytesIO
from os import fspath
-from unittest.mock import Mock
import img2pdf
import pikepdf
diff --git a/tests/test_stdio.py b/tests/test_stdio.py
index 478661c2..39a3fade 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, CalledProcessError, Popen, run
+from subprocess import DEVNULL, PIPE, Popen, run
import pytest
@@ -95,7 +95,7 @@ def test_closed_streams(ocrmypdf_exec, resources, outpdf):
stdin=None,
preexec_fn=evil_closer,
)
- out, err = p.communicate()
+ _out, err = p.communicate()
print(err.decode())
assert p.returncode == ExitCode.ok
@@ -121,7 +121,7 @@ def test_dev_null(resources):
if 'COV_CORE_DATAFILE' in os.environ:
pytest.skip(msg="Coverage uses stdout")
- p, out, err = run_ocrmypdf(
+ p, out, _err = run_ocrmypdf(
resources / 'trivial.pdf',
os.devnull,
'--force-ocr',
diff --git a/tests/test_unpaper.py b/tests/test_unpaper.py
index 6e28235a..ca54eb34 100644
--- a/tests/test_unpaper.py
+++ b/tests/test_unpaper.py
@@ -22,7 +22,6 @@ import pytest
from ocrmypdf._plugin_manager import get_parser_options_plugins
from ocrmypdf._validation import check_options
-from ocrmypdf.cli import get_parser
from ocrmypdf.exceptions import ExitCode, MissingDependencyError
# pytest.helpers is dynamic
diff --git a/tests/test_userunit.py b/tests/test_userunit.py
index 60f97d08..462c396b 100644
--- a/tests/test_userunit.py
+++ b/tests/test_userunit.py
@@ -22,9 +22,11 @@ import pytest
from ocrmypdf.exceptions import ExitCode
from ocrmypdf.pdfinfo import PdfInfo
-check_ocrmypdf = pytest.helpers.check_ocrmypdf
-run_ocrmypdf = pytest.helpers.run_ocrmypdf
-run_ocrmypdf_api = pytest.helpers.run_ocrmypdf_api
+check_ocrmypdf = pytest.helpers.check_ocrmypdf # pylint: disable=no-member
+run_ocrmypdf = pytest.helpers.run_ocrmypdf # pylint: disable=no-member
+run_ocrmypdf_api = pytest.helpers.run_ocrmypdf_api # pylint: disable=no-member
+
+# pylint: disable=redefined-outer-name
@pytest.fixture
diff --git a/tests/test_validation.py b/tests/test_validation.py
index 52dfb74b..d7955869 100644
--- a/tests/test_validation.py
+++ b/tests/test_validation.py
@@ -16,7 +16,6 @@
# along with OCRmyPDF. If not, see .
import logging
-import os
from unittest.mock import patch
import pikepdf
@@ -35,7 +34,7 @@ def make_opts_pm(input_file='a.pdf', output_file='b.pdf', language='eng', **kwar
kwargs['language'] = language
parser = get_parser()
pm = get_plugin_manager(kwargs.get('plugins', []))
- pm.hook.add_options(parser=parser)
+ pm.hook.add_options(parser=parser) # pylint: disable=no-member
return (
create_options(
input_file=input_file, output_file=output_file, parser=parser, **kwargs