From b44c5adb5d189bb691d12fed775d24a345a19a14 Mon Sep 17 00:00:00 2001 From: Luis G Date: Sun, 19 Jun 2016 21:39:31 -0300 Subject: [PATCH 1/2] Expose registered file extensions This adds a new method in Image (registered_extensions) that exposes the internal EXTENSION dictionary to consumers of the library --- PIL/Image.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/PIL/Image.py b/PIL/Image.py index 4ab40620f..e5543a7eb 100644 --- a/PIL/Image.py +++ b/PIL/Image.py @@ -2478,6 +2478,16 @@ def register_extension(id, extension): EXTENSION[extension.lower()] = id.upper() +def registered_extensions(): + """ + Returns a dictionary containing all file extensions belonging + to registered plugins + """ + if not bool(EXTENSION): + init() + return EXTENSION + + # -------------------------------------------------------------------- # Simple display support. User code may override this. From a8f88988beaca8dbeebb5a303bc0b9a1150c8988 Mon Sep 17 00:00:00 2001 From: Luis G Date: Mon, 20 Jun 2016 12:36:26 -0300 Subject: [PATCH 2/2] Add unit tests Add unit tests for registered_extensions --- Tests/test_image.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Tests/test_image.py b/Tests/test_image.py index a9c168fa7..a92715a49 100644 --- a/Tests/test_image.py +++ b/Tests/test_image.py @@ -184,6 +184,24 @@ class TestImage(PillowTestCase): img_colors = sorted(img.getcolors()) self.assertEqual(img_colors, expected_colors) + def test_registered_extensions_uninitialized(self): + # Act + ext = Image.registered_extensions() + + # Assert + self.assertEqual(bool(ext), True) + + def test_registered_extensions(self): + # Arrange + # Open an image to trigger plugin registration + Image.open('Tests/images/rgb.jpg') + + # Act + ext = Image.registered_extensions() + + # Assert + self.assertEqual(bool(ext), True) + def test_effect_mandelbrot(self): # Arrange size = (512, 512)