Mercurial > public > mercurial-scm > hg
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 |