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):