# HG changeset patch # User Pierre-Yves David # Date 1675355056 -3600 # Node ID 9a322ccd2fdc35a87492a63f382c5c9d31121872 # Parent 35e420abaef3e0d227e28421702db025c6463794 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 35e420abaef3 -r 9a322ccd2fdc mercurial/dispatch.py --- a/mercurial/dispatch.py Thu Feb 02 17:24:05 2023 +0100 +++ b/mercurial/dispatch.py Thu Feb 02 17:24:16 2023 +0100 @@ -1024,7 +1024,7 @@ cmd = aliases[0] fn = entry[0] - if cmd and util.safehasattr(fn, b'shell'): + if cmd and util.safehasattr(fn, 'shell'): # shell alias shouldn't receive early options which are consumed by hg _earlyopts, args = _earlysplitopts(args) d = lambda: fn(ui, *args[1:])