mercurial/hook.py
changeset 26692 8d1cfd77b64f
parent 26587 56b2bcea2529
child 26737 a930d66a04af
equal deleted inserted replaced
26691:23c0da28c034 26692:8d1cfd77b64f
    33         obj = funcname
    33         obj = funcname
    34         funcname = obj.__module__ + "." + obj.__name__
    34         funcname = obj.__module__ + "." + obj.__name__
    35     else:
    35     else:
    36         d = funcname.rfind('.')
    36         d = funcname.rfind('.')
    37         if d == -1:
    37         if d == -1:
    38             raise error.Abort(_('%s hook is invalid ("%s" not in '
    38             raise error.HookLoadError(
    39                                'a module)') % (hname, funcname))
    39                 _('%s hook is invalid ("%s" not in a module)')
       
    40                 % (hname, funcname))
    40         modname = funcname[:d]
    41         modname = funcname[:d]
    41         oldpaths = sys.path
    42         oldpaths = sys.path
    42         if util.mainfrozen():
    43         if util.mainfrozen():
    43             # binary installs require sys.path manipulation
    44             # binary installs require sys.path manipulation
    44             modpath, modfile = os.path.split(modname)
    45             modpath, modfile = os.path.split(modname)
    61                     ui.traceback(e1)
    62                     ui.traceback(e1)
    62                     if ui.tracebackflag:
    63                     if ui.tracebackflag:
    63                         ui.warn(_('exception from second failed import '
    64                         ui.warn(_('exception from second failed import '
    64                                   'attempt:\n'))
    65                                   'attempt:\n'))
    65                     ui.traceback(e2)
    66                     ui.traceback(e2)
    66                     raise error.Abort(_('%s hook is invalid '
    67                     raise error.HookLoadError(
    67                                        '(import of "%s" failed)') %
    68                         _('%s hook is invalid (import of "%s" failed)') %
    68                                      (hname, modname))
    69                         (hname, modname))
    69         sys.path = oldpaths
    70         sys.path = oldpaths
    70         try:
    71         try:
    71             for p in funcname.split('.')[1:]:
    72             for p in funcname.split('.')[1:]:
    72                 obj = getattr(obj, p)
    73                 obj = getattr(obj, p)
    73         except AttributeError:
    74         except AttributeError:
    74             raise error.Abort(_('%s hook is invalid '
    75             raise error.HookLoadError(
    75                                '("%s" is not defined)') %
    76                 _('%s hook is invalid ("%s" is not defined)')
    76                              (hname, funcname))
    77                 % (hname, funcname))
    77         if not callable(obj):
    78         if not callable(obj):
    78             raise error.Abort(_('%s hook is invalid '
    79             raise error.HookLoadError(
    79                                '("%s" is not callable)') %
    80                 _('%s hook is invalid ("%s" is not callable)')
    80                              (hname, funcname))
    81                 % (hname, funcname))
    81 
    82 
    82     ui.note(_("calling hook %s: %s\n") % (hname, funcname))
    83     ui.note(_("calling hook %s: %s\n") % (hname, funcname))
    83     starttime = time.time()
    84     starttime = time.time()
    84 
    85 
    85     try:
    86     try: