/[gzz]/gzz/gfx/libutil/myimport.py
ViewVC logotype

Diff of /gzz/gfx/libutil/myimport.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by jvk, Mon Oct 7 12:14:05 2002 UTC revision 1.2 by jvk, Mon Oct 7 14:22:25 2002 UTC
# Line 1  Line 1 
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
# Line 18  def get_module_ctime(name): Line 19  def get_module_ctime(name):
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

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26