mercurial/revlog.py
changeset 51677 df6ce326936f
parent 51653 d6c895e4adc4
child 51690 493034cc3265
equal deleted inserted replaced
51676:031d66801d5f 51677:df6ce326936f
    20 import io
    20 import io
    21 import os
    21 import os
    22 import struct
    22 import struct
    23 import weakref
    23 import weakref
    24 import zlib
    24 import zlib
       
    25 
       
    26 from typing import (
       
    27     Optional,
       
    28     Tuple,
       
    29 )
    25 
    30 
    26 # import stuff from node for others to import from revlog
    31 # import stuff from node for others to import from revlog
    27 from .node import (
    32 from .node import (
    28     bin,
    33     bin,
    29     hex,
    34     hex,
   556             return None
   561             return None
   557         t = self._default_compression_header
   562         t = self._default_compression_header
   558         c = self._get_decompressor(t)
   563         c = self._get_decompressor(t)
   559         return c.decompress
   564         return c.decompress
   560 
   565 
   561     def _get_decompressor(self, t):
   566     def _get_decompressor(self, t: bytes):
   562         try:
   567         try:
   563             compressor = self._decompressors[t]
   568             compressor = self._decompressors[t]
   564         except KeyError:
   569         except KeyError:
   565             try:
   570             try:
   566                 engine = util.compengines.forrevlogheader(t)
   571                 engine = util.compengines.forrevlogheader(t)
   572                 raise error.RevlogError(
   577                 raise error.RevlogError(
   573                     _(b'unknown compression type %s') % binascii.hexlify(t)
   578                     _(b'unknown compression type %s') % binascii.hexlify(t)
   574                 )
   579                 )
   575         return compressor
   580         return compressor
   576 
   581 
   577     def compress(self, data):
   582     def compress(self, data: bytes) -> Tuple[bytes, bytes]:
   578         """Generate a possibly-compressed representation of data."""
   583         """Generate a possibly-compressed representation of data."""
   579         if not data:
   584         if not data:
   580             return b'', data
   585             return b'', data
   581 
   586 
   582         compressed = self._compressor.compress(data)
   587         compressed = self._compressor.compress(data)
   587 
   592 
   588         if data[0:1] == b'\0':
   593         if data[0:1] == b'\0':
   589             return b'', data
   594             return b'', data
   590         return b'u', data
   595         return b'u', data
   591 
   596 
   592     def decompress(self, data):
   597     def decompress(self, data: bytes):
   593         """Decompress a revlog chunk.
   598         """Decompress a revlog chunk.
   594 
   599 
   595         The chunk is expected to begin with a header identifying the
   600         The chunk is expected to begin with a header identifying the
   596         format type so it can be routed to an appropriate decompressor.
   601         format type so it can be routed to an appropriate decompressor.
   597         """
   602         """
  1293         _format_flags = header & ~0xFFFF
  1298         _format_flags = header & ~0xFFFF
  1294         _format_version = header & 0xFFFF
  1299         _format_version = header & 0xFFFF
  1295 
  1300 
  1296         features = FEATURES_BY_VERSION[_format_version]
  1301         features = FEATURES_BY_VERSION[_format_version]
  1297         return features[b'inline'](_format_flags)
  1302         return features[b'inline'](_format_flags)
       
  1303 
       
  1304     _docket_file: Optional[bytes]
  1298 
  1305 
  1299     def __init__(
  1306     def __init__(
  1300         self,
  1307         self,
  1301         opener,
  1308         opener,
  1302         target,
  1309         target,
  3079                 cachedelta,
  3086                 cachedelta,
  3080                 deltacomputer=deltacomputer,
  3087                 deltacomputer=deltacomputer,
  3081                 sidedata=sidedata,
  3088                 sidedata=sidedata,
  3082             )
  3089             )
  3083 
  3090 
  3084     def compress(self, data):
  3091     def compress(self, data: bytes) -> Tuple[bytes, bytes]:
  3085         return self._inner.compress(data)
  3092         return self._inner.compress(data)
  3086 
  3093 
  3087     def decompress(self, data):
  3094     def decompress(self, data):
  3088         return self._inner.decompress(data)
  3095         return self._inner.decompress(data)
  3089 
  3096