From 46d0978a096de36cf1cb8574d67b20eb0b4ee9bd Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Mon, 3 Oct 2022 21:59:31 -0700 Subject: [PATCH] Update version scripts to support Ghostscript 10.0 --- src/ocrmypdf/_exec/ghostscript.py | 5 +++-- tests/test_main.py | 9 ++++----- tests/test_validation.py | 6 ++++++ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/ocrmypdf/_exec/ghostscript.py b/src/ocrmypdf/_exec/ghostscript.py index b4b0cd29..ac5f28fa 100644 --- a/src/ocrmypdf/_exec/ghostscript.py +++ b/src/ocrmypdf/_exec/ghostscript.py @@ -14,6 +14,7 @@ from os import fspath from pathlib import Path from subprocess import PIPE, CalledProcessError +from packaging.version import Version from PIL import Image, UnidentifiedImageError from ocrmypdf.exceptions import SubprocessOutputError @@ -186,8 +187,8 @@ def generate_pdfa( ] strategy = 'LeaveColorUnchanged' - gs_version = version() - if gs_version == '9.56.0': + gs_version = Version(version()) + if gs_version == Version('9.56.0'): # 9.56.0 breaks our OCR, should be fixed in 9.56.1 # https://bugs.ghostscript.com/show_bug.cgi?id=705187 compression_args.append('-dNEWPDF=false') diff --git a/tests/test_main.py b/tests/test_main.py index 198ed3f1..56fc6257 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -12,10 +12,11 @@ from unittest.mock import patch import pikepdf import pytest +from packaging.version import Version from PIL import Image import ocrmypdf -from ocrmypdf._exec import ghostscript, tesseract +from ocrmypdf._exec import tesseract from ocrmypdf.exceptions import ExitCode, MissingDependencyError from ocrmypdf.pdfa import file_claims_pdfa from ocrmypdf.pdfinfo import Colorspace, Encoding, PdfInfo @@ -178,7 +179,8 @@ def test_maximum_options(renderer, output_type, multipage, outpdf): @pytest.mark.skipif( - tesseract.version() >= '5', reason="tess 5 tries harder to find its files" + Version(tesseract.version()) >= Version('5'), + reason="tess 5 tries harder to find its files", ) def test_tesseract_missing_tessdata(monkeypatch, resources, no_outpdf, tmpdir): monkeypatch.setenv("TESSDATA_PREFIX", os.fspath(tmpdir)) @@ -777,9 +779,6 @@ def test_sidecar_nonempty(resources, outpdf): @pytest.mark.parametrize('pdfa_level', ['1', '2', '3']) def test_pdfa_n(pdfa_level, resources, outpdf): - if pdfa_level == '3' and ghostscript.version() < '9.19': - pytest.xfail(reason='Ghostscript >= 9.19 required') - check_ocrmypdf( resources / 'ccitt.pdf', outpdf, diff --git a/tests/test_validation.py b/tests/test_validation.py index 6472ad1f..d181e85a 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -223,6 +223,12 @@ def test_version_comparison(): need_version='4.1.1', version_parser=TesseractVersion, ) + vd.check_external_program( + program="gs", + package="ghostscript", + version_checker=lambda: '10.0', + need_version='9.50', + ) with pytest.raises(MissingDependencyError): vd.check_external_program( program="tesseract",