diff options
Diffstat (limited to 'debian')
-rw-r--r-- | debian/changelog | 24 | ||||
-rw-r--r-- | debian/compat | 1 | ||||
-rw-r--r-- | debian/control | 6 | ||||
-rw-r--r-- | debian/copyright | 452 | ||||
-rw-r--r-- | debian/patches/Fix-issue-25-year-missing-leading-zero-on-some-platforms.patch | 51 | ||||
-rw-r--r-- | debian/patches/disable-test_docinfo_problems.patch | 27 | ||||
-rw-r--r-- | debian/patches/disable-test_icc_extract.patch | 27 | ||||
-rw-r--r-- | debian/patches/docs-build-use-DEB_VERSION_UPSTREAM.patch | 6 | ||||
-rw-r--r-- | debian/patches/drop-installation-from-docs-contents.patch | 2 | ||||
-rw-r--r-- | debian/patches/drop-pybind11-from-setup.py.patch | 22 | ||||
-rw-r--r-- | debian/patches/drop-setuptools_scm_git_archive-from-setup.py.patch | 19 | ||||
-rw-r--r-- | debian/patches/fix_xmp_metadata_without_xmpmeta_wrapper.patch | 110 | ||||
-rw-r--r-- | debian/patches/series | 5 | ||||
-rw-r--r-- | debian/tests/control | 2 |
14 files changed, 545 insertions, 209 deletions
diff --git a/debian/changelog b/debian/changelog index a9e4c61..8abb809 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,27 @@ +pikepdf (1.5.0.post0+dfsh-1) unstable; urgency=medium + + [ Sean Whitton ] + * New upstream release. + - Drop python3-defusedxml build-dep + - Drop python3-pytest-runner build-dep + + Drop rw-build-tree d/tests/control restriction + - Tighten python3-pybind11 dependency to require 2.3.0. + * Add drop-pybind11-from-setup.py.patch, disable-test_icc_extract.patch. + * Drop Fix-issue-25-year-missing-leading-zero-on-some-platforms.patch, + drop-setuptools_scm_git_archive-from-setup.py.patch and + fix_xmp_metadata_without_xmpmeta_wrapper.patch. + * Refresh remaining patches. + * d/copyright updates: + - Update Files-Excluded + - Update upstream copyright years. + - Add info for docs/images/pike-{release,tree}.jpg, + tests/resources/pike-flate-jp2.pdf + + [ Ondřej Nový ] + * Use debhelper-compat instead of debian/compat. + + -- Sean Whitton <spwhitton@spwhitton.name> Thu, 15 Aug 2019 18:47:38 +0100 + pikepdf (1.0.5+dfsg-3) unstable; urgency=medium * Cherry pick upstream commit 4d22fe4 as diff --git a/debian/compat b/debian/compat deleted file mode 100644 index f599e28..0000000 --- a/debian/compat +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/debian/control b/debian/control index ee1d2cb..5e56555 100644 --- a/debian/control +++ b/debian/control @@ -4,13 +4,11 @@ Priority: optional Maintainer: Debian Python Modules Team <python-modules-team@lists.alioth.debian.org> Uploaders: Sean Whitton <spwhitton@spwhitton.name> Build-Depends: - debhelper (>= 10), + debhelper-compat (= 10), dh-python, libqpdf-dev, python3-all-dev, - python3-defusedxml, - python3-pybind11, - python3-pytest-runner, + python3-pybind11 (>= 2.3.0), python3-setuptools, python3-setuptools-scm, python3-setuptools-scm-git-archive, diff --git a/debian/copyright b/debian/copyright index 815795c..a4356b9 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,10 +1,17 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: pikepdf Source: https://github.com/pikepdf/pikepdf -Files-Excluded: tests/resources/enron1_gs.pdf +Files-Excluded: tests/resources/enron1_gs.pdf tests/resources/tree.png tests/resources/tree-icc.pdf +Comment: + tests/resources/tree* is from + https://svgsilh.com/009688/image/1847429.html which claims CC0-1.0, + but it is a modified version of + https://pixabay.com/illustrations/christmas-tree-tree-christmas-1847429/ + which is under a license which is not clearly DFSG: + https://pixabay.com/service/license/ Files: * -Copyright: (C) 2017 James R. Barlow +Copyright: (C) 2017-2019 James R. Barlow License: MPL-2.0 Comment: The file licenses/license.wheel.txt is relevant only when a binary @@ -26,7 +33,7 @@ Files: debian/* Copyright: (C) 2018 Sean Whitton <spwhitton@spwhitton.name> License: MPL-2.0 -Files: docs/images/pike.jpg tests/resources/pike-jp2.pdf +Files: docs/images/pike.jpg tests/resources/pike*jp2.pdf Copyright: Public domain License: public-domain From the U.S. Fish and Wildlife Service National Image Library. @@ -85,6 +92,18 @@ License: CeCILL-2.0 or CC-BY-SA-2.0-FR Comment: Obtained from: https://commons.wikimedia.org/wiki/File:Pike_square_img_3653.jpg +Files: docs/images/pike-release.jpg +Copyright: (C) 2014 Azerty197666 +License: CC-BY-SA-4.0 +Comment: + Obtained from: https://commons.wikimedia.org/wiki/File:Release_of_a_pike.jpg + +Files: docs/images/pike-tree.jpg +Copyright: Public domain +License: CC0-1.0 +Comment: + Obtained from: https://www.maxpixel.net/Pike-Fish-Fishing-1082782 + License: MPL-2.0 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. @@ -1594,3 +1613,430 @@ License: CC-BY-SA-2.0-FR demande. . Creative Commons peut être contacté à https://creativecommons.org/. + +License: CC-BY-SA-4.0 + Attribution-ShareAlike 4.0 International + . + ======================================================================= + . + Creative Commons Corporation ("Creative Commons") is not a law firm and + does not provide legal services or legal advice. Distribution of + Creative Commons public licenses does not create a lawyer-client or + other relationship. Creative Commons makes its licenses and related + information available on an "as-is" basis. Creative Commons gives no + warranties regarding its licenses, any material licensed under their + terms and conditions, or any related information. Creative Commons + disclaims all liability for damages resulting from their use to the + fullest extent possible. + . + Using Creative Commons Public Licenses + . + Creative Commons public licenses provide a standard set of terms and + conditions that creators and other rights holders may use to share + original works of authorship and other material subject to copyright + and certain other rights specified in the public license below. The + following considerations are for informational purposes only, are not + exhaustive, and do not form part of our licenses. + . + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + . + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More_considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + . + ======================================================================= + . + Creative Commons Attribution-ShareAlike 4.0 International Public + License + . + By exercising the Licensed Rights (defined below), You accept and agree + to be bound by the terms and conditions of this Creative Commons + Attribution-ShareAlike 4.0 International Public License ("Public + License"). To the extent this Public License may be interpreted as a + contract, You are granted the Licensed Rights in consideration of Your + acceptance of these terms and conditions, and the Licensor grants You + such rights in consideration of benefits the Licensor receives from + making the Licensed Material available under these terms and + conditions. + . + . + Section 1 -- Definitions. + . + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + . + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + . + c. BY-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + . + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + . + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + . + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + . + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution and ShareAlike. + . + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + . + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + . + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + . + k. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + . + l. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + . + m. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + . + . + Section 2 -- Scope. + . + a. License grant. + . + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + . + a. reproduce and Share the Licensed Material, in whole or + in part; and + . + b. produce, reproduce, and Share Adapted Material. + . + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + . + 3. Term. The term of this Public License is specified in Section + 6(a). + . + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + . + 5. Downstream recipients. + . + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + . + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + . + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + . + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + . + b. Other rights. + . + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + . + 2. Patent and trademark rights are not licensed under this + Public License. + . + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + . + . + Section 3 -- License Conditions. + . + Your exercise of the Licensed Rights is expressly made subject to the + following conditions. + . + a. Attribution. + . + 1. If You Share the Licensed Material (including in modified + form), You must: + . + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + . + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + . + ii. a copyright notice; + . + iii. a notice that refers to this Public License; + . + iv. a notice that refers to the disclaimer of + warranties; + . + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + . + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + . + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + . + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + . + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + . + b. ShareAlike. + . + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + . + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-SA Compatible License. + . + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + . + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + . + . + Section 4 -- Sui Generis Database Rights. + . + Where the Licensed Rights include Sui Generis Database Rights that + apply to Your use of the Licensed Material: + . + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + . + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + . + including for purposes of Section 3(b); and + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + . + For the avoidance of doubt, this Section 4 supplements and does not + replace Your obligations under this Public License where the Licensed + Rights include other Copyright and Similar Rights. + . + . + Section 5 -- Disclaimer of Warranties and Limitation of Liability. + . + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + . + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + . + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + . + . + Section 6 -- Term and Termination. + . + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + . + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + . + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + . + 2. upon express reinstatement by the Licensor. + . + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + . + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + . + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + . + . + Section 7 -- Other Terms and Conditions. + . + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + . + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + . + . + Section 8 -- Interpretation. + . + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + . + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + . + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + . + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + . + . + ======================================================================= + . + Creative Commons is not a party to its public licenses. + Notwithstanding, Creative Commons may elect to apply one of its public + licenses to material it publishes and in those instances will be + considered the "Licensor." Except for the limited purpose of indicating + that material is shared under a Creative Commons public license or as + otherwise permitted by the Creative Commons policies published at + creativecommons.org/policies, Creative Commons does not authorize the + use of the trademark "Creative Commons" or any other trademark or logo + of Creative Commons without its prior written consent including, + without limitation, in connection with any unauthorized modifications + to any of its public licenses or any other arrangements, + understandings, or agreements concerning use of licensed material. For + the avoidance of doubt, this paragraph does not form part of the public + licenses. + . + Creative Commons may be contacted at creativecommons.org. diff --git a/debian/patches/Fix-issue-25-year-missing-leading-zero-on-some-platforms.patch b/debian/patches/Fix-issue-25-year-missing-leading-zero-on-some-platforms.patch deleted file mode 100644 index 8c51aad..0000000 --- a/debian/patches/Fix-issue-25-year-missing-leading-zero-on-some-platforms.patch +++ /dev/null @@ -1,51 +0,0 @@ -From: "James R. Barlow" <jim@purplerock.ca> -Date: Tue, 12 Feb 2019 20:42:11 -0800 -Subject: Fix issue #25 - year missing leading zero on some platforms - -Closes #25 - -(cherry picked from commit 4d22fe47912c518e8b3348aedccdac3f11ed81d7) ---- - src/pikepdf/models/metadata.py | 7 +++++-- - tests/test_metadata.py | 3 ++- - 2 files changed, 7 insertions(+), 3 deletions(-) - -diff --git a/src/pikepdf/models/metadata.py b/src/pikepdf/models/metadata.py -index 1a0eeb2..65934cd 100644 ---- a/src/pikepdf/models/metadata.py -+++ b/src/pikepdf/models/metadata.py -@@ -121,8 +121,11 @@ def encode_pdf_date(d: datetime) -> str: - the local time. - """ - -- pdfmark_date_fmt = r'%Y%m%d%H%M%S' -- s = d.strftime(pdfmark_date_fmt) -+ # The formatting of %Y is not consistent as described in -+ # https://bugs.python.org/issue13305 and underspecification in libc. -+ # So explicitly format the year with leading zeros -+ s = "{:04d}".format(d.year) -+ s += d.strftime(r'%m%d%H%M%S') - tz = d.strftime('%z') - if tz: - sign, tz_hours, tz_mins = tz[0], tz[1:3], tz[3:5] -diff --git a/tests/test_metadata.py b/tests/test_metadata.py -index 1d41878..41a879c 100644 ---- a/tests/test_metadata.py -+++ b/tests/test_metadata.py -@@ -3,7 +3,7 @@ from datetime import datetime, timezone, timedelta - import re - - import pytest --from hypothesis import given -+from hypothesis import given, example - from hypothesis.strategies import integers - import pikepdf - from pikepdf import Pdf, Dictionary, Name, PasswordError, Stream -@@ -252,6 +252,7 @@ def test_date_docinfo_from_xmp(): - integers(0, 99), - integers(0, 99), - ) -+@example(1, 1, 1, 0, 0, 0) - def test_random_dates(year, month, day, hour, mins, sec): - date_args = year, month, day, hour, mins, sec - xmp = '{:04d}-{:02d}-{:02d}T{:02d}:{:02d}:{:02d}'.format(*date_args) diff --git a/debian/patches/disable-test_docinfo_problems.patch b/debian/patches/disable-test_docinfo_problems.patch index a69ca9a..fdcd1fa 100644 --- a/debian/patches/disable-test_docinfo_problems.patch +++ b/debian/patches/disable-test_docinfo_problems.patch @@ -9,7 +9,7 @@ Needs a test resource whose DFSG status is in doubt. --- a/tests/test_metadata.py +++ b/tests/test_metadata.py -@@ -50,12 +50,6 @@ def trivial(resources): +@@ -58,12 +58,6 @@ def trivial(resources): @pytest.fixture @@ -22,12 +22,10 @@ Needs a test resource whose DFSG status is in doubt. def invalid_creationdate(resources): # Has nuls in docinfo, old PDF return Pdf.open(resources / 'invalid_creationdate.pdf') -@@ -320,34 +314,6 @@ def test_remove_attribute_metadata(sandw - - # Ensure the whole node was deleted +@@ -337,37 +331,6 @@ def test_remove_attribute_metadata(sandw assert not re.search(r'rdf:Description xmlns:[^\s]+ rdf:about=""/', str(xmp)) -- -- + + -def test_docinfo_problems(enron1, invalid_creationdate): - meta = enron1.open_metadata() - meta._load() # File has invalid XML sequence � @@ -45,15 +43,20 @@ Needs a test resource whose DFSG status is in doubt. - - -def test_wrong_xml(enron1): -- enron1.Root.Metadata = Stream(enron1, b""" +- enron1.Root.Metadata = Stream( +- enron1, +- b""" - <test><xml>This is valid xml but not valid XMP</xml></test> -- """.strip()) +- """.strip(), +- ) - meta = enron1.open_metadata() -- with pytest.raises(ValueError, message='not XMP'): +- with pytest.raises(ValueError, match='not XMP'): - with meta: - pass -- with pytest.raises(ValueError, message='not XMP'): +- with pytest.raises(ValueError, match='not XMP'): - meta['pdfaid:part'] - - +- +- def test_no_x_xmpmeta(trivial): + trivial.Root.Metadata = Stream( + trivial, diff --git a/debian/patches/disable-test_icc_extract.patch b/debian/patches/disable-test_icc_extract.patch new file mode 100644 index 0000000..3f6973f --- /dev/null +++ b/debian/patches/disable-test_icc_extract.patch @@ -0,0 +1,27 @@ +From: Sean Whitton <spwhitton@spwhitton.name> +Date: Thu, 15 Aug 2019 18:42:49 +0100 +Subject: disable test_icc_extract + +Requires a test resource in Files-Excluded. +--- + tests/test_image_access.py | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/tests/test_image_access.py b/tests/test_image_access.py +index d4625d5..113a5ef 100644 +--- a/tests/test_image_access.py ++++ b/tests/test_image_access.py +@@ -317,13 +317,6 @@ def test_icc_use(resources): + assert pim.icc.profile.xcolor_space == 'GRAY' + + +-def test_icc_extract(resources): +- xobj, _pdf = first_image_in(resources / 'tree-icc.pdf') +- +- pim = PdfImage(xobj) +- assert pim.as_pil_image().info['icc_profile'] == pim.icc.tobytes() +- +- + def test_stacked_compression(resources): + xobj, _pdf = first_image_in(resources / 'pike-flate-jp2.pdf') + diff --git a/debian/patches/docs-build-use-DEB_VERSION_UPSTREAM.patch b/debian/patches/docs-build-use-DEB_VERSION_UPSTREAM.patch index e440dca..f880317 100644 --- a/debian/patches/docs-build-use-DEB_VERSION_UPSTREAM.patch +++ b/debian/patches/docs-build-use-DEB_VERSION_UPSTREAM.patch @@ -8,8 +8,8 @@ Subject: docs build use DEB_VERSION_UPSTREAM --- a/docs/conf.py +++ b/docs/conf.py -@@ -52,8 +52,6 @@ else: - # documentation root, use os.path.abspath to make it absolute, like shown here. +@@ -76,8 +76,6 @@ else: + sys.path.insert(0, os.path.join(os.path.abspath('.'), './_ext')) sys.path.insert(0, os.path.join(os.path.abspath('.'), '..')) -import pikepdf @@ -17,7 +17,7 @@ Subject: docs build use DEB_VERSION_UPSTREAM # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. -@@ -101,7 +99,7 @@ author = u'James R. Barlow' +@@ -123,7 +121,7 @@ author = u'James R. Barlow' # |version| and |release|, also used in various other places throughout the # built documents. diff --git a/debian/patches/drop-installation-from-docs-contents.patch b/debian/patches/drop-installation-from-docs-contents.patch index 65ca879..bfd6dae 100644 --- a/debian/patches/drop-installation-from-docs-contents.patch +++ b/debian/patches/drop-installation-from-docs-contents.patch @@ -13,6 +13,6 @@ Subject: drop installation from docs contents :name: intro_toc - installation - changelog + release_notes tutorial objects diff --git a/debian/patches/drop-pybind11-from-setup.py.patch b/debian/patches/drop-pybind11-from-setup.py.patch new file mode 100644 index 0000000..90dc374 --- /dev/null +++ b/debian/patches/drop-pybind11-from-setup.py.patch @@ -0,0 +1,22 @@ +From: Sean Whitton <spwhitton@spwhitton.name> +Date: Thu, 15 Aug 2019 18:12:41 +0100 +Subject: drop pybind11 from setup.py + +We are successfully providing pybind11 as a build-dep but ocrmypdf's +setup.py fails to detect it for some reason. +--- + setup.py | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 59e9b3b..c1f62b2 100644 +--- a/setup.py ++++ b/setup.py +@@ -138,7 +138,6 @@ setup( + setup_requires=[ + 'setuptools_scm', + 'setuptools_scm_git_archive', +- 'pybind11 >= 2.3.0, < 3', + ], + use_scm_version=True, + tests_require=tests_require, diff --git a/debian/patches/drop-setuptools_scm_git_archive-from-setup.py.patch b/debian/patches/drop-setuptools_scm_git_archive-from-setup.py.patch deleted file mode 100644 index 9349e43..0000000 --- a/debian/patches/drop-setuptools_scm_git_archive-from-setup.py.patch +++ /dev/null @@ -1,19 +0,0 @@ -From: Sean Whitton <spwhitton@spwhitton.name> -Date: Wed, 10 Oct 2018 08:17:05 -0700 -Subject: drop setuptools_scm_git_archive from setup.py - -Pending resolution of #910742. ---- - setup.py | 1 - - 1 file changed, 1 deletion(-) - ---- a/setup.py -+++ b/setup.py -@@ -134,7 +134,6 @@ setup( - setup_requires=[ - 'pytest-runner', - 'setuptools_scm', -- 'setuptools_scm_git_archive', - 'pybind11 >= 2.2.4, < 3' - ], - use_scm_version=True, diff --git a/debian/patches/fix_xmp_metadata_without_xmpmeta_wrapper.patch b/debian/patches/fix_xmp_metadata_without_xmpmeta_wrapper.patch deleted file mode 100644 index 0254bee..0000000 --- a/debian/patches/fix_xmp_metadata_without_xmpmeta_wrapper.patch +++ /dev/null @@ -1,110 +0,0 @@ -From d31ea8fed2004345b3c274172ff0c28b7c6aca16 Mon Sep 17 00:00:00 2001 -From: "James R. Barlow" <jim@purplerock.ca> -Date: Wed, 6 Feb 2019 00:36:59 -0800 -Subject: [PATCH] Fix handling of XMP metadata with no <x:xmpmeta> wrapper - ---- - src/pikepdf/models/metadata.py | 12 ++++++++-- - tests/test_metadata.py | 41 ++++++++++++++++++++++++++++++++-- - 2 files changed, 49 insertions(+), 4 deletions(-) - -diff --git a/src/pikepdf/models/metadata.py b/src/pikepdf/models/metadata.py -index 58c5a9d..23d246b 100644 ---- a/src/pikepdf/models/metadata.py -+++ b/src/pikepdf/models/metadata.py -@@ -428,6 +428,14 @@ def _get_subelements(self, node): - return result - return '' - -+ def _get_rdf_root(self): -+ rdf = self._xmp.find('.//rdf:RDF', self.NS) -+ if rdf is None: -+ rdf = self._xmp.getroot() -+ if not rdf.tag == '{http://www.w3.org/1999/02/22-rdf-syntax-ns#}RDF': -+ raise ValueError("Metadata seems to be XML but not XMP") -+ return rdf -+ - def _get_elements(self, name=''): - """Get elements from XMP - -@@ -452,7 +460,7 @@ def _get_elements(self, name=''): - - """ - qname = self._qname(name) -- rdf = self._xmp.find('.//rdf:RDF', self.NS) -+ rdf = self._get_rdf_root() - for rdfdesc in rdf.findall('rdf:Description[@rdf:about=""]', self.NS): - if qname and qname in rdfdesc.keys(): - yield (rdfdesc, qname, rdfdesc.get(qname), rdf) -@@ -540,7 +548,7 @@ def add_array(node, items): - raise TypeError(val) - except StopIteration: - # Insert a new node -- rdf = self._xmp.find('.//rdf:RDF', self.NS) -+ rdf = self._get_rdf_root() - if str(self._qname(key)) in LANG_ALTS: - val = AltList([clean(val)]) - if isinstance(val, (list, set)): -diff --git a/tests/test_metadata.py b/tests/test_metadata.py -index abe05ff..be654c8 100644 ---- a/tests/test_metadata.py -+++ b/tests/test_metadata.py -@@ -6,7 +6,7 @@ - from hypothesis import given - from hypothesis.strategies import integers - import pikepdf --from pikepdf import Pdf, Dictionary, Name, PasswordError -+from pikepdf import Pdf, Dictionary, Name, PasswordError, Stream - from pikepdf.models.metadata import ( - decode_pdf_date, encode_pdf_date, - XMP_NS_DC, XMP_NS_PDF, XMP_NS_XMP, -@@ -285,7 +285,7 @@ def test_bad_char_rejection(trivial): - ET.fromstring(str(xmp)) - - --def test_xpacket(sandwich): -+def test_xpacket_generation(sandwich): - xmpstr1 = sandwich.Root.Metadata.read_bytes() - xpacket_begin = b'<?xpacket begin=' - xpacket_end = b'<?xpacket end=' -@@ -336,3 +336,40 @@ def test_docinfo_problems(enron1, invalid_creationdate): - with meta as xmp: - xmp['xmp:CreateDate'] = 'invalid date' - assert 'could not be updated' in warned[0].message.args[0] -+ -+ -+def test_wrong_xml(enron1): -+ enron1.Root.Metadata = Stream(enron1, b""" -+ <test><xml>This is valid xml but not valid XMP</xml></test> -+ """.strip()) -+ meta = enron1.open_metadata() -+ with pytest.raises(ValueError, message='not XMP'): -+ with meta: -+ pass -+ with pytest.raises(ValueError, message='not XMP'): -+ meta['pdfaid:part'] -+ -+ -+def test_no_x_xmpmeta(trivial): -+ trivial.Root.Metadata = Stream(trivial, b""" -+ <?xpacket begin="\xef\xbb\xbf" id="W5M0MpCehiHzreSzNTczkc9d"?> -+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" -+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"> -+ <rdf:Description rdf:about="" -+ xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/" -+ xmlns:xmp="http://ns.adobe.com/xap/1.0/"> -+ <pdfaid:part>1</pdfaid:part> -+ <pdfaid:conformance>A</pdfaid:conformance> -+ <xmp:CreatorTool>Simple Scan 3.30.2</xmp:CreatorTool> -+ <xmp:CreateDate>2019-02-05T07:08:46+01:00</xmp:CreateDate> -+ <xmp:ModifyDate>2019-02-05T07:08:46+01:00</xmp:ModifyDate> -+ <xmp:MetadataDate>2019-02-05T07:08:46+01:00</xmp:MetadataDate> -+ </rdf:Description> -+ </rdf:RDF> -+ <?xpacket end="w"?> -+ """.strip()) -+ -+ with trivial.open_metadata() as xmp: -+ assert xmp._get_rdf_root() is not None -+ xmp['pdfaid:part'] = '2' -+ assert xmp['pdfaid:part'] == '2' diff --git a/debian/patches/series b/debian/patches/series index 152c5b8..57f09d3 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,6 +1,5 @@ docs-build-use-DEB_VERSION_UPSTREAM.patch drop-installation-from-docs-contents.patch -drop-setuptools_scm_git_archive-from-setup.py.patch -fix_xmp_metadata_without_xmpmeta_wrapper.patch disable-test_docinfo_problems.patch -Fix-issue-25-year-missing-leading-zero-on-some-platforms.patch +drop-pybind11-from-setup.py.patch +disable-test_icc_extract.patch diff --git a/debian/tests/control b/debian/tests/control index c20747f..3c956a8 100644 --- a/debian/tests/control +++ b/debian/tests/control @@ -1,6 +1,4 @@ Tests: test-suite -Restrictions: rw-build-tree -# ^ pytest-runner writes stuff to the source tree Depends: @, python3-pytest, python3-pytest-helpers-namespace, |