pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/print/py-pikepdf



Module Name:    pkgsrc
Committed By:   adam
Date:           Fri Sep  4 12:23:47 UTC 2026

Modified Files:
        pkgsrc/print/py-pikepdf: Makefile PLIST distinfo

Log Message:
py-pikepdf: updated to 10.12.0

v10.12.0

Packaging and licensing

- Binary wheels now redistribute the licenses of the compiled third-party
  libraries they bundle, along with an attribution manifest mapping each
  component to its license. {issue}`736`
  - The new `third-party-licenses/` directory documents every vendored binary:
    qpdf and libjpeg-turbo on all platforms; OpenSSL and zlib (both statically
    linked into `qpdf30.dll`) plus the Microsoft Visual C++ runtime on Windows;
    the GnuTLS/Nettle/GMP stack on macOS; and the GCC runtime libraries on
    musllinux. It also records what is deliberately *not* bundled -- notably
    that Linux wheels use qpdf's built-in crypto and link no TLS library at all.
  - These files are declared via PEP 639 `project.license-files`, so they ship
    in `pikepdf-<version>.dist-info/licenses/` and are enumerated in the wheel's
    `License-File` metadata. `License-Expression` remains `MPL-2.0`: pikepdf's
    own license is unchanged, and the bundled libraries are separate works
    redistributed in unmodified binary form.
  - This replaces `licenses-for-wheels.txt`, which has been removed. It had
    grown stale -- it never mentioned OpenSSL, zlib, or the GnuTLS stack -- and
    it was reaching only Windows wheels, because the build backend's default
    license glob happened to match its name on case-insensitive filesystems and
    nowhere else.
- Source distributions no longer contain qpdf's source tree. CI unpacks qpdf
  into `./qpdf` to build libqpdf, and that build prerequisite was being swept
  into the sdist, adding roughly 2900 Apache-2.0 files to a distribution that
  declares itself MPL-2.0. sdists now contain only pikepdf's own code.
- macOS wheels now use qpdf's native crypto provider instead of GnuTLS, and all
  POSIX builds select it explicitly rather than relying on qpdf's implicit
  fallback. macOS wheels lose nine bundled libraries as a result -- GnuTLS,
  Nettle, Hogweed, GMP, libidn2, libunistring, Libtasn1, p11-kit and libintl --
  along with roughly 10 MB and the LGPL obligations that came with them.

  macOS moved to GnuTLS in v8.11.1 to fix legacy encrypted files failing to open
  ({issue}`520`), because Homebrew's OpenSSL had retired the legacy provider
  that supplies the RC4 and MD5 those files need. The Linux builds were assumed
  to be doing the same thing, but were not: their images carry no GnuTLS or
  OpenSSL headers, so they had silently been using native crypto all along, and
  have been opening legacy encrypted files without trouble ever since. Native
  crypto implements MD5, RC4, SHA2 and AES itself, so no upstream deprecation
  policy can withdraw the weak algorithms older PDFs require. There is no
  change to which files pikepdf can open.
- Documentation updates with additional guidance about crypto provider selection
  and the realities of PDF encryption security.

Behaviour change

- {attr}`pikepdf.PdfInlineImage.icc` now returns ``None`` instead of raising
  {exc}`~pikepdf.exceptions.InvalidPdfImageError`. An inline image's colour
  space cannot be `/ICCBased`, so "no ICC profile" is the correct answer rather
  than an error -- and raising made {attr}`pikepdf.PdfImageBase.palette`
  unusable on indexed inline images, which consults it.

Fixes

- Fixed inline image name abbreviation handling, which was incomplete in both
  directions. {issue}`206`
  - Abbreviations nested inside arrays are now expanded when an inline image is
    parsed, so `/F [/AHx /Fl]` reports
    `['/ASCIIHexDecode', '/FlateDecode']` from
    {attr}`pikepdf.PdfInlineImage.filters`, and an `/Indexed` colour space
    written as `/CS [/I /RGB 1 <...>]` is now recognized as indexed instead of
    raising `NotImplementedError`. Correspondingly,
    {meth}`pikepdf.PdfInlineImage.unparse` now abbreviates names inside arrays,
    not only at the top level. Contents of `/DecodeParms` dictionaries are left
    alone, since filter parameter names have no abbreviations.
  - Abbreviations are now resolved by position, because the same abbreviation
    can mean different things as a key and as a value: `/I` is `/Interpolate`
    as a key but `/Indexed` as a value (ISO 32000-2 Tables 91 and 92).
    Previously `/I` was always expanded to `/Indexed`, so `/I true` became
    `/Indexed true`.
  - Added the missing abbreviations `/Fl` (`/FlateDecode`), `/D` (`/Decode`)
    and `/L` (`/Length`); none of the three were expanded before.
- A JBIG2 decode failure (jbig2dec present but the payload is invalid) now
  raises {exc}`~pikepdf.exceptions.DataDecodingError` with the decoder's error
  message, instead of a bare `RuntimeError("qpdf will consume this exception")`
  plus an unraisable traceback on stderr.
- Exceptions other than {exc}`~pikepdf.exceptions.DataDecodingError` raised by
  a JBIG2 decoder now keep their own type. Previously a failure unrelated to
  the image data -- a {exc}`~pikepdf.exceptions.DependencyError` from a custom
  decoder, or `KeyboardInterrupt` -- was reported as if the JBIG2 data were
  corrupt. Implementations of
  {class}`pikepdf.jbig2.JBIG2DecoderInterface.decode_jbig2` should raise
  `DataDecodingError` to report undecodable data.
- When the JBIG2 image comes from a file on disk, qpdf traps the decoder's
  exception and records it as a warning, so the decoder's message is available
  from {meth}`pikepdf.Pdf.get_warnings` rather than in the exception.


To generate a diff of this commit:
cvs rdiff -u -r1.30 -r1.31 pkgsrc/print/py-pikepdf/Makefile
cvs rdiff -u -r1.7 -r1.8 pkgsrc/print/py-pikepdf/PLIST
cvs rdiff -u -r1.24 -r1.25 pkgsrc/print/py-pikepdf/distinfo

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/print/py-pikepdf/Makefile
diff -u pkgsrc/print/py-pikepdf/Makefile:1.30 pkgsrc/print/py-pikepdf/Makefile:1.31
--- pkgsrc/print/py-pikepdf/Makefile:1.30       Sun Jun 28 15:41:35 2026
+++ pkgsrc/print/py-pikepdf/Makefile    Fri Sep  4 12:23:47 2026
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.30 2026/06/28 15:41:35 wiz Exp $
+# $NetBSD: Makefile,v 1.31 2026/09/04 12:23:47 adam Exp $
 
-DISTNAME=      pikepdf-10.5.1
+DISTNAME=      pikepdf-10.12.0
 PKGNAME=       ${PYPKGPREFIX}-${DISTNAME}
 CATEGORIES=    print python
 MASTER_SITES=  ${MASTER_SITE_PYPI:=p/pikepdf/}
@@ -10,11 +10,10 @@ HOMEPAGE=   https://github.com/pikepdf/pik
 COMMENT=       Read and write PDFs with Python, powered by qpdf
 LICENSE=       mpl-2.0
 
-TOOL_DEPENDS+= ${PYPKGPREFIX}-setuptools>=78:../../devel/py-setuptools
+TOOL_DEPENDS+= ${PYPKGPREFIX}-scikit-build-core>=0.10:../../devel/py-scikit-build-core
 DEPENDS+=      ${PYPKGPREFIX}-Pillow>=10.0.1:../../graphics/py-Pillow
-DEPENDS+=      ${PYPKGPREFIX}-deprecated-[0-9]*:../../devel/py-deprecated
 DEPENDS+=      ${PYPKGPREFIX}-lxml>=4.8:../../textproc/py-lxml
