equal
deleted
inserted
replaced
30 'compenginewireprotosupport', |
30 'compenginewireprotosupport', |
31 ('name', 'serverpriority', 'clientpriority'), |
31 ('name', 'serverpriority', 'clientpriority'), |
32 ) |
32 ) |
33 |
33 |
34 |
34 |
35 class propertycache(object): |
35 class propertycache: |
36 def __init__(self, func): |
36 def __init__(self, func): |
37 self.func = func |
37 self.func = func |
38 self.name = func.__name__ |
38 self.name = func.__name__ |
39 |
39 |
40 def __get__(self, obj, type=None): |
40 def __get__(self, obj, type=None): |
45 def cachevalue(self, obj, value): |
45 def cachevalue(self, obj, value): |
46 # __dict__ assignment required to bypass __setattr__ (eg: repoview) |
46 # __dict__ assignment required to bypass __setattr__ (eg: repoview) |
47 obj.__dict__[self.name] = value |
47 obj.__dict__[self.name] = value |
48 |
48 |
49 |
49 |
50 class compressormanager(object): |
50 class compressormanager: |
51 """Holds registrations of various compression engines. |
51 """Holds registrations of various compression engines. |
52 |
52 |
53 This class essentially abstracts the differences between compression |
53 This class essentially abstracts the differences between compression |
54 engines to allow new compression formats to be added easily, possibly from |
54 engines to allow new compression formats to be added easily, possibly from |
55 extensions. |
55 extensions. |
217 |
217 |
218 |
218 |
219 compengines = compressormanager() |
219 compengines = compressormanager() |
220 |
220 |
221 |
221 |
222 class compressionengine(object): |
222 class compressionengine: |
223 """Base class for compression engines. |
223 """Base class for compression engines. |
224 |
224 |
225 Compression engines must implement the interface defined by this class. |
225 Compression engines must implement the interface defined by this class. |
226 """ |
226 """ |
227 |
227 |
336 The object is reusable but is not thread safe. |
336 The object is reusable but is not thread safe. |
337 """ |
337 """ |
338 raise NotImplementedError() |
338 raise NotImplementedError() |
339 |
339 |
340 |
340 |
341 class _CompressedStreamReader(object): |
341 class _CompressedStreamReader: |
342 def __init__(self, fh): |
342 def __init__(self, fh): |
343 if safehasattr(fh, 'unbufferedread'): |
343 if safehasattr(fh, 'unbufferedread'): |
344 self._reader = fh.unbufferedread |
344 self._reader = fh.unbufferedread |
345 else: |
345 else: |
346 self._reader = fh.read |
346 self._reader = fh.read |
480 yield z.flush() |
480 yield z.flush() |
481 |
481 |
482 def decompressorreader(self, fh): |
482 def decompressorreader(self, fh): |
483 return _GzipCompressedStreamReader(fh) |
483 return _GzipCompressedStreamReader(fh) |
484 |
484 |
485 class zlibrevlogcompressor(object): |
485 class zlibrevlogcompressor: |
486 def __init__(self, level=None): |
486 def __init__(self, level=None): |
487 self._level = level |
487 self._level = level |
488 |
488 |
489 def compress(self, data): |
489 def compress(self, data): |
490 insize = len(data) |
490 insize = len(data) |
624 return it |
624 return it |
625 |
625 |
626 def decompressorreader(self, fh): |
626 def decompressorreader(self, fh): |
627 return fh |
627 return fh |
628 |
628 |
629 class nooprevlogcompressor(object): |
629 class nooprevlogcompressor: |
630 def compress(self, data): |
630 def compress(self, data): |
631 return None |
631 return None |
632 |
632 |
633 def revlogcompressor(self, opts=None): |
633 def revlogcompressor(self, opts=None): |
634 return self.nooprevlogcompressor() |
634 return self.nooprevlogcompressor() |
696 yield z.flush() |
696 yield z.flush() |
697 |
697 |
698 def decompressorreader(self, fh): |
698 def decompressorreader(self, fh): |
699 return _ZstdCompressedStreamReader(fh, self._module) |
699 return _ZstdCompressedStreamReader(fh, self._module) |
700 |
700 |
701 class zstdrevlogcompressor(object): |
701 class zstdrevlogcompressor: |
702 def __init__(self, zstd, level=3): |
702 def __init__(self, zstd, level=3): |
703 # TODO consider omitting frame magic to save 4 bytes. |
703 # TODO consider omitting frame magic to save 4 bytes. |
704 # This writes content sizes into the frame header. That is |
704 # This writes content sizes into the frame header. That is |
705 # extra storage. But it allows a correct size memory allocation |
705 # extra storage. But it allows a correct size memory allocation |
706 # to hold the result. |
706 # to hold the result. |
780 # help.makeitemsdocs() expects a dict of names to items with a .__doc__. |
780 # help.makeitemsdocs() expects a dict of names to items with a .__doc__. |
781 items = {} |
781 items = {} |
782 |
782 |
783 # We need to format the docstring. So use a dummy object/type to hold it |
783 # We need to format the docstring. So use a dummy object/type to hold it |
784 # rather than mutating the original. |
784 # rather than mutating the original. |
785 class docobject(object): |
785 class docobject: |
786 pass |
786 pass |
787 |
787 |
788 for name in compengines: |
788 for name in compengines: |
789 engine = compengines[name] |
789 engine = compengines[name] |
790 |
790 |