Daniel Russel wrote: > How are cross-module python dependencies handled in the current build > system? If I just %import core.i in misc.i then swig tries to load a > module IMP_core rather than IMP.core. Changing the module name to > IMP.core in core.i doesn't work since swig declares macros using the > name and macros can't have "." in then.
I'm surprised Keren wasn't able to answer this one, because she ran into the same problem a little while ago with Assembler. Yes, it's exactly as you state. SWIG does the right thing at wrapping the modules and all of the C++ inheritance is handled correctly, except for one point - any Python inheritance results in an 'import IMP_core' in the Python code rather than the correct 'import IMP.core', and we can't use "." in the module names for various reasons (another is that I've never seen a DLL or so with "." in the name, and it would probably cause problems somewhere - underscores are almost always used for delimiters, e.g. in the Boost shared objects). Keren currently handles this with a simple sed of the generated Python module to replace IMP_core with IMP.core. This obviously isn't a permanent solution, but I will look into better long term fixes.
Ben