Re: Proposal: add sys to __builtins__

2005-09-26 Thread Tom Anderson
On Sun, 25 Sep 2005, James Stroud wrote:

> I'm into *real* purity. I would rather begin every script:
>
>  from python import list, str, dict, sys, os
>
> Oh wait. I only use dict in less than 50% of my scripts:
>
>  from python import list, str, sys, os
>
> That's better.

What? How exactly is that pure? "from x import y" is bletcherosity 
incarnate! You should do:

import python

s = python.str(5)
# etc

And don't let me see you importing like that again!

tom

-- 
90% mental, 25% effort, 8% mathematics
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-25 Thread James Stroud
I'm into *real* purity. I would rather begin every script:

  from python import list, str, dict, sys, os

Oh wait. I only use dict in less than 50% of my scripts:

  from python import list, str, sys, os

That's better.



On Saturday 03 September 2005 02:09, tiissa wrote:
> I was just stating your proposal didn't really solve anything. A good
> editor/template and .pythonrc already save you the typing of 'import
> sys' in scripts for the former and shell command for the latter.

-- 
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095

http://www.jamesstroud.com/
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-06 Thread Rick Wotnaz
"Michael J. Fromberger"
<[EMAIL PROTECTED]> wrote in
news:[EMAIL PROTECTED]: 

> In article <[EMAIL PROTECTED]>,
>  Rick Wotnaz <[EMAIL PROTECTED]> wrote:
> 
>> You're right that there is no necessity for such a change. I
>> was not actually talking about importing *any* module in every
>> case, but rather about importing, say, 'sys' when, for example,
>> sys.argv appeared in the code and no import had been specified.
> 
> I think I must have missed that post; I will go back and look at
> it.  However, while I'm here, how would your proposal deal with
> code like this:
> 
>import foobar
> 
># ... some while later ...
>def f( ... ):
>   ...
>   global foobar, sys
>   sys = foobar
>   ...
> 
># ... some while even later ...
>f( ... )
>sys.wallaby("Fear and loathing!")
> 
> In particular, we have no import of sys, but the name "sys" is 
> meaningful as a local alias for a different module.  I'm not
> saying you couldn't deal with this, but it rules out some of the
> more obvious ways of detecting and automatically handling this
> kind of substitution. 
> 
> Naturally, you might well ask, "why would you do such a fool
> thing?"  To this I can only respond:  "Never underestimate the
> ingenuity of fools." 
> 

I don't know that this would cause any particular problem with the 
[not exactly-]proposed method. The automagic lookup would not be 
triggered until a NameError occurred, which would not happen in this 
case. As you say, why would anyone -- at least anyone who wanted to 
rely on sys.xxx being automatically resolved -- do such a thing? Even 
under the current scheme, occluding 'sys' would prevent correct 
interpretation of sys.argv. An error is an error in either case.

Now, if 'wallaby' is not part of the foobar namespace, the automagic 
system would kick in an incorrectly import sys, and on retry would 
still not find 'wallaby' in the namespace. Much merriment would 
ensue, I'm sure. At that point, I'd want such a system to have a 
nervous breakdown and allow the debugging to begin. Whether I hand-
entered an import statement or not wouldn't change that.

-- 
rzed
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-06 Thread Patrick Maupin
Sybren Stuvel wrote:

> A programming language should not be ambiguous. The choice
> between importing a module and calling a function should not
> depend on the availability of a (local) variable.

Yeah, this behavior would be as ambiguous as if we had a system-defined
search-path for modules, where you might get one module or another
depending on the path order.  Oh, wait -- we have one of those.

> The question is not if it's possible or not - in principle, everything
> is possible. The question is if it is desirable.

Exactly.  So it pays to try to understand what the payoff might be, and
I always try to be open-minded about that (although I sometimes fail
miserably in this goal).  In the case of sys.path, the payoff is that a
Python application has a small chance of running on a completely
different system.  In the case of automagic importation, the only
payoff I have seen discussed is that some people would be happier with
a little less typing.

The thing I always find baffling is that people who find it hard to
type "import sys" seem to find it quite easy to write eight paragraphs
explaining why it's bad to have to type "import sys."

