hgext3rd/evolve/compat.py
changeset 4814 48b30ff742cb
parent 4805 60e8cdce0e9c
child 4894 f9743b13de6d
child 4956 0fe5d74134d6
--- a/hgext3rd/evolve/compat.py	Tue Aug 06 15:06:27 2019 +0200
+++ b/hgext3rd/evolve/compat.py	Tue Aug 06 15:06:38 2019 +0200
@@ -62,20 +62,20 @@
 # Evolution renaming compat
 
 TROUBLES = {
-    r'ORPHAN': 'orphan',
-    r'CONTENTDIVERGENT': 'content-divergent',
-    r'PHASEDIVERGENT': 'phase-divergent',
+    r'ORPHAN': b'orphan',
+    r'CONTENTDIVERGENT': b'content-divergent',
+    r'PHASEDIVERGENT': b'phase-divergent',
 }
 
 if util.safehasattr(uimod.ui, 'makeprogress'):
-    def progress(ui, topic, pos, item="", unit="", total=None):
+    def progress(ui, topic, pos, item=b"", unit=b"", total=None):
         progress = ui.makeprogress(topic, unit, total)
         if pos is not None:
             progress.update(pos, item=item)
         else:
             progress.complete()
 else:
-    def progress(ui, topic, pos, item="", unit="", total=None):
+    def progress(ui, topic, pos, item=b"", unit=b"", total=None):
         ui.progress(topic, pos, item, unit, total)
 
 # XXX: Better detection of property cache
@@ -92,26 +92,26 @@
 
     if r"copysource" in varnames:
         mctx = context.memfilectx(repo, ctx, fctx.path(), fctx.data(),
-                                  islink='l' in flags,
-                                  isexec='x' in flags,
+                                  islink=b'l' in flags,
+                                  isexec=b'x' in flags,
                                   copysource=copied.get(path))
     # compat with hg <- 4.9
     elif varnames[2] == r"changectx":
         mctx = context.memfilectx(repo, ctx, fctx.path(), fctx.data(),
-                                  islink='l' in flags,
-                                  isexec='x' in flags,
+                                  islink=b'l' in flags,
+                                  isexec=b'x' in flags,
                                   copied=copied.get(path))
     else:
         mctx = context.memfilectx(repo, fctx.path(), fctx.data(),
-                                  islink='l' in flags,
-                                  isexec='x' in flags,
+                                  islink=b'l' in flags,
+                                  isexec=b'x' in flags,
                                   copied=copied.get(path))
     return mctx
 
 def strdiff(a, b, fn1, fn2):
     """ A version of mdiff.unidiff for comparing two strings
     """
-    args = [a, '', b, '', fn1, fn2]
+    args = [a, b'', b, b'', fn1, fn2]
 
     # hg < 4.6 compat 8b6dd3922f70
     if util.safehasattr(inspect, 'signature'):
@@ -218,7 +218,7 @@
     if limit is None:
         # no common ancestor, no copies
         return {}, {}, {}, {}, {}
-    repo.ui.debug("  searching for copies back to rev %d\n" % limit)
+    repo.ui.debug(b"  searching for copies back to rev %d\n" % limit)
 
     m1 = c1.manifest()
     m2 = c2.manifest()
@@ -232,18 +232,18 @@
     # - incompletediverge = record divergent partial copies here
     diverge = {} # divergence data is shared
     incompletediverge = {}
-    data1 = {'copy': {},
-             'fullcopy': {},
-             'incomplete': {},
-             'diverge': diverge,
-             'incompletediverge': incompletediverge,
-            }
-    data2 = {'copy': {},
-             'fullcopy': {},
-             'incomplete': {},
-             'diverge': diverge,
-             'incompletediverge': incompletediverge,
-            }
+    data1 = {b'copy': {},
+             b'fullcopy': {},
+             b'incomplete': {},
+             b'diverge': diverge,
+             b'incompletediverge': incompletediverge,
+             }
+    data2 = {b'copy': {},
+             b'fullcopy': {},
+             b'incomplete': {},
+             b'diverge': diverge,
+             b'incompletediverge': incompletediverge,
+             }
 
     # find interesting file sets from manifests
     if hg48:
