I think I solved all my three questions for myself now ... On Fri, 29 Jun, Stefan Bellon wrote:
> 1) The above code seems to work ok when using the "import" statement, > but it does not when using the dynamic __import__ function. If > using it that way, I get: > > >>> sys=__import__("sys") > Traceback (most recent call last): > File "<stdin>", line 1, in ? > SystemError: new style getargs format but argument is not a tuple > > What am I missing in order to get the __import__ function covered > as well? static PyMethodDef import_hook[] = { {"__import__", __import__, METH_VARARGS, import_doc}, {NULL, NULL} }; Adding the METH_VARARGS solved this, now the __import__ function is intercepted as well. > 2) Another point is, that I need to check _from where_ the module is > imported. In fact, this is going to become part of the consistency > check condition. How can I find out from which module the import > was initiated? > > > 3) My final point is related to 2) ... if I get to the module object, > then how do I get at the source file name of that? I noticed that > when a .pyc is available, then this is preferred. I'd like to get > at the .py file itself. Is this available or do I just have to > strip off the trailing 'c' (or 'o'?) if present (seems hacky to > me). By not focusing on the module but using sys._getframe().f_code.co_filename I solved point 2 and 3 in one go. I'm still looking forward to comments regarding this issue. ;-) -- Stefan Bellon -- http://mail.python.org/mailman/listinfo/python-list