Regards,
Pat

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-06 Thread Michael J. Fromberger
In article <[EMAIL PROTECTED]>,
 Rick Wotnaz <[EMAIL PROTECTED]> wrote:

> You're right that there is no necessity for such a change. I was 
> not actually talking about importing *any* module in every case, 
> but rather about importing, say, 'sys' when, for example, sys.argv 
> appeared in the code and no import had been specified.

I think I must have missed that post; I will go back and look at it.  
However, while I'm here, how would your proposal deal with code like 
this:

   import foobar

   # ... some while later ...
   def f( ... ):
  ...
  global foobar, sys
  sys = foobar
  ...

   # ... some while even later ...
   f( ... )
   sys.wallaby("Fear and loathing!")

In particular, we have no import of sys, but the name "sys" is 
meaningful as a local alias for a different module.  I'm not saying you 
couldn't deal with this, but it rules out some of the more obvious ways 
of detecting and automatically handling this kind of substitution.

Naturally, you might well ask, "why would you do such a fool thing?"  To 
this I can only respond:  "Never underestimate the ingenuity of fools."

-M

-- 
Michael J. Fromberger | Lecturer, Dept. of Computer Science
http://www.dartmouth.edu/~sting/  | Dartmouth College, Hanover, NH, USA
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-06 Thread Christopher Subich
Michael J. Fromberger wrote:

 > While I'm mildly uncomfortable with the precedent that would be set 
by including the contents of "sys" as built-ins, I must confess my 
objections are primarily aesthetic:  I don't want to see the built-in 
namespace any more cluttered than is necessary -- or at least, any more 
than it already is.


I agree with this sentiment, and I'll also additionally say that 'import 
sys' doesn't seem to be needed when writing sufficiently high-level 
code.  My python mud client (forever in development, but the 
structure-code is mostly done) uses TKinter, Twisted, and glue code for 
just about everything.

In currently 1,080 lines of Python code (reported by wc -l, so it 
includes a few blank lines) in 9 files, I needed "import sys" once. [1]

After I import sys, I use it exactly once -- I check the platform so I 
can use the higher resolution time.clock on win32 [time.time on win32 
(win2k) seems to have a resolution of 10ms, while on a 'nix I tested 
with time.time has at least ms resolution].  I'll probably use sys again 
somewhere to build an automagic version/platform string, but uses for it 
seem to be very limited.

I also have 0 imports of 'os', and the only immediately useful case that 
comes to mind is implementation of a #dir scripting command -- providing 
a minimal shell functionality, and this is certainly not a core 
component of the program.

In my opinion, using 'sys' and 'os' are extreme examples of "low-level" 
Python programming.  This sort of thing is probably very useful for 
writing actual scripts that replace the sort of work done by shell 
scripts, but as programs get more complicated I think they'd be used 
(proportionally) less and less.

I'm -0.9 on sys (really don't like the idea but it wouldn't be awful to 
see it included in __builtins__, provided it's namespaced appropriately) 
and -1 on os.

[1] Actually, it's in there three times, but they're all in the same 
file -- I'd just left a legacy 'import sys' in a couple local scopes and 
forgot to remove them.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-05 Thread Rick Wotnaz
"Michael J. Fromberger"
<[EMAIL PROTECTED]> wrote in
news:[EMAIL PROTECTED]: 

> In article <[EMAIL PROTECTED]>,
>  Rick Wotnaz <[EMAIL PROTECTED]> wrote:
> 
>> Michael Hoffman <[EMAIL PROTECTED]> wrote in
>> news:[EMAIL PROTECTED]: 
>> 
>> > What would people think about adding sys to __builtins__ so
>> > that "import sys" is no longer necessary? This is something I
>> > must add to every script I write that's not a one-liner since
>> > they have this idiom at the bottom:
>> > 
>> > if __name__ == "__main__":
>> >  sys.exit(main(sys.argv[1:]))
>> > 
>> > [...]
>> > 
>> > In short, given the wide use of sys, its unambiguous nature,
>> > and the fact that it really is built-in already, although not
>> > exposed as such, I think we would be better off if sys were
>> > always allowed even without an import statement.
>> 
>> +1 here. As far as I'm concerned, both os and sys could be
>> special- cased that way. That said, I would guess the
>> likelihood of that happening is 0.
> 
> While I'm mildly uncomfortable with the precedent that would be
> set by including the contents of "sys" as built-ins, I must
> confess my objections are primarily aesthetic:  I don't want to
> see the built-in namespace any more cluttered than is necessary
> -- or at least, any more than it already is.
> 
> But "os" is another matter -- the "os" module contains things
> which might well not be present in an embedded Python
> environment (e.g., file and directory structure navigation,
> stat).  Do you really want to force everyone to deal with that? 
> Is it so much more work to add "import os" to those Python
> programs that require it? 
> 
> Of course, you might counter "why should we force everybody else
> to type `import os' just in case somebody wants to imbed
> Python?"  But then, why don't we just include the whole standard
> library in __builtins__?  Or, since that would be too much,
> maybe we survey the user community and include the top fifteen
> most included modules!  Where do you draw the line?  Do you
> really want to hard-code user opinions into the language? 
> 
> Right now, we have a nice, simple yet effective mechanism for 
> controlling the contents of our namespaces.  I don't think this
> would be a worthwhile change.  -1.
> 

You're right that there is no necessity for such a change. I was 
not actually talking about importing *any* module in every case, 
but rather about importing, say, 'sys' when, for example, sys.argv 
appeared in the code and no import had been specified. In another 
post I go into a little more detail about what I meant, but in any 
case I did not and do not think it's necessary. I have no problem 
keying in the import statement and the current system works fine. 
It could be argued that it would be convenient in the case of quick 
utility code not to have to import well-known modules explicitly, 
and it could be argued that 'sys' in particular contains much that 
is so seemingly fundamental that it could be built in. I'd not 
argue that it should be split out if it were already built in; it 
seems to be borderline standard as it is. I suppose it's a C 
mindset talking, there.

When I'm cobbling together a Q&D script, my routine often involves 
running it once and then going back in and inserting the single 
import line that I forgot. It's a minor annoyance, because it seems 
clear to me that the needed information is actually available to 
Python when it kicks out its NameError. But it *is* minor, and I am 
not seriously proposing a change to Python in this regard.

-- 
rzed
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-05 Thread Michael J. Fromberger
In article <[EMAIL PROTECTED]>,
 Rick Wotnaz <[EMAIL PROTECTED]> wrote:

> Michael Hoffman <[EMAIL PROTECTED]> wrote in
> news:[EMAIL PROTECTED]: 
> 
> > What would people think about adding sys to __builtins__ so that
> > "import sys" is no longer necessary? This is something I must
> > add to every script I write that's not a one-liner since they
> > have this idiom at the bottom:
> > 
> > if __name__ == "__main__":
> >  sys.exit(main(sys.argv[1:]))
> > 
> > [...]
> > 
> > In short, given the wide use of sys, its unambiguous nature, and
> > the fact that it really is built-in already, although not
> > exposed as such, I think we would be better off if sys were
> > always allowed even without an import statement.
> 
> +1 here. As far as I'm concerned, both os and sys could be special-
> cased that way. That said, I would guess the likelihood of that 
> happening is 0.

While I'm mildly uncomfortable with the precedent that would be set by 
including the contents of "sys" as built-ins, I must confess my 
objections are primarily aesthetic:  I don't want to see the built-in 
namespace any more cluttered than is necessary -- or at least, any more 
than it already is.

But "os" is another matter -- the "os" module contains things which 
might well not be present in an embedded Python environment (e.g., file 
and directory structure navigation, stat).  Do you really want to force 
everyone to deal with that?  Is it so much more work to add "import os" 
to those Python programs that require it?

Of course, you might counter "why should we force everybody else to type 
`import os' just in case somebody wants to imbed Python?"  But then, why 
don't we just include the whole standard library in __builtins__?  Or, 
since that would be too much, maybe we survey the user community and 
include the top fifteen most included modules!  Where do you draw the 
line?  Do you really want to hard-code user opinions into the language?

Right now, we have a nice, simple yet effective mechanism for 
controlling the contents of our namespaces.  I don't think this would be 
a worthwhile change.  -1.

-M

-- 
Michael J. Fromberger | Lecturer, Dept. of Computer Science
http://www.dartmouth.edu/~sting/  | Dartmouth College, Hanover, NH, USA
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-05 Thread Sybren Stuvel
Rick Wotnaz enlightened us with:
> That is, a reference to xxx.func(), without a previous import of xxx
> *could* be resolvable automatically, at least for those modules that
> can be found in a standard location.

