From f3de980447593dc2e2e7bc39e7e215e80f1e3ad0 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Mon, 13 Sep 2021 00:56:04 -0700 Subject: [PATCH 1/7] Introduce importlib-resources,metadata backports for Python < 3.9 --- setup.cfg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/setup.cfg b/setup.cfg index 34569e80..277246c1 100644 --- a/setup.cfg +++ b/setup.cfg @@ -49,6 +49,8 @@ install_requires = cffi>=1.9.1 # must be a setup and install requirement coloredlogs>=14.0 # strictly optional img2pdf>=0.3.0,<0.5 # pure Python + importlib-metadata>=4;python_version<'3.8' + importlib-resources>=5;python_version<'3.9' pdfminer.six!=20200720,>=20191110,<=20201018 pikepdf>=2.10.0 pikepdf<3;implementation_name=="pypy" and python_version=='3.6' From 208657f840a58d8c740f8b0fcece8f9dc03971f7 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Mon, 13 Sep 2021 00:56:19 -0700 Subject: [PATCH 2/7] pdfa: replace pkg_resources with importlib.resources --- src/ocrmypdf/data/__init__.py | 8 ++++++++ src/ocrmypdf/pdfa.py | 16 ++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) create mode 100644 src/ocrmypdf/data/__init__.py diff --git a/src/ocrmypdf/data/__init__.py b/src/ocrmypdf/data/__init__.py new file mode 100644 index 00000000..ad56a522 --- /dev/null +++ b/src/ocrmypdf/data/__init__.py @@ -0,0 +1,8 @@ +# © 2021 James R. Barlow: github.com/jbarlow83 +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +"""Data files used to generate certain PDFs.""" diff --git a/src/ocrmypdf/pdfa.py b/src/ocrmypdf/pdfa.py index 4eaee8f1..36592e79 100644 --- a/src/ocrmypdf/pdfa.py +++ b/src/ocrmypdf/pdfa.py @@ -10,16 +10,20 @@ Utilities for PDF/A production and confirmation with Ghostspcript. """ import base64 +import importlib.resources from pathlib import Path from typing import Dict, Iterator, Union import pikepdf -import pkg_resources +import pkg_resources # deprecated +# Deprecated ICC_PROFILE_RELPATH = 'data/sRGB.icc' - +# Deprecated SRGB_ICC_PROFILE = pkg_resources.resource_filename('ocrmypdf', ICC_PROFILE_RELPATH) +SRGB_ICC_PROFILE_NAME = 'sRGB.icc' + def _postscript_objdef( alias: str, @@ -97,12 +101,12 @@ def generate_pdfa_ps(target_filename: Path, icc: str = 'sRGB'): References: Adobe PDFMARK Reference: https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdfmark_reference.pdf """ - if icc == 'sRGB': - icc_profile = SRGB_ICC_PROFILE - else: + if icc != 'sRGB': raise NotImplementedError("Only supporting sRGB") - bytes_icc_profile = Path(icc_profile).read_bytes() + bytes_icc_profile = importlib.resources.read_binary( + 'ocrmypdf.data', SRGB_ICC_PROFILE_NAME + ) ps = '\n'.join(_make_postscript(icc, bytes_icc_profile, 3)) # We should have encoded everything to pure ASCII by this point, and From cc6e9cecc0dcf770da0ff2442d6c543787f1efe3 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Mon, 13 Sep 2021 01:02:39 -0700 Subject: [PATCH 3/7] Replace pkg_resources version lookup with importlib.metadata --- docs/conf.py | 5 ++--- src/ocrmypdf/_version.py | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index bc77b700..adfcb4d6 100755 --- a/docs/conf.py +++ b/docs/conf.py @@ -88,11 +88,10 @@ if on_rtd: ] sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES) - -from pkg_resources import get_distribution, DistributionNotFound +from importlib.metadata import version as package_version # The full version, including alpha/beta/rc tags. -release = get_distribution('ocrmypdf').version +release = package_version('ocrmypdf').version version = '.'.join(release.split('.')[:2]) diff --git a/src/ocrmypdf/_version.py b/src/ocrmypdf/_version.py index 6751fede..c788d761 100644 --- a/src/ocrmypdf/_version.py +++ b/src/ocrmypdf/_version.py @@ -5,9 +5,9 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. -import pkg_resources +from importlib.metadata import version as _package_version PROGRAM_NAME = 'ocrmypdf' # Official PEP 396 -__version__ = pkg_resources.get_distribution('ocrmypdf').version +__version__ = _package_version('ocrmypdf') From 8bfd46c80d8a1d7f3107ff8b08f00e86376fa422 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Mon, 13 Sep 2021 01:06:42 -0700 Subject: [PATCH 4/7] docs: update copyright --- docs/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/conf.py b/docs/conf.py index adfcb4d6..c23376e2 100755 --- a/docs/conf.py +++ b/docs/conf.py @@ -56,7 +56,7 @@ master_doc = 'index' # General information about the project. project = 'ocrmypdf' copyright = ( - '2020, James R. Barlow. Licensed under Creative Commons Attribution-ShareAlike 4.0.' + '2021, James R. Barlow. Licensed under Creative Commons Attribution-ShareAlike 4.0.' ) author = 'James R. Barlow' From 3534742ef933a7bab0d075b37fcb1124a9b2ef5e Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Mon, 13 Sep 2021 01:35:14 -0700 Subject: [PATCH 5/7] ci: Enable build of feature branches --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a34c046b..23820f1b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,6 +6,7 @@ on: - master - ci - release/* + - feature/* tags: - v* paths-ignore: From 4d67812d51521267e403e595d9666320917f2283 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Tue, 14 Sep 2021 00:15:07 -0700 Subject: [PATCH 6/7] importlib helpers don't provide importlib.thing, but importlib_thing Fix everywhere. --- docs/conf.py | 2 +- setup.cfg | 4 ++-- src/ocrmypdf/_version.py | 2 +- src/ocrmypdf/pdfa.py | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index c23376e2..a17933cd 100755 --- a/docs/conf.py +++ b/docs/conf.py @@ -88,7 +88,7 @@ if on_rtd: ] sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES) -from importlib.metadata import version as package_version +from importlib_metadata import version as package_version # The full version, including alpha/beta/rc tags. release = package_version('ocrmypdf').version diff --git a/setup.cfg b/setup.cfg index 277246c1..2dbb9a1b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -49,8 +49,8 @@ install_requires = cffi>=1.9.1 # must be a setup and install requirement coloredlogs>=14.0 # strictly optional img2pdf>=0.3.0,<0.5 # pure Python - importlib-metadata>=4;python_version<'3.8' - importlib-resources>=5;python_version<'3.9' + importlib-metadata>=4 # until Python 3.8 + importlib-resources>=5 # until Python 3.9 pdfminer.six!=20200720,>=20191110,<=20201018 pikepdf>=2.10.0 pikepdf<3;implementation_name=="pypy" and python_version=='3.6' diff --git a/src/ocrmypdf/_version.py b/src/ocrmypdf/_version.py index c788d761..091eacf9 100644 --- a/src/ocrmypdf/_version.py +++ b/src/ocrmypdf/_version.py @@ -5,7 +5,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. -from importlib.metadata import version as _package_version +from importlib_metadata import version as _package_version PROGRAM_NAME = 'ocrmypdf' diff --git a/src/ocrmypdf/pdfa.py b/src/ocrmypdf/pdfa.py index 36592e79..cc34f906 100644 --- a/src/ocrmypdf/pdfa.py +++ b/src/ocrmypdf/pdfa.py @@ -10,10 +10,10 @@ Utilities for PDF/A production and confirmation with Ghostspcript. """ import base64 -import importlib.resources from pathlib import Path from typing import Dict, Iterator, Union +import importlib_resources import pikepdf import pkg_resources # deprecated @@ -104,7 +104,7 @@ def generate_pdfa_ps(target_filename: Path, icc: str = 'sRGB'): if icc != 'sRGB': raise NotImplementedError("Only supporting sRGB") - bytes_icc_profile = importlib.resources.read_binary( + bytes_icc_profile = importlib_resources.read_binary( 'ocrmypdf.data', SRGB_ICC_PROFILE_NAME ) ps = '\n'.join(_make_postscript(icc, bytes_icc_profile, 3)) From ee1a7baae77e3393bc36e0b86d229b7e5e21448f Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Tue, 14 Sep 2021 00:28:42 -0700 Subject: [PATCH 7/7] requirements: drop setuptools With importlib_* we no longer setuptools's pkg_resources. --- setup.cfg | 1 - 1 file changed, 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 2dbb9a1b..42e362d5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -56,7 +56,6 @@ install_requires = pikepdf<3;implementation_name=="pypy" and python_version=='3.6' pluggy>=0.13.0,<2 reportlab>=3.5.66 - setuptools tqdm>=4 python_requires = >=3.6 include_package_data = True