diff -r 7a8ea1397816 -r d718eddf01d9 mercurial/extensions.py --- a/mercurial/extensions.py Thu Dec 08 15:33:19 2022 +0100 +++ b/mercurial/extensions.py Thu Aug 31 23:56:15 2023 +0200 @@ -172,7 +172,7 @@ """Check if extension commands have required attributes""" for c, e in cmdtable.items(): f = e[0] - missing = [a for a in _cmdfuncattrs if not util.safehasattr(f, a)] + missing = [a for a in _cmdfuncattrs if not hasattr(f, a)] if not missing: continue msg = b'missing attributes: %s' @@ -742,7 +742,7 @@ # The hgext might not have a __file__ attribute (e.g. in PyOxidizer) and # it might not be on a filesystem even if it does. - if util.safehasattr(hgext, '__file__'): + if hasattr(hgext, '__file__'): extpath = os.path.dirname( util.abspath(pycompat.fsencode(hgext.__file__)) ) @@ -857,7 +857,7 @@ # The extensions are filesystem based, so either an error occurred # or all are enabled. - if util.safehasattr(hgext, '__file__'): + if hasattr(hgext, '__file__'): return if name in _order: # enabled @@ -987,13 +987,13 @@ def moduleversion(module): '''return version information from given module as a string''' - if util.safehasattr(module, 'getversion') and callable(module.getversion): + if hasattr(module, 'getversion') and callable(module.getversion): try: version = module.getversion() except Exception: version = b'unknown' - elif util.safehasattr(module, '__version__'): + elif hasattr(module, '__version__'): version = module.__version__ else: version = b''