[PATCH 11 of 11] util: remove compressorobj API from compression engines

Gregory Szorc gregory.szorc at gmail.com
Tue Nov 1 20:08:44 EDT 2016


# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1477160459 25200
#      Sat Oct 22 11:20:59 2016 -0700
# Node ID 4f491f7958229b370c5929d2e2599b9ed69d8254
# Parent  fc426af4f25c3403703e913ccb4a6865865fcb02
util: remove compressorobj API from compression engines

It was quite low-level and there are no callers of it now that
everyone is using compressstream()

diff --git a/mercurial/util.py b/mercurial/util.py
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -2884,22 +2884,16 @@ class compressormanager(object):
 
         The passed compression engine is an object with attributes describing
         behavior and methods performing well-defined actions. The following
         attributes are recognized (all are optional):
 
         * bundletype -- Attribute containing the identifier of this compression
           format as used by bundles.
 
-        * compressorobj -- Method returning an object with ``compress(data)``
-          and ``flush()`` methods. This object and these methods are used to
-          incrementally feed data (presumably uncompressed) chunks into a
-          compressor. Calls to these methods return compressed bytes, which
-          may be 0-length if there is no output for the operation.
-
         * compressstream -- Compress an iterator of chunks and return an
           iterator of compressed chunks.
 
           Optionally accepts an argument defining how to perform compression.
           Each engine treats this argument differently.
 
         * decompressorreader -- Method that is used to perform decompression
           on a file object. Argument is an object with a ``read(size)`` method
@@ -2928,19 +2922,16 @@ class compressormanager(object):
 
 compressionengines = compressormanager()
 
 class _zlibengine(object):
     @property
     def bundletype(self):
         return 'GZ'
 
-    def compressorobj(self):
-        return zlib.compressobj()
-
     def compressstream(self, it, opts=None):
         opts = opts or {}
 
         z = zlib.compressobj(opts.get('level', -1))
         for chunk in it:
             data = z.compress(chunk)
             # Not all calls to compress emit data. It is cheaper to inspect
             # here than to feed empty chunks through generator.
@@ -2959,19 +2950,16 @@ class _zlibengine(object):
 
 compressionengines.register('zlib', _zlibengine())
 
 class _bz2engine(object):
     @property
     def bundletype(self):
         return 'BZ'
 
-    def compressorobj(self):
-        return bz2.BZ2Compressor()
-
     def compressstream(self, it, opts=None):
         opts = opts or {}
         z = bz2.BZ2Compressor(opts.get('level', 9))
         for chunk in it:
             data = z.compress(chunk)
             if data:
                 yield data
 
@@ -2987,45 +2975,35 @@ class _bz2engine(object):
 
 compressionengines.register('bz2', _bz2engine())
 
 class _truncatedbz2engine(object):
     @property
     def bundletype(self):
         return '_truncatedBZ'
 
-    # We don't implement compressorobj because it is hackily handled elsewhere.
+    # We don't implement compressstream because it is hackily handled elsewhere.
 
     def decompressorreader(self, fh):
         def gen():
             # The input stream doesn't have the 'BZ' header. So add it back.
             d = bz2.BZ2Decompressor()
             d.decompress('BZ')
             for chunk in filechunkiter(fh):
                 yield d.decompress(chunk)
 
         return chunkbuffer(gen())
 
 compressionengines.register('bz2truncated', _truncatedbz2engine())
 
-class nocompress(object):
-    def compress(self, x):
-        return x
-
-    def flush(self):
-        return ''
-
 class _noopengine(object):
     @property
     def bundletype(self):
         return 'UN'
 
-    def compressorobj(self):
-        return nocompress()
-
     def compressstream(self, it, opts=None):
         return it
 
     def decompressorreader(self, fh):
         return fh
 
 compressionengines.register('none', _noopengine())
 


More information about the Mercurial-devel mailing list