# HG changeset patch # User Pierre-Yves David # Date 2023-02-02 16:37:58 # Node ID 82ef5410f2aa550e9a63b827acf10028d153fc2c # Parent 2452843baf9008ca159d2221077401c6fd0122f9 safehasattr: pass attribute name as string instead of bytes This is a step toward replacing `util.safehasattr` usage with plain `hasattr`. The builtin function behave poorly in Python2 but this was fixed in Python3. These change are done one by one as they tend to have a small odd to trigger puzzling breackage. diff --git a/mercurial/templateutil.py b/mercurial/templateutil.py --- a/mercurial/templateutil.py +++ b/mercurial/templateutil.py @@ -868,7 +868,7 @@ def flatten(context, mapping, thing): yield i elif i is None: pass - elif not util.safehasattr(i, b'__iter__'): + elif not util.safehasattr(i, '__iter__'): yield pycompat.bytestr(i) else: for j in flatten(context, mapping, i):