Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/extensions.py @ 14415:c238b12a1ed4
extensions: raise when trying to find an extension that failed to load
extensions that depend on other extensions (such as record) use this pattern
to check if the dependant extension is available:
try:
mq = extensions.find('mq')
except KeyError:
return
but since if an error occurs while loading an extension it leaves its entry
in the _extensions map as None, we want to raise in that situation too.
(rather than adding another check if the return value is None)
author | Idan Kamara <idankk86@gmail.com> |
---|---|
date | Mon, 23 May 2011 23:09:00 +0300 |
parents | 1f46be4689ed |
children | cd31a1cc1521 |
comparison
equal
deleted
inserted
replaced
14414:90937dd4d94b | 14415:c238b12a1ed4 |
---|---|
19 if module: | 19 if module: |
20 yield name, module | 20 yield name, module |
21 | 21 |
22 def find(name): | 22 def find(name): |
23 '''return module with given extension name''' | 23 '''return module with given extension name''' |
24 mod = None | |
24 try: | 25 try: |
25 return _extensions[name] | 26 mod = _extensions[name] |
26 except KeyError: | 27 except KeyError: |
27 for k, v in _extensions.iteritems(): | 28 for k, v in _extensions.iteritems(): |
28 if k.endswith('.' + name) or k.endswith('/' + name): | 29 if k.endswith('.' + name) or k.endswith('/' + name): |
29 return v | 30 mod = v |
31 break | |
32 if not mod: | |
30 raise KeyError(name) | 33 raise KeyError(name) |
34 return mod | |
31 | 35 |
32 def loadpath(path, module_name): | 36 def loadpath(path, module_name): |
33 module_name = module_name.replace('.', '_') | 37 module_name = module_name.replace('.', '_') |
34 path = util.expandpath(path) | 38 path = util.expandpath(path) |
35 if os.path.isdir(path): | 39 if os.path.isdir(path): |