From 5f00e4f9d8dc91f72baa53b8e32b2039c93646f4 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Sat, 27 Jul 2019 04:51:52 -0700 Subject: [PATCH] Sort imports --- misc/webservice.py | 17 ++++++------ src/ocrmypdf/__init__.py | 25 +++++++----------- src/ocrmypdf/__main__.py | 6 ++--- src/ocrmypdf/_jobcontext.py | 2 +- src/ocrmypdf/_pipeline.py | 5 ++-- src/ocrmypdf/_sync.py | 2 +- src/ocrmypdf/_validation.py | 2 +- src/ocrmypdf/api.py | 2 +- src/ocrmypdf/exec/__init__.py | 5 ++-- src/ocrmypdf/exec/ghostscript.py | 1 - src/ocrmypdf/exec/jbig2enc.py | 2 +- src/ocrmypdf/exec/pngquant.py | 2 +- src/ocrmypdf/exec/tesseract.py | 4 +-- src/ocrmypdf/exec/unpaper.py | 6 ++--- src/ocrmypdf/filters.py | 2 +- src/ocrmypdf/optimize.py | 6 ++--- src/ocrmypdf/pdfa.py | 3 +-- src/ocrmypdf/pdfinfo/__init__.py | 2 +- src/ocrmypdf/pdfinfo/info.py | 9 ++++--- .../pdf.bin | Bin 0 -> 3610 bytes .../stderr.bin | 1 + .../stdout.bin | 0 .../txt.bin | 13 +++++++++ tests/cache/manifest.jsonl | 1 + 24 files changed, 64 insertions(+), 54 deletions(-) create mode 100644 tests/cache/graph_ocred/__-l__deu__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin create mode 100644 tests/cache/graph_ocred/__-l__deu__000001_ocr.png__000001_ocr_tess__pdf__txt/stderr.bin create mode 100644 tests/cache/graph_ocred/__-l__deu__000001_ocr.png__000001_ocr_tess__pdf__txt/stdout.bin create mode 100644 tests/cache/graph_ocred/__-l__deu__000001_ocr.png__000001_ocr_tess__pdf__txt/txt.bin diff --git a/misc/webservice.py b/misc/webservice.py index 677561d5..ed2a0374 100644 --- a/misc/webservice.py +++ b/misc/webservice.py @@ -23,21 +23,22 @@ to emphasize that SaaS deployments should make sure they comply with Ghostscript's license as well as OCRmyPDF's. """ +import os +import shlex +from subprocess import PIPE, run +from tempfile import TemporaryDirectory + from flask import ( Flask, Response, - flash, - request, - redirect, - url_for, abort, + flash, + redirect, + request, send_from_directory, + url_for, ) -from subprocess import run, PIPE -from tempfile import TemporaryDirectory from werkzeug.utils import secure_filename -import os -import shlex app = Flask(__name__) app.secret_key = "secret" diff --git a/src/ocrmypdf/__init__.py b/src/ocrmypdf/__init__.py index ad4b3068..9bbd2aa3 100644 --- a/src/ocrmypdf/__init__.py +++ b/src/ocrmypdf/__init__.py @@ -24,24 +24,19 @@ __version__ = pkg_resources.get_distribution('ocrmypdf').version VERSION = __version__ +from . import helpers, hocrtransform, leptonica, pdfa, pdfinfo +from .api import Verbosity, configure_logging, ocr from .exceptions import ( - ExitCode, BadArgsError, - PdfMergeFailedError, - MissingDependencyError, - UnsupportedImageFormatError, DpiError, - OutputFileAccessError, - PriorOcrFoundError, - InputFileError, - SubprocessOutputError, EncryptedPdfError, + ExitCode, + InputFileError, + MissingDependencyError, + OutputFileAccessError, + PdfMergeFailedError, + PriorOcrFoundError, + SubprocessOutputError, TesseractConfigError, + UnsupportedImageFormatError, ) - -from . import helpers -from . import hocrtransform -from . import leptonica -from . import pdfa -from . import pdfinfo -from .api import ocr, configure_logging, Verbosity diff --git a/src/ocrmypdf/__main__.py b/src/ocrmypdf/__main__.py index c24796af..bcfd6528 100755 --- a/src/ocrmypdf/__main__.py +++ b/src/ocrmypdf/__main__.py @@ -21,12 +21,12 @@ import os import sys from . import __version__ -from .cli import parser -from .api import configure_logging, Verbosity from ._jobcontext import make_logger from ._sync import run_pipeline from ._validation import check_closed_streams, check_options -from .exceptions import ExitCode, BadArgsError, MissingDependencyError +from .api import Verbosity, configure_logging +from .cli import parser +from .exceptions import BadArgsError, ExitCode, MissingDependencyError def run(args=None): diff --git a/src/ocrmypdf/_jobcontext.py b/src/ocrmypdf/_jobcontext.py index 96ad6c7e..e50aa75a 100644 --- a/src/ocrmypdf/_jobcontext.py +++ b/src/ocrmypdf/_jobcontext.py @@ -16,9 +16,9 @@ # along with OCRmyPDF. If not, see . import logging +import os import shutil import sys -import os class PicklableLoggerMixin: diff --git a/src/ocrmypdf/_pipeline.py b/src/ocrmypdf/_pipeline.py index 02042112..0a846bfd 100644 --- a/src/ocrmypdf/_pipeline.py +++ b/src/ocrmypdf/_pipeline.py @@ -22,18 +22,17 @@ from datetime import datetime, timezone from shutil import copyfileobj import img2pdf -from PIL import Image - import pikepdf from pikepdf.models.metadata import encode_pdf_date +from PIL import Image from . import PROGRAM_NAME, VERSION, leptonica from .exceptions import ( DpiError, EncryptedPdfError, InputFileError, - UnsupportedImageFormatError, PriorOcrFoundError, + UnsupportedImageFormatError, ) from .exec import ghostscript, tesseract from .helpers import re_symlink diff --git a/src/ocrmypdf/_sync.py b/src/ocrmypdf/_sync.py index b2c9461e..5cb7bd8a 100644 --- a/src/ocrmypdf/_sync.py +++ b/src/ocrmypdf/_sync.py @@ -28,6 +28,7 @@ from tempfile import mkdtemp from tqdm import tqdm from . import __version__ +from ._graft import OcrGrafter from ._jobcontext import PDFContext, cleanup_working_files, make_logger from ._pipeline import ( convert_to_pdfa, @@ -59,7 +60,6 @@ from ._validation import ( create_input_file, report_output_file_size, ) -from ._graft import OcrGrafter from .exceptions import ExitCode, ExitCodeException from .exec import qpdf from .helpers import available_cpu_count diff --git a/src/ocrmypdf/_validation.py b/src/ocrmypdf/_validation.py index 5c9bc2a1..c957d989 100644 --- a/src/ocrmypdf/_validation.py +++ b/src/ocrmypdf/_validation.py @@ -41,7 +41,7 @@ from .exec import ( tesseract, unpaper, ) -from .helpers import is_file_writable, re_symlink, is_iterable_notstr, monotonic +from .helpers import is_file_writable, is_iterable_notstr, monotonic, re_symlink # ------------- # External dependencies diff --git a/src/ocrmypdf/api.py b/src/ocrmypdf/api.py index bc4a4e5a..2c862d81 100644 --- a/src/ocrmypdf/api.py +++ b/src/ocrmypdf/api.py @@ -23,9 +23,9 @@ from pathlib import Path from tqdm import tqdm -from .cli import parser from ._sync import run_pipeline from ._validation import check_options +from .cli import parser class TqdmConsole: diff --git a/src/ocrmypdf/exec/__init__.py b/src/ocrmypdf/exec/__init__.py index 28193a01..c1a18c9a 100644 --- a/src/ocrmypdf/exec/__init__.py +++ b/src/ocrmypdf/exec/__init__.py @@ -21,9 +21,10 @@ import logging import os import re import sys -from subprocess import run, STDOUT, PIPE, CalledProcessError -from ..exceptions import MissingDependencyError, ExitCode from collections.abc import Mapping +from subprocess import PIPE, STDOUT, CalledProcessError, run + +from ..exceptions import ExitCode, MissingDependencyError log = logging.Logger(__name__) diff --git a/src/ocrmypdf/exec/ghostscript.py b/src/ocrmypdf/exec/ghostscript.py index b39ff628..48cceff2 100644 --- a/src/ocrmypdf/exec/ghostscript.py +++ b/src/ocrmypdf/exec/ghostscript.py @@ -28,7 +28,6 @@ from PIL import Image from ..exceptions import SubprocessOutputError from . import get_version - gslog = logging.getLogger() diff --git a/src/ocrmypdf/exec/jbig2enc.py b/src/ocrmypdf/exec/jbig2enc.py index 771e58a3..696c899c 100644 --- a/src/ocrmypdf/exec/jbig2enc.py +++ b/src/ocrmypdf/exec/jbig2enc.py @@ -18,8 +18,8 @@ from functools import lru_cache from subprocess import PIPE, run -from . import get_version from ..exceptions import MissingDependencyError +from . import get_version @lru_cache(maxsize=1) diff --git a/src/ocrmypdf/exec/pngquant.py b/src/ocrmypdf/exec/pngquant.py index 536dca1c..f22bb68e 100644 --- a/src/ocrmypdf/exec/pngquant.py +++ b/src/ocrmypdf/exec/pngquant.py @@ -21,8 +21,8 @@ from tempfile import NamedTemporaryFile from PIL import Image -from . import get_version from ..exceptions import MissingDependencyError +from . import get_version @lru_cache(maxsize=1) diff --git a/src/ocrmypdf/exec/tesseract.py b/src/ocrmypdf/exec/tesseract.py index 863047a1..3b5a647a 100644 --- a/src/ocrmypdf/exec/tesseract.py +++ b/src/ocrmypdf/exec/tesseract.py @@ -24,13 +24,13 @@ from functools import lru_cache from os import fspath from subprocess import PIPE, STDOUT, CalledProcessError, TimeoutExpired, run -from . import get_version from ..exceptions import ( MissingDependencyError, - TesseractConfigError, SubprocessOutputError, + TesseractConfigError, ) from ..helpers import page_number +from . import get_version OrientationConfidence = namedtuple('OrientationConfidence', ('angle', 'confidence')) diff --git a/src/ocrmypdf/exec/unpaper.py b/src/ocrmypdf/exec/unpaper.py index 9c9db5d5..d3ee1ea4 100644 --- a/src/ocrmypdf/exec/unpaper.py +++ b/src/ocrmypdf/exec/unpaper.py @@ -26,11 +26,11 @@ from functools import lru_cache from subprocess import PIPE, STDOUT, CalledProcessError from tempfile import TemporaryDirectory -from . import get_version -from ..exceptions import MissingDependencyError, SubprocessOutputError - from PIL import Image +from ..exceptions import MissingDependencyError, SubprocessOutputError +from . import get_version + @lru_cache(maxsize=1) def version(): diff --git a/src/ocrmypdf/filters.py b/src/ocrmypdf/filters.py index e51381bf..7e904876 100644 --- a/src/ocrmypdf/filters.py +++ b/src/ocrmypdf/filters.py @@ -1,5 +1,5 @@ -from PIL import Image import PIL.ImageOps +from PIL import Image def invert(im): diff --git a/src/ocrmypdf/optimize.py b/src/ocrmypdf/optimize.py index 405f48af..eb559eb9 100644 --- a/src/ocrmypdf/optimize.py +++ b/src/ocrmypdf/optimize.py @@ -22,15 +22,15 @@ from collections import defaultdict from os import fspath from pathlib import Path +import pikepdf +from pikepdf import Dictionary, Name from PIL import Image from tqdm import tqdm -import pikepdf -from pikepdf import Name, Dictionary from . import leptonica from ._jobcontext import PDFContext -from .exec import jbig2enc, pngquant from .exceptions import OutputFileAccessError +from .exec import jbig2enc, pngquant from .helpers import re_symlink DEFAULT_JPEG_QUALITY = 75 diff --git a/src/ocrmypdf/pdfa.py b/src/ocrmypdf/pdfa.py index 684254e7..93dfd849 100644 --- a/src/ocrmypdf/pdfa.py +++ b/src/ocrmypdf/pdfa.py @@ -36,9 +36,8 @@ from binascii import hexlify from pathlib import Path from string import Template -import pkg_resources - import pikepdf +import pkg_resources ICC_PROFILE_RELPATH = 'data/sRGB.icc' diff --git a/src/ocrmypdf/pdfinfo/__init__.py b/src/ocrmypdf/pdfinfo/__init__.py index 83cf9a48..093fea5e 100644 --- a/src/ocrmypdf/pdfinfo/__init__.py +++ b/src/ocrmypdf/pdfinfo/__init__.py @@ -16,4 +16,4 @@ # You should have received a copy of the GNU General Public License # along with OCRmyPDF. If not, see . -from .info import PdfInfo, Colorspace, Encoding +from .info import Colorspace, Encoding, PdfInfo diff --git a/src/ocrmypdf/pdfinfo/info.py b/src/ocrmypdf/pdfinfo/info.py index 4d93d4f7..964c3036 100644 --- a/src/ocrmypdf/pdfinfo/info.py +++ b/src/ocrmypdf/pdfinfo/info.py @@ -16,23 +16,24 @@ # You should have received a copy of the GNU General Public License # along with OCRmyPDF. If not, see . +import logging +import re from collections import namedtuple from decimal import Decimal from enum import Enum -import logging from math import hypot, isclose from os import fspath from pathlib import Path from warnings import warn -import re -from pikepdf import PdfMatrix import pikepdf +from pikepdf import PdfMatrix from tqdm import tqdm +from ocrmypdf.exceptions import EncryptedPdfError, MissingDependencyError + from . import ghosttext from .layout import get_page_analysis, get_text_boxes -from ocrmypdf.exceptions import EncryptedPdfError, MissingDependencyError logger = logging.getLogger() diff --git a/tests/cache/graph_ocred/__-l__deu__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin b/tests/cache/graph_ocred/__-l__deu__000001_ocr.png__000001_ocr_tess__pdf__txt/pdf.bin new file mode 100644 index 0000000000000000000000000000000000000000..ce1b614413bc4b38a780e5352273c55960f2d342 GIT binary patch literal 3610 zcmbVP3s@6Z79L3O5%5#@Q_G_0ML}3CWF{m5Y>Gkx7++C>=&n^9l1Ug%CNVQ;5UEsK zAKfC@qOI0vaq(NXt&dti0Ux#fw74Q&QH!7}*6O;h)c5MH*s|wN62imJ{dO;8=ALuU zx%b?2&wuWjsOh@&SSn5>i@N&Ru{$yfk;sv|K&H{i5RzvVI2k0@(gJOBSTSQdZDn|* z0HI7-aNHpUK{LfC#V5M;5f*dH#|DL7mx!MAM3c42)igLkID3Z1qHlx`MMkz}Vs zz;^pLJB8t_LLO33B&@{R1jYq#8!a$820ISxfuRg-m$|pJejU)4Ac(*n&z4t5tgQ@y z{!3bMp@bmX+d-)xNPUf3jvq`5eTlp{bO)aQpUzMJ<2voc0EjT}-n{XNqr~GHB=RU+Xy*LUy{#VKOoTvap=l#qf@Nmx)2SaIBn+QXn&H61G$@Zr z_*{7>ZDL$BXJup>5?V6Sq(c*t+HKscm1}u{IPxfCeEY_sEAF<#I#a&O1raT}M6?;( z!g5T9*PIR~p1}9(dL%g9{n46&(}I8~uo$~VOFJhrtToTi@gxob#Zn@4Y_yd}DzOU) zNlkUQ5#$mQ{s0r=G@g`#@dMG%C{QAdW%?96-tCc{^pNIQQwnFbF(OXoMgV^{O7!HM zjs)WeZ71~M`ThIx2AL{B1g?jo5GMUGM_`=Eh+;xQAcIk^$i7-zP7nbxz@3jh4P#26 z%YYtkwG~(fk4%XK`Y_O;c?@k1c0XXC|0(>`dB6w>lmEH#h4=fBEhR1Oa|MrzH8j#ap z^G|7StVR&uZGO(-_l0kEKg4e-A@T}8rw;%hkKhJRJX7ZuC~^W}$TQM?oB;n| zFMzEtZb6{fQwhsv7z`Q21W_vh+kgd&MY7}JRrFW~R(t3{cui=7h+c3Cog4O{C?oC^ zq^O925mMs0XWtTH42)ylAYzD568gbFNr(VxUoStKUdz^W^plDdSS=cd4SHIDe{G{&j-(gu1eV`ga#nK>9R3Q8RZnDM;C zdsqvg0R*>Vnab?Ic7AdONI~>V50IZ>@+((7~95 zNs!zUOU9B2*AAJUD-o~(|FAa#Tv z*U*#8OC&c=Kvap>rdL2*Ufr#uIk2?Z>+Zt>^AIL@+@Nf zGDS<>lcu*f+S}*_``5%QBo7`QE}55$bZbvfq`thhaC^g#MF)z44%>`jEMIxw_39b> z?=zNW#|7Cop6`0+JULV_bW6mJl&ad$tWOq(8ZZ4}MfmkU&-v3fZP_*h z)37;`Ne@1{^*!~es=Dw7GBwJyN!$0qt*fU$A9nOrcLaNK(}<;4|46M1nqa&5t}f#I zwU!gJEUAX_ErRiyX6Us++Cd?iK|_m@&i*~D^uhMTw7K-M(y>kdn)c4!xNBkA;Xzxh z)S0Hsb!y%B0rsHi#gm4FM+U6Pdob_GftasORylVU_dn9O?_2lA%^B;%76$&XtM5Q_ zh1Q<0czW)8&5ywqtG0&zw#X1%le>RIVWsib#clegx>ZNq!^f&wbx6Bu?;9m!#xy^a z6818Q)cUv9A_j5`QjHyoh zSef{iq3(-cmu2-CMM~zbB5248FLc;goV96>{>!+WX|7m2Gz>RDCv5 z{l%V`dDSPfnIY2b_cyg%tCihNZo3pWz%}Zlj025@;lE?femOH*zT)$yhL)mxL#x@G zOPUWJZ#`r0b-Qv$ZNJ^RFn-zji03ya9DRNN_NVg}9W@uV>km~2RW$FeUwwSr>0acC{F=7lNh9B_>5*S>#qS5BKfmCFAfL>daVd{;khhfAI`Z*# z-WkqaKP(_|nDe1hK`~kIc>om))K$tjGL96>A}tiA0^~v+)T<~)H%>uPNo0Z|fmAA! zR7tU9LNrN6i;`Ka0GG8UJq_15{^a3yL0JTafI^0gAWuVTl`39^EU1G=LCK68;(WY# z3a6c}Jd#wy<=%~_Q1p~js-URpCYPY>AxBY4$a!7msCX6lryDORsfR8s+k+QRC3M<{ y;G&`4ae2SrjO