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.
--- a/mercurial/templateutil.py Thu Feb 02 17:37:37 2023 +0100
+++ b/mercurial/templateutil.py Thu Feb 02 17:37:44 2023 +0100
@@ -341,7 +341,7 @@
def tovalue(self, context, mapping):
# TODO: make it non-recursive for trivial lists/dicts
xs = self._values
- if util.safehasattr(xs, b'get'):
+ if util.safehasattr(xs, 'get'):
return {k: unwrapvalue(context, mapping, v) for k, v in xs.items()}
return [unwrapvalue(context, mapping, x) for x in xs]