File pikepdf.changes of Package python-pikepdf

v8.6.0

    Implemented Page.artbox and Page.bleedbox to access these page dimension boxes.

v8.5.3

    Fixed exception on certain PdfImage.__repr__ when the image's mode was invalid.
    Fixed some minor issues that caused code coverage to miss some covered lines.
    Removed some unused code.

v8.5.2

    Rebuilt wheels with libqpdf 11.6.3, which solves a potential data loss issue, albeit in rare circumstances. See QPDF issue #1050.
    Fixed unclear return values of pikepdf._core.set/get* functions. The set functions now return the current value.
    Fixed minor typing issues.

v8.5.1

    Added building of Python 3.12 aarch64 images.
    Added building of musllinux_1_2 aarch64 images.
    Tweaked exception handler of atomic_overwrite.

v8.5.0

    We now require Pillow 10.0.1, due a serious security vulnerability in all earlier versions of that dependency. The vulnerability concerns WebP images, which are likely not involved in PDF processing, but we have updated the dependency anyway as a precaution. As a consequence, we no longer build binary wheels for PyPy 3.8. CPython 3.8 is still supported on all platforms.
    The embedded files/attachments API now supports describing the relationship of the attached file (AFRelationship).

v8.4.1

    Fixed an issue with a monochrome that decoded with colors inverted.

v8.4.0

    Added support for musllinux_1_2 (Alpine Linux 3.16) on x64.

v8.3.2

    Added _core.pyi typing hints, which were missing from wheels.

v8.3.1

    Fixed saving file opened from BytesIO object on Windows.
-------------------------------------------------------------------
Wed Aug  9 11:34:34 UTC 2023 - stefan wannemacher <swannema@posteo.de>


v8.3.0

    Mark Python 3.12 as supported and release wheels for it.


Fri Aug  4 12:35:01 UTC 2023 - stefan wannemacher <swannema@posteo.de>



-------------------------------------------------------------------
Fri Aug  4 12:33:31 UTC 2023 - stefan wannemacher <swannema@posteo.de>
v8.2.3
build requirements changed
- 

v8.2.3

    Added a build test for Python 3.12 pre-release versions.
    Marked a test as xfail that currently fails on Python 3.12.

v8.2.2

    Added docs/ directory back to source distribution. :issue:`503`

v8.2.1

    Fixed a build issue where pikepdf would install its C++ source files into the site-packages directory.

v8.2.0

    Removed uses of deprecated function datetime.utcnow(). :issue:`499`
    Adjusted timeline of potentially flaky hypothesis test.
    Various documentation fixes. Thanks @m-holger.
    PyPy 3.10 is now supported on some platforms.
    PyPy 3.8 support will be dropped in the next major release.

v8.1.1

    Fixed a Unicode test that randomly fails on Windows.

v8.1.0

    Not released due to build failure.
    Fixed sdist, which was mysteriously missing some files that were previously included. :issue:`490`
    Some documentation and README updates to improve visibility of release notes. :issue:`488`
    Fixed issue where an output file could be corrupted if the process was interrupted while writing. :issue:`462`

v8.0.0
    -master branch renamed to main.
    -QPDF 11.5.0 is now required.
    -Some other Python dependencies have been updated.
    -Dropped setuptools-scm in favor of a manually set version number and script to update it. This change was necessary to support delegating part of the build to Cirrus CI.
    -Adjusted stream preview (with __repr__) so it does not attempt to decompress very long streams.
    -Fixed error when attempting to convert XMP metadata to DocumentInfo when the author was omitted.
    -Added a method to add items to the document table of contents.
    -Previously, we built all Apple Silicon (aarch64) wheels as a manual step, causing errors and delays in their release compared to other wheels. We now build them automatically on Cirrus CI.
    -Changed to building manylinux-aarch64 wheels on Cirrus CI.
    -Since Pillow (Python imaging library), a major dependency, has dropped support for 32-bit wheels on Windows and Linux, we have done the same. You can still build 32-bit versions from source.
    -Some documentations changes and improvements. Thanks @m-holger.

v8.0.0rc4.dev0
--------------------------------------------------------------------
v8.0.0rc3
---------------------------------------------------------------------
v8.0.0rc2
---------------------------------------------------------------------
v7.3.0 (in development)
=======================

- master branch renamed to main.
- Adjusted stream preview so it does not attempt to decompress very long streams.
- Fixed error when attempting to convert XMP metadata to DocumentInfo when the
  author was omitted.
- Added a method to add items to the document table of contents.
- Improved the wheel building process.

Rebuild
-------------------------------------------------------------------
Thu Apr 13 12:57:32 UTC 2023 - stefan wannemacher <swannema@posteo.de>


v7.2.0

    Improved Object.repr() to avoid printing the entire contents of large object trees such as those in PDFs with structural element trees.
    Fixed typing of NumberTree.
    Improved matrix documentation, interoperability with numpy, and added matrix inverse.
    Documentation improvements.

-------------------------------------------------------------------
Sun Mar 26 08:40:26 UTC 2023 - stefan wannemacher <swannema@posteo.de>


v7.1.2

    Fixed possible segfault if a PDF is opened and accessed without being assigned to a variable.

-------------------------------------------------------------------
Wed Feb 22 19:32:06 UTC 2023 - stefan wannemacher <swannema@posteo.de>


v7.1.1

    Add workaround to fix release issue on manylinux-aarch64.
    Improved documentation of Pdf.check().

v7.1.0

New features

    PdfMetadata.register_xml_namespace allows registering new XML namespaces for PDFs with more complex XMP metadata. :issue:`436`
    The list of XMP namespaces registered by default was expanded to include several more common namespaces. :issue:`436`
    Fixed issues creating TIFF images with CCITT Group 3. :issue:`437,401`
    Updated README. :issue:`432`
    Note: due to what is believed to be a change in a third party dependency, the manylinux-aarch64 image for this release failed to build. As such, this particular wheel is not available.

-------------------------------------------------------------------
Wed Feb  8 18:49:20 UTC 2023 - stefan wannemacher <swannema@posteo.de>
v7.0.0

pikepdf 7 introduces a subtle change to how it holds objects from the libqpdf C++ library: dependent objects no longer keep their parent alive.

The main consequence is that constructs such as the following

def make_obj_and_return():
    pdf = pikepdf.new()
    obj = pdf.make_stream(b'some data')
    return obj

...
obj = make_obj_and_return()
obj.read_bytes()

will not work as previously - obj.read_bytes() will return a DeletedObjectError, an exception that now occurs when accessing an object that was garbage collected.

In the vast majority of cases, no changes are needed. In most cases, a with block surrounding access to an opened pikepdf will be sufficient to ensure.

The benefits to pikepdf from this change are considerable. Reference counting is simplified and some possible memory leaks or circular references are avoided. In many cases, where pikepdf previously used a C++ shared_ptr, it can now used a lighterweight unique_ptr.

Breaking changes

    Support for Python 3.7 is dropped.
    Child objects no longer keep their source Pdf alive, as outlined above.
    libqpdf 11.2.0 or newer is required.
    The C++ binding layer has been renamed from pikepdf._qpdf to pikepdf._core. This has always been a private API but we are making note of the change anyway. For the moment, a Python module named _qpdf still exists and imports all of the modules in _core. This compatibility shim will be removed in the next major release.

New features

    Added Page.form_xobjects, which returns all Form XObjects that are used in a page.
    Accessing Page.resources will now create an empty /Resources dictionary is none previously existed.

Fixes

    Fixed an issue with extracting images that were compressed with multiple compression filters that also had custom decode parameters.

Packaging changes

    setuptools >= 61 is now required, since we use pyproject.toml and have discarded setup.cfg.
    We now include manylinux's libjpeg-turbo instead of compiling libjpeg.
-------------------------------------------------------------------
Thu Jan 26 05:02:10 UTC 2023 - stefan wannemacher <swannema@posteo.de>
v6.2.9
- Redo v6.2.8 to avoid confusion around v6.2.8 and its post releases. The release of v6.2.8 was botched by unexpected
failures third party packages and hitting the 10 GB storage limit on PyPI.
-------------------------------------------------------------------
Tue Jan 10 17:54:18 UTC 2023 - stefan wannemacher <swannema@posteo.de>
v6.2.8
    Rebuild binary wheels to improve support for Windows 32-bit.
    Drop PyPy3.7 from wheel builds, since dependencies (lxml, Pillow) no longer provide it.
-------------------------------------------------------------------
Sat Jan  7 09:25:09 UTC 2023 - stefan wannemacher <swannema@posteo.de>
v6.2.7
    Rebuild binary wheels to improve support for Windows 32-bit.
-------------------------------------------------------------------
Sat Dec 17 21:07:54 UTC 2022 - stefan wannemacher <swannema@posteo.de>
v6.2.6

    Rebuild binary wheels for certain platforms they were blocked from release by lxml not releasing compatible wheels.
-------------------------------------------------------------------
Sun Dec  4 14:38:21 UTC 2022 - stefan wannemacher <swannema@posteo.de>
v6.2.5
    Rebuild binary wheels using qpdf 11.2.0.
-------------------------------------------------------------------
Mon Nov 14 08:46:08 UTC 2022 - stefan wannemacher <swannema@posteo.de>
-------------------------------------------------------------------
v6.2.4
    Removed a debug message during mmap.
-------------------------------------------------------------------
Sat Nov 12 09:02:31 UTC 2022 - stefan wannemacher <swannema@posteo.de>
-------------------------------------------------------------------
v6.2.3

    Fixed errors when using AccessMode.mmap. Thanks @zachgoulet.

-------------------------------------------------------------------
Tue Nov  8 16:55:06 UTC 2022 - stefan wannemacher <swannema@posteo.de>
-------------------------------------------------------------------- 
v6.2.2

    Fixed noisy log message.
    Made some flakey tests less flakey.
    Fixed deprecated information in setup.cfg. Thanks @mgorny.

-v6.2.1

    Rebuild binary wheels using zlib 1.2.13. Source build unchanged.

- Update to version 6.2.0:
  * Add new keyword argument Pdf.save(..., deterministic_id=True) for saving bit-for-bit reproducible PDFs. Thanks @josch for PR.

- Update to version 6.1.0:
  * Rebuild wheels with qpdf 11.1.1. No new functionality.

- Update to version 6.0.2:
  * Fixed large increase in binary wheel file size for manylinux wheels.
  * Provide macOS and Linux wheels for Python 3.11.

- Update to version 6.0.1:
  * Use qpdf 11.1.0
v6.0.0

pikepdf 6.0.0 was released to align with backward incompatible changes in qpdf 11.

Remove deprecated APIs. Mostly these were public APIs that had no business being public.

Several functions in pikepdf.jbig2
Some helper functions in pikepdf.models.image
The property PdfImage.is_inline. (Use isinstance PdfInlineImage instead.)
Attempting to copy pages using the .copy_foreign method now raises an exception. Use The Pdf.pages interface to copy pages.


v5.6.1




    Made treatment of CCITT image photometry ignore BlackIs1, since this seems more consistent with other programs.

v5.6.0

    Improved support for extracting the contents of inline images.
    Marked some "always should have been private" functions as deprecated with removal planned for v6, mainly in pikepdf.models.image.
    Fixed all Python documentation style inconsistencies.

v5.5.0

    Fixed undefined behavior on creating NameTree on direct object. Thanks @wangley.
    Fixed sdist with coverage build.
    Added support for specifying QPDF's library build directory, for compatibility with QPDF's transition to cmake.
    QPDF_* environment variables will modify build paths even when CFLAGS is defined.
    Fixed rare case where GIL was not held while discarding a certain exception.
    Now using cibuildwheel 2.9.0.
    Many typo fixes. Thanks @PabloAlexis611.

v5.4.2

    Fixed Pages.__eq__ not returning NotImplemented when it ought to.
    Fixed possible problems with NameTree and NumberTree.__eq__ operators.
    Changed to SPDX license headers throughout.

v5.4.1

    Chores. Fix ReadTheDocs build, update versions, fix a test warning, improve coverage, modernize type annotations.

v5.4.0

    New feature: pikepdf.Job bindings to QPDFJob API.
    New feature: pikepdf.NumberTree to support manipulation of number trees, mainly for applying custom page labels.
    Many improvements to pikepdf.NameTree including the ability to instantiate a new name tree.
    Several memory leaks were fixed.
    Rebuilt against pybind11 2.10.0.

v5.3.2

    Build system requires changed to setuptools-scm 7.0.5, which includes a fix to an issue where pikepdf source distribution reported a version of "0.0" when installed.