-1 on that one. If I want to use a module, I'll write an import
statement for it. Those import statements make it very easy to get an
overview of the modules in use.

Automatically importing modules has the counter-effect of not
generating errors when they should be. Someone could have a class
stored in a variable 'os' and call a function on it. If this person
forgets to assign a value to 'os', an error message should be given
instead of importing the 'os' module.

Another issue is speed. If every reference in the form xxx.yyy has to
trigger an import when xxx isn't known, it will probably slow down
programs quite badly.

A programming language should not be ambiguous. The choice between
importing a module and calling a function should not depend on the
availability of a (local) variable.

> I don't see why it would be impossible to make that happen
> automatically, provided the module to be imported was recognized
> (through some undefined magic).

The question is not if it's possible or not - in principle, everything
is possible. The question is if it is desirable.

> A developer would most likely want to set up the imports properly,
> and to know when they were not correctly set up instead of having
> Python fix things quietly.

Yep.

> But *could* it be done? I'd think so. 

Sure.

Sybren
-- 
The problem with the world is stupidity. Not saying there should be a
capital punishment for stupidity, but why don't we just take the
safety labels off of everything and let the problem solve itself? 
 Frank Zappa
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-04 Thread Rick Wotnaz
"Terry Reedy" <[EMAIL PROTECTED]> wrote in
news:[EMAIL PROTECTED]: 

> 
> "Colin J. Williams" <[EMAIL PROTECTED]> wrote in message 
> news:[EMAIL PROTECTED]
>> Rick Wotnaz wrote:
>>> +1 here. As far as I'm concerned, both os and sys could be
>>> special- cased that way. That said, I would guess the
>>> likelihood of that happening is 0.
>>>
>> +1 for both.
> 
> Some people might prefer that math be special cased.  Or some
> other module. A neutral criterion is needed.
> 

Actually, I don't think it's beyond reason to suggest that any 
module included with the standard distribution be special-cased in 
this way. That is, a reference to xxx.func(), without a previous 
import of xxx *could* be resolvable automatically, at least for 
those modules that can be found in a standard location. Whether 
it's a good idea to do so is another question. 

Offhand, I am not sure why it would be an insanely poor idea. It 
would mean some funky namespace building and possibly redundant 
imports, I guess. I'll certainly defer to just about anybody else's 
opinion as to the difficulty and advisability, but I believe it 
would be possible to do. 

Note that I am not saying that a reference to, say, 'argv' should 
provoke an automatic import. I don't mean that some automatic 
search for a matching function name should be done through some 
undefined module chain. I'm talking only about qualified 
references, like os.path or sys.stderr. 

As it is, a NameError is generated if the proper import has not 
been done. At the point of that error, the module name is known. 
For the programmer to fix the situation, an import statement has to 
be added to the code and then the code must be rerun. I don't see 
why it would be impossible to make that happen automatically, 
provided the module to be imported was recognized (through some 
undefined magic). I'd think the module would have to be known, 
because trying to import a nonexistent module -- "import ssy", say 
(in the event of a typo for "sys") -- would fail, so there would 
have to be a way to avoid looping on the "ssy.func()" line.

Is it worth adding that kind of complexity to execution of a Python 
program? Probably not. 

Is it even a good idea to try to make it happen automatically? 
Possibly not. For one thing, it wouldn't always be the right thing 
to do. A developer would most likely want to set up the imports 
properly, and to know when they were not correctly set up instead 
of having Python fix things quietly. There's a reason why Explicit 
is better than Implicit. 

But *could* it be done? I'd think so. 

-- 
rzed
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-04 Thread Terry Reedy

"Colin J. Williams" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
> Rick Wotnaz wrote:
>> +1 here. As far as I'm concerned, both os and sys could be special-
>> cased that way. That said, I would guess the likelihood of that
>> happening is 0.
>>
> +1 for both.

Some people might prefer that math be special cased.  Or some other module. 
A neutral criterion is needed.

Terry J. Reedy



