From 4ee9658e976d533e25d31622295f5557bbae1f90 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Fri, 9 Dec 2016 16:54:24 -0800 Subject: [PATCH] Move external program wrappers to ocrmypdf.exe package --- ocrmypdf/__init__.py | 5 ----- ocrmypdf/__main__.py | 6 +++--- ocrmypdf/exe/__init__.py | 8 ++++++++ ocrmypdf/{ => exe}/ghostscript.py | 2 +- ocrmypdf/{ => exe}/qpdf.py | 3 ++- ocrmypdf/{ => exe}/tesseract.py | 3 ++- ocrmypdf/{ => exe}/unpaper.py | 3 ++- ocrmypdf/helpers.py | 1 - ocrmypdf/pipeline.py | 8 ++++---- tests/test_hocrtransform.py | 2 +- tests/test_main.py | 8 ++++---- 11 files changed, 27 insertions(+), 22 deletions(-) create mode 100644 ocrmypdf/exe/__init__.py rename ocrmypdf/{ => exe}/ghostscript.py (98%) rename ocrmypdf/{ => exe}/qpdf.py (98%) rename ocrmypdf/{ => exe}/tesseract.py (99%) rename ocrmypdf/{ => exe}/unpaper.py (98%) diff --git a/ocrmypdf/__init__.py b/ocrmypdf/__init__.py index 95a89a74..3c255f56 100644 --- a/ocrmypdf/__init__.py +++ b/ocrmypdf/__init__.py @@ -21,11 +21,6 @@ class ExitCode(IntEnum): ctrl_c = 130 -def get_program(name): - envvar = 'OCRMYPDF_' + name.upper() - return os.environ.get(envvar, name) - - def page_number(input_file): return int(os.path.basename(input_file)[0:6]) diff --git a/ocrmypdf/__main__.py b/ocrmypdf/__main__.py index 8d617567..0360c219 100755 --- a/ocrmypdf/__main__.py +++ b/ocrmypdf/__main__.py @@ -26,8 +26,8 @@ from .pipeline import JobContext, JobContextManager, re_symlink, \ cleanup_working_files, build_pipeline from .pdfa import file_claims_pdfa from .helpers import is_iterable_notstr, re_symlink -from . import tesseract -from . import qpdf +from .exe import tesseract +from .exe import qpdf from . import ExitCode, PROGRAM_NAME, VERSION from collections.abc import Sequence @@ -286,7 +286,7 @@ def check_options_output(options, log): def check_options_preprocessing(options, log): if any((options.clean, options.clean_final)): - from . import unpaper + from .exe import unpaper try: if unpaper.version() < '6.1': raise MissingDependencyException( diff --git a/ocrmypdf/exe/__init__.py b/ocrmypdf/exe/__init__.py new file mode 100644 index 00000000..6bd1ab74 --- /dev/null +++ b/ocrmypdf/exe/__init__.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python3 +# © 2016 James R. Barlow: github.com/jbarlow83 +import os + + +def get_program(name): + envvar = 'OCRMYPDF_' + name.upper() + return os.environ.get(envvar, name) diff --git a/ocrmypdf/ghostscript.py b/ocrmypdf/exe/ghostscript.py similarity index 98% rename from ocrmypdf/ghostscript.py rename to ocrmypdf/exe/ghostscript.py index f724ebad..748cc27b 100644 --- a/ocrmypdf/ghostscript.py +++ b/ocrmypdf/exe/ghostscript.py @@ -5,7 +5,7 @@ from tempfile import NamedTemporaryFile from subprocess import Popen, PIPE, STDOUT, check_call from shutil import copy from . import get_program -from .pdfa import SRGB_ICC_PROFILE +from ..pdfa import SRGB_ICC_PROFILE def rasterize_pdf(input_file, output_file, xres, yres, raster_device, log, diff --git a/ocrmypdf/qpdf.py b/ocrmypdf/exe/qpdf.py similarity index 98% rename from ocrmypdf/qpdf.py rename to ocrmypdf/exe/qpdf.py index cb45ec7c..f7219095 100644 --- a/ocrmypdf/qpdf.py +++ b/ocrmypdf/exe/qpdf.py @@ -7,7 +7,8 @@ import sys import os import re -from . import ExitCode, get_program +from .. import ExitCode +from . import get_program @lru_cache(maxsize=1) diff --git a/ocrmypdf/tesseract.py b/ocrmypdf/exe/tesseract.py similarity index 99% rename from ocrmypdf/tesseract.py rename to ocrmypdf/exe/tesseract.py index ec315b69..1e9387d2 100644 --- a/ocrmypdf/tesseract.py +++ b/ocrmypdf/exe/tesseract.py @@ -6,7 +6,8 @@ import os import re import shutil from functools import lru_cache -from . import ExitCode, get_program, page_number +from .. import ExitCode, page_number +from . import get_program from collections import namedtuple from subprocess import Popen, PIPE, CalledProcessError, \ diff --git a/ocrmypdf/unpaper.py b/ocrmypdf/exe/unpaper.py similarity index 98% rename from ocrmypdf/unpaper.py rename to ocrmypdf/exe/unpaper.py index 03b4cf72..4c589251 100644 --- a/ocrmypdf/unpaper.py +++ b/ocrmypdf/exe/unpaper.py @@ -8,7 +8,8 @@ from tempfile import NamedTemporaryFile import sys import os from functools import lru_cache -from . import ExitCode, get_program +from .. import ExitCode +from . import get_program @lru_cache(maxsize=1) diff --git a/ocrmypdf/helpers.py b/ocrmypdf/helpers.py index 86696407..17ec0f91 100644 --- a/ocrmypdf/helpers.py +++ b/ocrmypdf/helpers.py @@ -49,4 +49,3 @@ def re_symlink(input_file, soft_link_name, log=None): def is_iterable_notstr(thing): return isinstance(thing, Iterable) and not isinstance(thing, str) - diff --git a/ocrmypdf/pipeline.py b/ocrmypdf/pipeline.py index 8d35b844..2c4f365b 100644 --- a/ocrmypdf/pipeline.py +++ b/ocrmypdf/pipeline.py @@ -25,9 +25,9 @@ from .hocrtransform import HocrTransform from .pageinfo import pdf_get_all_pageinfo from .pdfa import generate_pdfa_def, file_claims_pdfa from .helpers import re_symlink, is_iterable_notstr -from . import ghostscript -from . import tesseract -from . import qpdf +from .exe import ghostscript +from .exe import tesseract +from .exe import qpdf from . import leptonica from . import ExitCode, page_number, PROGRAM_NAME, VERSION @@ -460,7 +460,7 @@ def preprocess_clean( re_symlink(input_file, output_file, log) return - from . import unpaper + from .exe import unpaper pageinfo = get_pageinfo(input_file, context) dpi = get_page_square_dpi(pageinfo, options) diff --git a/tests/test_hocrtransform.py b/tests/test_hocrtransform.py index ce5672fb..1de6af01 100644 --- a/tests/test_hocrtransform.py +++ b/tests/test_hocrtransform.py @@ -2,7 +2,7 @@ # © 2015 James R. Barlow: github.com/jbarlow83 from ocrmypdf import hocrtransform -from ocrmypdf.tesseract import HOCR_TEMPLATE +from ocrmypdf.exe.tesseract import HOCR_TEMPLATE from reportlab.pdfgen.canvas import Canvas from PIL import Image from tempfile import NamedTemporaryFile diff --git a/tests/test_main.py b/tests/test_main.py index 7b9f5dc5..fd1bfc5a 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -154,7 +154,7 @@ def test_deskew(spoof_tesseract_noop): # Now render as an image again and use Leptonica to find the skew angle # to confirm that it was deskewed - from ocrmypdf.ghostscript import rasterize_pdf + from ocrmypdf.exe.ghostscript import rasterize_pdf import logging log = logging.getLogger() @@ -193,7 +193,7 @@ def test_remove_background(spoof_tesseract_noop): '--image-dpi', '150', env=spoof_tesseract_noop) - from ocrmypdf.ghostscript import rasterize_pdf + from ocrmypdf.exe.ghostscript import rasterize_pdf import logging log = logging.getLogger() @@ -335,7 +335,7 @@ def test_argsfile(spoof_tesseract_noop): def check_monochrome_correlation( reference_pdf, reference_pageno, test_pdf, test_pageno): - import ocrmypdf.ghostscript as ghostscript + import ocrmypdf.exe.ghostscript as ghostscript import logging gslog = logging.getLogger() @@ -692,7 +692,7 @@ def test_stdout(spoof_tesseract_noop): assert p.returncode == ExitCode.ok - from ocrmypdf import qpdf + from ocrmypdf.exe import qpdf assert qpdf.check(output_file, log=None)