Merge pull request #2793 from radarhere/contextmanager

Added context manager support
This commit is contained in:
wiredfool 2017-10-14 14:08:39 +01:00 committed by GitHub
commit 7d8c0d9e39
4 changed files with 24 additions and 12 deletions

View File

@ -420,6 +420,12 @@ class Parser(object):
self.image = im self.image = im
def __enter__(self):
return self
def __exit__(self, *args):
self.close()
def close(self): def close(self):
""" """
(Consumer) Close the stream. (Consumer) Close the stream.

View File

@ -118,6 +118,12 @@ class ChunkStream(object):
return cid, pos, length return cid, pos, length
def __enter__(self):
return self
def __exit__(self, *args):
self.close()
def close(self): def close(self):
self.queue = self.crc = self.fp = None self.queue = self.crc = self.fp = None

View File

@ -504,15 +504,15 @@ class TestFilePng(PillowTestCase):
chunks = [] chunks = []
with open(test_file, "rb") as fp: with open(test_file, "rb") as fp:
fp.read(8) fp.read(8)
png = PngImagePlugin.PngStream(fp) with PngImagePlugin.PngStream(fp) as png:
while True: while True:
cid, pos, length = png.read() cid, pos, length = png.read()
chunks.append(cid) chunks.append(cid)
try: try:
s = png.call(cid, pos, length) s = png.call(cid, pos, length)
except EOFError: except EOFError:
break break
png.crc(cid, s) png.crc(cid, s)
# https://www.w3.org/TR/PNG/#5ChunkOrdering # https://www.w3.org/TR/PNG/#5ChunkOrdering
# IHDR - shall be first # IHDR - shall be first

View File

@ -74,9 +74,9 @@ class TestImageFile(PillowTestCase):
def test_ico(self): def test_ico(self):
with open('Tests/images/python.ico', 'rb') as f: with open('Tests/images/python.ico', 'rb') as f:
data = f.read() data = f.read()
p = ImageFile.Parser() with ImageFile.Parser() as p:
p.feed(data) p.feed(data)
self.assertEqual((48, 48), p.image.size) self.assertEqual((48, 48), p.image.size)
def test_safeblock(self): def test_safeblock(self):
if "zip_encoder" not in codecs: if "zip_encoder" not in codecs: