From 4d59678dd38393fcdc2ef627ca717d5e87d0e744 Mon Sep 17 00:00:00 2001 From: Dana Powers Date: Sun, 8 Mar 2015 23:41:10 -0700 Subject: [PATCH] Gzip context manager not supported in py2.6, so use try/finally instead --- kafka/codec.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/kafka/codec.py b/kafka/codec.py index 7883158..56689ce 100644 --- a/kafka/codec.py +++ b/kafka/codec.py @@ -25,16 +25,31 @@ def has_snappy(): def gzip_encode(payload): with BytesIO() as buf: - with gzip.GzipFile(fileobj=buf, mode="w") as gzipper: + + # Gzip context manager introduced in python 2.6 + # so old-fashioned way until we decide to not support 2.6 + gzipper = gzip.GzipFile(fileobj=buf, mode="w") + try: gzipper.write(payload) + finally: + gzipper.close() + result = buf.getvalue() + return result def gzip_decode(payload): with BytesIO(payload) as buf: - with gzip.GzipFile(fileobj=buf, mode='r') as gzipper: + + # Gzip context manager introduced in python 2.6 + # so old-fashioned way until we decide to not support 2.6 + gzipper = gzip.GzipFile(fileobj=buf, mode='r') + try: result = gzipper.read() + finally: + gzipper.close() + return result