chiark / gitweb /
Adapt to Pillow 7.2 changes
authorSergei Izmailov <sergei.a.izmailov@gmail.com>
Tue, 30 Jun 2020 13:25:28 +0000 (16:25 +0300)
committerVladimír Vondruš <mosra@centrum.cz>
Thu, 8 Oct 2020 11:12:54 +0000 (13:12 +0200)
plugins/m/images.py

index d155a026b88a971af01841505b1d8b41864f7e3c..1f2fad66a19104e25c369f75c81d79c09c0dcba2 100644 (file)
@@ -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: