hgext/remotefilelog/lz4wrapper.py
changeset 40507 e2a1584e9e3f
parent 40506 10c10da14c5d
child 40508 354acd0dc637
equal deleted inserted replaced
40506:10c10da14c5d 40507:e2a1584e9e3f
     1 from __future__ import absolute_import
       
     2 
       
     3 from mercurial.i18n import _
       
     4 from mercurial import (
       
     5     demandimport,
       
     6     error,
       
     7     util,
       
     8 )
       
     9 if util.safehasattr(demandimport, 'IGNORES'):
       
    10     # Since 670eb4fa1b86
       
    11     demandimport.IGNORES.update(['pkgutil', 'pkg_resources', '__main__'])
       
    12 else:
       
    13     demandimport.ignore.extend(['pkgutil', 'pkg_resources', '__main__'])
       
    14 
       
    15 def missing(*args, **kwargs):
       
    16     raise error.Abort(_('remotefilelog extension requires lz4 support'))
       
    17 
       
    18 lz4compress = lzcompresshc = lz4decompress = missing
       
    19 
       
    20 with demandimport.deactivated():
       
    21     import lz4
       
    22 
       
    23     try:
       
    24         # newer python-lz4 has these functions deprecated as top-level ones,
       
    25         # so we are trying to import from lz4.block first
       
    26         def _compressHC(*args, **kwargs):
       
    27             return lz4.block.compress(*args, mode='high_compression', **kwargs)
       
    28         lzcompresshc = _compressHC
       
    29         lz4compress = lz4.block.compress
       
    30         lz4decompress = lz4.block.decompress
       
    31     except AttributeError:
       
    32         try:
       
    33             lzcompresshc = lz4.compressHC
       
    34             lz4compress = lz4.compress
       
    35             lz4decompress = lz4.decompress
       
    36         except AttributeError:
       
    37             pass