@@ -260,20 +260,20 @@
     else:
         # unmatched file from base (DAG rotation in the graft case)
         u1r, u2r = copies._computenonoverlap(repo, c1, c2, addedinm1, addedinm2,
-                                             baselabel='base')
+                                             baselabel=b'base')
         # unmatched file from topological common ancestors (no DAG rotation)
         # need to recompute this for directory move handling when grafting
         mta = tca.manifest()
         if hg48:
             m1f = m1.filesnotin(mta, repo.narrowmatch())
             m2f = m2.filesnotin(mta, repo.narrowmatch())
-            baselabel = 'topological common ancestor'
+            baselabel = b'topological common ancestor'
             u1u, u2u = copies._computenonoverlap(repo, c1, c2, m1f, m2f,
                                                  baselabel=baselabel)
         else:
             u1u, u2u = copies._computenonoverlap(repo, c1, c2, m1.filesnotin(mta),
                                                  m2.filesnotin(mta),
-                                                 baselabel='topological common ancestor')
+                                                 baselabel=b'topological common ancestor')
 
     for f in u1u:
         copies._checkcopies(c1, c2, f, base, tca, dirtyc1, limit, data1)
@@ -281,16 +281,16 @@
     for f in u2u:
         copies._checkcopies(c2, c1, f, base, tca, dirtyc2, limit, data2)
 
-    copy = dict(data1['copy'])
-    copy.update(data2['copy'])
-    fullcopy = dict(data1['fullcopy'])
-    fullcopy.update(data2['fullcopy'])
+    copy = dict(data1[b'copy'])
+    copy.update(data2[b'copy'])
+    fullcopy = dict(data1[b'fullcopy'])
+    fullcopy.update(data2[b'fullcopy'])
 
     if dirtyc1:
