summaryrefslogtreecommitdiff
path: root/py/python/Ice.py
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2010-02-08 14:06:53 -0800
committerMark Spruiell <mes@zeroc.com>2010-02-08 14:06:53 -0800
commit7b728b23ec27d1cd919e0bbd57cdde1a1e421397 (patch)
tree86540b77f48fad37003c0e47ebbeb6c84701363e /py/python/Ice.py
parentfixing Slice docu typos (diff)
downloadice-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.py26
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