--- a/mercurial/commands.py Thu Jul 06 11:49:19 2006 -0700
+++ b/mercurial/commands.py Thu Jul 06 15:03:34 2006 -0700
@@ -3371,12 +3371,12 @@
def findext(name):
'''return module with given extension name'''
try:
- return external[name]
+ return sys.modules[external[name]]
except KeyError:
dotname = '.' + name
for k, v in external.iteritems():
- if k.endswith('.' + name) or v.__name__ == name:
- return v
+ if k.endswith('.' + name) or v == name:
+ return sys.modules[v]
raise KeyError(name)
def dispatch(args):
@@ -3390,14 +3390,14 @@
sys.stderr.write(_("abort: %s\n") % inst)
return -1
- for x in u.extensions():
+ for ext_name, load_from_name in u.extensions():
try:
- if x[1]:
+ if load_from_name:
# the module will be loaded in sys.modules
# choose an unique name so that it doesn't
# conflicts with other modules
- module_name = "hgext_%s" % x[0].replace('.', '_')
- mod = imp.load_source(module_name, x[1])
+ module_name = "hgext_%s" % ext_name.replace('.', '_')
+ mod = imp.load_source(module_name, load_from_name)
else:
def importh(name):
mod = __import__(name)
@@ -3406,12 +3406,10 @@
mod = getattr(mod, comp)
return mod
try:
- name = 'hgext.' + x[0]
- mod = importh(name)
+ mod = importh("hgext.%s" % ext_name)
except ImportError:
- name = x[0]
- mod = importh(name)
- external[name] = mod
+ mod = importh(ext_name)
+ external[ext_name] = mod.__name__
except (util.SignalInterrupt, KeyboardInterrupt):
raise
except Exception, inst:
@@ -3419,14 +3417,15 @@
if u.print_exc():
return 1
- for x in external.itervalues():
- uisetup = getattr(x, 'uisetup', None)
+ for name in external.itervalues():
+ mod = sys.modules[name]
+ uisetup = getattr(mod, 'uisetup', None)
if uisetup:
uisetup(u)
- cmdtable = getattr(x, 'cmdtable', {})
+ cmdtable = getattr(mod, 'cmdtable', {})
for t in cmdtable:
if t in table:
- u.warn(_("module %s overrides %s\n") % (x.__name__, t))
+ u.warn(_("module %s overrides %s\n") % (name, t))
table.update(cmdtable)
try:
@@ -3475,9 +3474,10 @@
if not repo:
repo = hg.repository(u, path=path)
u = repo.ui
- for x in external.itervalues():
- if hasattr(x, 'reposetup'):
- x.reposetup(u, repo)
+ for name in external.itervalues():
+ mod = sys.modules[name]
+ if hasattr(mod, 'reposetup'):
+ mod.reposetup(u, repo)
except hg.RepoError:
if cmd not in optionalrepo.split():
raise