-DEPENDS+=      ${PYPKGPREFIX}-packaging-[0-9]*:../../devel/py-packaging
+DEPENDS+=      ${PYPKGPREFIX}-packaging>=0:../../devel/py-packaging
 TEST_DEPENDS+= ${PYPKGPREFIX}-hypothesis>=6.36:../../devel/py-hypothesis
 TEST_DEPENDS+= ${PYPKGPREFIX}-test-cov>=3.0.0:../../devel/py-test-cov
 TEST_DEPENDS+= ${PYPKGPREFIX}-test-timeout>=2.1.0:../../devel/py-test-timeout
@@ -26,7 +25,7 @@ USE_TOOLS+=           pkg-config
 
 PYTHON_VERSIONS_INCOMPATIBLE=  310 311
 
-.include "../../devel/py-pybind11/buildlink3.mk"
+.include "../../devel/py-nanobind/buildlink3.mk"
 .include "../../lang/python/wheel.mk"
 .include "../../print/qpdf/buildlink3.mk"
 .include "../../mk/bsd.pkg.mk"

Index: pkgsrc/print/py-pikepdf/PLIST
diff -u pkgsrc/print/py-pikepdf/PLIST:1.7 pkgsrc/print/py-pikepdf/PLIST:1.8
--- pkgsrc/print/py-pikepdf/PLIST:1.7   Sun Jan 11 08:59:51 2026
+++ pkgsrc/print/py-pikepdf/PLIST       Fri Sep  4 12:23:47 2026
@@ -1,17 +1,25 @@
-@comment $NetBSD: PLIST,v 1.7 2026/01/11 08:59:51 adam Exp $
+@comment $NetBSD: PLIST,v 1.8 2026/09/04 12:23:47 adam Exp $
 ${PYSITELIB}/${WHEEL_INFODIR}/METADATA
 ${PYSITELIB}/${WHEEL_INFODIR}/RECORD
 ${PYSITELIB}/${WHEEL_INFODIR}/WHEEL
 ${PYSITELIB}/${WHEEL_INFODIR}/licenses/LICENSE.txt
-${PYSITELIB}/${WHEEL_INFODIR}/top_level.txt
+${PYSITELIB}/${WHEEL_INFODIR}/licenses/third-party-licenses/GCC-exception-3.1.txt
+${PYSITELIB}/${WHEEL_INFODIR}/licenses/third-party-licenses/GPL-3.0.txt
+${PYSITELIB}/${WHEEL_INFODIR}/licenses/third-party-licenses/README.md
+${PYSITELIB}/${WHEEL_INFODIR}/licenses/third-party-licenses/libjpeg-turbo-README.ijg.txt
+${PYSITELIB}/${WHEEL_INFODIR}/licenses/third-party-licenses/libjpeg-turbo.txt
+${PYSITELIB}/${WHEEL_INFODIR}/licenses/third-party-licenses/microsoft-visual-cpp-runtime.txt
+${PYSITELIB}/${WHEEL_INFODIR}/licenses/third-party-licenses/openssl.txt
+${PYSITELIB}/${WHEEL_INFODIR}/licenses/third-party-licenses/qpdf.txt
+${PYSITELIB}/${WHEEL_INFODIR}/licenses/third-party-licenses/zlib.txt
 ${PYSITELIB}/pikepdf/__init__.py
 ${PYSITELIB}/pikepdf/__init__.pyc
 ${PYSITELIB}/pikepdf/__init__.pyo
 ${PYSITELIB}/pikepdf/_augments.py
 ${PYSITELIB}/pikepdf/_augments.pyc
 ${PYSITELIB}/pikepdf/_augments.pyo
+${PYSITELIB}/pikepdf/_core.abi3.so
 ${PYSITELIB}/pikepdf/_core.pyi
-${PYSITELIB}/pikepdf/_core.so
 ${PYSITELIB}/pikepdf/_cpphelpers.py
 ${PYSITELIB}/pikepdf/_cpphelpers.pyc
 ${PYSITELIB}/pikepdf/_cpphelpers.pyo
@@ -30,6 +38,12 @@ ${PYSITELIB}/pikepdf/_io.pyo
 ${PYSITELIB}/pikepdf/_methods.py
 ${PYSITELIB}/pikepdf/_methods.pyc
 ${PYSITELIB}/pikepdf/_methods.pyo
+${PYSITELIB}/pikepdf/_named_dests.py
+${PYSITELIB}/pikepdf/_named_dests.pyc
+${PYSITELIB}/pikepdf/_named_dests.pyo
+${PYSITELIB}/pikepdf/_page_copy.py
+${PYSITELIB}/pikepdf/_page_copy.pyc
+${PYSITELIB}/pikepdf/_page_copy.pyo
 ${PYSITELIB}/pikepdf/_version.py
 ${PYSITELIB}/pikepdf/_version.pyc
 ${PYSITELIB}/pikepdf/_version.pyo
@@ -51,24 +65,54 @@ ${PYSITELIB}/pikepdf/form.pyo
 ${PYSITELIB}/pikepdf/jbig2.py
 ${PYSITELIB}/pikepdf/jbig2.pyc
 ${PYSITELIB}/pikepdf/jbig2.pyo
+${PYSITELIB}/pikepdf/jobs.py
+${PYSITELIB}/pikepdf/jobs.pyc
+${PYSITELIB}/pikepdf/jobs.pyo
 ${PYSITELIB}/pikepdf/models/__init__.py
 ${PYSITELIB}/pikepdf/models/__init__.pyc
 ${PYSITELIB}/pikepdf/models/__init__.pyo
+${PYSITELIB}/pikepdf/models/_cal_icc.py
+${PYSITELIB}/pikepdf/models/_cal_icc.pyc
+${PYSITELIB}/pikepdf/models/_cal_icc.pyo
 ${PYSITELIB}/pikepdf/models/_content_stream.py
 ${PYSITELIB}/pikepdf/models/_content_stream.pyc
 ${PYSITELIB}/pikepdf/models/_content_stream.pyo
+${PYSITELIB}/pikepdf/models/_image_exceptions.py
+${PYSITELIB}/pikepdf/models/_image_exceptions.pyc
+${PYSITELIB}/pikepdf/models/_image_exceptions.pyo
 ${PYSITELIB}/pikepdf/models/_transcoding.py
 ${PYSITELIB}/pikepdf/models/_transcoding.pyc
 ${PYSITELIB}/pikepdf/models/_transcoding.pyo
+${PYSITELIB}/pikepdf/models/actions.py
+${PYSITELIB}/pikepdf/models/actions.pyc
+${PYSITELIB}/pikepdf/models/actions.pyo
 ${PYSITELIB}/pikepdf/models/ctm.py
 ${PYSITELIB}/pikepdf/models/ctm.pyc
 ${PYSITELIB}/pikepdf/models/ctm.pyo
 ${PYSITELIB}/pikepdf/models/encryption.py
 ${PYSITELIB}/pikepdf/models/encryption.pyc
 ${PYSITELIB}/pikepdf/models/encryption.pyo
