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