diff options
author | Mark Spruiell <mes@zeroc.com> | 2010-02-08 14:06:53 -0800 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2010-02-08 14:06:53 -0800 |
commit | 7b728b23ec27d1cd919e0bbd57cdde1a1e421397 (patch) | |
tree | 86540b77f48fad37003c0e47ebbeb6c84701363e /py/python/Ice.py | |
parent | fixing Slice docu typos (diff) | |
download | ice-7b728b23ec27d1cd919e0bbd57cdde1a1e421397.tar.bz2 ice-7b728b23ec27d1cd919e0bbd57cdde1a1e421397.tar.xz ice-7b728b23ec27d1cd919e0bbd57cdde1a1e421397.zip |
bug 4337 - bug in Python generated code
Diffstat (limited to 'py/python/Ice.py')
-rw-r--r-- | py/python/Ice.py | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/py/python/Ice.py b/py/python/Ice.py index 682f9a41d09..ab9dfcf5184 100644 --- a/py/python/Ice.py +++ b/py/python/Ice.py @@ -214,9 +214,14 @@ def getSliceDir(): # # Utilities for use by generated code. # + +_pendingModules = {} + def openModule(name): if sys.modules.has_key(name): result = sys.modules[name] + elif _pendingModules.has_key(name): + result = _pendingModules[name] else: result = createModule(name) @@ -232,17 +237,32 @@ def createModule(name): if sys.modules.has_key(curr): mod = sys.modules[curr] + elif _pendingModules.has_key(curr): + mod = _pendingModules[curr] else: nmod = imp.new_module(curr) - if mod: - setattr(mod, s, nmod) - sys.modules[curr] = nmod + _pendingModules[curr] = nmod mod = nmod curr = curr + "." return mod +def updateModule(name): + if _pendingModules.has_key(name): + pendingModule = _pendingModules[name] + mod = sys.modules[name] + mod.__dict__.update(pendingModule.__dict__) + del _pendingModules[name] + +def updateModules(): + for name in _pendingModules.keys(): + if sys.modules.has_key(name): + sys.modules[name].__dict__.update(_pendingModules[name].__dict__) + else: + sys.modules[name] = _pendingModules[name] + del _pendingModules[name] + def createTempClass(): class __temp: pass return __temp |