41 level = -1 |
41 level = -1 |
42 if sys.version_info[0] >= 3: |
42 if sys.version_info[0] >= 3: |
43 level = 0 |
43 level = 0 |
44 _import = _origimport |
44 _import = _origimport |
45 |
45 |
46 def _hgextimport(importfunc, name, globals, *args): |
46 def _hgextimport(importfunc, name, globals, *args, **kwargs): |
47 try: |
47 try: |
48 return importfunc(name, globals, *args) |
48 return importfunc(name, globals, *args, **kwargs) |
49 except ImportError: |
49 except ImportError: |
50 if not globals: |
50 if not globals: |
51 raise |
51 raise |
52 # extensions are loaded with "hgext_" prefix |
52 # extensions are loaded with "hgext_" prefix |
53 hgextname = 'hgext_%s' % name |
53 hgextname = 'hgext_%s' % name |
54 nameroot = hgextname.split('.', 1)[0] |
54 nameroot = hgextname.split('.', 1)[0] |
55 contextroot = globals.get('__name__', '').split('.', 1)[0] |
55 contextroot = globals.get('__name__', '').split('.', 1)[0] |
56 if nameroot != contextroot: |
56 if nameroot != contextroot: |
57 raise |
57 raise |
58 # retry to import with "hgext_" prefix |
58 # retry to import with "hgext_" prefix |
59 return importfunc(hgextname, globals, *args) |
59 return importfunc(hgextname, globals, *args, **kwargs) |
60 |
60 |
61 class _demandmod(object): |
61 class _demandmod(object): |
62 """module demand-loader and proxy""" |
62 """module demand-loader and proxy""" |
63 def __init__(self, name, globals, locals, level=level): |
63 def __init__(self, name, globals, locals, level=level): |
64 if '.' in name: |
64 if '.' in name: |