v5.3.1

    Fixed issue with parsing inline images, causing loss of data after inline images were encountered in a content stream. The issue only affects content streams parsed with parse_content_stream; saved PDFs were not affected. :issue:`299`
    Build system requires changed to setuptools-scm 7.0.3, and setuptools-scm-git-archive is now longer required.

v5.3.0

    Binary wheels for Linux aarch64 are now being rolled automatically. tada
    Refactor JBIG2 handling to make JBIG2 decoders more testable and pluggable.
    Fixed some typing issues around ObjectHelper.
    Exposed some pikepdf settings that were attached to the private _qpdf module in a new pikepdf.settings module.

v5.2.0

    Avoid a few versions of setuptools_scm that were found to cause build issues. :issue:`359`
    Improved an unhelpful error message when attemping to save a file with invalid encryption settings. :issue:`341`
    Added a workaround for XMP metadata blocks that are missing the expected namespace tag. :issue:`349`
    Minor improvements to code coverage, type checking, and removed some deprecated private methods.

v5.1.5

    Fixed removal of necessary package packaging. Needed for import.
v5.1.4

    Reorganized release notes so they are better presented in Sphinx documentation.
    Remove all upper bound version constraints.
    Replace documentation package sphinx-panels with sphinx-design. Downstream maintainers will need to adjust this in documentation.
    Removed use of deprecated pkg_resources and replaced with importlib (and, where necessary for backward compatibility, importlib_metadata).
    Fixed some broken links in the documentation and READMEs.

v5.1.3

    Fixed issue with saving files that contained JBIG2 images with null DecodeParms. :issue:`317`
    Use cibuildwheel 2.4.0 and update settings to publish PyPy 3.8 binary wheels for manylinux platforms.

v5.1.2

    Fixed test suite failures with Pillow 9.1.0. :issue:`328`

v5.1.1

    Fixes to pyproject.toml to support PEP-621 changes.

v5.1.0

    Rebuild against QPDF 10.6.3.
    Improvements to Makefile for Apple Silicon wheels.

v5.0.1

    Fix issue where Pdf.check() would report a failure if JBIG2 decoder was not installed and the PDF contains JBIG2 content.


v5.0.0

    Some errors and inconsistencies are in the "pdfdoc" encoding provided by pikepdf have been corrected, in conjunction with fixes in libqpdf.
    libqpdf 10.6.2 is required.
    Previously, looking up the number of a page, given the page, required a linear search of all pages. We now use a newer QPDF API that allows quicker lookups.

v4.5.0

    Fixed gcc linker error with linking to a source-compiled version of qpdf. Thanks @jerkenbilt.
    Fixed dead/obsolete link to old QPDF manual. Thanks @m-holger.
    Rebuild binary wheels against qpdf 10.5.0. Note 10.6.0 has been released but requires further changes so does not work yet.
    Removed some workarounds to support now-unsupported versions of pybind11.
    Adjusted hypothesis test settings so it does not randomly fail on PyPy.
    Mention vector vs raster images in documentation.
    JBIG2 decoding is now more tightly integrated. In particular, we can now decode more types of JBIG2 image and they can be decoded using either the object or image interface.
    Switch to tomli for TOML parsing.
    Refactor image tests to use hypothesis more effectively and use more random issues, fixing many errors along the way.

v4.4.1

    Fixed two instances of a Python object being copied without the GIL held. May have caused some instability. Thanks @rwgk.

v4.4.0

    Further improvements to handling of 2- and 4-bit per component images. Major refactoring of relevant code and improved testing.
 
v4.3.1

    Mark pybind11 2.9 as supported. Thanks @QuLogic.

v4.3.0

    Improved support for images with bits per component set to values between 2 and 7 inclusive.
    Additional types of runtime errors produced by libqpdf are now resolved to DataDecodingError for improved error message clarity.
    Improved typing and documentation for several modules.
    Replaced all internal uses of deprecated standard library module distutils with the third party packaging library. This was all for version number checking.
    Maintainers: python3-packaging is now required for installation.

