mercurial/smartset.py
changeset 38576 a3130208db1c
parent 38575 152f4822d210
child 38783 e7aa113b14f7
equal deleted inserted replaced
38575:152f4822d210 38576:a3130208db1c
    11     encoding,
    11     encoding,
    12     error,
    12     error,
    13     pycompat,
    13     pycompat,
    14     util,
    14     util,
    15 )
    15 )
    16 
    16 from .utils import (
    17 def _formatsetrepr(r):
    17     stringutil,
    18     """Format an optional printable representation of a set
    18 )
    19 
       
    20     ========  =================================
       
    21     type(r)   example
       
    22     ========  =================================
       
    23     tuple     ('<not %r>', other)
       
    24     bytes     '<branch closed>'
       
    25     callable  lambda: '<branch %r>' % sorted(b)
       
    26     object    other
       
    27     ========  =================================
       
    28     """
       
    29     if r is None:
       
    30         return ''
       
    31     elif isinstance(r, tuple):
       
    32         return r[0] % pycompat.rapply(pycompat.maybebytestr, r[1:])
       
    33     elif isinstance(r, bytes):
       
    34         return r
       
    35     elif callable(r):
       
    36         return r()
       
    37     else:
       
    38         return pycompat.byterepr(r)
       
    39 
    19 
    40 def _typename(o):
    20 def _typename(o):
    41     return pycompat.sysbytes(type(o).__name__).lstrip('_')
    21     return pycompat.sysbytes(type(o).__name__).lstrip('_')
    42 
    22 
    43 class abstractsmartset(object):
    23 class abstractsmartset(object):
   390         return s
   370         return s
   391 
   371 
   392     @encoding.strmethod
   372     @encoding.strmethod
   393     def __repr__(self):
   373     def __repr__(self):
   394         d = {None: '', False: '-', True: '+'}[self._ascending]
   374         d = {None: '', False: '-', True: '+'}[self._ascending]
   395         s = _formatsetrepr(self._datarepr)
   375         s = stringutil.buildrepr(self._datarepr)
   396         if not s:
   376         if not s:
   397             l = self._list
   377             l = self._list
   398             # if _list has been built from a set, it might have a different
   378             # if _list has been built from a set, it might have a different
   399             # order from one python implementation to another.
   379             # order from one python implementation to another.
   400             # We fallback to the sorted version for a stable output.
   380             # We fallback to the sorted version for a stable output.
   512             return x
   492             return x
   513 
   493 
   514     @encoding.strmethod
   494     @encoding.strmethod
   515     def __repr__(self):
   495     def __repr__(self):
   516         xs = [pycompat.byterepr(self._subset)]
   496         xs = [pycompat.byterepr(self._subset)]
   517         s = _formatsetrepr(self._condrepr)
   497         s = stringutil.buildrepr(self._condrepr)
   518         if s:
   498         if s:
   519             xs.append(s)
   499             xs.append(s)
   520         return '<%s %s>' % (_typename(self), ', '.join(xs))
   500         return '<%s %s>' % (_typename(self), ', '.join(xs))
   521 
   501 
   522 def _iterordered(ascending, iter1, iter2):
   502 def _iterordered(ascending, iter1, iter2):