[Python-Dev] PEP 397 (Python launcher for Windows) reference implementation

Mark Hammond skippy.hammond at gmail.com
Fri Jul 1 04:21:54 CEST 2011


On 30/06/2011 10:09 PM, Vinay Sajip wrote:
> There's a lot to like in the PEP, and I have some questions relating to the
> latest version:
>
> 1. In the section on shebang line parsing, it says "If the command starts with
> the definition of a customized command followed by a space character, the
> customized command will be used." Sorry if I'm being dense, but what's the
> significance of the trailing space character? In fact, your vpython example in
> the customeised comments section doesn't show a trailing space - you've used
> '#! vpython' as the shebang line.

This is just clumsy wording on my part - what I'm trying to say is 
simply that 'vpython3' will not match a customized command 'vpython'.

> 2. The section on .ini files says that "Commands specified in the [.ini file
> in the] "application directory" [APPDATA] will have precedence over the one
> next to the [launcher] executable." What's the benefit of this?

The idea is that a user without admin permissions can customize the 
behaviour - so the admin can add a .ini file, but the user can override 
any commands in that file with their own definitions.

> If you have
> only one launcher executable of one type (say console, 32-bit) on a system,
> then there's no point in having two locations for .ini files.

The idea is that some users will not have permission to edit the one 
next to the launcher.  I'd be open to considering this yagni if others 
agree.

 > If you have
> multiple copies of the launcher and multiple .ini files next to them, then
> with this precedence order, you can't specialise the behaviour of anything in
> a specific launcher .ini that's also specified in the APPDATA .ini.

The intention is that there only be a single launcher, as only one app 
can be associated with .py files.  OTOH though, file associations can be 
configured per-user IIRC, and assuming that is the case, we could avoid 
my multiple-ini-file usecase above by just allowing a different launcher 
to be registered for a specific user.  This is sounding difficult from 
the UI perspective though (ie, does the installer then need to ask that 
question, will there be a post-install technique for per-user 
registration, etc?)

> Doesn't it
> make more sense to look for a setting in any file next to the launcher, and if
> not found there, look in the APPDATA? That way common things can be defined in
> the APPDATA .ini and overridden for special cases in the launcher-adjacent
> .ini. Or have I got completely the wrong end of the stick?

I came at this from the other angle under the assumption there will only 
be one launcher installed - so common things can be stored in the 
launcher-adjacent file and per-user special cases can be in the per-user 
APPDATA dir.

If the expectation was multiple launchers be installed, then I'd 
probably then prefer to KISS and only have the launcher-adjacent file 
supported at all.

>
> By the way, I've already converted the existing Python reference implementation
> to C (I did it before I saw your response to my post). It basically works in
> that it does what the Python version does, but doesn't include any handling of
> -32 suffixes or .ini files. I can post this on BitBucket if anyone's interested,
> but it's a work in progress. I'm working on some simple tests.

Sure, that would be awesome!  I think that will mean your impl is fairly 
close to the first draft of the PEP I checked into HG, which is nice and 
still quite useful to use :)

Thanks!

Mark


More information about the Python-Dev mailing list