Re: ctypes: catch system exit from C library

2011-11-04 Thread Nobody
On Thu, 03 Nov 2011 14:16:50 +, Grant Edwards wrote:

>>> in my python application I am calling functions from a C library via
>>> `ctypes` interface. Some fns from that C library calls `exit()` on
>>> error.
>> Just curious, which library is that?

I'm reasonably sure that he's talking about the GRASS libraries.

In which, the standard error-handling mechanism is to call
G_fatal_error(), which ultimately calls exit(). AKA the "samurai
principle": return victorious, or don't return at all.

[FWIW, re-writing everying in C++ and using exceptions is not a
realistic option].

> And who should we have thrashed and pilloried for writing it that way?

No-one. It's a perfectly rational design given the context.

GRASS consists of ~350 command-line programs ("modules") in the
traditional Unix style (read command-line arguments, do processing,
terminate). The libraries exist to support the creation of such modules,
and are fit for that particular purpose.

Handling errors by having status codes which propagate up the call chain
would add a significant amount of code. More importantly, it would push
the burden of handling errors onto the authors of the various modules (and
historical evidence suggests that checking for (let alone handling) errors
is unlikely to occur).

The mechanism works fine, so long as you don't try to use the libraries
for purposes for which they weren't designed (e.g. long-running programs
such as interactive applications or servers).

As the story goes ...

Patient: "Doctor, when I do this ... it hurts"
Doctor: "Well don't do it then!"

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


Re: Database access benchmarks for use in web-frameworks - How does Python compare?

2011-11-04 Thread Stefan Behnel

Alec Taylor, 03.11.2011 11:19:

I'm building a large e-commerce site, and it is very important that
what I write can:
- Handle larger server load
- Deliver pages quickly
- Make transactions quickly


Those are pretty broad requirements. If a framework can satisfy them or not 
depends more on how you set it up and deploy it (e.g. how many servers you 
run, what kind of load balancing you use, how you serve your static 
content, etc.) than the actual framework you choose, I'd say.




as well as have a small development time (i.e. pre-built modules for
e-commerce are available, and extendible).


"e-commerce" is also a very broad term. But I'd expect that any of the 
recent web frameworks (certainly including Django) will satisfy your needs 
in some way.




Are there recent accessible statistics available, comparing these
metrics across the most popular web-frameworks? (i.e. Symfony, DJango,
Rails, ASP.NET&etc)


Not that I know of.

Stefan

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


Re: leftover pyc files

2011-11-04 Thread Jonathan Hartley
I like to install a Bash shell of some kind on windows boxes I work on, 
specifically so I can use shell commands like this, just like on any other 
operating system. Cywin works just fine for this.

svn also has hooks, but sadly not a checkout hook:
http://svnbook.red-bean.com/en/1.1/ch05s02.html
I guess you could write your own two-line wrapper script which does the 
checkout and then deletes the pyc files.

I don't understand why deleting only some pyc files is important. Can't you 
just delete them all and let Python re generate the ones you need? I once saw 
someone create the longest python file they could to see how long generating 
pyc files takes, and it is very very quick indeed. A human could not notice the 
delay even for the largest of projects.

Finally, someone asked about skipping .svn dirs: find has a '-prune' option, 
you can read about it on the manpage.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: leftover pyc files

2011-11-04 Thread Jonathan Hartley
Apologies for all my messasges appearing twice. I'm using google groups web ui 
and have no idea why it's doing that. I'll stop using it.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Design Pattern and Python: Any book recommendation? Your view?

2011-11-04 Thread Ulrich Eckhardt

Am 04.11.2011 01:33, schrieb Anthony Kong:

I would like to find out what is the current prevailing view or
consensus (if any) on the use of Design Pattern in python?


My consensus with myself is that design patterns are language-agnostic. 
If I write "class Foo serves as view and controller for class Bar in a 
model-view-controller (MVC) design", everybody that knows MVC has 
immediately a very high-level understanding of how those two classes 
interact.




I am doing some 'fact-finding' in this area on request of my
colleagues. Some of them want to buy a book or two in this subject
area. Hopefully the newsgroup can give me some book recommendation
and insight in this topic.


The Gang of Four book on design patterns is one you will probably come 
across, and there are many that refer to it.




I myself pretty much subscribe to the view that the nature of python
language actually do away much of the need of the use of DP, but it
is just a personal view. It comes form my experience of migrating
from webware4py (webframework based on J2EE/servlet idea) to
cherrypy


"webframework based on J2EE/servlet" - apart from J2EE being a specific 
implementation, this also describes a design pattern, i.e. one where 
(forgive me if I'm slightly off, this is not actually my field of 
programming) the UI is browser-based and the program logic runs on a server.


Instead of explaining it in many words, you reused the known design 
pattern to describe it, and that is also IMHO what design patterns are 
about. They serve as a tool to make software that follows known 
patterns, so that people that know the pattern will recognize them and 
then get easier understanding. It also serves as tool when talking about 
things, you don't have to explain the design when you can refer to a 
pattern.


