comparison mercurial/extensions.py @ 28506:10252652c6e4

extensions: factor import error reporting out To clarify third party extensions lookup, we are about to add a third place where extensions are searched for. So we factor the error reporting logic out to be able to easily reuse it in the next patch.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Fri, 11 Mar 2016 10:28:58 +0000
parents d5512a0a8ad6
children 4b81487a01d4
comparison
equal deleted inserted replaced
28505:d5512a0a8ad6 28506:10252652c6e4
77 components = name.split('.') 77 components = name.split('.')
78 for comp in components[1:]: 78 for comp in components[1:]:
79 mod = getattr(mod, comp) 79 mod = getattr(mod, comp)
80 return mod 80 return mod
81 81
82 def _reportimporterror(ui, err, failed, next):
83 ui.debug('could not import %s (%s): trying %s\n'
84 % (failed, err, next))
85 if ui.debugflag:
86 ui.traceback()
87
82 def load(ui, name, path): 88 def load(ui, name, path):
83 if name.startswith('hgext.') or name.startswith('hgext/'): 89 if name.startswith('hgext.') or name.startswith('hgext/'):
84 shortname = name[6:] 90 shortname = name[6:]
85 else: 91 else:
86 shortname = name 92 shortname = name
96 mod = loadpath(path, 'hgext.%s' % name) 102 mod = loadpath(path, 'hgext.%s' % name)
97 else: 103 else:
98 try: 104 try:
99 mod = _importh("hgext.%s" % name) 105 mod = _importh("hgext.%s" % name)
100 except ImportError as err: 106 except ImportError as err:
101 ui.debug('could not import hgext.%s (%s): trying %s\n' 107 _reportimporterror(ui, err, "hgext.%s" % name, name)
102 % (name, err, name))
103 if ui.debugflag:
104 ui.traceback()
105 mod = _importh(name) 108 mod = _importh(name)
106 109
107 # Before we do anything with the extension, check against minimum stated 110 # Before we do anything with the extension, check against minimum stated
108 # compatibility. This gives extension authors a mechanism to have their 111 # compatibility. This gives extension authors a mechanism to have their
109 # extensions short circuit when loaded with a known incompatible version 112 # extensions short circuit when loaded with a known incompatible version