mercurial/demandimport.py
changeset 25936 f90bb2002bcf
parent 25935 49dd4fd3f283
child 25937 4f1144c3c72b
equal deleted inserted replaced
25935:49dd4fd3f283 25936:f90bb2002bcf
    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: