Macro expansion: intercept statement interpretation

Benjamin Niemann pink at odahoda.de
Tue Aug 24 18:00:18 EDT 2004


You could try to override __import__ to first parse the source for macro 
definitions and do the expansions. Usage would then be:

import DoMagicWithImportModule
import ModuleWithMacros

(Your code wouldn't work, because python throws a SyntaxError long 
before it even tries to execute 'import MyCustomMacroLib')
The code at http://docs.python.org/lib/examples-imp.html could be 
extended to first read the contents of the module (after find_module) 
and passes the expanded source (e.g. as a StringIO) to load_module.

This has of course the problem (that many implementations of macro 
expansion share) that line numbers in exception dumps have not much 
relation to lines of the unexpanded code...



More information about the Python-list mailing list