2 This patch of omniORB is made to make it work with multiple interpreters
3 and to correct the problem of incomplete import of CORBA packages
4 in some situations common in SALOME
6 This patch add or modify functions in omniORB module.
8 In multiple interpreters context, omniORB module is meant to be shared among
13 # Map of partially-opened modules
15 # Map of modules to share
18 # Function to return a Python module for the required IDL module name
19 def openModule(mname, fname=None):
20 # Salome modification start
21 # Be sure to use the right module dictionnary
23 # Salome modification end
26 mod = sys.modules["omniORB.CORBA"]
28 elif sys.modules.has_key(mname):
29 mod = sys.modules[mname]
31 if _partialModules.has_key(mname):
32 pmod = _partialModules[mname]
33 mod.__dict__.update(pmod.__dict__)
34 del _partialModules[mname]
36 elif _partialModules.has_key(mname):
37 mod = _partialModules[mname]
40 mod = newModule(mname)
42 # Salome modification start
43 shared_imported[mname]=mod
44 # Salome modification end
46 if not hasattr(mod, "__doc__") or mod.__doc__ is None:
47 mod.__doc__ = "omniORB IDL module " + mname + "\n\n" + \
51 mod.__doc__ = mod.__doc__ + " " + fname + "\n"
55 # Function to create a new module, and any parent modules which do not
58 # Salome modification start
59 # Be sure to use the right module dictionnary
61 # Salome modification end
63 mlist = string.split(mname, ".")
68 current = current + name
70 if sys.modules.has_key(current):
71 mod = sys.modules[current]
73 elif _partialModules.has_key(current):
74 mod = _partialModules[current]
77 newmod = imp.new_module(current)
78 if mod: setattr(mod, name, newmod)
79 _partialModules[current] = mod = newmod
81 current = current + "."
85 # Function to update a module with the partial module store in the
87 def updateModule(mname):
88 if _partialModules.has_key(mname):
89 pmod = _partialModules[mname]
90 mod = sys.modules[mname]
91 mod.__dict__.update(pmod.__dict__)
92 del _partialModules[mname]
94 omniORB.updateModule=updateModule
95 omniORB.newModule=newModule
96 omniORB.openModule=openModule