Re: [Python-Dev] What about PEP 299?

2006-03-29 Thread Brett Cannon
On 3/29/06, Guido van Rossum <[EMAIL PROTECTED]> wrote:
> Die, thread.
>
> Do I personally have to go into svn and reject this PEP?

No, just get a procrastinating student to do it.

-Brett
___
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


Re: [Python-Dev] What about PEP 299?

2006-03-29 Thread Georg Brandl
Guido van Rossum wrote:
> Die, thread.
> 
> Do I personally have to go into svn and reject this PEP?

After my latest channeling disaster, I was cautious about this one ;)

I'll reject it now.

Georg

___
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


Re: [Python-Dev] What about PEP 299?

2006-03-29 Thread Guido van Rossum
Die, thread.

Do I personally have to go into svn and reject this PEP?

--
--Guido van Rossum (home page: http://www.python.org/~guido/)
___
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


Re: [Python-Dev] What about PEP 299?

2006-03-29 Thread Nick Coghlan
Guido van Rossum wrote:
> On 3/28/06, Charles Cazabon <[EMAIL PROTECTED]> wrote:
>> It might be worth instead adding an option flag to the executable that 
>> implies
>> "from the loaded module, run __main__() with sys.argv as its argument(s)", so
>> the user can get this behaviour with `python -X somemodule.py`.
> 
> You can do "python -x somemodule" as long as somemodule.py uses the if
> __name__=='__main__' convention. What does your proposal add?

FWIW, you can already (Python 2.4) do something like:

--- x.py -

import sys

if __name__ == __main__:
 del sys.argv[0] # Get rid of reference to ourselves
 mod_name = sys.argv[0]  # First arg is now module to be run
 mod = __import__(mod_name)  # Run the top level module code
 main = mod.__main__ # Grab the main function
 sys.modules["__main__"] = mod   # Make that module the __main__ one
 try:
 sys.argv[0] = mod.__file__  # Try to set argv[0] properly
 except AttributeError:
 pass
 sys.exit(main(*sys.argv))   # Run the function

-

Put that in site-packages and "python -mx somemodule" will do exactly as 
Charles describes.

Getting it to work with a filename instead of a module name would be a bit 
trickier, but not a lot.

However, I think PEP 299 is mainly a holdover from C/C++/Java where the top 
level of a module is a play area for the compiler that the runtime never 
really gets to see. I know I found PEP 299 appealing when I first seriously 
started using Python, but the appeal faded over time as I got used to the idea 
of being able to have control logic at the top level of a module (to the point 
where the idea is now thoroughly *un*appealing).

PEP 299's other 'use case' (trying to run another program's main function from 
within the current program) seems like a recipe for disaster - far better to 
use the subprocess module instead (since, strangely enough, application 
initialisation code has this tendency to assume it has sole control of the 
interpreter).

Cheers,
Nick.


-- 
Nick Coghlan   |   [EMAIL PROTECTED]   |   Brisbane, Australia
---
 http://www.boredomandlaziness.org
___
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


Re: [Python-Dev] What about PEP 299?

2006-03-28 Thread Guido van Rossum
OK. -1 on PEP 299 it is.

On 3/28/06, Charles Cazabon <[EMAIL PROTECTED]> wrote:
> Guido van Rossum <[EMAIL PROTECTED]> wrote:
> > On 3/28/06, Charles Cazabon <[EMAIL PROTECTED]> wrote:
> > > It might be worth instead adding an option flag to the executable that 
> > > implies
> > > "from the loaded module, run __main__() with sys.argv as its 
> > > argument(s)", so
> > > the user can get this behaviour with `python -X somemodule.py`.
> >
> > You can do "python -m somemodule" as long as somemodule.py uses the if
> > __name__=='__main__' convention. What does your proposal add?
>
> Well, it's not really my proposal.  I'm just suggesting the behaviour in
> PEP299 could be added via a commandline option so that it doesn't introduce
> backward-incompatibility.
>
> I don't see any particular benefit to PEP299 myself -- I'd rather just add an
> entry to the style guide about standardizing the "executable stanza" and 
> main() function.
>
> Charles
> --
> ---
> Charles Cazabon   <[EMAIL PROTECTED]>
> GPL'ed software available at:   http://pyropus.ca/software/
> ---
> ___
> 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/guido%40python.org
>


--
--Guido van Rossum (home page: http://www.python.org/~guido/)
___
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


Re: [Python-Dev] What about PEP 299?

2006-03-28 Thread Charles Cazabon
Guido van Rossum <[EMAIL PROTECTED]> wrote:
> On 3/28/06, Charles Cazabon <[EMAIL PROTECTED]> wrote:
> > It might be worth instead adding an option flag to the executable that 
> > implies
> > "from the loaded module, run __main__() with sys.argv as its argument(s)", 
> > so
> > the user can get this behaviour with `python -X somemodule.py`.
> 
> You can do "python -m somemodule" as long as somemodule.py uses the if
> __name__=='__main__' convention. What does your proposal add?

Well, it's not really my proposal.  I'm just suggesting the behaviour in
PEP299 could be added via a commandline option so that it doesn't introduce
backward-incompatibility.  

I don't see any particular benefit to PEP299 myself -- I'd rather just add an
entry to the style guide about standardizing the "executable stanza" and main() 
function.

Charles
-- 
---
Charles Cazabon   <[EMAIL PROTECTED]>
GPL'ed software available at:   http://pyropus.ca/software/
---
___
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


Re: [Python-Dev] What about PEP 299?

2006-03-28 Thread Guido van Rossum
Sorry, I meant "python -m somemodule".

On 3/28/06, Guido van Rossum <[EMAIL PROTECTED]> wrote:
> On 3/28/06, Charles Cazabon <[EMAIL PROTECTED]> wrote:
> > It might be worth instead adding an option flag to the executable that 
> > implies
> > "from the loaded module, run __main__() with sys.argv as its argument(s)", 
> > so
> > the user can get this behaviour with `python -X somemodule.py`.
>
> You can do "python -x somemodule" as long as somemodule.py uses the if
> __name__=='__main__' convention. What does your proposal add?
>
> --
> --Guido van Rossum (home page: http://www.python.org/~guido/)
>


--
--Guido van Rossum (home page: http://www.python.org/~guido/)
___
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


Re: [Python-Dev] What about PEP 299?

2006-03-28 Thread Guido van Rossum
On 3/28/06, Charles Cazabon <[EMAIL PROTECTED]> wrote:
> It might be worth instead adding an option flag to the executable that implies
> "from the loaded module, run __main__() with sys.argv as its argument(s)", so
> the user can get this behaviour with `python -X somemodule.py`.

You can do "python -x somemodule" as long as somemodule.py uses the if
__name__=='__main__' convention. What does your proposal add?

--
--Guido van Rossum (home page: http://www.python.org/~guido/)
___
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


Re: [Python-Dev] What about PEP 299?

2006-03-28 Thread Charles Cazabon
Guido van Rossum <[EMAIL PROTECTED]> wrote:
> On 3/28/06, Georg Brandl <[EMAIL PROTECTED]> wrote:
> > since I found myself writing "if __name__ == '__main__'"
> > often these days, I wondered whether PEP 299 could be pronounced
> > upon. I'm not proposing putting it into 2.5, but it should be
> > relatively small a change.
> 
> If you're asking for a quick pronouncement, it's going to be "no".
> It's not worth the change (in docs, user habits, etc.) and there's
> nothing particularly broken.

It might be worth instead adding an option flag to the executable that implies
"from the loaded module, run __main__() with sys.argv as its argument(s)", so
the user can get this behaviour with `python -X somemodule.py`.

Charles
-- 
---
Charles Cazabon   <[EMAIL PROTECTED]>
GPL'ed software available at:   http://pyropus.ca/software/
---
___
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


Re: [Python-Dev] What about PEP 299?

2006-03-28 Thread Guido van Rossum
On 3/28/06, Georg Brandl <[EMAIL PROTECTED]> wrote:
> since I found myself writing "if __name__ == '__main__'"
> often these days, I wondered whether PEP 299 could be pronounced
> upon. I'm not proposing putting it into 2.5, but it should be
> relatively small a change.

If you're asking for a quick pronouncement, it's going to be "no".
It's not worth the change (in docs, user habits, etc.) and there's
nothing particularly broken.

--
--Guido van Rossum (home page: http://www.python.org/~guido/)
___
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


Re: [Python-Dev] What about PEP 299?

2006-03-28 Thread Phillip J. Eby
At 09:22 PM 3/28/2006 +0200, Georg Brandl wrote:
>Hi,
>
>since I found myself writing "if __name__ == '__main__'"
>often these days, I wondered whether PEP 299 could be pronounced
>upon. I'm not proposing putting it into 2.5, but it should be
>relatively small a change.

A couple of issues that the PEP doesn't address:

* How can you write code that runs in multiple Python versions with 
this?  If you use the current idiom to invoke __main__, it's going to get 
invoked twice.

* A module that imports __main__ (using "import __main__") is going to get 
a TypeError unless the implementation checks that __main__ is not in fact 
the __main__ module.

___
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


[Python-Dev] What about PEP 299?

2006-03-28 Thread Georg Brandl
Hi,

since I found myself writing "if __name__ == '__main__'"
often these days, I wondered whether PEP 299 could be pronounced
upon. I'm not proposing putting it into 2.5, but it should be
relatively small a change.

Cheers,
Georg

___
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