# HG changeset patch # User Pierre-Yves David # Date 1675355295 -3600 # Node ID 833a4e881a7ab958ad10b684eb1dbfda1b2b3b2b # Parent b23b3ef38ba1602b1743f3fc70ebfe9e75496ebd 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 b23b3ef38ba1 -r 833a4e881a7a mercurial/localrepo.py --- a/mercurial/localrepo.py Thu Feb 02 17:28:07 2023 +0100 +++ b/mercurial/localrepo.py Thu Feb 02 17:28:15 2023 +0100 @@ -415,7 +415,7 @@ try: bundle = exchange.readbundle(self.ui, bundle, None) ret = exchange.unbundle(self._repo, bundle, heads, b'push', url) - if util.safehasattr(ret, b'getchunks'): + if util.safehasattr(ret, 'getchunks'): # This is a bundle20 object, turn it into an unbundler. # This little dance should be dropped eventually when the # API is finally improved.