From a656ee05532c27427510e93aa3a83aaf51549b45f92631b727117a03e386dbf7 Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Sun, 28 Dec 2025 19:32:58 +0000 Subject: [PATCH] - update to 10.1.0: * Added {class}`pikepdf.NamePath` for ergonomic access to deeply nested PDF structures. NamePath provides a single-operation traversal with helpful error messages showing exactly where traversal failed. * Added explicit scalar types: {class}`pikepdf.Integer`, {class}`pikepdf.Boolean`, and {class}`pikepdf.Real`. When explicit conversion mode is enabled, these types are returned instead of Python native types (`int`, `bool`, `Decimal`), enabling better type safety and static type checking. * Added {func}`pikepdf.set_object_conversion_mode` and {func}`pikepdf.get_object_conversion_mode` to control conversion behavior globally. * Added {func}`pikepdf.explicit_conversion` context manager for temporarily enabling explicit conversion mode. * Added safe accessor methods to {class}`pikepdf.Object`: {meth}`~pikepdf.Object.as_int`, {meth}`~pikepdf.Object.as_bool`, {meth}`~pikepdf.Object.as_float`, and {meth}`~pikepdf.Object.as_decimal` with optional default parameters for type-safe access to scalar values. * `pikepdf.Integer` and `pikepdf.Real` now support full arithmetic operations with both `int` and `float` operands, including true division (`/`). OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pikepdf?expand=0&rev=62 --- .gitattributes | 23 ++ .gitignore | 1 + pikepdf-10.0.2.tar.gz | 3 + pikepdf-10.1.0.tar.gz | 3 + pikepdf-9.11.0.tar.gz | 3 + pikepdf-9.4.2.tar.gz | 3 + python-pikepdf.changes | 701 +++++++++++++++++++++++++++++++++++++++++ python-pikepdf.spec | 88 ++++++ 8 files changed, 825 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 pikepdf-10.0.2.tar.gz create mode 100644 pikepdf-10.1.0.tar.gz create mode 100644 pikepdf-9.11.0.tar.gz create mode 100644 pikepdf-9.4.2.tar.gz create mode 100644 python-pikepdf.changes create mode 100644 python-pikepdf.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/pikepdf-10.0.2.tar.gz b/pikepdf-10.0.2.tar.gz new file mode 100644 index 0000000..11826c6 --- /dev/null +++ b/pikepdf-10.0.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c85a2526253e35575edb2e28cdc740d004be4b7c5fda954f0e721ee1c423a52 +size 4548116 diff --git a/pikepdf-10.1.0.tar.gz b/pikepdf-10.1.0.tar.gz new file mode 100644 index 0000000..08e2f75 --- /dev/null +++ b/pikepdf-10.1.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d75778283c354580a462d31bd4334f6ba92225e41ccd8bb949ec6e98a23d4eb2 +size 4566184 diff --git a/pikepdf-9.11.0.tar.gz b/pikepdf-9.11.0.tar.gz new file mode 100644 index 0000000..6078db0 --- /dev/null +++ b/pikepdf-9.11.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ad6bffba08849c21eee273ba0b6fcd4b6a9cff81bcbca6988f87a765ba62163 +size 4546289 diff --git a/pikepdf-9.4.2.tar.gz b/pikepdf-9.4.2.tar.gz new file mode 100644 index 0000000..432a96b --- /dev/null +++ b/pikepdf-9.4.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0108c063bc56dc2dbfc87f20533a728342a938f4c85e39773866b71255aa8388 +size 2914992 diff --git a/python-pikepdf.changes b/python-pikepdf.changes new file mode 100644 index 0000000..a456962 --- /dev/null +++ b/python-pikepdf.changes @@ -0,0 +1,701 @@ +------------------------------------------------------------------- +Sun Dec 28 19:30:51 UTC 2025 - Dirk Müller + +- update to 10.1.0: + * Added {class}`pikepdf.NamePath` for ergonomic access to deeply + nested PDF structures. NamePath provides a single-operation + traversal with helpful error messages showing exactly where + traversal failed. + * Added explicit scalar types: {class}`pikepdf.Integer`, + {class}`pikepdf.Boolean`, and {class}`pikepdf.Real`. When + explicit conversion mode is enabled, these types + are returned instead of Python native types (`int`, `bool`, + `Decimal`), enabling better type safety and static type checking. + * Added {func}`pikepdf.set_object_conversion_mode` and + {func}`pikepdf.get_object_conversion_mode` to control + conversion behavior globally. + * Added {func}`pikepdf.explicit_conversion` context manager for + temporarily enabling explicit conversion mode. + * Added safe accessor methods to + {class}`pikepdf.Object`: {meth}`~pikepdf.Object.as_int`, + {meth}`~pikepdf.Object.as_bool`, {meth}`~pikepdf.Object.as_float`, and + {meth}`~pikepdf.Object.as_decimal` with optional default parameters + for type-safe access to scalar values. + * `pikepdf.Integer` and `pikepdf.Real` now support full arithmetic + operations with both `int` and `float` operands, including true + division (`/`). + +------------------------------------------------------------------- +Sat Nov 15 12:53:32 UTC 2025 - ecsos + +- Update to 10.0.2 + - Fixed presentation of strings using unparse_content_stream - if + the stream can be represented using PdfDocEncoding, + it is rendered in that way for ease of reading. :issue:682 + - Reformatted C++ source. +- Changes from 10.0.1 + - Fixed issue with performing equality test on dictionaries with + cyclic subgraphs. :issue:677 +- Changes from 10.0.0 + Breaking changes for v10.x: + - Dropped Python 3.9 compatibility, since it is end of life. + Python 3.10 through 3.14 are supported. + - Dropped macOS 13 support, since it is end of life. + - Dropped macOS 14 Intel wheels, because GitHub doesn't provide a way + to build them - macOS 15 Intel works fine. + - Dropped deprecated method Pdf.check() (use .check_pdf_syntax()). + pikepdf now declares unstable "support" for freethreading, and + does not publish freethreading wheels. All tests seem to pass, + but that's because the existing tests don't try to create + race conditions. Must be compiled manually. + +------------------------------------------------------------------- +Tue Sep 30 06:48:05 UTC 2025 - Dirk Müller + +- update to 9.11.0: + - Upgraded to cibuildwheel 3.1.4. + - We now build wheels for the CPython 3.14 prerelease (but + without freethreading, since lxml does not release wheels with + freethreading). + - Now using uv for building. + - Fixed broken link in documentation. + - Migrated all remaining uses of "dumb" pointer holders to + ``py::smart_holder``. + - Updated contributing guidelines and build steps. + - Fixed type signature of AttachedFileSpec to clarify its usage. + - Fixed missing default /Decode for image masks. {issue}`664` + - Fixed a missing dependency for ReadTheDocs documentation + generation. + - Upgraded to pybind11 3.0, which is now required. Changed many + of our pointer holder types to use the py::smart_holder. + - ``Pdf.check()`` is now deprecated, in favor of ``Pdf.check_pdf_syntax()``. + - Use explicit page number substitution in mupdf to avoid + problems in how it names output files. {issue}`661` + - Upgraded to cibuildwheel 3.0.0. + - C++-20 compiler is now required for building pikepdf. + - Fixed a reference counting test on Python 3.14a. + - We no longer build PyPy wheels by default. + - If a folder named ``../qpdf`` is found, we automatically use + that as the companion qpdf when building. For developers this + means building works without setting environment variables. + Environment variables can still be set to redirect to specific + installation. + - Introduced a new {class}`DimensionedFont` to avoid breaking + changes in other code (mainly OCRmyPDF) that subclasses + {class}`Font`. Remove the new abstract methods from + {class}`Font. + - Added a significant new feature to support filling and + rendering PDF forms. Thanks @dmjohnsson23. See `pikepdf.form` + and `pikepdf.canvas`. + - Now building wheels against qpdf 12.2.0. + - We no longer build PyPy wheels on Windows, due to strange test + failures that appear there and nowhere else. + - Merged {pr}`639`, a branch containing support for calculating + the current transformation matrix at time of rendering. This is + a valuable building block for users wishing to determine when + and where images are drawn. + - Clarified need for setuptools 77.0.3 to build. {issue}`648` + - `pikepdf.Object` that are indirect objects now raise an + exception on attempts to hash them (add to dict-type + containers), since they are in fact potentially + mutable. For now, direct objects can still be hashed, but this + is likely to be discontinued. {issue}`647` + - Wheels are now built against qpdf 12.0.0, which should bring + performance improvements for most workloads. + - qpdf 11.9.0 is now the minimum build requirement. + - We no longer build PyPy wheels on macOS, due to poor supporting + infrastructure and unfixed issues. pikepdf will likely drop + PyPy in its next major release. + - `pikepdf._core._ObjectList` no longer reports its `repr()` + correctly on Windows. This issue appears to be a compiler bug + in MSVC++ and has no known resolution, but also very minor + impact. + - setuptools 77.0.3 is now required for building. + - Updates to tooling. + - Fixed an issue where temporary files could be left behind when + using allow_overwriting_input=True and a SIGINT is sent while + the file is being flushed to disk, or generally within a + specific timing window. + - Fixed an issue via OCRmyPDF by replacing an invalid Document + Info dictionary with a valid dictionary. + - Bump version to address sigstore build issues. + - Pillow dropped PyPy 3.9 so we're dropping it too. + - Created setter for Outline management to make manipulating outlines easier. + - pikepdf now sets XMP properties as subelements instead of + inline properties, in line with the XMP specification. + - pikepdf an issue with converting certain images to PIL + - Added a new `pikepdf.exceptions` module which organizes all + exceptions more conveniently. + - pikepdf now tries harder to extract corrupt images in a PDF + when they are found. + - Fixed an issue where an exception handler referred to an object + not in scope, causing another exception. + - Dropped a comment about an unsupported dependency. + +------------------------------------------------------------------- +Thu Nov 21 10:01:31 UTC 2024 - Dirk Müller + +- update to 9.4.2: + * Internal type assertion error messages from qpdf that previously + triggered a RuntimeError will now raise a PdfError. Generally + these errors only occur in corrupted files. + * When we are updating XMP in the processing of saving, errors + from updating XML are wrapped differently to clarify the + context in which the error occurs. + * Fixed a process abort in JBIG2 handling related to cleanup of + Python objects owned by C++ code. + * Fixed inconsistent behavior when setting metadata records to an + empty value. :issue:`622` + * Added missing Python 3.13 wheels for a few platforms that were + missing them, mainly ARM Linux, musllinux/Alpine, and Windows. + * Since Homebrew has ended support for macOS 12, macOS 13 is now + the minimum requirement for Intel macOS. + * Suppressed some spurious warnings during build tests. + * Integrated OSS Fuzz. + * Prevented generation of PDF date strings with invalid trailing + apostrophes, while still accepting them. + * Improved error message on parsing invalid date strings. + * Dropped support for Python 3.8 (end of life October 2024). + * Fixed some inconsistencies with the pikepdf.Rectangle class. + * Python 3.13 with free-threading added to test matrix. + * Removed wheel package as build requirement since modern packing + no longer needs it. + * Updated C++/Python exception translation to new pybind11 + 2.12.0+ protocol, fixing possible undefined behavior in + multithreaded applications. + * pybind11 2.12.0 is now required. + * qpdf 11.9.1 is now used to build wheels. + * Modernized copyright information to REUSE.toml specification. + * Added a new test file for a rare case, CCITT with EndOfLine=True. + * Fixed handling of CalRGB and CalGray images with palettes. + * Fixed a test suite failure when numpy 2.1 is installed. :issue:`603` + * Prevented use of setuptools 72+ since it seems to introduce build errors. + * Added a missing #include header. :issue:`600` + * Fixed an issue where small floating point values would be recorded in + scientific notation, contrary to the PDF specification. :issue:`598` + * Fixed some false positive warnings on Windows C++ compilers. + * Improved support for Python 3.13 pre-release. + * Fixed a potential resource leak if we opened a file to read it + as a PDF but it was not a valid PDF. + * When overwriting an existing PDF with ``Pdf.save()``, pikepdf + now attempts to retain the original file permissions and + ownership. + * Fixed missing return type for PageList.Extend. :issue:`592` + +------------------------------------------------------------------- +Thu May 2 08:23:18 UTC 2024 - Dirk Müller + +- update to 8.15.1: + * Reformat with ruff. + * Various updates to build procedures and wheel generation + +------------------------------------------------------------------- +Mon Apr 15 09:03:05 UTC 2024 - Dirk Müller + +- update to 8.15.0: + * Rebuild wheels with QPDF 11.9.0. + * Relaxed dependency requirements on lxml, now that that project + is publishing wheels for less common platforms again. + +------------------------------------------------------------------- +Thu Mar 28 10:43:33 UTC 2024 - Dirk Müller + +- update to 8.14.0: + * Added QPDF_FUTURE environment variable for compile time testing + of new QPDF features. + * Added new code to suppress console window from appearing on + Windows in some situations when decoding JBIG2. + * Updated GitHub Actions versions. + +------------------------------------------------------------------- +Sat Mar 16 10:00:23 UTC 2024 - Dirk Müller + +- update to 8.13.0: + * Enabled PyPy 3.10 support. + * Rebuilt wheels with QPDF 11.8.0. + * Improved test coverage slightly. + * Minor performance improvement when using file streams. + * Minor update to metadata documentation. + +------------------------------------------------------------------- +Wed Mar 13 10:17:52 UTC 2024 - Dirk Müller + +- remove unneeded ipython buildrequires + +------------------------------------------------------------------- +Mon Jan 22 22:41:11 UTC 2024 - Dirk Müller + +- update to 8.11.2: + * Fixed handling of XMP metadata when metadata contains objects + in a default namespace. + * Replaced all relative imports with absolute imports. + * Rebuilt with QPDF 11.7.0. + * Added support for setting page boxes to a rectangle directly, + e.g. ``page.mediabox = rectangle`` - previously rectangle had + to manually converted to an array. + * Fixed rendering of PDF and individual pages in Jupyter/IPython. + Newer versions of these tools are now pickier about what types + of data they render, and don't render PDFs directly; we now + provide SVG which works well. Requires installation of MuPDF + as before. + * Fixed rendering of inline images in Jupyter/IPython, which was + not implemented. + * Fixed build process to use new artifacts v4 actions on GitHub. + +------------------------------------------------------------------- +Wed Dec 27 14:00:51 UTC 2023 - Dirk Müller + +- update to 8.10.1: + * Rebuilt with QPDF 11.6.4. + * Replaced use of a custom C++ logger with sharing QPDF's. + It is still relayed to the Python logger. + * Added a simpler API for adding attachments from bytes data. + * Deprecated use of Object.parse(str) in favor of + Object.parse(bytes). + +------------------------------------------------------------------- +Wed Dec 13 14:43:49 UTC 2023 - ecsos + +- Update to 8.9.0 + - Overhauled documentation. Previously the documentation could only + be generated in an environment where pikepdf was compiled and installed, + since generating the final result depended on executing pikepdf. + Now, these dynamic features are removed and the documentation is static. + All documentation that was defined in C++ has been pulled out and defined + in Python stub files instead, which means compiled binaries are no longer + needed to access documentation. This change simplifies the generation of + documentation and makes it easier for IDEs to look up function signatures. + - Similarly, typing is now defined only in Python stub files. +- Update to 8.8.0 + - Added new pikepdf.canvas module with rudimentary content stream creation functions. +- Update to 8.7.1 + - Fixed pikepdf.Matrix.rotated() so it now rotates in the advertised direction. +- Update to 8.7.0 + - pikepdf.PdfMatrix is now deprecated, in favor of pikepdf.Matrix. + The former, unfortunately, implemented some operations backwards + compared to the PDF reference manual. The new class fixes these issues, + and adds more functionality, promoting transformation matrix to first class objects. + PdfMatrix is now deprecated and will be removed in the next major release. + - Improve behavior around truthiness of pikepdf.Name. +- Update to 8.6.0 + - Implemented Page.artbox and Page.bleedbox to access these page dimension boxes. +- Update to 8.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. + +------------------------------------------------------------------- +Mon Dec 11 17:29:49 UTC 2023 - Jonathan Papineau + +- update to 8.9.0 + * Overhauled documentation + * Added new pikepdf.canvas module with rudimentary content stream creation functions + * Fixed pikepdf.Matrix.rotated() so it now rotates in the advertised direction + * pikepdf.PdfMatrix is now deprecated, in favor of pikepdf.Matrix + * Improve behavior around truthiness of pikepdf.Name + * Implemented Page.artbox and Page.bleedbox to access these page dimension boxes + * 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 + +------------------------------------------------------------------- +Sat Oct 21 23:05:48 UTC 2023 - Soc Virnyl Estela + +- update to 8.5.2: + * Fix incorrect usage of sys_platform + * Don't install psutil on Windows and update other test dependencies + * Move psutil-needing tests to their own script + * Raise hypothesis deadlines + * Fix a few type hints + * Fix return values of global set/get fns and add get_access_default_mmap to pyi + * Update binary wheel list + * Simplify atomic_overwrite exception handler + * Increase arm64 build coverage - add musl and cp312 + * Stop building PyPy3.8 wheels due to lack of Pillow support + * Implementation AFRelationship for AttachedFileSpec + * docs: update info about creating PDFs + * Change to building against libqpdf v11.6.1 + * Disable pp3.10 since numpy binary wheels aren't released yet + * Merge branch 'trusted-release' + * Try adding url to see if it suppresses legacy warning + * Merge branch 'm-holger-rect' + * rect: tidy and prepare for release + * Fixing use of typing | on Python 3.9 + * Add Python 3.8 shim + * Improve CCITT tests + * Implement Decode array to better support weird CCITTs + * Fix another CCITT inversion issue + * Improve available version documentation + * Better documentation for atomic_overwrite + * Fix saving file opened from BytesIO on Windows + * Change atomic_overwite to use exclusive creation + * black doesn't support py312 yet + * Update documentation for 3.12 support + * Update note about needsappearances + * Allow Python 3.12 build to fail + * Test Python 3.12 pre-release + * Merge pull request #504 from m-holger/qm + * Fix link to QPDF manual + * Add docs back to sdist + * build: found a way to make RTD trigger again + * build: Replace deprecated "::set-output" + * Add Rectangle operators '<=' and '&' +- Use pyproject + +------------------------------------------------------------------- +Tue Jul 25 10:44:56 UTC 2023 - ecsos + +- Add %{?sle15_python_module_pythons} + +------------------------------------------------------------------- +Mon Jul 24 07:47:14 UTC 2023 - Dirk Müller + +- update to 8.2.1: + * Support for Python 3.7 is dropped. + * Added Page.form_xobjects, which returns all Form XObjects that + are used in a page + * Fixed an issue with extracting images that were compressed + with multiple compression filters + * Improved Object.repr() to avoid printing the entire contents + of large object trees such as those in PDFs with structural + element trees. + * 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. + * Adjusted stream preview (with __repr__) so it does not attempt + to decompress very long + * Removed uses of deprecated function datetime.utcnow() + * Adjusted timeline of potentially flaky hypothesis test. + * PyPy 3.10 is now supported on some platforms. + * PyPy 3.8 support will be dropped in the next major release + +------------------------------------------------------------------- +Wed May 10 06:39:40 UTC 2023 - Dirk Müller + +- update to 6.2.8.post1: + * Drop PyPy3.7 from wheel builds, since dependencies (lxml, Pillow) + no longer provide it. + * Fixed some tests that randomly failed on Windows due to newline + handling issues. + +------------------------------------------------------------------- +Mon Jan 2 19:06:21 UTC 2023 - Dirk Müller + +- update to 6.2.7: + * Removed a debug message during mmap. + * Fixed errors when using AccessMode.mmap + * Fixed noisy log message. + * Made some flakey tests less flakey. + * Fixed deprecated information in setup.cfg. Thanks @mgorny. + * Rebuild binary wheels using zlib 1.2.13. Source build unchanged. + +------------------------------------------------------------------- +Wed Oct 12 03:20:48 UTC 2022 - C J + +- Update to version 6.2.0: + * Add new keyword argument Pdf.save +- version 6.1.0: Rebuild wheels with qpdf 11.1.1. +- version 6.0.2: + * Fixed large increase in binary wheel file size for linux wheels. + * Provide macOS and Linux wheels for Python 3.11. +- version 6.0.1: + * Use qpdf 11.1.0 +- version 6.0.0: + * pikepdf 6.0.0 released to align with backward incompatible + changes in qpdf 11. + * Remove deprecated APIs +- version 5.6.1: + * Made treatment of CCITT image photometry ignore BlackIs1. +- version 5.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. +- version 5.5.0: + * Fixed undefined behavior on creating NameTree on direct object. + * 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 case where GIL was not held while discarding a certain exception. + * Now using cibuildwheel 2.9.0. + * Many typo fixes. +- version 5.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. +- version 5.4.1: + * Fixed ReadTheDocs build, updated versions, fixed a test warning, improved + coverage, modernized type annotations. +- version 5.4.0: + * New feature: pikepdf.Job bindings to QPDFJob API. + * New feature: pikepdf.NumberTree to support manipulation of number trees. + * 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. +- version 5.3.2: Build system requires changed to setuptools-scm 7.0.5. +- version 5.3.1: + * Fixed issue with parsing inline images, causing loss of data after inline + images were encountered in a content stream. :issue:`299 +- version 5.3.0: + * Binary wheels for Linux aarch64 are now being rolled automatically. + * 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. +- version 5.2.0: + * Avoid versions of setuptools_scm found to cause build issues. :issue:`359` + * Improved unhelpful error message when attemping to save a file with + invalid encryption settings. :issue:`341` + * Added workaround for XMP metadata blocks that are missing the expected + namespace tag. :issue:`349` + * Minor code improvements, removed some deprecated private methods. + +------------------------------------------------------------------- +Fri Jun 17 00:45:31 UTC 2022 - Atri Bhattacharya + +- Update to version 5.1.5: + * Fixed removal of necessary package packaging. Needed for + import. +- Drop some unnecessary comments. +- Be more specific with file lists. + +------------------------------------------------------------------- +Sun Mar 27 15:05:43 UTC 2022 - Dirk Müller + +- update to 5.1.0: + * Rebuild against QPDF 10.6.3. + * Improvements to Makefile for Apple Silicon wheels. + * Fix issue where Pdf.check() would report a failure if JBIG2 decoder was not + installed and the PDF contains JBIG2 content. + * 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. + * 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. + * Fixed two instances of a Python object being copied without the GIL held. + May have caused some instability. Thanks @rwgk. + * Further improvements to handling of 2- and 4-bit per component images. Major + refactoring of relevant code and improved testing. + * Mark pybind11 2.9 as supported. Thanks @QuLogic. + * 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. + 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. + * ``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` + * 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. + * 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``. + * Fixed documentation build reproducibility. (Thanks to Chris Lamb and Sean Whitton.) + * Fixed issue where file attachments not located in the current working directory + * Removed some references to Python 3.6. + * Added some fixes to typing hints from @cherryblossom000. + * 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. + * libqpdf 10.3.1 is now required and other requirements were adjusted. + * pybind11 2.7.1 is now required. + +------------------------------------------------------------------- +Fri Jan 21 07:15:11 UTC 2022 - ecsos + +- Add versions to build requieres so Leap 15.3 can build. + +------------------------------------------------------------------- +Wed Nov 17 09:25:21 UTC 2021 - ecsos + +- Update to 2.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. +- Fix build error for Leap and Tumblweed. + +------------------------------------------------------------------- +Sat Jun 5 20:02:00 UTC 2021 - Martin Hauke + +- Update to version 2.12.1 + * Fixed documentation typo and updated precommit settings. + * Ongoing improvements to code coverage: now related to image + handling. +- Update to version 2.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. +- Update to version 2.11.4 + * Fix issue #160, 'Tried to call pure virtual function + "TokenFilter::handle_token"'; this was a Python/C++ + reference counting problem. +- Update to version 2.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. + +------------------------------------------------------------------- +Fri Apr 23 06:29:22 UTC 2021 - Martin Hauke + +- Update to version 2.11.2 + * Added missing documentation for ``Pdf.is_encrypted``. +- Update to version 2.11.1 + * Fixed an issue with ``Object.emplace()`` not retaining the + original object's /Parent. + +------------------------------------------------------------------- +Wed Apr 7 15:49:49 UTC 2021 - Martin Hauke + +- Update to version 2.11.0 + * Add new functions: Pdf.generate_appearance_streams and + Pdf.flatten_annotations, to support common work with PDF forms. +- Update to version 2.10.0 + * Fixed a XML External Entity (XXE) processing vulnerability in + PDF XMP metadata parsing (CVE-2021-29421) + * 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. +- Update to version 2.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. +- Update to version 2.9.1 + * 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. +- Update to version 2.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. + * An obsolete private function Object._roundtrip was removed. + +------------------------------------------------------------------- +Thu Mar 4 19:17:02 UTC 2021 - Martin Hauke + +- Update to version 2.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. +- Update to version 2.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. +- Update to version 2.6.0 + * Rebuild wheels against QPDF 10.2.0. + +------------------------------------------------------------------- +Sun Feb 7 13:18:33 UTC 2021 - John Vandenberg + +- Add docs/*/*.rst to package contents +- Update to v2.5.2 + * See https://github.com/pikepdf/pikepdf/blob/master/docs/release_notes.rst + +------------------------------------------------------------------- +Fri Jul 31 03:37:38 UTC 2020 - Karl Cheng + +- Update pikepdf to 1.17.3 +- Allow test_object.py to run in package spec + +------------------------------------------------------------------- +Thu Apr 23 09:57:59 UTC 2020 - Tomáš Chvátal + +- Do not pull in python2 package on py3 only software + +------------------------------------------------------------------- +Sun Apr 19 20:10:58 UTC 2020 - Martin Hauke + +- Update to version 1.11.1 + * We now avoid creating an empty XMP metadata entry when files + are saved. + * Updated documentation to describe how to delete the document + information dictionary. +- Update to version 1.11.0 + * Prevent creation of dictionaries with invalid names (not + beginning with /). + * Allow pikepdf's build to specify a qpdf source tree, allowing + one to compile pikepdf against an unreleased/modified version + of qpdf. + * Improved behavior of pages.p() and pages.remove() when + invalid parameters were given. + * Fixed compatibility with libqpdf version 10.0.1, and build + official wheels against this version. + * Fixed compatibility with pytest 5.x. + * Fixed the documentation build. + * Fixed an issue with running tests in a non-Unicode locale. + * Fixed a test that randomly failed due to a "deadline error". + * Removed a possibly nonfree test file. +- Update to version 1.10.4 + * Rebuild Python wheels with newer version of libqpdf. Fixes + problems with opening certain password-protected files (#87) +------------------------------------------------------------------- +Tue Mar 24 11:58:35 UTC 2020 - pgajdos@suse.com + +- version update to 1.10.3 + * Fixed ``isinstance(obj, pikepdf.Operator)`` not working. (#86) + * Documentation updates. + +------------------------------------------------------------------- +Mon Mar 16 09:39:13 UTC 2020 - Marketa Calabkova + +- update to version 1.10.2 + * Fixed an issue where pages added from a foreign PDF were added as references + rather than copies. + * Documentation updates. + +------------------------------------------------------------------- +Fri Feb 14 07:50:37 UTC 2020 - Martin Hauke + +- Initial package, version 1.10.1 diff --git a/python-pikepdf.spec b/python-pikepdf.spec new file mode 100644 index 0000000..7eb8f5d --- /dev/null +++ b/python-pikepdf.spec @@ -0,0 +1,88 @@ +# +# spec file for package python-pikepdf +# +# Copyright (c) 2025 SUSE LLC and contributors +# Copyright (c) 2020-2021, Martin Hauke +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%{?sle15_python_module_pythons} +Name: python-pikepdf +Version: 10.1.0 +Release: 0 +Summary: Read and write PDFs with Python, powered by qpdf +License: MPL-2.0 +Group: Development/Libraries/Python +URL: https://github.com/pikepdf/pikepdf +Source: https://files.pythonhosted.org/packages/source/p/pikepdf/pikepdf-%{version}.tar.gz +## SECTION test requirements +BuildRequires: %{python_module Deprecated} +BuildRequires: %{python_module Pillow >= 10.0.1} +BuildRequires: %{python_module attrs >= 20.2.0} +BuildRequires: %{python_module deprecated} +BuildRequires: %{python_module devel >= 3.10} +BuildRequires: %{python_module hypothesis >= 6.36} +BuildRequires: %{python_module lxml >= 4.8} +BuildRequires: %{python_module packaging} +BuildRequires: %{python_module psutil >= 5.9} +BuildRequires: %{python_module pybind11 >= 3.0.0} +BuildRequires: %{python_module pybind11-devel >= 3.0.0} +BuildRequires: %{python_module pytest >= 6.2.5} +BuildRequires: %{python_module pytest-cov >= 3.0.0} +BuildRequires: %{python_module pytest-forked} +BuildRequires: %{python_module pytest-helpers-namespace >= 2019.1.8} +# Upstream use pytest-timeout >= 1.4.2 +BuildRequires: %{python_module pytest-timeout >= 2.1.0} +BuildRequires: %{python_module pytest-xdist >= 2.5.0} +BuildRequires: %{python_module python-dateutil >= 2.8.1} +#BuildRequires: %%{python_module python-xmp-toolkit >= 2.0.1} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module setuptools >= 61} +BuildRequires: %{python_module wheel >= 0.37} +## /SECTION +BuildRequires: fdupes +BuildRequires: gcc-c++ +BuildRequires: libjpeg8-devel +BuildRequires: pkgconfig +BuildRequires: python-rpm-macros +BuildRequires: pkgconfig(libqpdf) >= 12.2.0 +Requires: python-Deprecated +Requires: python-Pillow >= 10.0.1 +Requires: python-lxml >= 4.8 +Requires: python-packaging +%python_subpackages + +%description +Read and write PDFs with Python, powered by qpdf. + +%prep +%setup -q -n pikepdf-%{version} + +%build +export CFLAGS="%{optflags}" +%pyproject_wheel + +%install +%pyproject_install +%python_expand %fdupes %{buildroot}%{$python_sitearch} + +%check +%pytest_arch + +%files %{python_files} +%license LICENSE.txt +%doc README.md +%{python_sitearch}/pikepdf* + +%changelog