From: Sergei Izmailov Date: Tue, 30 Jun 2020 13:25:28 +0000 (+0300) Subject: Adapt to Pillow 7.2 changes X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~cjwatson/git?a=commitdiff_plain;h=161add73e6fab7b15cb96ffd88af2793e514dfd8;p=blog.git Adapt to Pillow 7.2 changes --- 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: