Index: gzip.py =================================================================== --- gzip.py (revision 65380) +++ gzip.py (working copy) @@ -8,6 +8,7 @@ import struct, sys, time import zlib import builtins +import io __all__ = ["GzipFile","open"] @@ -459,7 +460,26 @@ else: raise StopIteration +def compress(data, compresslevel=9) -> "compressed data": + """ Compress data in one shot. Returns the compressed string. + Optional argument is the compression level, in 1-9. """ + + if type(data) is str: + raise TypeError("argument 1 must be bytes or read-only buffer, not str") + + bf = io.BytesIO(b'') + f = GzipFile(fileobj=bf, mode='wb', compresslevel=compresslevel) + f.write(data) + f.close() + return bf.getvalue() + +def decompress(data) -> "decompressed data": + """ Decompress data in one shot. Returns the decompressed data. """ + + f = GzipFile(fileobj = io.BytesIO(data)) + return f.read() + def _test(): # Act like gzip; with -d, act like gunzip. # The input file is not deleted, however, nor are any other gzip