From 0c70771006bd823a9d86155937a0b5c0579b4398 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Thu, 13 Aug 2020 11:18:38 +0200 Subject: [PATCH] geolocate: lift Pillow version limit (#44633) --- tox.ini | 2 +- wcs/wf/geolocate.py | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/tox.ini b/tox.ini index 14564d41..465c6155 100644 --- a/tox.ini +++ b/tox.ini @@ -29,7 +29,7 @@ deps = requests vobject qrcode - Pillow<7.2 + Pillow workalendar python-magic docutils diff --git a/wcs/wf/geolocate.py b/wcs/wf/geolocate.py index 5a097126..717a8b6f 100644 --- a/wcs/wf/geolocate.py +++ b/wcs/wf/geolocate.py @@ -20,6 +20,7 @@ import json try: from PIL import Image from PIL.ExifTags import TAGS, GPSTAGS + from PIL.TiffImagePlugin import IFDRational except ImportError: Image = None @@ -197,8 +198,13 @@ class GeolocateWorkflowStatusItem(WorkflowStatusItem): lon_ref = gps_info[3] except KeyError: lon_ref = 'E' - lat = (1.0*lat[0][0]/lat[0][1] + 1.0*lat[1][0]/lat[1][1]/60 + 1.0*lat[2][0]/lat[2][1]/3600) - lon = (1.0*lon[0][0]/lon[0][1] + 1.0*lon[1][0]/lon[1][1]/60 + 1.0*lon[2][0]/lon[2][1]/3600) + if isinstance(lat[0], IFDRational): + lat = (1.0 * lat[0] + 1.0 * lat[1]/60 + 1.0 * lat[2]/3600) + lon = (1.0 * lon[0] + 1.0 * lon[1]/60 + 1.0 * lon[2]/3600) + else: + # Pillow < 7.2 compat + lat = (1.0*lat[0][0]/lat[0][1] + 1.0*lat[1][0]/lat[1][1]/60 + 1.0*lat[2][0]/lat[2][1]/3600) + lon = (1.0*lon[0][0]/lon[0][1] + 1.0*lon[1][0]/lon[1][1]/60 + 1.0*lon[2][0]/lon[2][1]/3600) if lat_ref == 'S': lat = -lat if lon_ref == 'W': -- 2.20.1