# HG changeset patch # User Pierre-Yves David # Date 1675382625 -3600 # Node ID 7200a9d4ea045c6b2be327f2edea9eef9ae6ab53 # Parent 9e69d9d6f4cf773e5ecfcfd5c1ef6b0c6c4db4fc 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 9e69d9d6f4cf -r 7200a9d4ea04 mercurial/bundle2.py --- a/mercurial/bundle2.py Thu Feb 02 17:38:14 2023 +0100 +++ b/mercurial/bundle2.py Fri Feb 03 01:03:45 2023 +0100 @@ -1381,7 +1381,7 @@ def __init__(self, ui, header, fp): super(unbundlepart, self).__init__(fp) self._seekable = util.safehasattr(fp, 'seek') and util.safehasattr( - fp, b'tell' + fp, 'tell' ) self.ui = ui # unbundle state attr