From e528adc6030d7d2268825c9406a5b540b113871d Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Fri, 17 May 2019 01:09:06 -0700 Subject: [PATCH] pylint removal --- setup.py | 3 -- src/ocrmypdf/_sync.py | 76 +++++++++++++++++----------------- src/ocrmypdf/_validation.py | 28 ++++++------- src/ocrmypdf/_weave.py | 14 +++---- src/ocrmypdf/pdfinfo/layout.py | 1 + tests/test_main.py | 2 +- tests/test_unpaper.py | 4 -- 7 files changed, 60 insertions(+), 68 deletions(-) diff --git a/setup.py b/setup.py index 9550b975..794983cf 100644 --- a/setup.py +++ b/setup.py @@ -26,9 +26,6 @@ if sys.version_info < (3, 6): sys.exit(1) from setuptools import setup, find_packages -from subprocess import STDOUT, check_output, CalledProcessError -from collections.abc import Mapping -import re # pylint: disable=w0613 diff --git a/src/ocrmypdf/_sync.py b/src/ocrmypdf/_sync.py index a5cec90d..ad79c306 100644 --- a/src/ocrmypdf/_sync.py +++ b/src/ocrmypdf/_sync.py @@ -15,59 +15,59 @@ # You should have received a copy of the GNU General Public License # along with OCRmyPDF. If not, see . -import os import atexit -import concurrent.futures import logging import logging.handlers import multiprocessing -import threading -import sys +import os import signal +import sys +import threading from collections import namedtuple from tempfile import mkdtemp -from ._jobcontext import PDFContext, get_logger, cleanup_working_files -from ._weave import OcrGrafter -from ._pipeline import ( - triage, - get_pdfinfo, - validate_pdfinfo_options, - is_ocr_required, - rasterize_preview, - get_orientation_correction, - rasterize, - preprocess_remove_background, - preprocess_deskew, - preprocess_clean, - create_ocr_image, - ocr_tesseract_hocr, - should_visible_page_image_use_jpg, - create_visible_page_jpg, - create_pdf_page_from_image, - render_hocr_page, - ocr_tesseract_textonly_pdf, - generate_postscript_stub, - convert_to_pdfa, - metadata_fixup, - merge_sidecars, - optimize_pdf, - copy_final, -) -from .exceptions import ExitCode, ExitCodeException + +from tqdm import tqdm + from . import VERSION -from .helpers import available_cpu_count +from ._jobcontext import PDFContext, cleanup_working_files, get_logger +from ._pipeline import ( + convert_to_pdfa, + copy_final, + create_ocr_image, + create_pdf_page_from_image, + create_visible_page_jpg, + generate_postscript_stub, + get_orientation_correction, + get_pdfinfo, + is_ocr_required, + merge_sidecars, + metadata_fixup, + ocr_tesseract_hocr, + ocr_tesseract_textonly_pdf, + optimize_pdf, + preprocess_clean, + preprocess_deskew, + preprocess_remove_background, + rasterize, + rasterize_preview, + render_hocr_page, + should_visible_page_image_use_jpg, + triage, + validate_pdfinfo_options, +) from ._validation import ( - check_options, check_dependency_versions, check_environ, + check_options, check_requested_output_file, create_input_file, report_output_file_size, ) -from .pdfa import file_claims_pdfa +from ._weave import OcrGrafter +from .exceptions import ExitCode, ExitCodeException from .exec import qpdf - -from tqdm import tqdm +from .helpers import available_cpu_count +from .pdfa import file_claims_pdfa PageResult = namedtuple( 'PageResult', 'pageno, pdf_page_from_image, ocr, text, orientation_correction' @@ -178,7 +178,7 @@ def log_listener(queue): logger = logging.getLogger(record.name) logger.handle(record) except Exception: - import sys, traceback + import traceback print("Logging problem", file=sys.stderr) traceback.print_exc(file=sys.stderr) diff --git a/src/ocrmypdf/_validation.py b/src/ocrmypdf/_validation.py index e80cd98f..6f01fbe8 100644 --- a/src/ocrmypdf/_validation.py +++ b/src/ocrmypdf/_validation.py @@ -19,7 +19,6 @@ import logging import os - import sys import textwrap from pathlib import Path @@ -27,17 +26,6 @@ from pathlib import Path import PIL from ._unicodefun import verify_python3_env - -from .exec import ( - ghostscript, - jbig2enc, - qpdf, - tesseract, - check_external_program, - unpaper, - pngquant, -) -from .helpers import is_file_writable, re_symlink from .exceptions import ( BadArgsError, ExitCode, @@ -45,6 +33,16 @@ from .exceptions import ( MissingDependencyError, OutputFileAccessError, ) +from .exec import ( + check_external_program, + ghostscript, + jbig2enc, + pngquant, + qpdf, + tesseract, + unpaper, +) +from .helpers import is_file_writable, re_symlink # ------------- # External dependencies @@ -331,7 +329,7 @@ def log_page_orientations(pdfinfo): if angle != 0: orientations.append('{0}{1}'.format(n + 1, direction.get(angle, ''))) if orientations: - log.info('Page orientations detected: ' + ' '.join(orientations)) + log.info('Page orientations detected: %s', ' '.join(orientations)) def check_environ(options): @@ -384,7 +382,7 @@ def check_input_file(options, start_input_file): try: re_symlink(options.input_file, start_input_file, log) except FileNotFoundError: - log.error("File not found - " + options.input_file) + log.error("File not found - %s", options.input_file) raise InputFileError() @@ -402,7 +400,7 @@ def check_requested_output_file(options): raise BadArgsError() elif not is_file_writable(options.output_file): log.error( - "Output file location (" + options.output_file + ") is not a writable file." + "Output file location (%s) is not a writable file.", options.output_file ) raise OutputFileAccessError() diff --git a/src/ocrmypdf/_weave.py b/src/ocrmypdf/_weave.py index da4ca640..ac989a72 100644 --- a/src/ocrmypdf/_weave.py +++ b/src/ocrmypdf/_weave.py @@ -15,11 +15,12 @@ # You should have received a copy of the GNU General Public License # along with OCRmyPDF. If not, see . -from contextlib import suppress -from itertools import groupby -from pathlib import Path import os +from contextlib import suppress +from pathlib import Path + import pikepdf + from .exec import tesseract MAX_REPLACE_PAGES = int(os.environ.get('_OCRMYPDF_MAX_REPLACE_PAGES', 100)) @@ -44,7 +45,7 @@ def _update_page_resources(*, page, font, font_key, procset): resources['/ProcSet'] = procset -def strip_invisible_text(pdf, page, log): +def strip_invisible_text(pdf, page): stream = [] in_text_obj = False render_mode = 0 @@ -151,7 +152,7 @@ def _weave_layers_graft( new_text_layer = pikepdf.Stream(pdf_base, pdf_text_contents) if strip_old_text: - strip_invisible_text(pdf_base, base_page, log) + strip_invisible_text(pdf_base, base_page) base_page.page_contents_add(new_text_layer, prepend=True) @@ -205,7 +206,7 @@ class OcrGrafter: self.interim_count = 0 def graft_page(self, page_result): - pageno, image, text, sidecar, autorotate_correction = page_result + pageno, image, text, _sidecar, autorotate_correction = page_result if text and not self.font: self.font, self.font_key = _find_font(text, self.pdf_base) @@ -262,7 +263,6 @@ class OcrGrafter: # lid on our memory usage for very large files. Attach the font to # page 1 even if page 1 doesn't use it, so we have a way to get it # back. - # TODO refactor this to outside the loop page0 = self.pdf_base.pages[0] _update_page_resources( page=page0, font=self.font, font_key=self.font_key, procset=self.procset diff --git a/src/ocrmypdf/pdfinfo/layout.py b/src/ocrmypdf/pdfinfo/layout.py index e6d04c9c..89caa938 100644 --- a/src/ocrmypdf/pdfinfo/layout.py +++ b/src/ocrmypdf/pdfinfo/layout.py @@ -172,6 +172,7 @@ class LTStateAwareChar(LTChar): - the Unicode mapping is known, and both have the same render mode - the Unicode mapping is unknown but both are part of the same font """ + # pylint: disable=protected-access both_unicode_mapped = isinstance(self._text, str) and isinstance(obj._text, str) try: if both_unicode_mapped: diff --git a/tests/test_main.py b/tests/test_main.py index 49d93025..3056d527 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -112,7 +112,7 @@ def test_deskew(spoof_tesseract_noop, resources, outdir): ) pix = Pix.open(deskewed_png) - skew_angle, skew_confidence = pix.find_skew() + skew_angle, _skew_confidence = pix.find_skew() print(skew_angle) assert -0.5 < skew_angle < 0.5, "Deskewing failed" diff --git a/tests/test_unpaper.py b/tests/test_unpaper.py index e3ff1b67..8df1d5a2 100644 --- a/tests/test_unpaper.py +++ b/tests/test_unpaper.py @@ -15,14 +15,10 @@ # You should have received a copy of the GNU General Public License # along with OCRmyPDF. If not, see . -import argparse -import logging from os import fspath -from pathlib import Path from unittest.mock import patch import pytest - from ocrmypdf.__main__ import parser from ocrmypdf._validation import check_options from ocrmypdf.exceptions import ExitCode