In that sense, I fully disagree that design patterns are obsolete in 
Python. However, there are other patterns that are more 
language-specific, like e.g. RAII in C++, so if you rather meant those, 
I would agree with you.


Cheers!

Uli

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


Re: Dictionary sorting

2011-11-04 Thread Hrvoje Niksic
Ben Finney  writes:

> Tim Chase  writes:
>
>> On 11/03/11 16:36, Terry Reedy wrote:
>> > CPython iterates (and prints) dict items in their arbitrary internal
>> > hash table order, which depends on the number and entry order of the
>> > items. It is a bug to depend on that arbitrary order in any way.
>>
>> Does this "never trust it" hold even for two consecutive iterations
>> over an unchanged dict? I didn't see anything in the docs[1] to make
>> such a claim,
>
> Exactly.

This is false.  The docs say:

If items(), keys(), values(), iteritems(), iterkeys(), and
itervalues() are called with no intervening modifications to the
dictionary, the lists will directly correspond. This allows the
creation of (value, key) pairs using zip(): pairs = zip(d.values(),
d.keys()).

(http://docs.python.org/library/stdtypes.html#mapping-types-dict)

> The order of retrieval is entirely up to the implementation.

This part is still true, but the order won't change behind your back if
you're not touching the dict.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: leftover pyc files

2011-11-04 Thread Andrea Crotti

On 11/04/2011 09:27 AM, Jonathan Hartley wrote:

I like to install a Bash shell of some kind on windows boxes I work on, 
specifically so I can use shell commands like this, just like on any other 
operating system. Cywin works just fine for this.

svn also has hooks, but sadly not a checkout hook:
http://svnbook.red-bean.com/en/1.1/ch05s02.html
I guess you could write your own two-line wrapper script which does the 
checkout and then deletes the pyc files.

I don't understand why deleting only some pyc files is important. Can't you 
just delete them all and let Python re generate the ones you need? I once saw 
someone create the longest python file they could to see how long generating 
pyc files takes, and it is very very quick indeed. A human could not notice the 
delay even for the largest of projects.

Finally, someone asked about skipping .svn dirs: find has a '-prune' option, 
you can read about it on the manpa


Uhm yes it makes sense also to just remove all of them, I don't know why 
it was done like this but

probably for "performance" reasons.

I will try both ways, but I would definitively avoid the shell 
scripting, because it's mainly windows

but it has to be multi-platform..
--
http://mail.python.org/mailman/listinfo/python-list


Re: leftover pyc files

2011-11-04 Thread Chris Angelico
On Fri, Nov 4, 2011 at 9:34 PM, Andrea Crotti  wrote:
> Uhm yes it makes sense also to just remove all of them, I don't know why it
> was done like this but
> probably for "performance" reasons.
>
> I will try both ways, but I would definitively avoid the shell scripting,
> because it's mainly windows
> but it has to be multi-platform..

If you're removing them all, you don't need to use a powerful shell.
Much much easier! Just recursively del *.pyc and you're done.

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


Re: SystemError when defining

2011-11-04 Thread Joshua Landau
On 11/3/11, Chris Angelico  wrote:
> Fascinating!
Awesome to know!

> I did some introspection with this:
>
*snip*
>
> Variations on the theme show that during compilation of foo, the name
> is normally cemented as either a global or a local - but if it's
> keyword-only, then a LOAD_NAME opcode is emitted. It's the code for
> LOAD_NAME that looks for locals, which presumably a lambda doesn't
> have.

What is the LOAD_NAME for? The non-keyword default doesn't seem to need it.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: leftover pyc files

2011-11-04 Thread Andrea Crotti

On 11/04/2011 10:39 AM, Chris Angelico wrote:
If you're removing them all, you don't need to use a powerful shell. 
Much much easier! Just recursively del *.pyc and you're done. ChrisA 


Discussing with the guy that did it I think it's actually a good idea 
instead, because removing them *all* means.
- remove a few thousand files every time where maybe 0 would be removed 
otherwise

- recompile the same thousand of files

It might not be so relevant but for 10 lines of code more I guess it's 
fine..

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


python-based downloader (youtube-dl) missing critical feature ...

2011-11-04 Thread lbrt
 python-based youtube-dl
~ 
 http://rg3.github.com/youtube-dl/
~ 
 is sorely missing a flag in order to indicate the maximum file length of the 
data feed it would download (well, unless, for some reason, it is considered a 
"feature").
~ 
 I wonder what developers were thinking about when they came up this nice piece 
of code. If you actually look in the code
~ 
...
 data = urllib2.urlopen(basic_request)
 content_length = data.info()['Content-Length']
...
~ 
 you will see they get the content length of the actual data feed and they also 
print the progress status based on the content length
~ 
 Implementing an if statement a la:
~ 
 max_indicated_content_length = self.params.get('max_content_length', None);
~ 
 if( content_length > max_indicated_content_length ){ [do not download, just 
report "data feed too large"] }
 else{ [do] }
~ 
 shouldn't be hard at all
~ 
 youtube-dl is under the Creative Commons License copyrighted by 2006-2011 
Ricardo Garcia Gonzalez and maintained by him and a group of python developers
~ 
 They are the ones keeping a mental map of that project. It would be a plus if 
they implement this feature, but anyother python developer can implemented 
(please, let me know if/when you do)
~ 
 lbrtchx
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Dictionary sorting

2011-11-04 Thread Ben Finney
Hrvoje Niksic  writes:

> Ben Finney  writes:
>
> > Tim Chase  writes:
> >> Does this "never trust it" hold even for two consecutive iterations
> >> over an unchanged dict? I didn't see anything in the docs[1] to make
> >> such a claim,
> >
> > Exactly.
>
> This is false.  The docs say:
>
> If items(), keys(), values(), iteritems(), iterkeys(), and
> itervalues() are called with no intervening modifications to the
> dictionary, the lists will directly correspond. This allows the
> creation of (value, key) pairs using zip(): pairs = zip(d.values(),
> d.keys()).
>
> (http://docs.python.org/library/stdtypes.html#mapping-types-dict)

Thank you for this correction.

-- 
 \   “Firmness in decision is often merely a form of stupidity. It |
  `\indicates an inability to think the same thing out twice.” |
_o__)—Henry L. Mencken |
Ben Finney
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Design Pattern and Python: Any book recommendation? Your view?

2011-11-04 Thread John Roth
On Nov 3, 6:33 pm, Anthony Kong  wrote:
> Sorry to resurrect this topic. By google search the last discussion was in 
> 2003.
>
> I would like to find out what is the current prevailing view or consensus (if 
> any) on the use of Design Pattern in python?
>
> I am doing some 'fact-finding' in this area on request of my colleagues. Some 
> of them want to buy a book or two in this subject area. Hopefully the 
> newsgroup can give me some book recommendation and insight in this topic.
>
> I myself pretty much subscribe to the view that the nature of python language 
> actually do away much of the need of the use of DP, but it is just a personal 
> view. It comes form my experience of migrating from webware4py (webframework 
> based on J2EE/servlet idea) to cherrypy

I don't know of a book on design patterns in Python. I've got a couple
of observations.

The first is that if you use TDD (Test Driven Development) and
refactor relentlessly to remove duplication, most of the basic design
patterns will emerge naturally from the code as you work.

The second is that, as far as I'm concerned, the utility of a design
patterns book is in the discussion of what the pattern is good for,
and what it isn't good for. That is, as another poster says, language
agnostic.

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


Re: python-based downloader (youtube-dl) missing critical feature ...

2011-11-04 Thread Steven D'Aprano
On Fri, 04 Nov 2011 11:48:02 +, lbrt chx _ gemale wrote:

> python-based youtube-dl
> ~
>  http://rg3.github.com/youtube-dl/
> ~
>  is sorely missing a flag in order to indicate the maximum file length
>  of the data feed it would download (well, unless, for some reason, it
>  is considered a "feature").

If you are making a feature request, you should make it directly to the 
project developer, and not here.

Since you consider that feature "shouldn't be hard at all" (your words), 
perhaps you should consider providing a patch? Don't forget the 
documentation and tests for it.

Or did you mean "it shouldn't be hard for me, if somebody else does the 
work"?


> ~
>  I wonder what developers were thinking about when they came up this
>  nice piece of code. If you actually look in the code
[...]

Lbrtchx, it's possible that English is not your natural language. Please 
be aware that, in English, "what they were thinking..." is often used 
sarcastically, as in "they weren't actually thinking". Particularly 
following your use of scare quotes around "feature".

(Even more so for the similar form, "what were they thinking?".)

It's probably not going to help you get a feature added to the project if 
you imply (even by accident) that lack of that feature is an indication 
that the developer wasn't thinking.


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


Re: Design Pattern and Python: Any book recommendation? Your view?

2011-11-04 Thread Joe Riopel
On Fri, Nov 4, 2011 at 8:28 AM, John Roth  wrote:
> The first is that if you use TDD (Test Driven Development) and
> refactor relentlessly to remove duplication, most of the basic design
> patterns will emerge naturally from the code as you work.

I agree, and there is a pretty good series of articles on
developerWorks that covers this:
http://www.ibm.com/developerworks/java/library/j-eaed2/index.html

The author used Java in this series, but as Ulrich mentioned, I feel
that design patterns (and emergent design) are "language-agnostic.".
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Design Pattern and Python: Any book recommendation? Your view?

2011-11-04 Thread Andrea Crotti

On 11/04/2011 12:33 AM, Anthony Kong wrote:

Sorry to resurrect this topic. By google search the last discussion was in 2003.

I would like to find out what is the current prevailing view or consensus (if 
any) on the use of Design Pattern in python?

I am doing some 'fact-finding' in this area on request of my colleagues. Some 
of them want to buy a book or two in this subject area. Hopefully the newsgroup 
can give me some book recommendation and insight in this topic.

I myself pretty much subscribe to the view that the nature of python language 
actually do away much of the need of the use of DP, but it is just a personal 
view. It comes form my experience of migrating from webware4py (webframework 
based on J2EE/servlet idea) to cherrypy





Well this book is work in progress
https://bitbucket.org/BruceEckel/python-3-patterns-idioms/src

but it actually looks very interesting
--
http://mail.python.org/mailman/listinfo/python-list


Re: python-based downloader (youtube-dl) missing critical feature ...

2011-11-04 Thread Philipp Hagemeister
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA512

As already said, you should file your request at
https://github.com/rg3/youtube-dl/issue , not here.

A few things to note:

* Not all sites necessarily send the Content-Length header.
* RTMP URLs would have to be treated differently
* Sending a Range header might allow for a better implementation.

Why do you want to restrict the filesize of the download in the first
place? I can't see a use case, but that doesn't mean there isn't one.

Due to me not having lots of time at the moment, your best chance to get
any youtube-dl feature implemented is providing a patch (in form of a
github pull-request, if possible).

- -- Philipp (youtube-dl developer)

l...@mail.python.org wrote:
>  python-based youtube-dl
> ~ 
>  http://rg3.github.com/youtube-dl/
> ~ 
>  is sorely missing a flag in order to indicate the maximum file length of the 
> data feed it would download (well, unless, for some reason, it is considered 
> a "feature").
> ~ 
>  I wonder what developers were thinking about when they came up this nice 
> piece of code. If you actually look in the code
> ~ 
> ...
>  data = urllib2.urlopen(basic_request)
>  content_length = data.info()['Content-Length']
> ...
> ~ 
>  you will see they get the content length of the actual data feed and they 
> also print the progress status based on the content length
> ~ 
>  Implementing an if statement a la:
> ~ 
>  max_indicated_content_length = self.params.get('max_content_length', None);
> ~ 
>  if( content_length > max_indicated_content_length ){ [do not download, just 
> report "data feed too large"] }
>  else{ [do] }
> ~ 
>  shouldn't be hard at all
> ~ 
>  youtube-dl is under the Creative Commons License copyrighted by 2006-2011 
> Ricardo Garcia Gonzalez and maintained by him and a group of python developers
> ~ 
>  They are the ones keeping a mental map of that project. It would be a plus 
> if they implement this feature, but anyother python developer can implemented 
> (please, let me know if/when you do)
> ~ 
>  lbrtchx

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)

iEYEAREKAAYFAk6z3mMACgkQ9eq1gvr7CFyr1wCgpqf8xuORDC4LBVY8WFmtAufG
k+AAoIX+mXa7SGLULP2M67IQ34sBgk1o
=duyH
-END PGP SIGNATURE-
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: python-based downloader (youtube-dl) missing critical feature ...

2011-11-04 Thread Jean-Michel Pichavant

Steven D'Aprano wrote:

On Fri, 04 Nov 2011 11:48:02 +, lbrt chx _ gemale wrote:

  

python-based youtube-dl
~
 http://rg3.github.com/youtube-dl/
~
 is sorely missing a flag in order to indicate the maximum file length
 of the data feed it would download (well, unless, for some reason, it
 is considered a "feature").



If you are making a feature request, you should make it directly to the 
project developer, and not here.


Since you consider that feature "shouldn't be hard at all" (your words), 
perhaps you should consider providing a patch? Don't forget the 
documentation and tests for it.


Or did you mean "it shouldn't be hard for me, if somebody else does the 
work"?



  

~
 I wonder what developers were thinking about when they came up this
 nice piece of code. If you actually look in the code


[...]

Lbrtchx, it's possible that English is not your natural language. Please 
be aware that, in English, "what they were thinking..." is often used 
sarcastically, as in "they weren't actually thinking". Particularly 
following your use of scare quotes around "feature".


(Even more so for the similar form, "what were they thinking?".)

It's probably not going to help you get a feature added to the project if 
you imply (even by accident) that lack of that feature is an indication 
that the developer wasn't thinking.



  

Maybe Lbrtchx is one of the Sheldon Cooper's nicknames :o)

JM

PS : I have the feeling that my nerdy reference will fall flat...
--
http://mail.python.org/mailman/listinfo/python-list


Re: leftover pyc files

2011-11-04 Thread 88888 Dihedral
Uhn, thanks for the easy way Just delete all *.pyc recursively. spend another 
5-20
minutes to recompile all to get everything sync.. That is trivial!
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Python advanced course (preferably in NA)

2011-11-04 Thread Behnam
This was great. Thank you all!

/Behnam

On Nov 3, 5:18 pm, Catherine Moroney
 wrote:
> I've taken twoPythonclasses from David Beazley and can second
> Eric's recommendation.  The "advanced" class is reallyadvanced
> and goes into some pretty mind-blowing stuff.  The class comes with
> lots of problems and solutions, and a book of all the slides which are
> a great reference.  Well worth the time and money!
>
> Catherine
>
>
>
>
>
>
>
> Eric Snow wrote:
> > On Thu, Nov 3, 2011 at 12:13 PM, Behnam  wrote:
> >> Anybody is aware of anyadvancedcourseinPythonpreferably in north
> >> america?
>
> >> I've been partly coding inPythonfor couple of years now and have
> >> used PyQt. What I'd like to learn more is a kind of advance OOP in
> >>python. Any idea?
>
> > While I don't know specifically, check out the following link (from
> > thePythonsite):
>
> >http://wiki.python.org/moin/PythonTraining
>
> > I have taken a class each (PyCon tutorial) from Raymond Hettinger,
> > David Beazley, and Brian Jones, and found each of them to be
> > outstanding courses.  Only David is listed on that page to which I
> > linked, though I know Raymond does courses at least from time to time.
> >  I've also heard a talk from Wesley Chun and found him to be
> > fantastic.
>
> > -eric
>
> >> BTW, I'm not a computer engineer and have mechanical background.
>
> >> Thanks in advance!
> >> --
> >>http://mail.python.org/mailman/listinfo/python-list

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


Line continuation issue\

2011-11-04 Thread Steven Lehar
Is this the right place to propose language extensions?

My Python code keeps expanding rightwards, it is difficult to keep it
contained within reasonable limits. But the standard line continuation \
is positively anti-Pythonic because an *invisible* white space between \
and [CR] will render it useless.

How about a new Python symbol, maybe \\ that CAN have following whitespace
which is ignored, so that seeing a \\ in the code forces it to continue on
the next line.

Has this issue been discussed already?

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


Re: Line continuation issue\

2011-11-04 Thread Peter Otten
Steven Lehar wrote:

> Is this the right place to propose language extensions?
> 
> My Python code keeps expanding rightwards, it is difficult to keep it
> contained within reasonable limits. 

You should attack this by breaking large expressions into smaller ones and 
factoring out some of your code into helper functions.

> But the standard line continuation \
> is positively anti-Pythonic because an *invisible* white space between \
> and [CR] will render it useless.

Useless? You get a SyntaxError, remove the offending whitespace, and that's 
it.

> How about a new Python symbol, maybe \\ that CAN have following whitespace
> which is ignored, so that seeing a \\ in the code forces it to continue on
> the next line.

Did you know that there already is a pythonic alternative that works well in 
most cases? An open (, [, or { will allow you to continue on the next line, 
e. g.

items = [(foo(item), bar(item))
for row in rows
for item in row if baz(
alpha=1,
beta=item)]

no strings attached.

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


Re: Line continuation issue\

2011-11-04 Thread Chris Angelico
On Sat, Nov 5, 2011 at 2:10 AM, Steven Lehar  wrote:
> But the standard line continuation \
> is positively anti-Pythonic because an *invisible* white space between \ and
> [CR] will render it useless.

How's it anti-Pythonic for invisible whitespace differences to be significant?



ChrisA
*grinning, running, and ducking*
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Line continuation issue\

2011-11-04 Thread Steven Lehar
>
How's it anti-Pythonic for invisible whitespace differences to be
significant?

A central idea of Python was to replace {curly;braces{and;parentheses;}},
which are easily overlooked by the programmer, and use WHITESPACE instead,
something that is clearly visible to the programmer, as the defining
syntax. Make what is visible to humans significant to the interpreter.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Line continuation issue\

2011-11-04 Thread Chris Angelico
On Sat, Nov 5, 2011 at 2:53 AM, Steven Lehar  wrote:
>
> >
> How's it anti-Pythonic for invisible whitespace differences to be significant?
> A central idea of Python was to replace {curly;braces{and;parentheses;}}, 
> which are easily overlooked by the programmer, and use WHITESPACE instead, 
> something that is clearly visible to the programmer, as the defining syntax. 
> Make what is visible to humans significant to the interpreter.
>

I refer more to the problems that perpetually plagued Python
programmers regarding tabs vs spaces (which I think was finally closed
off only in Python 3).

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


short reading materials about anthropological, universal themes for students with no reading habit ...

2011-11-04 Thread lbrt
> A few things to note:

> * Not all sites necessarily send the Content-Length header.
> * RTMP URLs would have to be treated differently
~ 
 No some don't, but at least for the ones that do (like youtube) it would be a 
useful feature. The Content-Length header is used in the code anyway
~ 
> * Sending a Range header might allow for a better implementation.
~ 
 Yes, it would
~ 
> Why do you want to restrict the filesize of the download in the first
> place? I can't see a use case, but that doesn't mean there isn't one.
~ 
 OK, I see your point. Say, you have a list of youtube urls, which feeds you 
want to download using a script or a playlist someone put together, but you 
don't want to download files that are too large, which may not be of any use to 
you. For example, I teach and it doesn't make any sense to use a full movie as 
part of a class set. So I would like for youtube-dl to let me know which files 
are larger than a given size (and possibly save them in a file) for me to check 
the files first

 My languages are ANSI C, C++ and java. When I was young and silly would blab 
girls just because they crossed my way, now I don't like to even look into 
anything that I don't want to invest my time in on an ongoing basis. I would 
let people that code python and have a mental map of that code base do it 
themselves

 lbrtchx 

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


Re: SystemError when defining

2011-11-04 Thread Joshua Landau
>
> >>> def x(nonlocal_var):

... def y():

... z = lambda *, keyword_only=nonlocal_var: None

... return y

...

>>> x(None)()

Traceback (most recent call last):

  File "", line 1, in 

  File "", line 3, in y

SystemError: no locals when loading 'nonlocal_var'

>>> dis.dis(x)

  2   0 LOAD_CONST   1 ( 0x7f1fa5d57030, file "", line 2>)

  3 MAKE_FUNCTION0

  6 STORE_FAST   1 (y)


>   4   9 LOAD_FAST1 (y)

 12 RETURN_VALUE

>>> dis.dis(x(None))

  3   0 LOAD_CONST   1 ('keyword_only')

  3 LOAD_NAME0 (nonlocal_var)

  6 LOAD_CONST   2 ( at
> 0x7f1fa626aa48, file "", line 3>)

  9 MAKE_FUNCTION  256

 12 STORE_FAST   0 (z)

 15 LOAD_CONST   0 (None)

 18 RETURN_VALUE

 Conclusion:
When setting defaults to keyword-only arguments in lambdas which are inside
non-global scopes, cPython is unable to access *either the free variables
or global scope*  and raises SystemError.

This is cool, though:

> >>> def y():
> ... global_var
> ... z = lambda *, keyword_only=global_var: None
> ...
> >>> y()
> >>>

>>> dis.dis(y)
>   2   0 LOAD_GLOBAL  0 (global_var)
>   3 POP_TOP
>   3   4 LOAD_CONST   1 ('keyword_only')
>   7 LOAD_GLOBAL  0 (global_var)
>  10 LOAD_CONST   2 ( at
> 0x7f1fa5d4fd78, file "", line 3>)
>  13 MAKE_FUNCTION  256
>  16 STORE_FAST   0 (z)
>  19 LOAD_CONST   0 (None)
>  22 RETURN_VALUE

 >>> def x(nonlocal_var):
> ... def y():
> ... nonlocal_var
> ... z = lambda *, keyword_only=nonlocal_var: None
> ... return y
> ...
> >>> x(None)()
> >>>

What is happening is that LOAD_NAME is trying to access the value
'nonlocal_var' from y.__code__.co_freevars, but compilation doesn't push it
there from the lambda, so adding a call to it causes it to work. The change
of opcode implies that locality is decided before the opcodes are made,
 and so not being pushed to co_freevars changes the opcode.

AKA:
*When setting defaults to keyword-only arguments in lambdas which are
inside non-global scopes, cPython doesn't push the name to co_freevars.*

Now - where shall I report this?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Design Pattern and Python: Any book recommendation? Your view?

2011-11-04 Thread Terry Reedy

On 11/4/2011 8:46 AM, Andrea Crotti wrote:


Well this book is work in progress


Though not touched since May 2009


https://bitbucket.org/BruceEckel/python-3-patterns-idioms/src

but it actually looks very interesting


The slightly older .pdf version is a bit bizarre as parts of both text 
and code are only half-translated from Java. The testing chapter 
contains obviously untested code like TestDemo.py [sic] with Java lines like

   id = ++objCounter  # this is supposed to increment objCounter
   TestDemo test1 = TestDemo('test1')
   # I presume this declares test1 as a TestDemo object
and text with Javaisms like *static*, *public*, *private*, *protected*, 
and *friendly* and "a little review of Java packages".


Perhaps the later sections are more useful.

--
Terry Jan Reedy

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


Re: leftover pyc files

2011-11-04 Thread Terry Reedy
For those not aware, the compiled file caching and import system was 
changed for 3.2. Given test.py, the compiled file is no longer test.pyc, 
in the same directory, but (for cpython32) 
__pycache__/test.cpython-32.pyc. Given the statement 'import test', the 
__pycache__ directory is only searched (for the name given above) after 
finding test.py. So if 'test.py' is deleted or renamed to 'mytest.py', 
an unchanged 'import test' will *fail* instead of importing the obsolete 
.pyc file. So there is no longer a functional reason to delete such 
obsolete files. However, the OP is stuck with 2.5.


--
Terry Jan Reedy

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


Re: Line continuation issue\

2011-11-04 Thread Terry Reedy

On 11/4/2011 11:10 AM, Steven Lehar wrote:

Is this the right place to propose language extensions?


Yes, especially for beginners not familiar with previous discussions.


My Python code keeps expanding rightwards, it is difficult to keep it
contained within reasonable limits. But the standard line continuation \
is positively anti-Pythonic because an *invisible* white space between \
and [CR] will render it useless.

How about a new Python symbol, maybe \\ that CAN have following
whitespace which is ignored, so that seeing a \\ in the code forces it
to continue on the next line.

Has this issue been discussed already?


Yes ;=)
Peter already gave the standard answers.

--
Terry Jan Reedy

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


Re: Design Pattern and Python: Any book recommendation? Your view?

2011-11-04 Thread Ned Deily
Search for presentations and videos by Alex Martelli.  He's the goto (so 
to speak) person on Python design patterns.  Here, for instance:

http://code.google.com/edu/languages/#_python_patterns

-- 
 Ned Deily,
 n...@acm.org

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


Re: leftover pyc files

2011-11-04 Thread Steven D'Aprano
On Fri, 04 Nov 2011 16:01:14 -0400, Terry Reedy wrote:

> For those not aware, the compiled file caching and import system was
> changed for 3.2. Given test.py, the compiled file is no longer test.pyc,
> in the same directory, but (for cpython32)
> __pycache__/test.cpython-32.pyc. Given the statement 'import test', the
> __pycache__ directory is only searched (for the name given above) after
> finding test.py. So if 'test.py' is deleted or renamed to 'mytest.py',
> an unchanged 'import test' will *fail* instead of importing the obsolete
> .pyc file. So there is no longer a functional reason to delete such
> obsolete files. However, the OP is stuck with 2.5.

Oh, I don't know, removing obsolete and useless crud from your file 
system seems like a good enough functional reason to me :)

However, the behaviour of Python 3.2 is a little more complicated than 
the above, since it must still support .pyc only software. If you have 
a .pyc file in the PYTHONPATH, but *outside* of a __pycache__ directory, 
and it is compiled for the correct version of Python, it will still be 
imported as usual.

I'm not sure what happens if you have two .pyc files, one inside the 
cache and one outside.

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


Re: SystemError when defining

2011-11-04 Thread Terry Reedy

On 11/4/2011 3:10 PM, Joshua Landau wrote:

> >> def x(nonlocal_var):
... def y():
... z = lambda *, keyword_only=nonlocal_var: None
... return y
...
 >>> x(None)()

...

SystemError: no locals when loading 'nonlocal_var'

...

Now - where shall I report this?


Joshua found bugs.python.org and, 2 hours later, a fix was applied.
http://bugs.python.org/issue13343

--
Terry Jan Reedy

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


Re: SystemError when defining

2011-11-04 Thread Joshua Landau
>
> Joshua found bugs.python.org and, 2 hours later, a fix was applied.
> http://bugs.python.org/**issue13343 
>

It was impressively fast. Those python devs are like a hawk.
Although I wasn't expecting a three-line patch (plus a three line test).
-- 
http://mail.python.org/mailman/listinfo/python-list


Can I fully replace GNU Bash with Python?

2011-11-04 Thread Jason Hsu, Mr. Swift Linux
This question concerns my process of creating Swift Linux from the
base distro (antiX Linux in the past, Linux Mint Debian Edition now).
(NOTE: The process I'm describing here is an oversimplification.)

All of my development work takes place in the ~/develop directory.
This is the directory where I enter the "git clone" command to
download the repositories from GitHub.  These repositories are 1-
build, majorfunction1, majorfunction2, and so on.  After I download
these repositories, I have the directories ~/develop/1-build, ~/
develop/majorfunction1, ~/develop/majorfunction2, and so on.

The ~/develop/1-build directory contains the scripts that build Swift
Linux.  Each major function needed to create Swift Linux (such as
changing web browser configuration files, changing login manager
configuration files, etc.) has its own majorfunction# repository.

For developing the latest version of Swift Linux, I had the swift.sh
script in the  ~/develop/1-build directory call scripts in the
majorfunction directories with commands like:
sh ~/develop/majorfunction1/main.sh
sh ~/develop/majorfunction2/main.sh
and so on

Please note that one can run any of these major functions
independently OR as part of the ~/develop/1-build/swift.sh script.
The ability to run any major function independently means I can focus
on just one function that's not working as it should WITHOUT messing
around with other functions.  This ability will be especially
important when I have an actual team working on Swift Linux.

What I'd like to do is replace GNU Bash with Python.  I know I can
replace the main.sh scripts with main.py scripts.  Then the commands
in the swift.sh script would be:
python ~/develop/majorfunction1/main.py
python ~/develop/majorfunction2/main.py
and so on

Is there a way I can replace the ~/develop/1-build/swift.sh script
with a ~/develop/1-build/swift.py script, yet still retain the ability
to work on one major function WITHOUT requiring the other major
functions and the 1-build directory to be present?
-- 
http://mail.python.org/mailman/listinfo/python-list


[ANN] pyKook 0.7.0 - task automation tool for Python, similar to Rake or Ant

2011-11-04 Thread Makoto Kuwata
Hi,

I have released pyKook 0.7.0.
http://pypi.python.org/pypi/Kook/
http://www.kuwata-lab.com/kook/
http://www.kuwata-lab.com/kook/pykook-users-guide.html

In this release, you can run commands on remote machines using ssh.
This is very useful to deploy your application.


pyKook Overview
---

pyKook is a task automation tool for Python, similar to Rake or Ant.

(Kookbook.py):

kookbook.default = 'build'

## task
@recipe(None, ['hello'])
def build(c):
"""build all"""
pass

## file
@recipe('hello', ['hello.o'])
def file_hello(c):
"""build 'hello' from 'hello.o'"""
system(c%'gcc -o $(product) $(ingred)')

## rule
@recipe('*.o', ['$(1).c', '$(1).h'])
def file_o(c):
system(c%'gcc -c $(ingred)')


Command-line:

bash> kk # or pykook
$ gcc -c hello.c
### *** hello.o (recipe=file_o)
$ gcc -c hello.c
### ** hello (recipe=file_hello)
$ gcc -o hello hello.o
### * build (recipe=build)

See http://www.kuwata-lab.com/kook/pykook-users-guide.html for details.


Enhancements in this release


* (EXPERIMENTAL!!) Remote command execution (ssh and sftp) is available.
  This is very useful to deploy your application into servers.

  Ex (Kookbook.py)::

from kook.remote import Remote
remote = Remote(
hosts= ['www1', 'www2', 'user3@www3:10022'],
port = 22,
user = 'user1',
#password = None,  # for login, '~/.ssh/id_rsa' and sudo
passphrase = None, # only for '~/.ssh/id_rsa'
sudo_password = 'xxx', # only for sudo command
)

@recipe
@remotes(remote)
def hostinfo(c):
"""show hostname"""
ssh = c.ssh
ssh('hostname')# run command with ssh
ssh('whomai')  # run command with ssh
ssh.sudo('whoami') # run command with sudo

@recipe
@remotes(remote)
def exchange(c):
"""upload and download files"""
ssh = c.ssh
with ssh.pushd('work/apps'):
ssh.get('file.remote')# download a file
ssh.put('file.local') # upload a file
ssh.mget('remote.*')  # download files
ssh.mput('local.*')   # upload files

  Notice that you must configure ssh at first and confirm that
  you can log into servers without typing password::

bash> ssh user1@www1
bash> ssh user1@www2
bash> ssh -p 10022 user3@www3
bash> kk hostinfo
### * showinfo (recipe=showinfo)
[user1@www1]$ hostame
www1
[user1@www1]$ whoami
user1
[user1@www1]$ sudo whoami
root
[user2@www2]$ hostame
www2
[user2@www2]$ whoami
user2
[user2@www2]$ sudo whoami
root
[user3@www3]$ hostame
www3
[user3@www3]$ whami
user3
[user3@www3]$ sudo whoami
root

  Currently commands are executed sequencially (not in parallel).

* (EXPERIMENTAL!!) Password object supported.
  Password object asks you to enter password in prompt when necessary.

  Ex (Kookbook.py)::

from kook.remote import Remote, Password
remote = Remote(
hosts = ['user1@www1:22'],
#password = Password('login'),
passphrase= Password('~/.ssh/id_rsa'),
sudo_password = Password('sudo command')
)
#
@recipe
@remotes(remote)
def remote_test(c):
ssh = c.ssh
ssh.sudo('whoami')

  Output example::

bash> kk remote_test
### * remote_test (recipe=remote_test)
Password for ~/.ssh/id_rsa:
Password for sudo command:
[user1@www1]$ sudo whoami
root

  It is easy to share password object.

  Ex (Kookbook.py)::

from kook.remote import Remote, Password
passwd = Password()
remote = Remote(
hosts = ['user1@www1:22'],
password  = passwd,
passphrase= passwd,
sudo_password = passwd,
)


Changes in this release
---

* Category class is changed to convers all instance methods into staticmethods.

  Ex (Kookbook.py):

class apache(Category):
@recipe
def start(c):
   system('apachectl start')

## start() is converted into staticmethod
assert type(apache.__dict__['start']) == staticmethod
from types import FunctionType
assert type(apache.start) == FuntionType

  This makes execution of other recipes in category easier::

class apache(Category):
@recipe
def start(c):
   ...
@recipe
def stop(c):
   ...
@recipe
def restart(c):