Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-pikepdf for openSUSE:Factory
checked in at 2026-11-10 14:39:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pikepdf (Old)
and /work/SRC/openSUSE:Factory/.python-pikepdf.new.3759290 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pikepdf"
Tue Nov 10 14:39:32 2026 rev:39 rq:1396405 version:10.18.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pikepdf/python-pikepdf.changes
2026-11-05 18:21:27.240553682 +0100
+++
/work/SRC/openSUSE:Factory/.python-pikepdf.new.3759290/python-pikepdf.changes
2026-11-10 14:40:20.905384881 +0100
@@ -1,0 +2,163 @@
+Sun Nov 8 07:44:08 UTC 2026 - Martin Hauke <[email protected]>
+
+- Update to version 10.18.0
+ * {meth}pikepdf.Pdf.add_pages_from now carries layers (optional
+ content) with the pages it copies. The optional content groups
+ that the copied pages depend on are listed in the destination's
+ /OCProperties, with the default visibility, place in the layer
+ list, lock, radio button groups and automatic states that the
+ source's default configuration gave them. Previously the groups
+ were copied but not listed, so viewers ignored them: the layer
+ list was empty and content hidden in the source was shown.
+ {issue}118
+ * {meth}pikepdf.Pdf.add_pages_from now carries bookmarks. Outline
+ items of the source that lead to a copied page are appended to
+ the destination's outline, keeping their hierarchy, titles and
+ style; items that lead to pages that were not copied are
+ dropped. {issue}281
+ * Both are on by default, which changes what existing callers of
+ add_pages_from get: the destination may gain an /OCProperties
+ and outline items it did not gain before. Pass layers='ignore'
+ or outlines='ignore' for the previous behaviour, for example
+ if you build the merged outline yourself.
+ {class}pikepdf.PageCopyResult reports layers_added,
+ outline_items_added and outline_items_dropped.
+ * {meth}pikepdf.Pdf.check_pdf_syntax now performs the same checks
+ as qpdf --check and reports the same problems. It checks the
+ linearization data and hint tables of linearized files, which
+ previously required a separate call to
+ {meth}pikepdf.Pdf.check_linearization, and checks the
+ interactive form, embedded files, page labels and outlines. A
+ document with no pages is reported as ERROR: file does not
+ contain any pages, and a page whose content stream cannot be
+ read is reported as ERROR: page N: ... along with the other
+ problems found, where it previously raised
+ {class}pikepdf.PdfError. {issue}515
+ * Inserting a {class}pikepdf.Dictionary or {class}pikepdf.Array
+ that refers to another Pdf into a Pdf now raises
+ {exc}pikepdf.ForeignObjectError, naming the key or index where
+ the foreign object was found, and leaves the target unchanged.
+ This covers an indirect object of another Pdf held anywhere in
+ the value, such as pdf3.Root.X = Dictionary(P=pdf1.Root.Y), and
+ a direct dictionary or array that another Pdf already contains.
+ Previously the value was accepted: the first kind made the Pdf
+ impossible to save, failing part way through writing, and the
+ second left two documents sharing one object. It applies to
+ every way of inserting a value, including
+ {meth}pikepdf.Pdf.make_indirect,
+ {meth}pikepdf.Page.add_resource, adding a page built from a
+ dictionary, name and number trees, and stream dictionaries. Use
+ {meth}pikepdf.Pdf.copy_foreign to bring the foreign object over
+ first.
+ * A password containing a NUL character now raises
+ {exc}ValueError, both when opening a PDF and when encrypting
+ one. Previously the password was silently cut short at the NUL,
+ so a wrong password could open a file, and an encrypted file
+ could be written with a shorter password than requested.
+ PDF passwords may not contain NUL. {issue}756
+ * Fixed threads interfering with each other inside one Pdf on
+ GIL-enabled builds, which could cause an object to be read as
+ None. The per-Pdf lock is now in force on every build, and
+ {meth}pikepdf.Pdf.lock works on GIL-enabled builds too.
+ {commit}7c761d23
+ * Methods implemented in Python that change a Pdf in several
+ steps, such as {meth}pikepdf.Page.add_overlay,
+ {meth}pikepdf.Pdf.add_pages_from and the {mod}pikepdf.sanitize
+ functions, now hold its lock until they finish. The thread
+ safety section of the architecture notes now says which calls
+ are atomic. {commit}0872a6e8, {commit}b10671c3
+ * Two threads that each hold the lock of one Pdf and then need
+ the other's no longer deadlock; one of them gets a
+ {exc}RuntimeError instead. What a callback such as a
+ {class}pikepdf.TokenFilter may do is now documented:
+ see {ref}callback-restrictions. {commit}11ef776b
+ * Fixed a crash, a native stack overflow that no Python except
+ can catch, when reading, saving or checking a PDF in which a
+ JBIG2 image's /JBIG2Globals stream is itself JBIG2-encoded and
+ leads back to the image, directly or through other streams.
+ Such an image is now reported as unfilterable, as JBIG2-encoded
+ globals without a cycle already were: reading it raises
+ {exc}~pikepdf.exceptions.PdfError, extracting it raises
+ {exc}~pikepdf.exceptions.UnsupportedImageTypeError, and saving
+ writes it unchanged with a warning. {issue}753
+ * A JBIG2 image's /JBIG2Globals are now read only when the image
+ is being JBIG2-decoded, rather than every time qpdf checks
+ whether the image can be decoded, which included every save.
+ * Reading the label of a page whose page label style is
+ an unknown name, such as /S /Z, now warns and keeps the label
+ prefix, as an invalid non-name style already did. Previously it
+ raised KeyError.
+ * Reading the label of a page whose number cannot be written in
+ its page label style, such as /S /R /St 0 or a Roman numeral
+ above 5000, now warns and writes the number in decimal digits.
+ Previously it raised ValueError.
+ * Extracting an image whose /CalGray or /CalRGB colour space
+ array lacks its parameter dictionary now decodes it as the
+ corresponding device space, without an ICC profile, as a
+ missing /WhitePoint already did. Previously it raised
+ IndexError.
+ * An ICCBased image whose profile stream omits the required /N,
+ or gives one that is not an integer, now takes its mode and
+ default /Decode from the profile's colour space. Previously its
+ mode raised KeyError.
+ * Fixed {meth}pikepdf.form.SignatureField.stamp_overlay stamping
+ the overlay twice when the signature widget names its page with
+ /P.
+ * Fixed a Pdf returned by {meth}pikepdf.Job.create_pdf not being
+ set up like other Pdf objects: setting its conversion_mode
+ raised {class}pikepdf.PdfError, and on free-threaded Python
+ none of its methods were protected by a lock.
+ * Matrix.__array__(copy=False) now raises ValueError, as numpy
+ expects of an object that cannot share its memory. The check
+ for this was written in a way that never fired.
+ * A progress argument to {meth}pikepdf.Pdf.save that is not
+ callable is now rejected with TypeError before anything is
+ written. Previously the error was raised part of the way
+ through writing the file.
+ * Fixed a small memory leak each time
+ {meth}pikepdf.AcroForm.get_fields_with_qualified_name or
+ {meth}pikepdf.AcroForm.fix_copied_annotations returned a field.
+ * Iterating over a {class}pikepdf.NameTree or
+ {class}pikepdf.NumberTree now iterates over the keys it had
+ when the iteration began. Previously the tree was read as the
+ iteration went on, so changing it meanwhile gave undefined results.
+ * Putting an object that belongs to another Pdf in a
+ {class}pikepdf.NameTree or {class}pikepdf.NumberTree now raises
+ {class}pikepdf.ForeignObjectError at once, as it does for a
+ dictionary or an array. Previously the error was not raised
+ until the Pdf was saved.
+ * x in tree is now False for an x that cannot be a key of a
+ {class}pikepdf.NameTree, such as an int, and for None in a
+ {class}pikepdf.NumberTree. Previously these raised TypeError.
+ * Corrected the documentation and type hints of
+ {class}pikepdf.NameTree, which said that names are bytes. Names
+ are, and have always been, str: qpdf reads each name as a PDF
+ text string and compares names by that text.
+ Free-threaded Python fixes
+ * Many crashes and data races that occurred when several threads
+ used the same Pdf at once have been fixed. The test suite now
+ runs under ThreadSanitizer in continuous integration, which is
+ how most of them were found ({commit}4831f6fc).
+ * Every binding that reads or changes a Pdf now takes that Pdf's
+ lock, and the lock of any other Pdf among its arguments,
+ enforced at compile time. Many bindings previously did not,
+ notably most methods of {class}pikepdf.NameTree,
+ {class}pikepdf.NumberTree, attachments, annotations and
+ {class}pikepdf.AcroForm. {commit}3c5b2bc4
+ * Fixed crashes and data races in {class}pikepdf.Page methods,
+ content stream parsing, adding pages from one Pdf to another,
+ and dropping the last reference to a Pdf while another thread
+ used one of its objects. {commit}04999faf
+ * A {class}pikepdf.Dictionary or {class}pikepdf.Array that
+ belongs to no Pdf is now protected by a lock shared by all such
+ objects. Threads that each build objects of their own contend
+ for it, so add a Dictionary or Array to its Pdf as soon as it
+ is created rather than building large structures before adding
+ them. {commit}5e11a240, {commit}b10671c3
+ * Fixed "dictionary changed size during iteration" when several
+ threads opened a Pdf's metadata for the first time at once.
+ {commit}d52a9a11
+ * Threads that take turns using the same Pdf are no longer slowed
+ to a crawl when every CPU is busy. {commit}a3e2b882
+
+-------------------------------------------------------------------
Old:
----
pikepdf-10.17.0.tar.gz
New:
----
pikepdf-10.18.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pikepdf.spec ++++++
--- /var/tmp/diff_new_pack.l5D6Yz/_old 2026-11-10 14:40:23.885509724 +0100
+++ /var/tmp/diff_new_pack.l5D6Yz/_new 2026-11-10 14:40:23.890509933 +0100
@@ -18,7 +18,7 @@
Name: python-pikepdf
-Version: 10.17.0
+Version: 10.18.0
Release: 0
Summary: Read and write PDFs with Python, powered by qpdf
License: MPL-2.0
++++++ pikepdf-10.17.0.tar.gz -> pikepdf-10.18.0.tar.gz ++++++
/work/SRC/openSUSE:Factory/python-pikepdf/pikepdf-10.17.0.tar.gz
/work/SRC/openSUSE:Factory/.python-pikepdf.new.3759290/pikepdf-10.18.0.tar.gz
differ: char 23, line 1