# HG changeset patch # User Pierre-Yves David # Date 2023-02-02 16:37:51 # Node ID 26e63204c31e8ec2dcf42c4c4384084132ae0dbd # Parent 2704dc40cf10931cb6985bf9859b4f38da313a8e 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 @@ -858,7 +858,7 @@ def flatten(context, mapping, thing): ) elif thing is None: pass - elif not util.safehasattr(thing, b'__iter__'): + elif not util.safehasattr(thing, '__iter__'): yield pycompat.bytestr(thing) else: for i in thing: