Patchwork D2279: node: make bin() be a wrapper instead of just an alias

login
register
mail settings
Submitter phabricator
Date Feb. 16, 2018, 9:58 p.m.
Message ID <e30dc9437d3c1cb51cdbdf6c0e71e2ce@localhost.localdomain>
Download mbox | patch
Permalink /patch/27996/
State Not Applicable
Headers show

Comments

phabricator - Feb. 16, 2018, 9:58 p.m.
durin42 updated this revision to Diff 5784.
durin42 edited the summary of this revision.
Herald added a reviewer: indygreg.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D2279?vs=5761&id=5784

REVISION DETAIL
  https://phab.mercurial-scm.org/D2279

AFFECTED FILES
  hgext/histedit.py
  mercurial/node.py
  mercurial/revlog.py

CHANGE DETAILS




To: durin42, #hg-reviewers, martinvonz, indygreg
Cc: martinvonz, mercurial-devel

Patch

diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -13,7 +13,6 @@ 
 
 from __future__ import absolute_import
 
-import binascii
 import collections
 import contextlib
 import errno
@@ -1430,7 +1429,7 @@ 
                 if maybewdir:
                     raise error.WdirUnsupported
                 return None
-            except (TypeError, binascii.Error):
+            except TypeError:
                 pass
 
     def lookup(self, id):
diff --git a/mercurial/node.py b/mercurial/node.py
--- a/mercurial/node.py
+++ b/mercurial/node.py
@@ -11,7 +11,14 @@ 
 
 # This ugly style has a noticeable effect in manifest parsing
 hex = binascii.hexlify
-bin = binascii.unhexlify
+# Adapt to Python 3 API changes. If this ends up showing up in
+# profiles, we can use this version only on Python 3, and forward
+# binascii.unhexlify like we used to on Python 2.
+def bin(s):
+    try:
+        return binascii.unhexlify(s)
+    except binascii.Error as e:
+        raise TypeError(e)
 
 nullrev = -1
 nullid = b"\0" * 20
diff --git a/hgext/histedit.py b/hgext/histedit.py
--- a/hgext/histedit.py
+++ b/hgext/histedit.py
@@ -183,7 +183,6 @@ 
 
 from __future__ import absolute_import
 
-import binascii
 import errno
 import os
 
@@ -426,7 +425,7 @@ 
         rulehash = rule.strip().split(' ', 1)[0]
         try:
             rev = node.bin(rulehash)
-        except (TypeError, binascii.Error):
+        except TypeError:
             raise error.ParseError("invalid changeset %s" % rulehash)
         return cls(state, rev)