##// END OF EJS Templates
merge with crew.
Vadim Gelfer -
r2325:c4ea7f92 merge default
parent child Browse files
Show More
@@ -10,6 +10,8 b' import glob'
10 import os
10 import os
11 import sys
11 import sys
12 import ihooks
12 import ihooks
13 import types
14 import string
13
15
14 # Install this module as fake demandload module
16 # Install this module as fake demandload module
15 sys.modules['mercurial.demandload'] = sys.modules[__name__]
17 sys.modules['mercurial.demandload'] = sys.modules[__name__]
@@ -20,18 +22,43 b" sys.modules['mercurial.demandload'] = sy"
20 # module is imported.
22 # module is imported.
21 requiredmodules = {}
23 requiredmodules = {}
22 def demandload(scope, modules):
24 def demandload(scope, modules):
23 """ fake demandload function that collects the required modules """
25 """ fake demandload function that collects the required modules
26 foo import foo
27 foo bar import foo, bar
28 foo.bar import foo.bar
29 foo:bar from foo import bar
30 foo:bar,quux from foo import bar, quux
31 foo.bar:quux from foo.bar import quux"""
32
24 for m in modules.split():
33 for m in modules.split():
25 mod = None
34 mod = None
26 try:
35 try:
27 module, submodules = m.split(':')
36 module, fromlist = m.split(':')
28 submodules = submodules.split(',')
37 fromlist = fromlist.split(',')
29 except:
38 except:
30 module = m
39 module = m
31 submodules = []
40 fromlist = []
32 mod = __import__(module, scope, scope, submodules)
41 mod = __import__(module, scope, scope, fromlist)
33 scope[module] = mod
42 if fromlist == []:
34 requiredmodules[mod.__name__] = 1
43 # mod is only the top package, but we need all packages
44 comp = module.split('.')
45 i = 1
46 mn = comp[0]
47 while True:
48 # mn and mod.__name__ might not be the same
49 scope[mn] = mod
50 requiredmodules[mod.__name__] = 1
51 if len(comp) == i: break
52 mod = getattr(mod,comp[i])
53 mn = string.join(comp[:i+1],'.')
54 i += 1
55 else:
56 # mod is the last package in the component list
57 requiredmodules[mod.__name__] = 1
58 for f in fromlist:
59 scope[f] = getattr(mod,f)
60 if type(scope[f]) == types.ModuleType:
61 requiredmodules[scope[f].__name__] = 1
35
62
36 def scan(libpath,packagename):
63 def scan(libpath,packagename):
37 """ helper for finding all required modules of package <packagename> """
64 """ helper for finding all required modules of package <packagename> """
General Comments 0
You need to be logged in to leave comments. Login now