On Feb 18, 3:49 pm, Jean-Michel Pichavant <jeanmic...@sequans.com> wrote: > Sreejith K wrote: > > On Feb 18, 1:57 pm, Steven D'Aprano > > <ste...@remove.this.cybersource.com.au> wrote: > > >> On Thu, 18 Feb 2010 00:03:51 -0800, Jonathan Gardner wrote: > > >>> On Feb 17, 10:48 pm, Sreejith K <sreejith...@gmail.com> wrote: > > >>>> Hi everyone, > > >>>> I need to implement custom import hooks for an application > >>>> (http://www.python.org/dev/peps/pep-0302/). I want to restrict an > >>>> application to import certain modules (say socket module). Google app > >>>> engine is using a module hook to do this (HardenedModulesHook in > >>>> google/ appengine/tools/dev_appserver.py). But I want to allow that > >>>> application to use an sdk module (custom) which imports and uses socket > >>>> module. But the module hook restricts the access by sdk. Finding out, > >>>> which file is importing a module give a solution?? ie. If the > >>>> application is importing socket module, I want to restrict it. But if > >>>> the sdk module is importing socket I want to allow it. Is there any way > >>>> I can do this ? > > >>>> Application > >>>> ======== > >>>> import sdk > >>>> import socket # I dont want to allow this (need to raise > >>>> ImportError) > > >>>> SDK > >>>> ==== > >>>> import socket # need to allow this > > >>> SDK > >>> === > >>> import socket > > >>> App > >>> === > >>> import SDK > >>> import sys > >>> socket = sys.modules['socket'] > > >> I'm not sure, but I think Sreejith wants to prohibit imports from the App > >> layer while allowing them from the SDK layer, not work around a > >> prohibition in the SDK layer. > > >> In other words, he wants the import hook to do something like this: > > >> if module is socket and the caller is not SKD: > >> prohibit > >> else > >> allow > > >> I could be wrong of course. > > >> -- > >> Steven > > > @Steven, Thats exactly what I want.. Anyway to do that ?? > > import sys > sys.modules['socket'] = None > > import socket > --------------------------------------------------------------------------- > ImportError Traceback (most recent call last) > > ImportError: No module named socket > > JM
@Jean. Thanks for the reply. But this is not what I wanted. The import hook already restricts socket imports in applications. But I want them in sdk package (alone) which is being imported in the application. I don't want applications to directly use the socket module. That means I want to make some exceptions for sdk in import hooks. -- http://mail.python.org/mailman/listinfo/python-list