[Python-Dev] Undocumented PEP 302 protocol change by need-for-speed sprint

glyph at divmod.com glyph at divmod.com
Thu Jul 20 22:17:46 CEST 2006


On Thu, 20 Jul 2006 14:57:07 -0400, "Phillip J. Eby" <pje at telecommunity.com> wrote:
>While investigating the need to apply http://python.org/sf/1525766 I found
>that there was a modification to pkgutil during the need-for-speed sprint
>that affects the PEP 302 protocol in a backwards incompatible way.

It just so happens that the bug that is reported was probably reported because
I'm working on some controversial new functionality in Twisted - controversial
because it replicates the functionality that bug is about in pkgutil.  This
functionality does make some use of PEP 302 functionality :).

    See <http://twistedmatrix.com/trac/ticket/1940>

>Specifically, PEP 302 documents that path_importer_cache always contains
>either importer objects or None.  Any code written to obtain importer
>objects is therefore now broken, because import.c is slapping False in for
>non-existent filesystem paths.

Oddly, for once I'm going to say I don't care about this change.  The code
I've written so far doesn't depend on this, and I was pretty careful to be
conservative about depending too much on the stuff described in PEP 302.  It
documents several features which don't exist (get_data, and methods in the 
"imp" module which don't exist in python2.3 or python2.4, where it was 
nominally accepted).

>There are several options as to how to proceed:

>2. Document the breakage, update PEP 302, and make everybody update their code

Personally I'd prefer it if PEP 302 were updated for a variety of reasons.
It's very hard to use as a reference for writing actual code because so many
features are "optional" or "open issues", and there's no description in the 
PEP of what their status is.

Better yet, this breakage (and other things) should be documented in the
Python reference, and the PEP should link to the documentation for different
versions, which can each describe the PEP's implementation status.  The
"importing modules" section of the library reference seems like a natural
place to put it.



More information about the Python-Dev mailing list