mercurial/hook.py
changeset 25328 2cfb0bbf83a1
parent 25184 819cd397e306
child 25660 328739ea70c3
equal deleted inserted replaced
25327:2e7804110b14 25328:2cfb0bbf83a1
    33             # binary installs require sys.path manipulation
    33             # binary installs require sys.path manipulation
    34             modpath, modfile = os.path.split(modname)
    34             modpath, modfile = os.path.split(modname)
    35             if modpath and modfile:
    35             if modpath and modfile:
    36                 sys.path = sys.path[:] + [modpath]
    36                 sys.path = sys.path[:] + [modpath]
    37                 modname = modfile
    37                 modname = modfile
    38         demandimportenabled = demandimport.isenabled()
    38         with demandimport.deactivated():
    39         if demandimportenabled:
       
    40             demandimport.disable()
       
    41         try:
       
    42             obj = __import__(modname)
       
    43         except ImportError:
       
    44             e1 = sys.exc_type, sys.exc_value, sys.exc_traceback
       
    45             try:
    39             try:
    46                 # extensions are loaded with hgext_ prefix
    40                 obj = __import__(modname)
    47                 obj = __import__("hgext_%s" % modname)
       
    48             except ImportError:
    41             except ImportError:
    49                 e2 = sys.exc_type, sys.exc_value, sys.exc_traceback
    42                 e1 = sys.exc_type, sys.exc_value, sys.exc_traceback
    50                 if ui.tracebackflag:
    43                 try:
    51                     ui.warn(_('exception from first failed import '
    44                     # extensions are loaded with hgext_ prefix
    52                               'attempt:\n'))
    45                     obj = __import__("hgext_%s" % modname)
    53                 ui.traceback(e1)
    46                 except ImportError:
    54                 if ui.tracebackflag:
    47                     e2 = sys.exc_type, sys.exc_value, sys.exc_traceback
    55                     ui.warn(_('exception from second failed import '
    48                     if ui.tracebackflag:
    56                               'attempt:\n'))
    49                         ui.warn(_('exception from first failed import '
    57                 ui.traceback(e2)
    50                                   'attempt:\n'))
    58                 raise util.Abort(_('%s hook is invalid '
    51                     ui.traceback(e1)
    59                                    '(import of "%s" failed)') %
    52                     if ui.tracebackflag:
    60                                  (hname, modname))
    53                         ui.warn(_('exception from second failed import '
    61         finally:
    54                                   'attempt:\n'))
    62             if demandimportenabled:
    55                     ui.traceback(e2)
    63                 demandimport.enable()
    56                     raise util.Abort(_('%s hook is invalid '
       
    57                                        '(import of "%s" failed)') %
       
    58                                      (hname, modname))
    64         sys.path = oldpaths
    59         sys.path = oldpaths
    65         try:
    60         try:
    66             for p in funcname.split('.')[1:]:
    61             for p in funcname.split('.')[1:]:
    67                 obj = getattr(obj, p)
    62                 obj = getattr(obj, p)
    68         except AttributeError:
    63         except AttributeError: