[PATCH 05 of 10] pycompat: add boolclass for py3 compat
timeless
timeless at fmr.im
Wed May 11 21:23:13 EDT 2016
# HG changeset patch
# User timeless <timeless at mozdev.org>
# Date 1463011579 0
# Thu May 12 00:06:19 2016 +0000
# Node ID e670b15b74f80135c28e3ac57b0580ad98b47cb9
# Parent 6a4c3eb0da5d63a0394bf68abe0b5d49c40ab96d
# Available At bb://timeless/mercurial-crew
# hg pull bb://timeless/mercurial-crew -r e670b15b74f8
pycompat: add boolclass for py3 compat
Python 2 uses __nonzero__ when checking to see if a class is true,
Python 3 uses __bool__ for the same.
diff -r 6a4c3eb0da5d -r e670b15b74f8 contrib/check-code.py
--- a/contrib/check-code.py Wed May 11 23:24:41 2016 +0000
+++ b/contrib/check-code.py Thu May 12 00:06:19 2016 +0000
@@ -318,7 +318,7 @@
(r'ui\.(status|progress|write|note|warn)\([\'\"]x',
"missing _() in ui message (use () to hide false-positives)"),
(r'release\(.*wlock, .*lock\)', "wrong lock release order"),
- (r'\b__bool__\b', "__bool__ should be __nonzero__ in Python 2"),
+ (r'\bdef __bool__\b|\b__bool__\(', "__bool__ should be __nonzero__ in Python 2"),
(r'os\.path\.join\(.*, *(""|\'\')\)',
"use pathutil.normasprefix(path) instead of os.path.join(path, '')"),
(r'\s0[0-7]+\b', 'legacy octal syntax; use "0o" prefix instead of "0"'),
diff -r 6a4c3eb0da5d -r e670b15b74f8 mercurial/pycompat.py
--- a/mercurial/pycompat.py Wed May 11 23:24:41 2016 +0000
+++ b/mercurial/pycompat.py Thu May 12 00:06:19 2016 +0000
@@ -36,12 +36,19 @@
return d.iteritems()
def itervalues(d):
return d.itervalues()
+ def boolclass(cls):
+ """class decorator for classes with __bool__ method"""
+ return cls
except AttributeError:
# Python 3
def iteritems(d):
return iter(d.items())
def itervalues(d):
return iter(d.values())
+ def boolclass(cls):
+ """class decorator for classes with __bool__ method"""
+ cls.__bool__ = cls.__nonzero__
+ return cls
try:
import cStringIO as io
diff -r 6a4c3eb0da5d -r e670b15b74f8 mercurial/util.py
--- a/mercurial/util.py Wed May 11 23:24:41 2016 +0000
+++ b/mercurial/util.py Thu May 12 00:06:19 2016 +0000
@@ -46,6 +46,7 @@
)
for attr in (
+ 'boolclass',
'email',
'empty',
'http',
More information about the Mercurial-devel
mailing list