py3: make sure we return strings from __str__ and __repr__
On Python 3:
>>> class abc:
... def __repr__(self):
... return b'abc'
...
>>> abc()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __repr__ returned non-string (type bytes)
>>> class abc:
... def __str__(self):
... return b'abc'
...
>>> str(abc())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __str__ returned non-string (type bytes)
So the __str__ and __repr__ must return strings.
--- a/mercurial/context.py Wed May 31 23:48:52 2017 +0530
+++ b/mercurial/context.py Thu Jun 01 00:00:10 2017 +0530
@@ -77,7 +77,7 @@
return self.rev()
def __repr__(self):
- return "<%s %s>" % (type(self).__name__, str(self))
+ return r"<%s %s>" % (type(self).__name__, str(self))
def __eq__(self, other):
try:
@@ -1403,7 +1403,7 @@
self._extra['branch'] = 'default'
def __str__(self):
- return str(self._parents[0]) + "+"
+ return str(self._parents[0]) + r"+"
def __nonzero__(self):
return True