-        copies._combinecopies(data2['incomplete'], data1['incomplete'], copy, diverge,
+        copies._combinecopies(data2[b'incomplete'], data1[b'incomplete'], copy, diverge,
                               incompletediverge)
     else:
-        copies._combinecopies(data1['incomplete'], data2['incomplete'], copy, diverge,
+        copies._combinecopies(data1[b'incomplete'], data2[b'incomplete'], copy, diverge,
                               incompletediverge)
 
     renamedelete = {}
@@ -308,23 +308,23 @@
             divergeset.update(fl) # reverse map for below
 
     if bothnew:
-        repo.ui.debug("  unmatched files new in both:\n   %s\n"
-                      % "\n   ".join(bothnew))
+        repo.ui.debug(b"  unmatched files new in both:\n   %s\n"
+                      % b"\n   ".join(bothnew))
     bothdiverge = {}
     bothincompletediverge = {}
     remainder = {}
-    both1 = {'copy': {},
-             'fullcopy': {},
-             'incomplete': {},
-             'diverge': bothdiverge,
-             'incompletediverge': bothincompletediverge
-            }
-    both2 = {'copy': {},
-             'fullcopy': {},
-             'incomplete': {},
-             'diverge': bothdiverge,
-             'incompletediverge': bothincompletediverge
-            }
+    both1 = {b'copy': {},
+             b'fullcopy': {},
+             b'incomplete': {},
+             b'diverge': bothdiverge,
+             b'incompletediverge': bothincompletediverge
+             }
+    both2 = {b'copy': {},
+             b'fullcopy': {},
+             b'incomplete': {},
+             b'diverge': bothdiverge,
+             b'incompletediverge': bothincompletediverge
+             }
     for f in bothnew:
         copies._checkcopies(c1, c2, f, base, tca, dirtyc1, limit, both1)
         copies._checkcopies(c2, c1, f, base, tca, dirtyc2, limit, both2)
@@ -333,17 +333,17 @@
         pass
     elif dirtyc1:
         # incomplete copies may only be found on the "dirty" side for bothnew
-        assert not both2['incomplete']
-        remainder = copies._combinecopies({}, both1['incomplete'], copy, bothdiverge,
+        assert not both2[b'incomplete']
+        remainder = copies._combinecopies({}, both1[b'incomplete'], copy, bothdiverge,
                                           bothincompletediverge)
     elif dirtyc2:
-        assert not both1['incomplete']
-        remainder = copies._combinecopies({}, both2['incomplete'], copy, bothdiverge,
+        assert not both1[b'incomplete']
+        remainder = copies._combinecopies({}, both2[b'incomplete'], copy, bothdiverge,
                                           bothincompletediverge)
     else:
         # incomplete copies and divergences can't happen outside grafts
-        assert not both1['incomplete']
-        assert not both2['incomplete']
+        assert not both1[b'incomplete']
+        assert not both2[b'incomplete']
         assert not bothincompletediverge
     for f in remainder:
         assert f not in bothdiverge
@@ -356,30 +356,30 @@
             copy[fl[0]] = of # not actually divergent, just matching renames
 
     if fullcopy and repo.ui.debugflag:
-        repo.ui.debug("  all copies found (* = to merge, ! = divergent, "
-                      "% = renamed and deleted):\n")
+        repo.ui.debug(b"  all copies found (* = to merge, ! = divergent, "
+                      b"% = renamed and deleted):\n")
         for f in sorted(fullcopy):
-            note = ""
+            note = b""
             if f in copy:
-                note += "*"
+                note += b"*"
             if f in divergeset:
-                note += "!"
+                note += b"!"
             if f in renamedeleteset:
-                note += "%"
-            repo.ui.debug("   src: '%s' -> dst: '%s' %s\n" % (fullcopy[f], f,
-                                                              note))
+                note += b"%"
+            repo.ui.debug(b"   src: '%s' -> dst: '%s' %s\n" % (fullcopy[f], f,
+                                                               note))
     del divergeset
 
     if not fullcopy:
         return copy, {}, diverge, renamedelete, {}
 
-    repo.ui.debug("  checking for directory renames\n")
+    repo.ui.debug(b"  checking for directory renames\n")
 
     # generate a directory move map
     d1, d2 = c1.dirs(), c2.dirs()
     # Hack for adding '', which is not otherwise added, to d1 and d2
-    d1.addpath('/')
-    d2.addpath('/')
+    d1.addpath(b'/')
+    d2.addpath(b'/')
     invalid = set()
     dirmove = {}
 
@@ -392,16 +392,16 @@
             continue
         elif dsrc in d1 and ddst in d1:
             # directory wasn't entirely moved locally
-            invalid.add(dsrc + "/")
+            invalid.add(dsrc + b"/")
         elif dsrc in d2 and ddst in d2:
             # directory wasn't entirely moved remotely
-            invalid.add(dsrc + "/")
-        elif dsrc + "/" in dirmove and dirmove[dsrc + "/"] != ddst + "/":
+            invalid.add(dsrc + b"/")
+        elif dsrc + b"/" in dirmove and dirmove[dsrc + b"/"] != ddst + b"/":
             # files from the same directory moved to two different places
-            invalid.add(dsrc + "/")
+            invalid.add(dsrc + b"/")
         else:
             # looks good so far
-            dirmove[dsrc + "/"] = ddst + "/"
+            dirmove[dsrc + b"/"] = ddst + b"/"
 
     for i in invalid:
         if i in dirmove:
@@ -412,7 +412,7 @@
         return copy, {}, diverge, renamedelete, {}
 
     for d in dirmove:
-        repo.ui.debug("   discovered dir src: '%s' -> dst: '%s'\n" %
+        repo.ui.debug(b"   discovered dir src: '%s' -> dst: '%s'\n" %
                       (d, dirmove[d]))
 
     movewithdir = {}
@@ -425,8 +425,8 @@
                     df = dirmove[d] + f[len(d):]
                     if df not in copy:
                         movewithdir[f] = df
-                        repo.ui.debug(("   pending file src: '%s' -> "
-                                       "dst: '%s'\n") % (f, df))
+                        repo.ui.debug((b"   pending file src: '%s' -> "
+                                       b"dst: '%s'\n") % (f, df))
                     break
 
     return copy, movewithdir, diverge, renamedelete, dirmove
@@ -494,8 +494,8 @@
         return obsutil.markersusers(markers)
 
     markersmeta = [dict(m[3]) for m in markers]
-    users = set(encoding.tolocal(meta['user']) for meta in markersmeta
-                if meta.get('user'))
+    users = set(encoding.tolocal(meta[b'user']) for meta in markersmeta
+                if meta.get(b'user'))
 
     return sorted(users)
 
@@ -511,7 +511,7 @@
         return obsutil.markersoperations(markers)
 
     markersmeta = [dict(m[3]) for m in markers]
-    operations = set(meta.get('operation') for meta in markersmeta
-                     if meta.get('operation'))
+    operations = set(meta.get(b'operation') for meta in markersmeta
+                     if meta.get(b'operation'))
 
     return sorted(operations)