gnu: Add python-pypdf.
* gnu/packages/pdf.scm (python-pypdf): New variable. * gnu/packages/patches/python-pypdf-annotate-tests-appropriately.patch: New file. * gnu/local.mk (dist_patch_DATA): Register patch. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
This commit is contained in:
		
							parent
							
								
									356e33641a
								
							
						
					
					
						commit
						f8400b2cbd
					
				
					 3 changed files with 126 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -1639,6 +1639,7 @@ dist_patch_DATA =						\
 | 
			
		|||
  %D%/packages/patches/python-louvain-fix-test.patch		\
 | 
			
		||||
  %D%/packages/patches/python-random2-getrandbits-test.patch		\
 | 
			
		||||
  %D%/packages/patches/python-poppler-qt5-fix-build.patch	\
 | 
			
		||||
  %D%/packages/patches/python-pypdf-annotate-tests-appropriately.patch	\
 | 
			
		||||
  %D%/packages/patches/python-telingo-fix-comparison.patch	\
 | 
			
		||||
  %D%/packages/patches/python-w3lib-fix-test-failure.patch	\
 | 
			
		||||
  %D%/packages/patches/sdcc-disable-non-free-code.patch		\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,96 @@
 | 
			
		|||
Origin: https://github.com/py-pdf/pypdf/commit/767047b98ee3ea7aca331cfbd63502a284bfed93
 | 
			
		||||
From 767047b98ee3ea7aca331cfbd63502a284bfed93 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: dkg <dkg@fifthhorseman.net>
 | 
			
		||||
Date: Sat, 14 Jan 2023 03:32:45 -0500
 | 
			
		||||