-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-04 Thread Colin J. Williams
Rick Wotnaz wrote:
> Michael Hoffman <[EMAIL PROTECTED]> wrote in
> news:[EMAIL PROTECTED]: 
> 
> 
>>What would people think about adding sys to __builtins__ so that
>>"import sys" is no longer necessary? This is something I must
>>add to every script I write that's not a one-liner since they
>>have this idiom at the bottom:
>>
>>if __name__ == "__main__":
>> sys.exit(main(sys.argv[1:]))
>>
>>Additionally, the necessity of "import sys" makes some
>>one-liners a little more unwieldy than they should be--it is
>>surely the module I am missing the most in one-liners. For
>>example, with this proposal, this inelegant one-liner:
>>
>>$ python -c "import sys; print
>>''.join(sorted(sys.stdin.readlines()))" 
>>
>>could be replaced by:
>>
>>$ python -c "print ''.join(sorted(sys.stdin.readlines()))"
>>
>>Since sys is surely the most commonly used module (it is
>>imported in 108 of 188 Python 2.4 stdlib modules on my system,
>>and certainly more than any other module), I would hope few
>>people would be affected by a namespace collision.
>>
>>Other languages (e.g. C#) always make their system namespace
>>available without needing a special import.
>>
>>In short, given the wide use of sys, its unambiguous nature, and
>>the fact that it really is built-in already, although not
>>exposed as such, I think we would be better off if sys were
>>always allowed even without an import statement.
> 
> 
> +1 here. As far as I'm concerned, both os and sys could be special-
> cased that way. That said, I would guess the likelihood of that 
> happening is 0. 
> 
+1 for both.

Colin W.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-04 Thread Xiao Jianfeng
Paul Watson wrote:

>This sounds pretty interesting.  How about a switch to invoke this 
>handling for the one-liner crowd and those who wish to use it?
>
>  
>

>Somehow, I never heard any C programmers suggest that the default 
>processing not include the need for:
>
>#include 
>  
>
 I think it is because that we cannot modify the C language, but
 python is a language that's still evolving.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-03 Thread tiissa
Michael Hoffman wrote:
> To the contrary, I agree with Larry Wall that laziness is one of the 
> cardinal virtues of a programmer.

There's lazy and too lazy.
You don't want to be too lazy to even get out of bed to code in Python. 
Of course, with Perl, that's entirely another mattress^Wmatter.


> Would you argue that the language is superior because half of its 
> modules must have "import sys" at the beginning

I wouldn't dare arguing about superiority.

I was just stating your proposal didn't really solve anything. A good 
editor/template and .pythonrc already save you the typing of 'import 
sys' in scripts for the former and shell command for the latter.


> Sorry, that's incorrect

Alright, that was a bit of an overstatement.
I should have said your proposal is perceptibly useful in those shell 
one-liners. The distribution of script and modules is another matter.


As for my opinion, you've already guessed I don't perceive 'import sys' 
as an issue. Therefore, the special case of an implicit import of sys 
does not appeal to me.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-02 Thread Paul Watson
Steve Holden wrote:
> Rick Wotnaz wrote:
> 
>> Michael Hoffman <[EMAIL PROTECTED]> wrote in
>> news:[EMAIL PROTECTED]:
>>
>>> What would people think about adding sys to __builtins__ so that
>>> "import sys" is no longer necessary? This is something I must
>>> add to every script I write that's not a one-liner since they
>>> have this idiom at the bottom:
>>>
>>> if __name__ == "__main__":
>>> sys.exit(main(sys.argv[1:]))
>>>
>>> Additionally, the necessity of "import sys" makes some
>>> one-liners a little more unwieldy than they should be--it is
>>> surely the module I am missing the most in one-liners. For
>>> example, with this proposal, this inelegant one-liner:
>>>
>>> $ python -c "import sys; print
>>> ''.join(sorted(sys.stdin.readlines()))"
>>> could be replaced by:
>>>
>>> $ python -c "print ''.join(sorted(sys.stdin.readlines()))"
>>>
>>> Since sys is surely the most commonly used module (it is
>>> imported in 108 of 188 Python 2.4 stdlib modules on my system,
>>> and certainly more than any other module), I would hope few
>>> people would be affected by a namespace collision.
>>>
>>> Other languages (e.g. C#) always make their system namespace
>>> available without needing a special import.
>>>
>>> In short, given the wide use of sys, its unambiguous nature, and
>>> the fact that it really is built-in already, although not
>>> exposed as such, I think we would be better off if sys were
>>> always allowed even without an import statement.
>>
>>
>>
>> +1 here. As far as I'm concerned, both os and sys could be special-
>> cased that way. That said, I would guess the likelihood of that 
>> happening is 0.
> 
> I wonder if it would be worth special-casing the AttributeError 
> exception handling at the outermost lexical scope to try and import a 
> module with the troublesome name and then retrying the attribute access 
> if the import succeeded (possibly even from a path limited to the 
> standard locations).
> 
> That way none of the standard library modules would need to be imported 
> before use.
> 
> I can see that this would create problems as well as solving some, but 
> it would be nice not to have to import the standard library modules. I 
> don't personally find it a hardship, but some people do.
> 
> though-i-could-just-be-raving-ly y'rs  - steve

This sounds pretty interesting.  How about a switch to invoke this 
handling for the one-liner crowd and those who wish to use it?

Somehow, I never heard any C programmers suggest that the default 
processing not include the need for:

#include 
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-02 Thread Michael Hoffman
tiissa wrote:

> A developper should not be too lazy to add one small line in a complete
> script/module.

To the contrary, I agree with Larry Wall that laziness is one of the 
cardinal virtues of a programmer. Although my personal desire to be lazy 
is not at issue here--I always start new scripts and modules from a 
template that includes import sys.

Would you argue that the language is superior because half of its 
modules must have "import sys" at the beginning, although sys is already 
imported? The only difference is that the namespace is not exposed by 
default. I suggest that the default be changed.

It would simplify introductions to the language as well. In the current 
tutorial it is necessary to use "import sys" before it has time to 
explain modules and importing.

> Besides your entire justification to this proposal was based on shell
> one-liners, not script or modules.

Sorry, that's incorrect; please go back and read the original post again.
-- 
Michael Hoffman
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-02 Thread tiissa
Michael Hoffman a écrit :

> MrJbQ7 wrote:
>
> > Besides, a better way is to use your ~/.pythonrc file for customizing
> > according to your needs.
> >
> > A simple:
> >
> >   echo "import sys, os" >> ~./pythonrc
> >
> > will do the job.
>
> Until someone else tries to use your script or module.

A developper should not be too lazy to add one small line in a complete
script/module.
Besides your entire justification to this proposal was based on shell
one-liners, not script or modules.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-02 Thread Michael Hoffman
MrJbQ7 wrote:
> Steve Holden wrote:
> 
>>I wonder if it would be worth special-casing the AttributeError [snip]
> 
> What is it that Tim Peters said? "Special cases aren't special
> enough..."

That suggestion is a little too much magic for me.

> Besides, a better way is to use your ~/.pythonrc file for customizing
> according to your needs.
> 
> A simple:
> 
>   echo "import sys, os" >> ~./pythonrc
> 
> will do the job.

Until someone else tries to use your script or module.
-- 
Michael Hoffman
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-01 Thread MrJbQ7
Steve Holden wrote:
> I wonder if it would be worth special-casing the AttributeError [snip]

What is it that Tim Peters said? "Special cases aren't special
enough..."

Besides, a better way is to use your ~/.pythonrc file for customizing
according to your needs.

A simple:

  echo "import sys, os" >> ~./pythonrc

will do the job.

Thanks,
John Benediktsson

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-01 Thread Steve Holden
Rick Wotnaz wrote:
> Michael Hoffman <[EMAIL PROTECTED]> wrote in
> news:[EMAIL PROTECTED]: 
> 
> 
>>What would people think about adding sys to __builtins__ so that
>>"import sys" is no longer necessary? This is something I must
>>add to every script I write that's not a one-liner since they
>>have this idiom at the bottom:
>>
>>if __name__ == "__main__":
>> sys.exit(main(sys.argv[1:]))
>>
>>Additionally, the necessity of "import sys" makes some
>>one-liners a little more unwieldy than they should be--it is
>>surely the module I am missing the most in one-liners. For
>>example, with this proposal, this inelegant one-liner:
>>
>>$ python -c "import sys; print
>>''.join(sorted(sys.stdin.readlines()))" 
>>
>>could be replaced by:
>>
>>$ python -c "print ''.join(sorted(sys.stdin.readlines()))"
>>
>>Since sys is surely the most commonly used module (it is
>>imported in 108 of 188 Python 2.4 stdlib modules on my system,
>>and certainly more than any other module), I would hope few
>>people would be affected by a namespace collision.
>>
>>Other languages (e.g. C#) always make their system namespace
>>available without needing a special import.
>>
>>In short, given the wide use of sys, its unambiguous nature, and
>>the fact that it really is built-in already, although not
>>exposed as such, I think we would be better off if sys were
>>always allowed even without an import statement.
> 
> 
> +1 here. As far as I'm concerned, both os and sys could be special-
> cased that way. That said, I would guess the likelihood of that 
> happening is 0. 
> 
I wonder if it would be worth special-casing the AttributeError 
exception handling at the outermost lexical scope to try and import a 
module with the troublesome name and then retrying the attribute access 
if the import succeeded (possibly even from a path limited to the 
standard locations).

That way none of the standard library modules would need to be imported 
before use.

I can see that this would create problems as well as solving some, but 
it would be nice not to have to import the standard library modules. I 
don't personally find it a hardship, but some people do.

though-i-could-just-be-raving-ly y'rs  - steve
-- 
Steve Holden   +44 150 684 7255  +1 800 494 3119
Holden Web LLC http://www.holdenweb.com/

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Proposal: add sys to __builtins__

2005-09-01 Thread Rick Wotnaz
Michael Hoffman <[EMAIL PROTECTED]> wrote in
news:[EMAIL PROTECTED]: 

> What would people think about adding sys to __builtins__ so that
> "import sys" is no longer necessary? This is something I must
> add to every script I write that's not a one-liner since they
> have this idiom at the bottom:
> 
> if __name__ == "__main__":
>  sys.exit(main(sys.argv[1:]))
> 
> Additionally, the necessity of "import sys" makes some
> one-liners a little more unwieldy than they should be--it is
> surely the module I am missing the most in one-liners. For
> example, with this proposal, this inelegant one-liner:
> 
> $ python -c "import sys; print
> ''.join(sorted(sys.stdin.readlines()))" 
> 
> could be replaced by:
> 
> $ python -c "print ''.join(sorted(sys.stdin.readlines()))"
> 
> Since sys is surely the most commonly used module (it is
> imported in 108 of 188 Python 2.4 stdlib modules on my system,
> and certainly more than any other module), I would hope few
> people would be affected by a namespace collision.
> 
> Other languages (e.g. C#) always make their system namespace
> available without needing a special import.
> 
> In short, given the wide use of sys, its unambiguous nature, and
> the fact that it really is built-in already, although not
> exposed as such, I think we would be better off if sys were
> always allowed even without an import statement.

+1 here. As far as I'm concerned, both os and sys could be special-
cased that way. That said, I would guess the likelihood of that 
happening is 0. 

-- 
rzed
-- 
http://mail.python.org/mailman/listinfo/python-list


Proposal: add sys to __builtins__

2005-09-01 Thread Michael Hoffman
What would people think about adding sys to __builtins__ so that
"import sys" is no longer necessary? This is something I must add to 
every script I write that's not a one-liner since they have this idiom 
at the bottom:

if __name__ == "__main__":
 sys.exit(main(sys.argv[1:]))

Additionally, the necessity of "import sys" makes some one-liners a 
little more unwieldy than they should be--it is surely the module I am 
missing the most in one-liners. For example, with this proposal, this 
inelegant one-liner:

$ python -c "import sys; print ''.join(sorted(sys.stdin.readlines()))"

could be replaced by:

$ python -c "print ''.join(sorted(sys.stdin.readlines()))"

Since sys is surely the most commonly used module (it is imported in 108 
of 188 Python 2.4 stdlib modules on my system, and certainly more than 
any other module), I would hope few people would be affected by a 
namespace collision.

Other languages (e.g. C#) always make their system namespace available 
without needing a special import.

In short, given the wide use of sys, its unambiguous nature, and the 
fact that it really is built-in already, although not exposed as such, I 
think we would be better off if sys were always allowed even without an 
import statement.
-- 
Michael Hoffman
-- 
http://mail.python.org/mailman/listinfo/python-list