[Python-Dev] Walking up the package hierarchy

M.-A. Lemburg mal@lemburg.com
Mon, 11 Oct 1999 22:36:07 +0200


This is a multi-part message in MIME format.
--------------8F8110B6CFB57E279F385677
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi everybody,

while I'm still thinking about writing the import manager, here
is a patch that implements the walk-up-the-hierarchy import scheme
that got so much positive feedback. I'm intending to use this
implementation as proof of concept for the switch to my new
package structure, but wouldn't mind seeing something like it
the distribution as well ;-)

It changes the default import mechanism to work like this:

>>> import d
try a.b.c.d
try a.b.d
try a.d
try d
fail

instead of just doing the current two-level lookup:

>>> import d
try a.b.c.d
try d
fail

As a result, relative imports referring to higher level packages
work out of the box without any ugly underscores in the import name.
Plus the whole scheme is pretty simple to explain and straightforward.

Since the patch is so small, I attached it to this mail. Hope
you don't mind. The ZIP archive also contains a sample package
which demonstrates the feature. Run Python with -v flag to see how
the new scheme works.

Feedback is most welcome. I am especially interested whether the
scheme breaks any existing packages.

-- 
Marc-Andre Lemburg
______________________________________________________________________
Y2000:                                                    81 days left
Business:                                      http://www.lemburg.com/
Python Pages:                           http://www.lemburg.com/python/
--------------8F8110B6CFB57E279F385677
Content-Type: application/x-zip-compressed;
 name="walkingimport.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="walkingimport.zip"

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
AFBLBQYAAAAABQAFAGYBAADxCAAAAAA=
--------------8F8110B6CFB57E279F385677--