From 9378fd5efe06ecb77c4c3e779b24577c260de224 Mon Sep 17 00:00:00 2001 From: Simon Conseil Date: Sun, 7 Feb 2021 19:48:48 -0300 Subject: [PATCH] Use Pillow's context manager --- sigal/plugins/watermark.py | 8 +++---- tests/test_image.py | 49 +++++++++++++++++++------------------- 2 files changed, 28 insertions(+), 29 deletions(-) diff --git a/sigal/plugins/watermark.py b/sigal/plugins/watermark.py index ffd150d..18987e8 100644 --- a/sigal/plugins/watermark.py +++ b/sigal/plugins/watermark.py @@ -86,10 +86,10 @@ def watermark(im, mark, position, opacity=1): def add_watermark(img, settings=None): logger = logging.getLogger(__name__) logger.debug('Adding watermark to %r', img) - mark = Image.open(settings['watermark']) - position = settings.get('watermark_position', 'scale') - opacity = settings.get("watermark_opacity", 1) - return watermark(img, mark, position, opacity) + with Image.open(settings['watermark']) as mark: + position = settings.get('watermark_position', 'scale') + opacity = settings.get("watermark_opacity", 1) + return watermark(img, mark, position, opacity) def register(settings): diff --git a/tests/test_image.py b/tests/test_image.py index a95f8b3..94fb425 100644 --- a/tests/test_image.py +++ b/tests/test_image.py @@ -41,8 +41,8 @@ def test_process_image(tmpdir): image = Image(TEST_IMAGE, '.', settings) status = process_image(image) assert status == Status.SUCCESS - im = PILImage.open(os.path.join(str(tmpdir), TEST_IMAGE)) - assert im.size == settings['img_size'] + with PILImage.open(os.path.join(str(tmpdir), TEST_IMAGE)) as im: + assert im.size == settings['img_size'] def test_generate_image(tmpdir): @@ -55,8 +55,8 @@ def test_generate_image(tmpdir): ) options = None if i == 0 else {'quality': 85} generate_image(SRCFILE, dstfile, settings, options=options) - im = PILImage.open(dstfile) - assert im.size == size + with PILImage.open(dstfile) as im: + assert im.size == size def test_generate_image_imgformat(tmpdir): @@ -72,8 +72,8 @@ def test_generate_image_imgformat(tmpdir): ) options = {'quality': 85} generate_image(SRCFILE, dstfile, settings, options=options) - im = PILImage.open(dstfile) - assert im.format == outfmt + with PILImage.open(dstfile) as im: + assert im.format == outfmt def test_resize_image_portrait(tmpdir): @@ -88,22 +88,21 @@ def test_resize_image_portrait(tmpdir): portrait_dst = str(tmpdir.join(portrait_image)) generate_image(portrait_src, portrait_dst, settings) - im = PILImage.open(portrait_dst) - - # In the default mode, PILKit resizes in a way to never make an image - # smaller than either of the lengths, the other is scaled accordingly. - # Hence we test that the shorter side has the smallest length. - assert im.size[0] == 200 - - landscape_image = 'KeckObservatory20071020.jpg' - landscape_src = os.path.join( - CURRENT_DIR, 'sample', 'pictures', 'dir2', landscape_image - ) - landscape_dst = str(tmpdir.join(landscape_image)) + with PILImage.open(portrait_dst) as im: + # In the default mode, PILKit resizes in a way to never make an image + # smaller than either of the lengths, the other is scaled accordingly. + # Hence we test that the shorter side has the smallest length. + assert im.size[0] == 200 + + landscape_image = 'KeckObservatory20071020.jpg' + landscape_src = os.path.join( + CURRENT_DIR, 'sample', 'pictures', 'dir2', landscape_image + ) + landscape_dst = str(tmpdir.join(landscape_image)) - generate_image(landscape_src, landscape_dst, settings) - im = PILImage.open(landscape_dst) - assert im.size[1] == 200 + generate_image(landscape_src, landscape_dst, settings) + with PILImage.open(landscape_dst) as im: + assert im.size[1] == 200 @pytest.mark.parametrize( @@ -157,13 +156,13 @@ def test_generate_thumbnail(tmpdir, image, path, wide_size, high_size): dstfile = str(tmpdir.join(image)) for size in [(200, 150), (150, 200)]: generate_thumbnail(path, dstfile, size) - im = PILImage.open(dstfile) - assert im.size == size + with PILImage.open(dstfile) as im: + assert im.size == size for size, thumb_size in [((200, 150), wide_size), ((150, 200), high_size)]: generate_thumbnail(path, dstfile, size, fit=False) - im = PILImage.open(dstfile) - assert im.size == thumb_size + with PILImage.open(dstfile) as im: + assert im.size == thumb_size def test_get_exif_tags():