mercurial/util.py
changeset 38852 9d49bb117dde
parent 38837 8751d1e2a7ff
child 39097 ed8160e4fea0
equal deleted inserted replaced
38851:64535d43c103 38852:9d49bb117dde
  2888     # the context is exited.
  2888     # the context is exited.
  2889     elapsed = attr.ib(default=0)
  2889     elapsed = attr.ib(default=0)
  2890     # the number of nested timedcm context managers.
  2890     # the number of nested timedcm context managers.
  2891     level = attr.ib(default=1)
  2891     level = attr.ib(default=1)
  2892 
  2892 
  2893     def __str__(self):
  2893     def __bytes__(self):
  2894         return timecount(self.elapsed) if self.elapsed else '<unknown>'
  2894         return timecount(self.elapsed) if self.elapsed else '<unknown>'
       
  2895 
       
  2896     __str__ = encoding.strmethod(__bytes__)
  2895 
  2897 
  2896 @contextlib.contextmanager
  2898 @contextlib.contextmanager
  2897 def timedcm():
  2899 def timedcm():
  2898     """A context manager that produces timing information for a given context.
  2900     """A context manager that produces timing information for a given context.
  2899 
  2901 
  2927     def wrapper(*args, **kwargs):
  2929     def wrapper(*args, **kwargs):
  2928         with timedcm() as time_stats:
  2930         with timedcm() as time_stats:
  2929             result = func(*args, **kwargs)
  2931             result = func(*args, **kwargs)
  2930         stderr = procutil.stderr
  2932         stderr = procutil.stderr
  2931         stderr.write('%s%s: %s\n' % (
  2933         stderr.write('%s%s: %s\n' % (
  2932             ' ' * time_stats.level * 2, func.__name__, time_stats))
  2934             ' ' * time_stats.level * 2, pycompat.bytestr(func.__name__),
       
  2935             time_stats))
  2933         return result
  2936         return result
  2934     return wrapper
  2937     return wrapper
  2935 
  2938 
  2936 _sizeunits = (('m', 2**20), ('k', 2**10), ('g', 2**30),
  2939 _sizeunits = (('m', 2**20), ('k', 2**10), ('g', 2**30),
  2937               ('kb', 2**10), ('mb', 2**20), ('gb', 2**30), ('b', 1))
  2940               ('kb', 2**10), ('mb', 2**20), ('gb', 2**30), ('b', 1))