v4.2.0
  Fixed incorrect default rectangle handling in ``Page.add_overlay`` and
   ``Page.add_underlay``. Thanks @sjahu. :issue:`277`.
  Fixed ``Page.add_overlay`` not scaling to larger target sizes automatically.
   Thanks @bordaigorl. :issue:`276`.
  ``pikepdf._qpdf.ObjectHelper`` is now registered as a base class from which other
   helper classes are derived such as ``pikepdf.Page``.
  Prevented implicit conversion of ObjectHelper to Object through their inclusion
   as for example, parameters to a ``pikepdf.Array``. This functionality was never
   intended, and was a side effect of certain ObjectHelper subclasses defining an
   iterable interface that made their conversion possible. :issue:`282`
v4.1.0

    Declared support for pybind11 2.8.x.
    Wheels are now built against libqpdf 10.4.0.
    Wheels are now built for macOS Apple Silicon and Python 3.10.

v4.0.2
    Fixed equality and copy operators for pikepdf.Page. :issue:`271`
    Fixed equality test on pikepdf.Stream objects - objects that are not identical but have equal data now compare as equal.
    Deprecated the use of copy_foreign for copying pikepdf.Page.

v4.0.1

    Fixed documentation build reproducible. (Thanks to Chris Lamb and Sean Whitton.)
    Fixed issue where file attachments not located in the current working directory would be created with a directory name.
    Removed some references to Python 3.6.
    Added some fixes to typing hints from @cherryblossom000.

v4.0.0
    Python 3.10 is supported.
    Dropped support for Python 3.6, since it is reaching end of life soon. We will backport critical fixes to pikepdf 3.x until Python 3.6 reaches end of life in December 2021.
    We now require C++17 and generate wheels for manylinux2014 Linux targets. We had to drop support for manylinux2010, our previous target, since some of our dependencies like Pillow are no longer supporting manylinux2010.

v3.2.0

    Fixed support for outline items that have PDF 1.1-style named destinations. :issue:`258, 261`
    We now issue a warning if an unnecessary password was provided when opening an unencrypted PDF.

v3.1.1

    Fixed errors that occurred on import pikepdf for an extension module built with pybind11 2.8.0.

v3.1.0

    Extraction of common inline image file formats is now supported.
    Some refactoring and documentation improvements.

v3.0.0


    libqpdf 10.3.1 is now required and other requirements were adjusted.
    pybind11 2.7.1 is now required.
    Improved page API. Pdf.pages now returns Page instead of page object dictionaries, so it is no longer necessary to wrap page objects as in the previous idiom page = Page(pdf.pages[0]). In most cases, if you use the Dictionary object API on a page, it will automatically do the right thing to the underlying dictionary.
    Improved content stream API. parse_content_stream now returns a list of :class:`pikepdf.ContentStreamInstruction` or :class:`pikepdf.ContentStreamInlineImage`. These are "duck type"-compatible with the previous data structure but may affect code that strongly depended on the return types. unparse_content_stream still accepts the same inputs.
    TokenType.name and ObjectType.name were renamed to TokenType.name_ and ObjectType.name_, respectively. Unfortunately, Python's Enum class (of which these are both a subclass) uses the .name attribute in a special way that interfered.
    Deprecated or private functions were removed: - Object.page_contents_* (use Page.contents_*) - Object.images (use Page.images) - Page._attach (use the new attachment API) - Stream(obj=) (deprecated obj parameter removed) - Pdf.root (use Pdf.Root) - Pdf._process (use Pdf.open(BytesIO(...)) instead)
    :meth:`pikepdf.Page.calc_form_xobject_placement` previously returned str when it should have returned bytes. It now returns the correct type.
    :func:`pikepdf.open` and :func:`pikepdf.save`, and their counterparts in :class:`pikepdf.Pdf`, now expect keyword arguments for all expect the first parameter.
    Some other functions have stricter typing, required keyword arguments, etc., for clarity.
    If a calculating the repr() of a page, we now describe a reference to that page rather than printing the page's representation. This makes the output of repr(obj) more useful when examining data structures that reference many pages, such as /Outlines.
    Build scripts and wheel building updated.
    We now internally use a different API call to close a PDF in libqpdf. This may change the behavior of attempts to manipulate a PDF after it has been closed. In any case, accessing a closed file was never supported.
    Pillow 8.3.2 is temporarily blacklisted since this version was unintentionally released without support for the manylinux2010 platform.

