From 161add73e6fab7b15cb96ffd88af2793e514dfd8 Mon Sep 17 00:00:00 2001 From: Sergei Izmailov Date: Tue, 30 Jun 2020 16:25:28 +0300 Subject: [PATCH] Adapt to Pillow 7.2 changes --- plugins/m/images.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/plugins/m/images.py b/plugins/m/images.py index d155a026..1f2fad66 100644 --- a/plugins/m/images.py +++ b/plugins/m/images.py @@ -195,6 +195,14 @@ class Figure(Image): figure_node += nodes.legend('', *node[1:]) return [figure_node] +# Adapter to accommodate breaking change in Pillow 7.2 +# https://pillow.readthedocs.io/en/stable/releasenotes/7.2.0.html#moved-to-imagefiledirectory-v2-in-image-exif +def _to_numerator_denominator_tuple(ratio): + if isinstance(ratio, tuple): + return ratio + else: + return ratio.numerator, ratio.denominator + class ImageGrid(rst.Directive): has_content = True @@ -231,9 +239,10 @@ class ImageGrid(rst.Directive): # Not all info might be present caption = [] if 'FNumber' in exif: - caption += ["F{}".format(float(float(exif['FNumber'][0])/float(exif['FNumber'][1])))] + numerator, denominator = _to_numerator_denominator_tuple(exif['FNumber']) + caption += ["F{}".format(float(numerator)/float(denominator))] if 'ExposureTime' in exif: - numerator, denominator = exif['ExposureTime'] + numerator, denominator = _to_numerator_denominator_tuple(exif['ExposureTime']) if int(numerator) > int(denominator): caption += ["{} s".format(float(numerator)/float(denominator))] else: -- 2.30.2