1 |
import sys |
import sys |
2 |
|
import inspect |
3 |
|
|
4 |
if 0: |
if 0: |
5 |
# XXX: stat not properly implemented in jython |
# XXX: stat not properly implemented in jython |
19 |
if not globals().has_key("import_times"): |
if not globals().has_key("import_times"): |
20 |
import_times = {} |
import_times = {} |
21 |
|
|
22 |
def my_import(name): |
if not globals().has_key("dependencies"): |
23 |
|
dependencies = {} |
24 |
|
|
25 |
|
def do_reload(name): |
26 |
|
global dependencies, import_times |
27 |
|
ctime = get_module_ctime(name) |
28 |
|
|
29 |
|
if (not import_times.has_key(name)) or (import_times[name] < ctime): |
30 |
|
print "Reloading module", name |
31 |
|
reload(sys.modules[name]) |
32 |
|
import_times[name] = ctime |
33 |
|
else: |
34 |
|
#print "Not reloading unchanged module", name |
35 |
|
if dependencies.has_key(name): |
36 |
|
#print "Checking dependencies:" |
37 |
|
deps = dependencies[name].keys() |
38 |
|
deps.sort() |
39 |
|
for dep in deps: |
40 |
|
do_reload(dep) |
41 |
|
#print "Dependencies done\n" |
42 |
|
|
43 |
|
def my_import_dep(name): |
44 |
""" Import the named module or reload if already imported |
""" Import the named module or reload if already imported |
45 |
|
and the file has changed |
46 |
""" |
""" |
47 |
#XXX: ctime checking commented out because |
global dependencies, import_times |
48 |
#dependecy checking is not implemented |
|
49 |
#ctime = get_module_ctime(name) |
parentname = inspect.currentframe().f_back.f_locals["__name__"] |
50 |
|
if not dependencies.has_key(parentname): |
51 |
|
dependencies[parentname] = {} |
52 |
|
dependencies[parentname][name] = 1 |
53 |
|
|
54 |
if name in sys.modules.keys(): |
if name in sys.modules.keys(): |
55 |
#if import_times[name] < ctime: |
do_reload(name) |
|
print "Reloading module", name |
|
|
reload(sys.modules[name]) |
|
|
#else: |
|
|
# print "Not reloading unchanged module", name |
|
56 |
else: |
else: |
57 |
print "Importing module", name |
print "Importing module", name |
58 |
|
ctime = get_module_ctime(name) |
59 |
mod = __import__(name) |
mod = __import__(name) |
60 |
components = name.split('.') |
components = name.split('.') |
61 |
for comp in components[1:]: |
for comp in components[1:]: |
62 |
mod = getattr(mod, comp) |
mod = getattr(mod, comp) |
63 |
|
|
64 |
sys.modules[name] = mod |
sys.modules[name] = mod |
65 |
|
import_times[name] = ctime |
66 |
|
|
67 |
|
|
68 |
#import_times[name] = ctime |
def my_import_simple(name): |
69 |
|
print "Importing module", name |
70 |
|
mod = __import__(name) |
71 |
|
components = name.split('.') |
72 |
|
for comp in components[1:]: |
73 |
|
mod = getattr(mod, comp) |
74 |
|
sys.modules[name] = mod |
75 |
|
|
76 |
|
my_import = my_import_dep |