[Patches] [ python-Patches-446899 ] Permit import of .pyw under Windows

noreply@sourceforge.net noreply@sourceforge.net
Thu, 02 Aug 2001 12:16:47 -0700


Patches item #446899, was opened at 2001-08-01 12:02
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=305470&aid=446899&group_id=5470

Category: core (C code)
Group: None
Status: Open
Resolution: None
Priority: 3
Submitted By: David Bolen (db3l)
Assigned to: Nobody/Anonymous (nobody)
Summary: Permit import of .pyw under Windows

Initial Comment:
Under windows, the extension .pyw is provided (in the 
default installation registry settings) to map scripts 
to pythonw.exe (no console) rather than python.exe.

While scripts thus named are generally top level 
scripts, in some cases even top level scripts are 
imported by other code (particularly with test 
harnesses).  However, Python itself does not recognize 
the pyw extension for import purposes.  While an 
explicit compilation of the pyw file can work around 
this, it is error prone and manual - and subject to 
failure if multiple Python releases are in use.

This patch adds .pyw as a possible source extension, 
on Windows only.  (With slight modification, it could 
permit the extension on any platform if desired).

The .pyw extension is secondary in the table to .py, 
so should both extensions exist (which is not a 
logical thing to do, but someone could do it), the 
import will find the .py prior to the .pyw.

The attached patch is against the CVS tree main branch 
as of 8/1.

-- David

----------------------------------------------------------------------

>Comment By: David Bolen (db3l)
Date: 2001-08-02 12:16

Message:
Logged In: YES 
user_id=53196

It appears that I was being too conservative (I put in the 
extra PYW case check thinking of a FAT filesystem).  After 
studying it further (and running some tests), 
make_compiled_pathname will always receive a path whose 
extension matches the case of that in  
_PyImport_StandardFiletab since it is Python itself that 
adds the extension (in find_module) that adds the extension 
when testing for the file.

I have attached a simplified patch to reflect that the case 
must simply be consistent between  
_PyImport_StandardFiletab and the code in 
make_compiled_pathname.  The code was tested on an NTFS 
filesystem using all lower, mixed case, and all upper.

-- David



----------------------------------------------------------------------

Comment By: Guido van Rossum (gvanrossum)
Date: 2001-08-02 05:42

Message:
Logged In: YES 
user_id=6380

I'm deleting the old patch for you.

I approve, except that it seems it would break if the
extension was ".Pyw" or ".pYw" etc. Sooner or later some
bozo will run into this, so better fix it now (or prove it
can't happen).


----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2001-08-01 23:31

Message:
Logged In: YES 
user_id=21627

I recommend to approve this patch.


----------------------------------------------------------------------

Comment By: David Bolen (db3l)
Date: 2001-08-01 12:25

Message:
Logged In: YES 
user_id=53196

I can't seem to delete the first diff file (even though 
it's my own patch submission), but please use the later 
version (SF file id 9138).  Thanks.

----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=305470&aid=446899&group_id=5470