From e0ba031ab27478ebfd683487d179759f45a89f0d Mon Sep 17 00:00:00 2001 From: Hartmut Goebel Date: Sun, 19 Dec 2021 12:56:59 +0100 Subject: gnu: Add python-piexif. * gnu/packages/python-xyz.scm (python-piexif): New variable. * gnu/packages/patches/python-piexif-fix-tests-with-pillow-7.2.patch: New file. * gnu/packages/python-xyz.scm (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + .../python-piexif-fix-tests-with-pillow-7.2.patch | 44 ++++++++++++++++++++++ gnu/packages/python-xyz.scm | 22 +++++++++++ 3 files changed, 67 insertions(+) create mode 100644 gnu/packages/patches/python-piexif-fix-tests-with-pillow-7.2.patch diff --git a/gnu/local.mk b/gnu/local.mk index 0eed20e7af..8cc87ce66e 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1688,6 +1688,7 @@ dist_patch_DATA = \ %D%/packages/patches/python-pdoc3-tests.patch \ %D%/packages/patches/python-peachpy-determinism.patch \ %D%/packages/patches/python-pep8-stdlib-tokenize-compat.patch \ + %D%/packages/patches/python-piexif-fix-tests-with-pillow-7.2.patch \ %D%/packages/patches/python-pyfakefs-remove-bad-test.patch \ %D%/packages/patches/python-pyflakes-test-location.patch \ %D%/packages/patches/python-flint-includes.patch \ diff --git a/gnu/packages/patches/python-piexif-fix-tests-with-pillow-7.2.patch b/gnu/packages/patches/python-piexif-fix-tests-with-pillow-7.2.patch new file mode 100644 index 0000000000..caa2c47c08 --- /dev/null +++ b/gnu/packages/patches/python-piexif-fix-tests-with-pillow-7.2.patch @@ -0,0 +1,44 @@ +From 5209b53e9689ce28dcd045f384633378d619718f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jan=20Wi=C5=9Bniewski?= +Date: Thu, 5 Nov 2020 16:18:52 +0100 +Subject: [PATCH] convert IFDRational to tuples in tests + +This fixes tests with Pillow version >= 7.2.0 +--- + tests/s_test.py | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/tests/s_test.py b/tests/s_test.py +index 5d105de..a7cad54 100644 +--- a/tests/s_test.py ++++ b/tests/s_test.py +*************** +*** 9,14 **** +--- 9,15 ---- + import time + import unittest + ++ import PIL + from PIL import Image + import piexif + from piexif import _common, ImageIFD, ExifIFD, GPSIFD, TAGS, InvalidImageDataError +*************** +*** 580,585 **** +--- 581,597 ---- + # test utility methods---------------------------------------------- + + def _compare_value(self, v1, v2): ++ if isinstance(v2, PIL.TiffImagePlugin.IFDRational): ++ v2 = (v2.numerator, v2.denominator) ++ if isinstance(v2, tuple): ++ converted_v2 = [] ++ for el in v2: ++ if isinstance(el, PIL.TiffImagePlugin.IFDRational): ++ converted_v2.append((el.numerator, el.denominator)) ++ else: ++ converted_v2.append(el) ++ v2 = tuple(converted_v2) ++ + if type(v1) != type(v2): + if isinstance(v1, tuple): + self.assertEqual(pack_byte(*v1), v2) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 404ad8b9bc..2d994875e9 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -28319,3 +28319,25 @@ keyboard-friendly package.") "This package auto-generates API documentation from Python projects already existing modules and objects docstrings.") (license license:agpl3+))) + +(define-public python-piexif + (package + (name "python-piexif") + (version "1.1.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "piexif" version ".zip")) + (sha256 + (base32 "06sz58q4mrw472p8fbnq7wsj8zpi5js5r8phm2hiwfmz0v33bjw3")) + (patches + (search-patches "python-piexif-fix-tests-with-pillow-7.2.patch")))) + (build-system python-build-system) + (native-inputs + (list unzip python-pillow)) + (home-page "https://github.com/hMatoba/Piexif") + (synopsis "Simplify exif manipulations with Python") + (description "Piexif simplifies interacting with EXIF data in +Python. It includes the tools necessary for extracting, creating, +manipulating, converting and writing EXIF data to JPEG, WebP and TIFF files.") + (license license:expat))) -- cgit v1.2.3