From d32117758966fe61b6a5ea83fd846921dbee4cfd Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 2 Dec 2015 16:09:47 +1100 Subject: [PATCH 1/9] Removed undefined variable --- Tests/test_imagewin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/test_imagewin.py b/Tests/test_imagewin.py index 14cc2c7e3..c4a8b28e4 100644 --- a/Tests/test_imagewin.py +++ b/Tests/test_imagewin.py @@ -114,7 +114,7 @@ class TestImageWinDib(PillowTestCase): # Act/Assert self.assertRaises(Exception, dib.tostring) - self.assertRaises(Exception, lambda: dib.fromstring(test_buffer)) + self.assertRaises(Exception, dib.fromstring) if __name__ == '__main__': From 4ab0cbb5ba2e55a2feac520260511ddfe3198f34 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 2 Dec 2015 16:15:12 +1100 Subject: [PATCH 2/9] Removed unused variable --- Tests/test_imagewin_pointers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/test_imagewin_pointers.py b/Tests/test_imagewin_pointers.py index f8886f55b..2d47014f3 100644 --- a/Tests/test_imagewin_pointers.py +++ b/Tests/test_imagewin_pointers.py @@ -104,7 +104,7 @@ if sys.platform.startswith('win32'): DeleteObject(dib) DeleteDC(hdc) - reloaded = Image.open(BytesIO(bitmap)).save(opath) + Image.open(BytesIO(bitmap)).save(opath) if __name__ == '__main__': unittest.main() From e9a6a96053b9801900c8122e57632f1febf7136e Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 2 Dec 2015 16:23:49 +1100 Subject: [PATCH 3/9] Specified exception type --- PIL/EpsImagePlugin.py | 2 +- PIL/GifImagePlugin.py | 2 +- PIL/IptcImagePlugin.py | 2 +- PIL/JpegImagePlugin.py | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/PIL/EpsImagePlugin.py b/PIL/EpsImagePlugin.py index fb5bf7ffe..ca3c169bd 100644 --- a/PIL/EpsImagePlugin.py +++ b/PIL/EpsImagePlugin.py @@ -151,7 +151,7 @@ def Ghostscript(tile, size, fp, scale=1): os.unlink(outfile) if infile_temp: os.unlink(infile_temp) - except: + except OSError: pass return im diff --git a/PIL/GifImagePlugin.py b/PIL/GifImagePlugin.py index 83169bf21..391ddd332 100644 --- a/PIL/GifImagePlugin.py +++ b/PIL/GifImagePlugin.py @@ -518,7 +518,7 @@ def _save_netpbm(im, fp, filename): try: os.unlink(file) - except: + except OSError: pass diff --git a/PIL/IptcImagePlugin.py b/PIL/IptcImagePlugin.py index b5aa84bad..56d1de424 100644 --- a/PIL/IptcImagePlugin.py +++ b/PIL/IptcImagePlugin.py @@ -179,7 +179,7 @@ class IptcImageFile(ImageFile.ImageFile): finally: try: os.unlink(outfile) - except: + except OSError: pass diff --git a/PIL/JpegImagePlugin.py b/PIL/JpegImagePlugin.py index 577951961..8d25ffe66 100644 --- a/PIL/JpegImagePlugin.py +++ b/PIL/JpegImagePlugin.py @@ -379,7 +379,7 @@ class JpegImageFile(ImageFile.ImageFile): finally: try: os.unlink(path) - except: + except OSError: pass self.mode = self.im.mode @@ -699,7 +699,7 @@ def _save_cjpeg(im, fp, filename): subprocess.check_call(["cjpeg", "-outfile", filename, tempfile]) try: os.unlink(tempfile) - except: + except OSError: pass From 560774e3e0f16c55375a8c37eeea38eb6a83ae3b Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 2 Dec 2015 16:29:01 +1100 Subject: [PATCH 4/9] Removed unreachable code --- PIL/ImageMorph.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/PIL/ImageMorph.py b/PIL/ImageMorph.py index 44a7e8c04..902ed8db7 100644 --- a/PIL/ImageMorph.py +++ b/PIL/ImageMorph.py @@ -200,7 +200,6 @@ class MorphOp(object): if image.mode != 'L': raise Exception('Image must be binary, meaning it must use mode L') - return outimage = Image.new(image.mode, image.size, None) count = _imagingmorph.apply( bytes(self.lut), image.im.id, outimage.im.id) @@ -217,7 +216,6 @@ class MorphOp(object): if image.mode != 'L': raise Exception('Image must be binary, meaning it must use mode L') - return return _imagingmorph.match(bytes(self.lut), image.im.id) def get_on_pixels(self, image): @@ -228,7 +226,6 @@ class MorphOp(object): if image.mode != 'L': raise Exception('Image must be binary, meaning it must use mode L') - return return _imagingmorph.get_on_pixels(image.im.id) def load_lut(self, filename): From 82c7ea8489b4a6c618cc674fa8f16bd6c36d1719 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 2 Dec 2015 16:32:44 +1100 Subject: [PATCH 5/9] Changed string format argument to logger parameter --- PIL/Image.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PIL/Image.py b/PIL/Image.py index caa66ea0d..af6dac1c4 100644 --- a/PIL/Image.py +++ b/PIL/Image.py @@ -550,7 +550,7 @@ class Image(object): try: self.fp.close() except Exception as msg: - logger.debug("Error closing: %s" % msg) + logger.debug("Error closing: %s", msg) # Instead of simply setting to None, we're setting up a # deferred error that will better explain that the core image From a9efd7ad98aa1ae0a511b2fb098f2f277745246b Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 2 Dec 2015 16:37:50 +1100 Subject: [PATCH 6/9] Stopped modules from importing themselves --- PIL/ImageCms.py | 6 ++---- selftest.py | 3 +-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/PIL/ImageCms.py b/PIL/ImageCms.py index ebf127df3..ba5504acb 100644 --- a/PIL/ImageCms.py +++ b/PIL/ImageCms.py @@ -16,6 +16,7 @@ # below for the original description. from __future__ import print_function +import sys DESCRIPTION = """ pyCMS @@ -240,7 +241,6 @@ def get_display_profile(handle=None): :returns: None if the profile is not known. """ - import sys if sys.platform == "win32": from PIL import ImageWin if isinstance(handle, ImageWin.HDC): @@ -943,7 +943,6 @@ def versions(): (pyCMS) Fetches versions. """ - import sys return ( VERSION, core.littlecms_version, sys.version.split()[0], Image.VERSION @@ -954,10 +953,9 @@ def versions(): if __name__ == "__main__": # create a cheap manual from the __doc__ strings for the functions above - from PIL import ImageCms print(__doc__) - for f in dir(ImageCms): + for f in dir(sys.modules[__name__]): doc = None try: exec("doc = %s.__doc__" % (f)) diff --git a/selftest.py b/selftest.py index 4ffae3a16..71f2354f8 100644 --- a/selftest.py +++ b/selftest.py @@ -206,9 +206,8 @@ if __name__ == "__main__": # use doctest to make sure the test program behaves as documented! import doctest - import selftest print("Running selftest:") - status = doctest.testmod(selftest) + status = doctest.testmod(sys.modules[__name__]) if status[0]: print("*** %s tests of %d failed." % status) exit_status = 1 From 674515d568e6f9b103a8aa3bc61f1e3e4593001b Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 2 Dec 2015 16:41:26 +1100 Subject: [PATCH 7/9] Changed lines to be below 80 characters --- Scripts/pildriver.py | 9 ++++++--- Tests/check_jpeg_leaks.py | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Scripts/pildriver.py b/Scripts/pildriver.py index 32989ccdf..69c90ad4b 100644 --- a/Scripts/pildriver.py +++ b/Scripts/pildriver.py @@ -152,7 +152,8 @@ class PILDriver(object): self.push(Image.composite(image1, image2, mask)) def do_merge(self): - """usage: merge [ [ []]] + """usage: merge + [ [ []]] Merge top-of stack images in a way described by the mode. """ @@ -181,7 +182,8 @@ class PILDriver(object): self.dup() def do_crop(self): - """usage: crop + """usage: crop + Crop and push a rectangular region from the current image. """ @@ -243,7 +245,8 @@ class PILDriver(object): self.push(image.offset(xoff, yoff)) def do_paste(self): - """usage: paste + """usage: paste + Paste figure image into ground with upper left at given offsets. """ diff --git a/Tests/check_jpeg_leaks.py b/Tests/check_jpeg_leaks.py index 1d05cd975..7df2dfcc4 100644 --- a/Tests/check_jpeg_leaks.py +++ b/Tests/check_jpeg_leaks.py @@ -6,7 +6,8 @@ iterations = 5000 """ -When run on a system without the jpeg leak fixes, the valgrind runs look like this. +When run on a system without the jpeg leak fixes, +the valgrind runs look like this. NOSE_PROCESSES=0 NOSE_TIMEOUT=600 valgrind --tool=massif \ python test-installed.py -s -v Tests/check_jpeg_leaks.py From 407aa77db4f7142e52a512443b13453e849dd9a6 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 2 Dec 2015 16:49:30 +1100 Subject: [PATCH 8/9] Removed unnecessary lambda --- Tests/test_file_tiff.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/test_file_tiff.py b/Tests/test_file_tiff.py index 719888619..a191793e3 100644 --- a/Tests/test_file_tiff.py +++ b/Tests/test_file_tiff.py @@ -110,7 +110,7 @@ class TestFileTiff(PillowTestCase): def test_bad_exif(self): i = Image.open('Tests/images/hopper_bad_exif.jpg') try: - self.assert_warning(UserWarning, lambda: i._getexif()) + self.assert_warning(UserWarning, i._getexif) except struct.error: self.fail( "Bad EXIF data passed incorrect values to _binary unpack") From 806df2e7db952a079dee288b4b67230434011d5e Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 2 Dec 2015 16:55:50 +1100 Subject: [PATCH 9/9] Removed unused argument --- Tests/test_imagesequence.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Tests/test_imagesequence.py b/Tests/test_imagesequence.py index 3bd6dc582..9e18192ee 100644 --- a/Tests/test_imagesequence.py +++ b/Tests/test_imagesequence.py @@ -24,7 +24,7 @@ class TestImageSequence(PillowTestCase): self.assertRaises(AttributeError, lambda: ImageSequence.Iterator(0)) - def _test_multipage_tiff(self, dbg=False): + def _test_multipage_tiff(self): im = Image.open('Tests/images/multipage.tiff') for index, frame in enumerate(ImageSequence.Iterator(im)): frame.load() @@ -32,8 +32,7 @@ class TestImageSequence(PillowTestCase): frame.convert('RGB') def test_tiff(self): - # self._test_multipage_tiff(True) - self._test_multipage_tiff(False) + self._test_multipage_tiff() def test_libtiff(self): codecs = dir(Image.core) @@ -42,8 +41,7 @@ class TestImageSequence(PillowTestCase): self.skipTest("tiff support not available") TiffImagePlugin.READ_LIBTIFF = True - # self._test_multipage_tiff(True) - self._test_multipage_tiff(False) + self._test_multipage_tiff() TiffImagePlugin.READ_LIBTIFF = False if __name__ == '__main__':