##// END OF EJS Templates
py3: build repr() of smartset as bytes then convert to str...
Yuya Nishihara -
r35919:f0827211 default
parent child Browse files
Show More
@@ -8,7 +8,9 b''
8 from __future__ import absolute_import
8 from __future__ import absolute_import
9
9
10 from . import (
10 from . import (
11 encoding,
11 error,
12 error,
13 pycompat,
12 util,
14 util,
13 )
15 )
14
16
@@ -19,7 +21,7 b' def _formatsetrepr(r):'
19 type(r) example
21 type(r) example
20 ======== =================================
22 ======== =================================
21 tuple ('<not %r>', other)
23 tuple ('<not %r>', other)
22 str '<branch closed>'
24 bytes '<branch closed>'
23 callable lambda: '<branch %r>' % sorted(b)
25 callable lambda: '<branch %r>' % sorted(b)
24 object other
26 object other
25 ======== =================================
27 ======== =================================
@@ -28,12 +30,15 b' def _formatsetrepr(r):'
28 return ''
30 return ''
29 elif isinstance(r, tuple):
31 elif isinstance(r, tuple):
30 return r[0] % r[1:]
32 return r[0] % r[1:]
31 elif isinstance(r, str):
33 elif isinstance(r, bytes):
32 return r
34 return r
33 elif callable(r):
35 elif callable(r):
34 return r()
36 return r()
35 else:
37 else:
36 return repr(r)
38 return pycompat.sysbytes(repr(r))
39
40 def _typename(o):
41 return pycompat.sysbytes(type(o).__name__).lstrip('_')
37
42
38 class abstractsmartset(object):
43 class abstractsmartset(object):
39
44
@@ -384,6 +389,7 b' class baseset(abstractsmartset):'
384 s._ascending = self._ascending
389 s._ascending = self._ascending
385 return s
390 return s
386
391
392 @encoding.strmethod
387 def __repr__(self):
393 def __repr__(self):
388 d = {None: '', False: '-', True: '+'}[self._ascending]
394 d = {None: '', False: '-', True: '+'}[self._ascending]
389 s = _formatsetrepr(self._datarepr)
395 s = _formatsetrepr(self._datarepr)
@@ -394,8 +400,8 b' class baseset(abstractsmartset):'
394 # We fallback to the sorted version for a stable output.
400 # We fallback to the sorted version for a stable output.
395 if self._ascending is not None:
401 if self._ascending is not None:
396 l = self._asclist
402 l = self._asclist
397 s = repr(l)
403 s = pycompat.sysbytes(repr(l))
398 return '<%s%s %s>' % (type(self).__name__, d, s)
404 return '<%s%s %s>' % (_typename(self), d, s)
399
405
400 class filteredset(abstractsmartset):
406 class filteredset(abstractsmartset):
401 """Duck type for baseset class which iterates lazily over the revisions in
407 """Duck type for baseset class which iterates lazily over the revisions in
@@ -505,12 +511,13 b' class filteredset(abstractsmartset):'
505 pass
511 pass
506 return x
512 return x
507
513
514 @encoding.strmethod
508 def __repr__(self):
515 def __repr__(self):
509 xs = [repr(self._subset)]
516 xs = [pycompat.sysbytes(repr(self._subset))]
510 s = _formatsetrepr(self._condrepr)
517 s = _formatsetrepr(self._condrepr)
511 if s:
518 if s:
512 xs.append(s)
519 xs.append(s)
513 return '<%s %s>' % (type(self).__name__, ', '.join(xs))
520 return '<%s %s>' % (_typename(self), ', '.join(xs))
514
521
515 def _iterordered(ascending, iter1, iter2):
522 def _iterordered(ascending, iter1, iter2):
516 """produce an ordered iteration from two iterators with the same order
523 """produce an ordered iteration from two iterators with the same order
@@ -755,9 +762,10 b' class addset(abstractsmartset):'
755 self.reverse()
762 self.reverse()
756 return val
763 return val
757
764
765 @encoding.strmethod
758 def __repr__(self):
766 def __repr__(self):
759 d = {None: '', False: '-', True: '+'}[self._ascending]
767 d = {None: '', False: '-', True: '+'}[self._ascending]
760 return '<%s%s %r, %r>' % (type(self).__name__, d, self._r1, self._r2)
768 return '<%s%s %r, %r>' % (_typename(self), d, self._r1, self._r2)
761
769
762 class generatorset(abstractsmartset):
770 class generatorset(abstractsmartset):
763 """Wrap a generator for lazy iteration
771 """Wrap a generator for lazy iteration
@@ -918,9 +926,10 b' class generatorset(abstractsmartset):'
918 return self.last()
926 return self.last()
919 return next(it(), None)
927 return next(it(), None)
920
928
929 @encoding.strmethod
921 def __repr__(self):
930 def __repr__(self):
922 d = {False: '-', True: '+'}[self._ascending]
931 d = {False: '-', True: '+'}[self._ascending]
923 return '<%s%s>' % (type(self).__name__.lstrip('_'), d)
932 return '<%s%s>' % (_typename(self), d)
924
933
925 class _generatorsetasc(generatorset):
934 class _generatorsetasc(generatorset):
926 """Special case of generatorset optimized for ascending generators."""
935 """Special case of generatorset optimized for ascending generators."""
@@ -1087,10 +1096,10 b' class _spanset(abstractsmartset):'
1087 y = max(self._end - start, self._start)
1096 y = max(self._end - start, self._start)
1088 return _spanset(x, y, self._ascending, self._hiddenrevs)
1097 return _spanset(x, y, self._ascending, self._hiddenrevs)
1089
1098
1099 @encoding.strmethod
1090 def __repr__(self):
1100 def __repr__(self):
1091 d = {False: '-', True: '+'}[self._ascending]
1101 d = {False: '-', True: '+'}[self._ascending]
1092 return '<%s%s %d:%d>' % (type(self).__name__.lstrip('_'), d,
1102 return '<%s%s %d:%d>' % (_typename(self), d, self._start, self._end)
1093 self._start, self._end)
1094
1103
1095 class fullreposet(_spanset):
1104 class fullreposet(_spanset):
1096 """a set containing all revisions in the repo
1105 """a set containing all revisions in the repo
@@ -1123,7 +1132,7 b' class fullreposet(_spanset):'
1123
1132
1124 def prettyformat(revs):
1133 def prettyformat(revs):
1125 lines = []
1134 lines = []
1126 rs = repr(revs)
1135 rs = pycompat.sysbytes(repr(revs))
1127 p = 0
1136 p = 0
1128 while p < len(rs):
1137 while p < len(rs):
1129 q = rs.find('<', p + 1)
1138 q = rs.find('<', p + 1)
General Comments 0
You need to be logged in to leave comments. Login now