On Mon, Feb 9, 2009 at 14:02, Guido van Rossum <guido at python.org> wrote: > On Mon, Feb 9, 2009 at 1:56 PM, <bcannon at gmail.com> wrote: > > Guido and I were discussing what a loader should be responsible for when > > load_module is called and an exception is raised in relation to > sys.modules > > as PEP 302 says nothing about the topic. > > > > We both agree that if the loader added a module to sys.modules it should > be > > removed, otherwise it should be left alone. > > > > Assuming no one disagrees I will update the PEP to specify that this is > the > > expected job of loaders. > > (Note that currently most loaders we've looked at end up removing the > module unconditionally, as this is what PyImport_ExecCodeModuleEx() > does. PyImport_ReloadModule() has a super-duper hack to save the > module object and put it back into sys.modules: > > if (newm == NULL) { > /* load_module probably removed name from modules because of > * the error. Put back the original module object. We're > * going to return NULL in this case regardless of whether > * replacing name succeeds, so the return value is ignored. > */ > PyDict_SetItemString(modules, name, m); > } > > If we could get conforming loaders to behave as proposed, we wouldn't > need this ugly hack. > PEP 302 was updated in r69632. -Brett -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20090214/0aa357f9/attachment.htm>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4