Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/util.py @ 49037:642e31cb55f0
py3: use class X: instead of class X(object):
The inheritance from object is implied in Python 3. So this should
be equivalent.
This change was generated via an automated search and replace. So there
may have been some accidental changes.
Differential Revision: https://phab.mercurial-scm.org/D12352
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 21 Feb 2022 13:08:28 -0700 |
parents | 2974cdda819b |
children | 225659936fff |
comparison
equal
deleted
inserted
replaced
49036:55d132525155 | 49037:642e31cb55f0 |
---|---|
229 | 229 |
230 for k in DIGESTS_BY_STRENGTH: | 230 for k in DIGESTS_BY_STRENGTH: |
231 assert k in DIGESTS | 231 assert k in DIGESTS |
232 | 232 |
233 | 233 |
234 class digester(object): | 234 class digester: |
235 """helper to compute digests. | 235 """helper to compute digests. |
236 | 236 |
237 This helper can be used to compute one or more digests given their name. | 237 This helper can be used to compute one or more digests given their name. |
238 | 238 |
239 >>> d = digester([b'md5', b'sha1']) | 239 >>> d = digester([b'md5', b'sha1']) |
277 if k in supported: | 277 if k in supported: |
278 return k | 278 return k |
279 return None | 279 return None |
280 | 280 |
281 | 281 |
282 class digestchecker(object): | 282 class digestchecker: |
283 """file handle wrapper that additionally checks content against a given | 283 """file handle wrapper that additionally checks content against a given |
284 size and digests. | 284 size and digests. |
285 | 285 |
286 d = digestchecker(fh, size, {'md5': '...'}) | 286 d = digestchecker(fh, size, {'md5': '...'}) |
287 | 287 |
327 | 327 |
328 | 328 |
329 _chunksize = 4096 | 329 _chunksize = 4096 |
330 | 330 |
331 | 331 |
332 class bufferedinputpipe(object): | 332 class bufferedinputpipe: |
333 """a manually buffered input pipe | 333 """a manually buffered input pipe |
334 | 334 |
335 Python will not let us use buffered IO and lazy reading with 'polling' at | 335 Python will not let us use buffered IO and lazy reading with 'polling' at |
336 the same time. We cannot probe the buffer state and select will not detect | 336 the same time. We cannot probe the buffer state and select will not detect |
337 that data are ready to read if they are already buffered. | 337 that data are ready to read if they are already buffered. |
455 if os.fstat(fd).st_size == 0: | 455 if os.fstat(fd).st_size == 0: |
456 return b'' | 456 return b'' |
457 raise | 457 raise |
458 | 458 |
459 | 459 |
460 class fileobjectproxy(object): | 460 class fileobjectproxy: |
461 """A proxy around file objects that tells a watcher when events occur. | 461 """A proxy around file objects that tells a watcher when events occur. |
462 | 462 |
463 This type is intended to only be used for testing purposes. Think hard | 463 This type is intended to only be used for testing purposes. Think hard |
464 before using it in important code. | 464 before using it in important code. |
465 """ | 465 """ |
691 'gettimeout', | 691 'gettimeout', |
692 'setsockopt', | 692 'setsockopt', |
693 } | 693 } |
694 | 694 |
695 | 695 |
696 class socketproxy(object): | 696 class socketproxy: |
697 """A proxy around a socket that tells a watcher when events occur. | 697 """A proxy around a socket that tells a watcher when events occur. |
698 | 698 |
699 This is like ``fileobjectproxy`` except for sockets. | 699 This is like ``fileobjectproxy`` except for sockets. |
700 | 700 |
701 This type is intended to only be used for testing purposes. Think hard | 701 This type is intended to only be used for testing purposes. Think hard |
814 return object.__getattribute__(self, '_observedcall')( | 814 return object.__getattribute__(self, '_observedcall')( |
815 'setsockopt', *args, **kwargs | 815 'setsockopt', *args, **kwargs |
816 ) | 816 ) |
817 | 817 |
818 | 818 |
819 class baseproxyobserver(object): | 819 class baseproxyobserver: |
820 def __init__(self, fh, name, logdata, logdataapis): | 820 def __init__(self, fh, name, logdata, logdataapis): |
821 self.fh = fh | 821 self.fh = fh |
822 self.name = name | 822 self.name = name |
823 self.logdata = logdata | 823 self.logdata = logdata |
824 self.logdataapis = logdataapis | 824 self.logdataapis = logdataapis |
1254 return cache[args] | 1254 return cache[args] |
1255 | 1255 |
1256 return f | 1256 return f |
1257 | 1257 |
1258 | 1258 |
1259 class cow(object): | 1259 class cow: |
1260 """helper class to make copy-on-write easier | 1260 """helper class to make copy-on-write easier |
1261 | 1261 |
1262 Call preparewrite before doing any writes. | 1262 Call preparewrite before doing any writes. |
1263 """ | 1263 """ |
1264 | 1264 |
1347 | 1347 |
1348 Be sure to call d = d.preparewrite() before writing to d. | 1348 Be sure to call d = d.preparewrite() before writing to d. |
1349 """ | 1349 """ |
1350 | 1350 |
1351 | 1351 |
1352 class transactional(object): # pytype: disable=ignored-metaclass | 1352 class transactional: # pytype: disable=ignored-metaclass |
1353 """Base class for making a transactional type into a context manager.""" | 1353 """Base class for making a transactional type into a context manager.""" |
1354 | 1354 |
1355 __metaclass__ = abc.ABCMeta | 1355 __metaclass__ = abc.ABCMeta |
1356 | 1356 |
1357 @abc.abstractmethod | 1357 @abc.abstractmethod |
1398 @contextlib.contextmanager | 1398 @contextlib.contextmanager |
1399 def nullcontextmanager(enter_result=None): | 1399 def nullcontextmanager(enter_result=None): |
1400 yield enter_result | 1400 yield enter_result |
1401 | 1401 |
1402 | 1402 |
1403 class _lrucachenode(object): | 1403 class _lrucachenode: |
1404 """A node in a doubly linked list. | 1404 """A node in a doubly linked list. |
1405 | 1405 |
1406 Holds a reference to nodes on either side as well as a key-value | 1406 Holds a reference to nodes on either side as well as a key-value |
1407 pair for the dictionary entry. | 1407 pair for the dictionary entry. |
1408 """ | 1408 """ |
1422 self.key = _notset | 1422 self.key = _notset |
1423 self.value = None | 1423 self.value = None |
1424 self.cost = 0 | 1424 self.cost = 0 |
1425 | 1425 |
1426 | 1426 |
1427 class lrucachedict(object): | 1427 class lrucachedict: |
1428 """Dict that caches most recent accesses and sets. | 1428 """Dict that caches most recent accesses and sets. |
1429 | 1429 |
1430 The dict consists of an actual backing dict - indexed by original | 1430 The dict consists of an actual backing dict - indexed by original |
1431 key - and a doubly linked circular list defining the order of entries in | 1431 key - and a doubly linked circular list defining the order of entries in |
1432 the cache. | 1432 the cache. |
1753 return cache[args] | 1753 return cache[args] |
1754 | 1754 |
1755 return f | 1755 return f |
1756 | 1756 |
1757 | 1757 |
1758 class propertycache(object): | 1758 class propertycache: |
1759 def __init__(self, func): | 1759 def __init__(self, func): |
1760 self.func = func | 1760 self.func = func |
1761 self.name = func.__name__ | 1761 self.name = func.__name__ |
1762 | 1762 |
1763 def __get__(self, obj, type=None): | 1763 def __get__(self, obj, type=None): |
2212 _re2 = None | 2212 _re2 = None |
2213 except ImportError: | 2213 except ImportError: |
2214 _re2 = False | 2214 _re2 = False |
2215 | 2215 |
2216 | 2216 |
2217 class _re(object): | 2217 class _re: |
2218 def _checkre2(self): | 2218 def _checkre2(self): |
2219 global _re2 | 2219 global _re2 |
2220 global _re2_input | 2220 global _re2_input |
2221 | 2221 |
2222 check_pattern = br'\[([^\[]+)\]' | 2222 check_pattern = br'\[([^\[]+)\]' |
2414 pass | 2414 pass |
2415 raise | 2415 raise |
2416 return temp | 2416 return temp |
2417 | 2417 |
2418 | 2418 |
2419 class filestat(object): | 2419 class filestat: |
2420 """help to exactly detect change of a file | 2420 """help to exactly detect change of a file |
2421 | 2421 |
2422 'stat' attribute is result of 'os.stat()' if specified 'path' | 2422 'stat' attribute is result of 'os.stat()' if specified 'path' |
2423 exists. Otherwise, it is None. This can avoid preparative | 2423 exists. Otherwise, it is None. This can avoid preparative |
2424 'exists()' examination on client side of this class. | 2424 'exists()' examination on client side of this class. |
2520 | 2520 |
2521 def __ne__(self, other): | 2521 def __ne__(self, other): |
2522 return not self == other | 2522 return not self == other |
2523 | 2523 |
2524 | 2524 |
2525 class atomictempfile(object): | 2525 class atomictempfile: |
2526 """writable file object that atomically updates a file | 2526 """writable file object that atomically updates a file |
2527 | 2527 |
2528 All writes will go to a temporary copy of the original file. Call | 2528 All writes will go to a temporary copy of the original file. Call |
2529 close() when you are done writing, and atomictempfile will rename | 2529 close() when you are done writing, and atomictempfile will rename |
2530 the temporary copy to the original name, making the changes | 2530 the temporary copy to the original name, making the changes |
2663 # type: (bytes, bytes) -> None | 2663 # type: (bytes, bytes) -> None |
2664 with open(path, b'ab') as fp: | 2664 with open(path, b'ab') as fp: |
2665 fp.write(text) | 2665 fp.write(text) |
2666 | 2666 |
2667 | 2667 |
2668 class chunkbuffer(object): | 2668 class chunkbuffer: |
2669 """Allow arbitrary sized chunks of data to be efficiently read from an | 2669 """Allow arbitrary sized chunks of data to be efficiently read from an |
2670 iterator over chunks of arbitrary size.""" | 2670 iterator over chunks of arbitrary size.""" |
2671 | 2671 |
2672 def __init__(self, in_iter): | 2672 def __init__(self, in_iter): |
2673 """in_iter is the iterator that's iterating over the input chunks.""" | 2673 """in_iter is the iterator that's iterating over the input chunks.""" |
2768 if limit: | 2768 if limit: |
2769 limit -= len(s) | 2769 limit -= len(s) |
2770 yield s | 2770 yield s |
2771 | 2771 |
2772 | 2772 |
2773 class cappedreader(object): | 2773 class cappedreader: |
2774 """A file object proxy that allows reading up to N bytes. | 2774 """A file object proxy that allows reading up to N bytes. |
2775 | 2775 |
2776 Given a source file object, instances of this type allow reading up to | 2776 Given a source file object, instances of this type allow reading up to |
2777 N bytes from that source file object. Attempts to read past the allowed | 2777 N bytes from that source file object. Attempts to read past the allowed |
2778 limit are treated as EOF. | 2778 limit are treated as EOF. |
2856 (1, 1 << 10, _(b'%.2f KB')), | 2856 (1, 1 << 10, _(b'%.2f KB')), |
2857 (1, 1, _(b'%.0f bytes')), | 2857 (1, 1, _(b'%.0f bytes')), |
2858 ) | 2858 ) |
2859 | 2859 |
2860 | 2860 |
2861 class transformingwriter(object): | 2861 class transformingwriter: |
2862 """Writable file wrapper to transform data by function""" | 2862 """Writable file wrapper to transform data by function""" |
2863 | 2863 |
2864 def __init__(self, fp, encode): | 2864 def __init__(self, fp, encode): |
2865 self._fp = fp | 2865 self._fp = fp |
2866 self._encode = encode | 2866 self._encode = encode |
2964 (1, 0.000000001, _(b'%.3f ns')), | 2964 (1, 0.000000001, _(b'%.3f ns')), |
2965 ) | 2965 ) |
2966 | 2966 |
2967 | 2967 |
2968 @attr.s | 2968 @attr.s |
2969 class timedcmstats(object): | 2969 class timedcmstats: |
2970 """Stats information produced by the timedcm context manager on entering.""" | 2970 """Stats information produced by the timedcm context manager on entering.""" |
2971 | 2971 |
2972 # the starting value of the timer as a float (meaning and resulution is | 2972 # the starting value of the timer as a float (meaning and resulution is |
2973 # platform dependent, see util.timer) | 2973 # platform dependent, see util.timer) |
2974 start = attr.ib(default=attr.Factory(lambda: timer())) | 2974 start = attr.ib(default=attr.Factory(lambda: timer())) |
3065 return int(t) | 3065 return int(t) |
3066 except ValueError: | 3066 except ValueError: |
3067 raise error.ParseError(_(b"couldn't parse size: %s") % s) | 3067 raise error.ParseError(_(b"couldn't parse size: %s") % s) |
3068 | 3068 |
3069 | 3069 |
3070 class hooks(object): | 3070 class hooks: |
3071 """A collection of hook functions that can be used to extend a | 3071 """A collection of hook functions that can be used to extend a |
3072 function's behavior. Hooks are called in lexicographic order, | 3072 function's behavior. Hooks are called in lexicographic order, |
3073 based on the names of their sources.""" | 3073 based on the names of their sources.""" |
3074 | 3074 |
3075 def __init__(self): | 3075 def __init__(self): |