# HG changeset patch # User Pierre-Yves David # Date 1675355822 -3600 # Node ID 046b9cce5850638b5fb1a0ffa090d7de76055bc3 # Parent bf7ad17b0a587e4953a5ad4ac7b857d690ed6817 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 -r bf7ad17b0a58 -r 046b9cce5850 mercurial/templatefilters.py --- a/mercurial/templatefilters.py Thu Feb 02 17:36:55 2023 +0100 +++ b/mercurial/templatefilters.py Thu Feb 02 17:37:02 2023 +0100 @@ -339,7 +339,7 @@ raise error.ProgrammingError( b'Mercurial only does output with bytes: %r' % obj ) - elif util.safehasattr(obj, b'keys'): + elif util.safehasattr(obj, 'keys'): out = [ b'"%s": %s' % (encoding.jsonescape(k, paranoid=paranoid), json(v, paranoid))