mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-10-28 22:36:25 +00:00
f33ca06154cb16c08264c553b92e187126bc96dc
3
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
23a17447f1 |
python3-pikepdf: Upgrade 10.13.0.post1 -> 10.17.0
Upgrade to release 10.17.0:
- Added {class}pikepdf.ObjectSet, which records the objects that a
walk of a PDF's object graph has already visited. Objects in a
PDF are shared and may refer back to their ancestors, so a search
that only limits its depth can take exponential time on quite
ordinary files. ObjectSet.add() reports whether an object is new,
and tells apart direct objects and objects of different Pdf,
which a set of objgen cannot. See {ref}walking-object-graphs.
- Added {meth}pikepdf.Object.is_same_object_as, which tests whether
two references lead to the same object. Neither is, == nor
comparing objgen answers this reliably.
- Added {meth}pikepdf.Pdf.content_scopes and
{meth}pikepdf.Page.content_scopes, which iterate over every
content stream that pages can draw, each with the resource
dictionary it uses: the page itself, form XObjects, annotation
appearance streams, tiling patterns, Type 3 glyph procedures and
soft masks, however they are nested or shared. This is the way to
find every font, image or colour space a document uses. Each
{class}pikepdf.ContentScope is reported once for the document;
pages= selects pages and kinds= selects what is reported.
- Added {meth}pikepdf.Page.get_resources, which returns the
resources of a page or form XObject for reading. Unlike
{attr}pikepdf.Page.resources, it finds resources inherited from
the page tree, does not create an empty dictionary when there are
none, and returns None instead of raising when /Resources is
malformed.
- Fixed comparing two objects with == taking exponential time when
the objects being compared share children, such as the same file
opened twice. Each pair of objects is now compared once.
- Fixed {meth}pikepdf.Pdf.add_pages_from hanging on a page with an
action whose /Next actions are shared or form a loop.
- Fixed {meth}pikepdf.Pdf.open_outline reading only the first item
at each level of an outline whose items are direct objects. Such
items are now made indirect when the outline is saved, as the PDF
specification requires.
- Reading a stream that will not decode now raises
{exc}~pikepdf.exceptions.DataDecodingError with the reason,
whether the stream's data was read from a file or set from
memory. Previously a stream read from a file raised a
{exc}~pikepdf.exceptions.PdfError that said only "read_bytes
called on unfilterable stream", and the reason was available only
from {meth}pikepdf.Pdf.get_warnings. DataDecodingError is a
PdfError, so existing handlers are unaffected.
- An exception raised by a JBIG2 decoder now reaches the caller of
{meth}pikepdf.PdfImage.as_pil_image,
{meth}pikepdf.PdfImage.extract_to and
{meth}pikepdf.PdfImage.read_bytes unchanged, with its own type,
message and traceback. Previously, for an image read from a file,
it was replaced by a generic DataDecodingError or PdfError.
- Added {exc}~pikepdf.exceptions.QpdfRuntimeError, raised for
errors from qpdf that pikepdf has no more specific exception for.
These were previously raised as a bare RuntimeError, which except
pikepdf.PikepdfError did not catch. The new exception derives
from both {exc}~pikepdf.exceptions.PikepdfError and RuntimeError,
so handlers written for RuntimeError still work.
- The empty name / is now supported. The PDF 1.7 and 2.0
specifications define a lone slash as a valid name made of zero
characters, but pikepdf.Name('/') raised ValueError, and
dictionaries refused / as a key. This broke
{meth}pikepdf.Pdf.add_pages_from on files with an empty-named
destination such as /Dests << / 3 0 R >>. Such names can now be
created, used as dictionary keys, and migrated during page
copying. bool(Name('/')) is False, like an empty
{class}pikepdf.String. Name(''), which lacks the leading slash,
is still rejected. PDF/A does not forbid empty names, and the
PDF/A validator accepts them.
- AcroFormField.get_inheritable_field_value_as_name() now returns a
{class}pikepdf.Name, as documented, instead of a str. When the
value is missing or not a name, it returns the empty name
Name('/'), which is falsy, instead of ''. Comparisons such as ==
'/Tx' are unaffected.
- Fixed an out-of-bounds read when opening a PDF from a Python file
object whose readinto() reports more bytes than were requested.
This now raises ValueError, as writing to such a stream already
did. Non-blocking streams, whose readinto() returns None, now
raise ValueError instead of hanging.
- Fixed building from source on PyPy, which failed to compile since
v10.0. PyPy now reads Python file objects through readinto(),
like CPython, instead of copying the result of read().
- {func}pikepdf.open reads directly from the file descriptor when
given a filename, instead of calling the seek() and readinto()
methods of a Python file object for every read. Opening and
reading a large file with many objects is about four to five
times faster, matching the speed of memory mapping
(access_mode=AccessMode.mmap). Streams passed to
{func}pikepdf.open, including plain file objects, are read
through their methods as before.
- Documented {class}pikepdf.TokenFilter with worked examples that
shorten numbers and convert RGB colors to grayscale, and
explained when to use a token filter instead of
{func}pikepdf.parse_content_stream. The API reference no longer
says that the parser should not be used to edit content streams.
The TokenFilter.handle_token documentation now says correctly
that exceptions it raises propagate to the caller.
Extend RDEPENDS with the missing runtime dependencies
python3-fonttools and python3-jsonschema which are required
to import pikepdf.pdfa.
Install pdfa_differential.py to pass the tests from
test_pdfa_differential.py. Fixes:
E ModuleNotFoundError: No module named 'pdfa_differential'
This work was sponsored by GOVCERT.LU.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||
|
|
ae0db48cac |
python3-pikepdf: Upgrade 10.11.0 -> 10.13.0.post1
Upgrade to release 10.13.0.post1: - Behavior change: pikepdf.DataDecodingError now derives from pikepdf.PdfError. A stream that will not decode is a defect in the document, and the same call that raises it - Object.read_bytes() - already raised PdfError for other kinds of damage, so except PdfError was a handler that looked correct, passed on healthy files, and let a traceback escape on damaged ones. Code catching DataDecodingError by name is unaffected. Code that orders except PdfError before except DataDecodingError will now take the first branch; if the distinction matters, reverse the order. - Behavior change: pikepdf.PdfParsingError now derives from pikepdf.PdfError, for the same reason. - pikepdf.PasswordError remains a sibling of PdfError, not a subclass. A wrong password does not mean the document is defective, and handlers that report the two separately depend on except PdfError not catching it. - pikepdf.NotExtractableError is now exported. It was already the base class of the exported HifiPrintImageNotTranscodableError but could not be caught by name. - Fixed the exceptions documentation, which referenced a nonexistent FormCopyWarning (the class is PageCopyWarning) and omitted ReferenceCycleError, PageCopyWarning and NotExtractableError. - XMP assigns a type to every standard property, and software that reads XMP discards a property whose type is wrong - Ghostscript strips these silently, and PDF/A validators reject them. pikepdf used to choose the RDF container from the Python type of the value it was handed, so meta['dc:subject'] = ['a', 'b'] wrote an rdf:Seq where the specification requires an rdf:Bag, and meta['dc:creator'] = 'Author' wrote a bare string where an rdf:Seq belongs. pikepdf now knows the type of the properties in the standard schemas and converts values to it. This work was sponsored by GOVCERT.LU. Signed-off-by: Leon Anavi <leon.anavi@konsulko.com> Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com> |
||
|
|
d8b0db4279 |
python3-pikepdf: Upgrade 10.5.1 -> 10.9.1
Upgrade to release 10.9.1:
- Fixed a crash (SIGABRT via std::terminate) that could occur when
a file-backed {class}pikepdf.Pdf was deallocated while a Python
exception was already propagating -- for example when
pikepdf.open(filename) appears as a transient element of a
list/tuple literal whose later element raises. Opening from a
filename closes the file in the input source destructor, which
calls back into Python; with an exception already in flight that
call raised an error that escaped the destructor. The in-flight
exception is now preserved and propagates normally. Added a guard
for a likely non-reproducible related case with DecimalPrecision.
This work was sponsored by GOVCERT.LU.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
|