phabricator: convert phabhunk and phabchange keys to bytes when finalising
authorIan Moody <moz-ian@perix.co.uk>
Sat, 12 Oct 2019 14:41:59 +0100
changeset 43259 162b81e65e60
parent 43258 d5d1edf66091
child 43260 ec4dfcc39638
phabricator: convert phabhunk and phabchange keys to bytes when finalising I thought I had included this code already but I'd missed it out. One of the disadvantages of attrs is that all the keys are unicode strings on py3, but we need them to be byte strings. Differential Revision: https://phab.mercurial-scm.org/D7066
hgext/phabricator.py
--- a/hgext/phabricator.py	Sun Oct 06 17:21:26 2019 +0100
+++ b/hgext/phabricator.py	Sat Oct 12 14:41:59 2019 +0100
@@ -518,7 +518,7 @@
     def addhunk(self, hunk):
         if not isinstance(hunk, phabhunk):
             raise error.Abort(b'phabchange.addhunk only takes phabhunks')
-        self.hunks.append(hunk)
+        self.hunks.append(pycompat.byteskwargs(attr.asdict(hunk)))
         # It's useful to include these stats since the Phab web UI shows them,
         # and uses them to estimate how large a change a Revision is. Also used
         # in email subjects for the [+++--] bit.
@@ -549,7 +549,9 @@
     def addchange(self, change):
         if not isinstance(change, phabchange):
             raise error.Abort(b'phabdiff.addchange only takes phabchanges')
-        self.changes[change.currentPath] = change
+        self.changes[change.currentPath] = pycompat.byteskwargs(
+            attr.asdict(change)
+        )
 
 
 def maketext(pchange, ctx, fname):