On 21/08/07, Brett Cannon <[EMAIL PROTECTED]> wrote:
> PEP 302 ("New Import Hooks") has an optional extensions section so
> that tools like py2exe and py2app have an easier time.  Part of the
> optional extensions is the method get_code that is to return the code
> object for the specified method (if the loader can handle it).
>
> But there is a lack in the definition of how get_code is supposed to
> be implemented.  The definition says that the "method should return
> the code object associated with the module", which is fine.  But then
> it goes on to state that "If the loader doesn't have the code object
> but it _does_ have the source code, it should return the compiled
> source code".  This throws me as this makes it sound like bytecode
> does not need to be used if the loader does not already have a code
> object and there is no source to be had; any bytecode can be ignored.
>
> Now I doubt this is how it is supposed to be read.  Does anyone
> disagree with that?  If not, I will change the wording to mention that
> bytecode must be used if no source is available (and that the magic
> number must be verified).

Hmm, yes, that's muddled. Maybe it made sense to me when I wrote it
:-) (I think it was my wording rather than Just's)

get_code must *always* return the same code object that
loader.load_module is using - whether that be bytecode or compiled
source (and it must respect things like file timestamps where
appropriate just like load_module does). What the sentence you quote
is trying to say is that if there's a need to compile source, the
get_code method must do this on behalf of the caller - it can't return
None and expect the caller to try get_source and compile it manually.
Someone who only wants a code object should never need to call
get_source.

I'm not sure that's any clearer! If you need further clarification,
let me know (either on or off list). I'd appreciate it if you can
clear the PEP's wording up.

Paul.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to