-${PYSITELIB}/pikepdf/models/image.py
-${PYSITELIB}/pikepdf/models/image.pyc
-${PYSITELIB}/pikepdf/models/image.pyo
+${PYSITELIB}/pikepdf/models/image/__init__.py
+${PYSITELIB}/pikepdf/models/image/__init__.pyc
+${PYSITELIB}/pikepdf/models/image/__init__.pyo
+${PYSITELIB}/pikepdf/models/image/_bomb.py
+${PYSITELIB}/pikepdf/models/image/_bomb.pyc
+${PYSITELIB}/pikepdf/models/image/_bomb.pyo
+${PYSITELIB}/pikepdf/models/image/_classes.py
+${PYSITELIB}/pikepdf/models/image/_classes.pyc
+${PYSITELIB}/pikepdf/models/image/_classes.pyo
+${PYSITELIB}/pikepdf/models/image/_colorspace.py
+${PYSITELIB}/pikepdf/models/image/_colorspace.pyc
+${PYSITELIB}/pikepdf/models/image/_colorspace.pyo
+${PYSITELIB}/pikepdf/models/image/_extract.py
+${PYSITELIB}/pikepdf/models/image/_extract.pyc
+${PYSITELIB}/pikepdf/models/image/_extract.pyo
+${PYSITELIB}/pikepdf/models/image/_postprocess.py
+${PYSITELIB}/pikepdf/models/image/_postprocess.pyc
+${PYSITELIB}/pikepdf/models/image/_postprocess.pyo
+${PYSITELIB}/pikepdf/models/image/_shared.py
+${PYSITELIB}/pikepdf/models/image/_shared.pyc
+${PYSITELIB}/pikepdf/models/image/_shared.pyo
 ${PYSITELIB}/pikepdf/models/metadata/__init__.py
 ${PYSITELIB}/pikepdf/models/metadata/__init__.pyc
 ${PYSITELIB}/pikepdf/models/metadata/__init__.pyo
@@ -94,6 +138,9 @@ ${PYSITELIB}/pikepdf/objects.py
 ${PYSITELIB}/pikepdf/objects.pyc
 ${PYSITELIB}/pikepdf/objects.pyo
 ${PYSITELIB}/pikepdf/py.typed
+${PYSITELIB}/pikepdf/sanitize.py
+${PYSITELIB}/pikepdf/sanitize.pyc
+${PYSITELIB}/pikepdf/sanitize.pyo
 ${PYSITELIB}/pikepdf/settings.py
 ${PYSITELIB}/pikepdf/settings.pyc
 ${PYSITELIB}/pikepdf/settings.pyo

Index: pkgsrc/print/py-pikepdf/distinfo
diff -u pkgsrc/print/py-pikepdf/distinfo:1.24 pkgsrc/print/py-pikepdf/distinfo:1.25
--- pkgsrc/print/py-pikepdf/distinfo:1.24       Fri Mar 27 13:38:07 2026
+++ pkgsrc/print/py-pikepdf/distinfo    Fri Sep  4 12:23:47 2026
@@ -1,5 +1,5 @@
-$NetBSD: distinfo,v 1.24 2026/03/27 13:38:07 adam Exp $
+$NetBSD: distinfo,v 1.25 2026/09/04 12:23:47 adam Exp $
 
-BLAKE2s (pikepdf-10.5.1.tar.gz) = af887e6da55af2b62f7a6dcd6f8eac905ad12147145551277d1b8f90de219377
-SHA512 (pikepdf-10.5.1.tar.gz) = a99abea6f54fe9f813e1fe6c0052d9e40537c7605c6e7f3a930cfb2dd59cd3eeb2c40afc5f0ad98aac7a76e692c842f0577e8188a6319a07e9461a3ac9c2cb73
-Size (pikepdf-10.5.1.tar.gz) = 4582470 bytes
+BLAKE2s (pikepdf-10.12.0.tar.gz) = d4ca45e8cf9b79efa8deba14d0d709613952a7667dd072a87ce2d0d3fb677b4f
+SHA512 (pikepdf-10.12.0.tar.gz) = 337e4a93a50fec805d660a9660f90795b383fb291fbb9f65f9b0d8f198c01f1a48b54694e4915d2f53e0302e9f4c562620b134fa9848a95dcd6663683ec6e4b8
+Size (pikepdf-10.12.0.tar.gz) = 4950459 bytes



Home | Main Index | Thread Index | Old Index