Subject: [PATCH 03/14] Annotate tests appropriately (#1551)
 | 
			
		||||
 | 
			
		||||
By annotating these tests, we can use pytest markers to skip external
 | 
			
		||||
tests and tests that depend on sample-files.
 | 
			
		||||
---
 | 
			
		||||
 tests/test_reader.py | 5 +++++
 | 
			
		||||
 tests/test_writer.py | 4 ++++
 | 
			
		||||
 2 files changed, 9 insertions(+)
 | 
			
		||||
 | 
			
		||||
diff --git a/tests/test_reader.py b/tests/test_reader.py
 | 
			
		||||
index 710e6c5..62eb7b7 100644
 | 
			
		||||
--- a/tests/test_reader.py
 | 
			
		||||
+++ b/tests/test_reader.py
 | 
			
		||||
@@ -176,6 +176,7 @@ def test_get_outline(src, outline_elements):
 | 
			
		||||
     assert len(outline) == outline_elements
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
+@pytest.mark.samples
 | 
			
		||||
 @pytest.mark.parametrize(
 | 
			
		||||
     ("src", "expected_images"),
 | 
			
		||||
     [
 | 
			
		||||
@@ -866,6 +867,7 @@ def test_get_fields():
 | 
			
		||||
     assert dict(fields["c1-1"]) == ({"/FT": "/Btn", "/T": "c1-1"})
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
+@pytest.mark.external
 | 
			
		||||
 def test_get_full_qualified_fields():
 | 
			
		||||
     url = "https://github.com/py-pdf/PyPDF2/files/10142389/fields_with_dots.pdf"
 | 
			
		||||
     name = "fields_with_dots.pdf"
 | 
			
		||||
@@ -1214,6 +1216,7 @@ def test_zeroing_xref():
 | 
			
		||||
     len(reader.pages)
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
+@pytest.mark.external
 | 
			
		||||
 def test_thread():
 | 
			
		||||
     url = "https://github.com/py-pdf/pypdf/files/9066120/UTA_OSHA_3115_Fall_Protection_Training_09162021_.pdf"
 | 
			
		||||
     name = "UTA_OSHA.pdf"
 | 
			
		||||
@@ -1226,6 +1229,7 @@ def test_thread():
 | 
			
		||||
     assert len(reader.threads) >= 1
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
+@pytest.mark.external
 | 
			
		||||
 def test_build_outline_item(caplog):
 | 
			
		||||
     url = "https://github.com/py-pdf/pypdf/files/9464742/shiv_resume.pdf"
 | 
			
		||||
     name = "shiv_resume.pdf"
 | 
			
		||||
@@ -1253,6 +1257,7 @@ def test_build_outline_item(caplog):
 | 
			
		||||
     assert "Unexpected destination 2" in exc.value.args[0]
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
+@pytest.mark.samples
 | 
			
		||||
 @pytest.mark.parametrize(
 | 
			
		||||
     ("src", "page_labels"),
 | 
			
		||||
     [
 | 
			
		||||
diff --git a/tests/test_writer.py b/tests/test_writer.py
 | 
			
		||||
index 60b4a17..20c4de0 100644
 | 
			
		||||
--- a/tests/test_writer.py
 | 
			
		||||
+++ b/tests/test_writer.py
 | 
			
		||||
@@ -930,6 +930,7 @@ def test_startup_dest():
 | 
			
		||||
     pdf_file_writer.open_destination = None
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
+@pytest.mark.external
 | 
			
		||||
 def test_iss471():
 | 
			
		||||
     url = "https://github.com/py-pdf/pypdf/files/9139245/book.pdf"
 | 
			
		||||
     name = "book_471.pdf"
 | 
			
		||||
@@ -942,6 +943,7 @@ def test_iss471():
 | 
			
		||||
     )
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
+@pytest.mark.external
 | 
			
		||||
 def test_reset_translation():
 | 
			
		||||
     url = "https://corpora.tika.apache.org/base/docs/govdocs1/924/924666.pdf"
 | 
			
		||||
     name = "tika-924666.pdf"
 | 
			
		||||
@@ -977,6 +979,7 @@ def test_threads_empty():
 | 
			
		||||
     assert thr == thr2
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
+@pytest.mark.external
 | 
			
		||||
 def test_append_without_annots_and_articles():
 | 
			
		||||
     url = "https://corpora.tika.apache.org/base/docs/govdocs1/924/924666.pdf"
 | 
			
		||||
     name = "tika-924666.pdf"
 | 
			
		||||
@@ -993,6 +996,7 @@ def test_append_without_annots_and_articles():
 | 
			
		||||
     assert len(writer.threads) >= 1
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
+@pytest.mark.external
 | 
			
		||||
 def test_append_multiple():
 | 
			
		||||
     url = "https://corpora.tika.apache.org/base/docs/govdocs1/924/924666.pdf"
 | 
			
		||||
     name = "tika-924666.pdf"
 | 
			
		||||
-- 
 | 
			
		||||
2.39.1
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1260,6 +1260,35 @@ documents that use the standard security handler.")
 | 
			
		|||
converter using the Poppler and Cairo libraries.")
 | 
			
		||||
    (license license:gpl2+)))
 | 
			
		||||
 | 
			
		||||
(define-public python-pypdf
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-pypdf")
 | 
			
		||||
    (version "3.2.1")
 | 
			
		||||
    (source (origin
 | 
			
		||||
              (method git-fetch)
 | 
			
		||||
              (uri (git-reference
 | 
			
		||||
                    (url "https://github.com/py-pdf/pypdf")
 | 
			
		||||
                    (commit version)))
 | 
			
		||||
              (file-name (git-file-name name version))
 | 
			
		||||
              (sha256
 | 
			
		||||
               (base32
 | 
			
		||||
                "1qwvjr694sabfblx22zd54b9ny40f2gbv3bv6q43myrlxwvvisk6"))
 | 
			
		||||
              (patches (search-patches
 | 
			
		||||
                        "python-pypdf-annotate-tests-appropriately.patch"))))
 | 
			
		||||
    (build-system pyproject-build-system)
 | 
			
		||||
    (native-inputs (list python-pytest python-flit))
 | 
			
		||||
    (propagated-inputs (list python-typing-extensions))
 | 
			
		||||
    (home-page "https://github.com/py-pdf/pypdf")
 | 
			
		||||
    (arguments
 | 
			
		||||
     (list
 | 
			
		||||
      ;; Disable tests that use the network and non-free assets.
 | 
			
		||||
      #:test-flags #~(list "-m" "not external and not samples")))
 | 
			
		||||
    (synopsis "Python PDF library")
 | 
			
		||||
    (description
 | 
			
		||||
     "This package provides a PDF library capable of splitting, merging,
 | 
			
		||||
cropping, and transforming PDF files.")
 | 
			
		||||
    (license license:bsd-3)))
 | 
			
		||||
 | 
			
		||||
(define-public python-pypdf2
 | 
			
		||||
  (package
 | 
			
		||||
    (name "python-pypdf2")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue