util: improved the check for the existence of the 'buffer' builtin
authorRenato Cunha <renatoc@gmail.com>
Wed, 14 Jul 2010 22:59:43 -0300
changeset 11565 7546d4a272c8
parent 11564 9bbfeba33aa3
child 11566 4d11fde55cc5
util: improved the check for the existence of the 'buffer' builtin 2to3 is unable to translate '__builtin__' calls to 'builtins' when hasattr is used (as in hasattr(__builtin__, buffer)). Translating the check to the format try: whatever except NameError # define whatever __builtin__.whatever = whatever is a correct way of checking for the name and has the benefit of being translated by 2to3. This patch implements the same idea for the aforementioned example.
mercurial/util.py
--- a/mercurial/util.py	Wed Jul 14 22:58:29 2010 -0300
+++ b/mercurial/util.py	Wed Jul 14 22:59:43 2010 -0300
@@ -40,7 +40,9 @@
 
 def fakebuffer(sliceable, offset=0):
     return sliceable[offset:]
-if not hasattr(__builtin__, 'buffer'):
+try:
+    buffer
+except NameError:
     __builtin__.buffer = fakebuffer
 
 import subprocess