[Python-Dev] [compatibility-sig] making sure importlib.machinery.SourceLoader doesn't throw an exception if bytecode is not supported by a VM (original) (raw)

Brett Cannon brett at python.org
Tue Jun 12 22:17:02 CEST 2012


On Tue, Jun 12, 2012 at 3:53 PM, Jeff Hardy <jdhardy at gmail.com> wrote:

On Tue, Jun 12, 2012 at 12:01 PM, Brett Cannon <brett at python.org> wrote: > On Tue, Jun 12, 2012 at 2:28 PM, Eric Snow <ericsnowcurrently at gmail.com> > wrote: >> >> On Tue, Jun 12, 2012 at 10:48 AM, Brett Cannon <brett at python.org> wrote: >> > I should mention another option is to add sys.dontreadbytecode (I >> > think I >> > have discussed this with Frank at some point). >> >> Or check for "sys.implementation.cachetag is None"... > > > Perfect! Will that work for Jython (Franke) and IronPython (Jeff)?

IronPython will probably never write pyc files, but it might read them at some point -- as I understand cachetag, we'd set it to whatever version of CPython's pyc files we could read (that seems to violate the spirit of sys.implementation).

If you wanted to sneak around not writing your own bytecode but still reading it, then yes, you could do that. And yes, that does somewhat violate the concept of what sys.implementation.cache_tag was supposed to do. =)

The combination of that and

sys.dont_write_bytecode should cover all of the states; I'll just lock

down sys.dontwritebytecode so that changes are completely ignored.

Great!

> > This does mean, though, that imp.cachefromsource() and > imp.sourcefromcache() might need to be updated to raise a reasonable > exception when sys.implementation.cachetag is set to None as I believe > right now it will raise a TypeError because None isn't a str. But what to > raise instead? TypeError? EnvironmentError?

NotImplementedError?

That's also a possibility. I also realized that importlib checks for None being returned by cache_from_source(), so that's another option (which ties into how the rest of the PEP 302 methods work). -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20120612/a60b9c06/attachment-0001.html>



More information about the Python-Dev mailing list