New functionality

    Added :class:`pikepdf.NameTree`. We now bind to QPDF's Name Tree API, for manipulating these complex and important data structures.
    We now support adding and removing PDF attachments. :issue:`209`
    Improved support for PDF images that use special printer colorspaces such as DeviceN and Separation, and support extracting more types of images. :issue:`237`
    Improved error message when Pdf.save() is called on PDFs without a known source file.
    Many documentation fixes to StreamParser, return types, PdfImage.
    x in pikepdf.Array() is now supported; previously this construct raised a TypeError. :issue:`232`
    It is now possible to test our cibuildwheel configuration on a local machine.

Fixes

    repr(pikepdf.Stream(...)) now returns syntax matching what the constructor expects.
    Fixed certain wrong exception types that occurred when attempting to extract special printer colorspace images.
    Lots of typing fixes.

v2.16.1

    unparse_content_stream is now less strict about whether elements are lists or tuples, matching its v2.15.1 behavior.
v2.16.0

    Performance improvement for unparse_content_stream.
    Fixed some linter warnings.
    Tightened pybind11 dependencies so we don't accept new minor revisions automatically.
    Updated docs on FreeBSD.

v2.15.1

    Fixed compatibility with pybind11 2.7.0 - some tests fail when previous versions of pikepdf are compiled with that version.
    Fixed a coverage code exclusion.
    Added a note missing "version added" comment to documentation.
    Fixed license string not appearing in metadata - thanks @mara004.

v2.15.0

    Improved our pdfdoc codec to raise UnicodeEncodeError identifying the problem, instead of a less specific ValueError. Thanks to @regebro. :issue:`218`
    We now implement stream reader/writer and incremental encoder/decoder for our pdfdoc codec, making it useful in more places.
    Fixed an issue with extracting JBIG2 images on Windows, due to Windows temporary file behavior. Thanks to @kraptor. :issue:`219`

v2.14.2

    Fixed a syntax error in type hints.

v2.14.1

    Fixed the ReadTheDocs documentation build, which had broken after the setup.cfg changes in v2.13.0.
    Amended the Makefile with steps for building Apple Silicon wheels.
    No manual Apple Silicon release since there are no functional changes.

v2.14.0

    Implemented a major new feature: overlays (watermarks, page composition). This makes it easier to solve many common tasks that involve copying content from pages to other pages, applying watermarks, headers/footers, etc. :issue:`42`
    Added :meth:`pikepdf.Object.with_same_owner_as` to simplify creating objects that have the same owner as another object.
    Many improvements to type hints for classes implemented in C++. :issue:`213, 214`

