sapling/hgext/remotefilelog/lz4wrapper.py
Jun Wu cc33c003c2 lz4: import lz4.block
Summary:
`lz4.block` needs to be imported explicitly before being able to
use `lz4.block.compress`.

We didn't notice this because we're using an old version of
`python-lz4`.

Reviewed By: DurhamG

Differential Revision: D6879877

fbshipit-source-id: 37e8fdc00386bef3733753f925ad308f42e5a740
2018-04-13 21:51:01 -07:00

29 lines
907 B
Python

from __future__ import absolute_import
from mercurial import error
from mercurial.i18n import _
import lz4
def missing(*args, **kwargs):
raise error.Abort(_('remotefilelog extension requires lz4 support'))
lz4compress = lzcompresshc = lz4decompress = missing
try:
# newer python-lz4 has these functions deprecated as top-level ones,
# so we are trying to import from lz4.block first
import lz4.block
def _compressHC(*args, **kwargs):
return lz4.block.compress(*args, mode='high_compression', **kwargs)
lzcompresshc = _compressHC
lz4compress = lz4.block.compress
lz4decompress = lz4.block.decompress
except (AttributeError, ImportError):
# ImportError is possible due to DemandImport
try:
lzcompresshc = lz4.compressHC
lz4compress = lz4.compress
lz4decompress = lz4.decompress
except (AttributeError, ImportError):
pass