v2.13.0

    Build system modernized to use setup.cfg instead of setup.py as much as reasonable.
    The requirements/*.txt files are now deprecated. Instead use pip install pikepdf[test,docs] to install optional extras.
    Extended test coverage for a few tests that affect global state, using pytest-forked to isolate them.
    All C++ autoformatted with clang-format.
    We now imbue all C++ stringstreams with the C locale, to avoid formatting output incorrectly if another Python extension written in C++ happens to change the global std::locale.

v2.12.2

    Rebuild wheels against libqpdf 10.3.2.
    Enabled building Linux PyPy x86_64 wheels.
    Fixed a minor issue where the inline images would have their abbreviations expanded when unparsed. While unlikely to be problematic, inline images usually use abbreviations in their metadata and should be kept that way.
    Added notes to documentation about loading PDFs through Python file streams and cases that can lead to poor performance.

v2.12.1

    Fixed documentation typo and updated precommit settings.
    Ongoing improvements to code coverage: now related to image handling.

v2.12.0

    Complete bindings for pikepdf.Annotation (useful for interpreting PDF form widgets, comments, etc.)
    Ongoing improvements to code coverage: minor bug fixes, unreachable code removal, more coverage.

v2.11.4

    Fix :issue:`160`, 'Tried to call pure virtual function "TokenFilter::handle_token"'; this was a Python/C++ reference counting problem.

v2.11.3

    Check for versions of jbig2dec that are too old to be supported (lacking the necessary command line arguments to extract an image from a PDF).
    Fix setup.py typo: cmd_class changed to cmdclass.

v2.11.2

    Added missing documentation for Pdf.is_encrypted.
    Added some documentation annotations about when certain APIs were added or changed, going back to 2.0.

v2.11.1

    Fixed an issue with Object.emplace() not retaining the original object's /Parent.
    Code coverage improvements.

v2.11.0

    Add new functions: Pdf.generate_appearance_streams and Pdf.flatten_annotations, to support common work with PDF forms.
    Fixed an issue with pip install on platforms that lack proper multiprocessing support.
    Additional documentation improvements from @m-holger - thanks again!

v2.10.0

    Fixed a XML External Entity (XXE) processing vulnerability in PDF XMP metadata parsing. (Reported by Eric Therond of Sonarsource.) All users should upgrade to get this security update. CVE-2021-29421 was assigned to this issue.
    Bind new functions to check, when a PDF is opened, whether the password used to open the PDF matched the owner password, user password, or both: Pdf.user_password_matched and Pdf.owner_password_matched.

v2.9.2

    Further expansion of test coverage of several functions, and minor bug fixes along the way.
    Improve parameter validation for some outline-related functions.
    Fixed overloaded __repr__ functions in _methods.py not being applied.
    Some proofreading of the documentation by @m-holger - thanks!

v2.9.1

    Further expansion of test coverage.
    Fixed function signatures for _repr_mimebundle_ functions to match IPython's spec.
    Fixed some error messages regarding attempts to do strange things with pikepdf.Name, like pikepdf.Name.Foo = 3.
    Eliminated code to handle an exception that provably does not occur.
    Test suite is now better at closing open file handles.
    Ensure that any demo code in README.md is valid and works.
    Embedded QPDF version in pikepdf Python wheels increased to 10.3.1.

v2.9.0

    We now issue a warning when attempting to use pikepdf.open on a bytes object where it could be either a PDF loaded into memory or a filename.
    pikepdf.Page.label will now return the "ordinary" page number if no special rules for pages are defined.
    Many improvements to tests and test coverage. Code coverage for both Python and C++ is now automatically published to codecov.io; previously coverage was only checked on the developer's machine.
    An obsolete private function Object._roundtrip was removed.

v2.8.0

    Fixed an issue with extracting data from images that had their DecodeParms structured as a list of dictionaries.
    Fixed an issue where a dangling stream object is created if we fail to create the requested stream dictionary.
    Calling Dictionary() and Array() on objects which are already of that type returns a shallow copy rather than throwing an exception, in keeping with Python semantics.
    v2.8.0.post1: The CI system was changed from Azure Pipelines to GitHub Actions, a transition we made to support generating binary wheels for more platforms. This post-release was the first release made with GitHub Actions. It ought to be functionally identical, but could different in some subtle way, for example because parts of it may have been built with different compiler versions.
    v2.8.0.post2: The previous .post1 release caused binary wheels for Linux to grow much larger, causing problems for AWS Lambda who require small file sizes. This change strips the binaries of debug symbols, also mitigates a rare PyPy test failure.
    Unfortunately, it appears that the transition from Azure Pipelines to GitHub Actions broke compatibility with macOS 10.13 and older. macOS 10.13 and older are considered end of life by Apple. No version of pikepdf v2.x ever promised support for macOS 10.13 – 10.14+ has always been an explicit requirement. It just so happens that for some time, pikepdf did actually work on 10.13.

v2.7.0

    Added an option to tell Pdf.save to recompress flate streams, and a global option to set the flate compression level. This option can be use to force the recompression of flate streams if they are not well compressed.
    Fixed "TypeError: only pages can be inserted" when attempting to an insert an unowned page using QPDF 10.2.0 or later.

v2.6.0

    Rebuild wheels against QPDF 10.2.0.

v2.5.2

    Fixed support for PyPy 3.7 on macOS.

v2.5.1

    Rebuild wheels against recently released pybind11 v2.6.2.
    Improved support for building against PyPy 3.6/7.3.1.

v2.5.0

    PyPy3 is now supported.
    Improved test coverage for some metadata issues.

v2.4.0

    The DocumentInfo dictionary can now be deleted with del pdf.docinfo.
    Fixed issues with updating the dc:creator XMP metadata entry.
    Improved error messages on attempting to encode strings containing Unicode surrogates.
    Fixed a rare random test failure related to strings containing Unicode surrogates.
openSUSE Build Service is sponsored by