Re: loops
James Mills [EMAIL PROTECTED] writes: for x in (2**i for i in xrange(10)): print x This is by far the most concise solution I've seen so far. print '\n'.join(str(2**i) for i in xrange(10)) -- http://mail.python.org/mailman/listinfo/python-list
keyword in package name.
Hello Everyone, I have the habit of using domain names (of either the application or company) in reverse in package names. for e.g. com.spam.app1 I've recently started a project for an indian domain (tld = .in), which leads to a package name like in.spam.app1 This causes a syntax error, as in is a keyword. I understand that this is an unfortunate feature, but has anyone faced this problem before, and is there a possible workaround. P.S. this would also be a problem for the iceland domains (tld = .is). TLDs: http://data.iana.org/TLD/tlds-alpha-by-domain.txt Python Keywords: http://www.python.org/doc/2.5.2/ref/keywords.html Regards, Abhishek Mishra -- http://mail.python.org/mailman/listinfo/python-list
Re: Creating single .exe file without py2exe and pyinstaller
Hi, Abah Joseph wrote: I have written a small application of about 40-45 lines which is about 4KB, so I want to create a single .exe file from it, using py2exe it created unnecessary files, that just increase the size of the program and also less portable to me. What else can I use? the unneccessary files you say, are what your 40-45 lines bring to life. 1) just distribute the 40-45 lines - but this requires python installation on users end 2) use a python to C(++) compiler and compile the result to .exe, works pretty well for simple applications: http://shed-skin.blogspot.com/ Regards Tino smime.p7s Description: S/MIME Cryptographic Signature -- http://mail.python.org/mailman/listinfo/python-list
Re: keyword in package name.
Abhishek Mishra wrote: Hello Everyone, I have the habit of using domain names (of either the application or company) in reverse in package names. for e.g. com.spam.app1 While this seemed a good idea for java, I don't think it makes sense for python - the reason: in python you have an import mechanism, where in java you just have namespaces. Therefore you can always avoid namespace clashes at import time. Regards Tino smime.p7s Description: S/MIME Cryptographic Signature -- http://mail.python.org/mailman/listinfo/python-list
Re: default value in __init__
Steven D'Aprano wrote: On Sun, 19 Oct 2008 02:52:52 +, Aaron Brady wrote: Steven D'Aprano wrote: On Sat, 18 Oct 2008 09:17:28 +1300, Lawrence D'Oliveiro wrote: In message [EMAIL PROTECTED], Aaron Castironpi Brady wrote: The purpose of a parameter is something that the caller can supply, but doesn't have to. It is not for internal-use-only items. Exactly! Says who? Using arguments for internal-use-only is a perfectly acceptable example of practicality beating purity. That's a stretch. It's a standard Python idiom used by the standard library. It's a compromise solution, where the other compromises are about as good. ...Except for the confused newbies. But why should they pick this feature to ignore the documentation for? It trades off intuitiveness for convenience. -- http://mail.python.org/mailman/listinfo/python-list
Re: ANN: pyparsing 1.5.1 released
On Oct 18, 1:05 pm, Terry Reedy [EMAIL PROTECTED] wrote: Paul McGuire wrote: I've just uploaded to SourceForge and PyPI the latest update to (Python 3.0 uses syntax for catching exceptions that is incompatible with Python versions pre 2.6, so there is no way for me to support both existing Python releases and Python 3.0 with a common source code base. I thought 2to3.py was supposed to make that change automatically. Have you tried it and found it not to work? tjr Please re-read my caveat. What I said was (or tried to anyway) was that I cannot write a source file that will work on 2.4, 2.5, 2.6, and 3.0. Actually, it was very close - but for the change in the except syntax, I could actually have pulled it off. I should probably use 2to3.py on my unit tests, so that my Py3 version of pyparsing can get tested more fully. I'll also use 2to3.py on pyparsing.py itself, it will make it easier to maintain the Py3 source version. (I'll still have to keep and support two different source versions though, pity.) -- Paul -- http://mail.python.org/mailman/listinfo/python-list
Re: Python certification
Yeah. The day Python goes Certification required to get a job is the day I quit Python forever and move on to another language. Certification prooves you're an idiot who needs to spend money to work for another idiot who doesn't know enough about programming to know if they hire competent programmers and need an idiot paper to make them feel better and sleep better at night. 2008/10/18 Lawrence D'Oliveiro [EMAIL PROTECTED]: In message [EMAIL PROTECTED], Ben Finney wrote: srinivasan srinivas [EMAIL PROTECTED] writes: I m planning to do certification in Python?? Why the question marks? Are you asking us whether this is true? Perhaps he's one of those people who end sentences with a rising inflection? Found among Australasians, possibly elsewhere? -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: xor: how come so slow?
On Sun, 19 Oct 2008 16:38:37 +1300, Lawrence D'Oliveiro wrote: In message [EMAIL PROTECTED], Steven D'Aprano wrote: On Sat, 18 Oct 2008 09:16:11 +1300, Lawrence D'Oliveiro wrote: Data can come in fractional bits. That's how compression works. If you don't believe me, try compressing a single bit and see if you get a fractional bit. If both states of the bit are not equally likely, then you do indeed have a fractional bit, since nrbits = (- logbase2(P[bit = 0]) - logbase2(P[bit = 1])) / 2 That's an arithmetic mean of the logarithms. It doesn't imply that there are fractional bits any more than an average family having 2.3 children implies that there are 0.3 of a child wandering around the streets. Using the Shannon measure of information, you can have messages which contain fractional information (technically, surprisal), when measured in bits. But that doesn't imply the existence of fractional bits. Look at it this way: consider a barter economy where I agree to swap 5 chickens for 2 axes. So each axe is equivalent to 2.5 chickens. But that doesn't imply that there is such a thing as 0.5 of a chicken -- at least not a *live* chicken. While I can blithely talk about bartering fractional chickens, in practice when I actually go to make good on my promise, it must be an integer number of chickens. Similarly, we can talk about messages containing fractional bits of information, but when we actually store or transmit that message in practice, we can only use integer numbers of bits. As Wikipedia puts it: It is important to differentiate between the use of bit in referring to a discrete storage unit and the use of bit in referring to a statistical unit of information. The bit, as a discrete storage unit, can by definition store only 0 or 1. A statistical bit is the amount of information that, on average[citation needed], can be stored in a discrete bit. ... If these two ideas need to be distinguished, sometimes the name bit is used when discussing data storage while shannon is used for the statistical bit. http://en.wikipedia.org/wiki/Bit -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: Linux.com: Python 3 makes a big break
In message [EMAIL PROTECTED], Kay Schluehr wrote: If someone had solved the hard problem of finding a less cumbersome way of writing sys.stdout.write(...) ... I don't see what the big deal is. I regularly write things like sys.stdout.write \ ( INPUT TYPE=\RADIO\ NAME=\%(name)s\ ID=\%(name)s[%(value)s]\ VALUE=\%(value)s\%(checked)s LABEL FOR=\%(name)s[%(value)s]\%(title)s/LABEL\n # using LABEL lets user click on text to select button % { name : EscapeHTML(Name), value : EscapeHTML(Value), title : Title, checked : (, CHECKED)[Checked], } ) -- http://mail.python.org/mailman/listinfo/python-list
Re: Porting VB apps to Python for Window / Linux use
Lawrence D'Oliveiro wrote: In message [EMAIL PROTECTED], Dotan Cohen wrote: I often see mention of SMBs that either want to upgrade their Windows installations, or move to Linux, but cannot because of inhouse VB apps. Probably best to leave those legacy VB apps alone and develop new replacements in a more open, cross-platform language, like Python. Sorry but for GUI design, Python is pre-historic ;-) Stef -- http://mail.python.org/mailman/listinfo/python-list
Re: loops
On Sat, 18 Oct 2008 20:45:47 -0700, John Machin wrote: On Oct 19, 2:30 pm, Steven D'Aprano [EMAIL PROTECTED] cybersource.com.au wrote: [snip] making your code easy to read and easy to maintain is far more important. for x in (2**i for i in xrange(10)): print x will also print 1, 2, 4, 8, ... up to 1000. I would say up to 512; perhaps your understanding of up to differs from mine. Well, mine is based on Python's half-open semantics: up to 1000 doesn't include 1000, and the highest power of 2 less than 1000 is 512. Perhaps you meant up to and including 512. Easy to read? I'd suggest this: for i in xrange(10): print 2 ** i Well, sure, if you want to do it the right way *wink*. But seriously, no, that doesn't answer the OP's question. Look at his original code (which I assume is C-like pseudo-code): for x=1;x=100;x+x: print x The loop variable i takes the values 1, 2, 4, 8, etc. That's what my code does. If he was asking how to write the following in Python, your answer would be appropriate: for x=1;x=100;x++: print 2**x -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: default value in __init__
On Oct 14, 1:36 pm, David C. Ullrich [EMAIL PROTECTED] wrote: Well... How to say.. Is there any chance these people will read anything *at all* ? No. That's exactly the point! Basic Python is so transparent that you can start using it without reading anything, just looking at a few examples. _Because_ of that it's their responsibility to ensure that if you look at a few examples you then have a complete understanding of the language. I agree, Python really does strive to be intuitive and easy-to-learn. So the oddity of the behavior of optional_list_arg=[] is a recurring surprise to those who jump first and read documentation later. Besides the tutorials, reference docs, and FAQs, there are also some web pages with titles like Python Gotchas and Common Mistakes in Python that usually tread this ground too. In particular default parameters should work the way the user expects! The fact that different users will expect different things here is no excuse... Are you being sarcastic? Short of import mindreading, I don't know how Python would know which behavior a given user would expect. Maybe instead of a code smell, this particular Python wart is a design smell. What is surprising is that Python cannot discriminate between this: y = 100 def f(a,x=y): print a+x f(1) 101 y=200 f(1) 101 and this: def f(a,x=[]): print a+len(x) x.append(a) f(1) 1 f(1) 2 f(1,[1,2,3]) 4 Is x supposed to be a default arg or a static arg (in the sense of a static var within a function as one finds in C)? -- Paul -- http://mail.python.org/mailman/listinfo/python-list
Re: Linux.com: Python 3 makes a big break
On Sat, 18 Oct 2008 21:34:13 -0700, Kay Schluehr wrote: On 18 Okt., 22:01, Jean-Paul Calderone [EMAIL PROTECTED] wrote: Perhaps it also omitted the fact that nothing prevents you from defining a function to write things to stdout (or elsewhere) in Python 2.5, making the Python 3.x change largely a non-feature. ;) Jean-Paul Even more. If someone had solved the hard problem of finding a less cumbersome way of writing sys.stdout.write(...) the request for multiline lambdas ( multi expression lambdas actually ) could have been decreased about 75-80%. Er, am I missing something? How about this? import sys pr = sys.stdout.write pr('Is this less cumbersome enough for you?') But of course, that doesn't really help you avoid multi-expression lambdas, unless you want to write obfuscated code: def foo(x): y = x+1 print y return y is roughly, but inefficiently, equivalent to: lambda x: sys.stdout.write(x+1) or x+1 But that's cumbersome and obfuscated, and not scalable at all. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
[ANN] pyKook 0.0.1 - a simple build tool similar to Make or Ant
Hi all, I have released pyKook 0.0.1. http://pypi.python.org/pypi/Kook/0.0.1 http://www.kuwata-lab.com/kook/ http://www.kuwata-lab.com/kook/pykook-users-guide.html pyKook is a simple build tool similar to Make, Ant, Rake, or SCons. pyKook regards software project as cooking. Terms used in pyKook are cooking terms. For example: cookbook- Makefile product - target file ingredient - source file recipe - how to create target from source Cookbook (= Makefile) is written in pure Python. You can write any statements or expressions in cookbook. Example of cookbook (Kookbook.py): -- ## ## properties ## cc = prop('cc', 'gcc') cflags = prop('cflags', '-g -Wall') ## ## recipes ## @ingreds(hello) def task_all(c): pass @product(hello) @ingreds(hello.o) def file_command(c): generates hello command system(c%$(cc) $(cflags) -o $(product) $(ingred)) @product(*.o) @ingreds($(1).c, if_exists($(1).h)) def file_ext_o(c): compile '*.c' and '*.h' system(c%$(cc) $(cflags) -c $(1).c) def task_clean(c): rm_f(*.o) -- Exampe of result: == sh ls Kookbook.py hello.chello.h sh pykook -l Properties: cc : 'gcc' cflags : '-g -Wall' Task recipes: all : cook all products clean : remove by-products File recipes: hello : generates hello command *.o : compile '*.c' and '*.h' (Tips: you can set 'kook_default_product' variable in your kookbook.) sh pykook all # or, pykook --cc=gcc4 all ### *** hello.o (func=file_ext_o) $ gcc -g -Wall -c hello.c ### ** hello (func=file_command) $ gcc -g -Wall -o hello hello.o ### * all (func=task_all) == See users-guide for more details. http://www.kuwata-lab.com/kook/pykook-users-guide.html Have fun! -- regards, makoto kuwata -- http://mail.python.org/mailman/listinfo/python-list
Re: xor: how come so slow?
On Sun, 19 Oct 2008 04:38:04 +, Tim Roberts wrote: Steven D'Aprano [EMAIL PROTECTED] wrote: On Fri, 17 Oct 2008 20:51:37 +1300, Lawrence D'Oliveiro wrote: Is piece really meant to be random? If so, your create_random_block function isn't achieving much--xoring random data together isn't going to produce anything more exciting than less random data than you started with. Hmmm... why do you say that xoring random data with other random data produces less randomness than you started with? I'm not saying that you're wrong, and certainly it is pointless since you're not going to improve on the randomness of /dev/urandom without a lot of work. But less random? For those who got a bit lost here, I'd would point out that Knuth[1] has an excellent chapter on random numbers that includes a detailed discussion of this effect. His net takeaway is that most of the things people do to increase randomness actually have exactly the opposite effect. I don't doubt it at all. But xoring random data with more random data? I'm guessing that if the two sources of data are independent and from the same distribution, then xoring them is pointless but not harmful. Here's a rough-and-ready test which suggests there's little harm in it: import os, math def rand_data(size): ... return [ord(c) for c in os.urandom(size)] ... def mean(data): ... return sum(data)/len(data) ... def stdev(data): ... return math.sqrt( mean([x**2 for x in data]) - mean(data)**2 ) ... A = rand_data(1000) # good random data B = rand_data(1000) # more good random data AB = [a^b for (a,b) in zip(A, B)] # is this still good random data? assert len(AB) == len(A) == len(B) mean(A), stdev(A) (126, 73.91887445030531) mean(B), stdev(B) (128, 74.242844773082339) mean(AB), stdev(AB) (129, 74.39085965358916) Note: I wouldn't take the above terribly seriously. Mean and standard deviation alone are terrible measures of the randomness of data. But this does suggest that any deviation from uniform randomness will be quite subtle. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: Porting VB apps to Python for Window / Linux use
2008/10/19 Stef Mientki [EMAIL PROTECTED]: Sorry but for GUI design, Python is pre-historic ;-) Stef Really, even with the cross-platform Qt bindings? Can you recommend a better language? (not java no please not java) -- Dotan Cohen http://what-is-what.com http://gibberish.co.il א-ב-ג-ד-ה-ו-ז-ח-ט-י-ך-כ-ל-ם-מ-ן-נ-ס-ע-ף-פ-ץ-צ-ק-ר-ש-ת ä-ö-ü-ß-Ä-Ö-Ü -- http://mail.python.org/mailman/listinfo/python-list
Re: keyword in package name.
On Oct 19, 12:11 pm, Tino Wildenhain [EMAIL PROTECTED] wrote: Abhishek Mishra wrote: Hello Everyone, I have the habit of using domain names (of either the application or company) in reverse in package names. for e.g. com.spam.app1 While this seemed a good idea for java, I don't think it makes sense for python - the reason: in python you have an import mechanism, where in java you just have namespaces. Therefore you can always avoid namespace clashes at import time. Hi, Thanks for your reply on a Sunday! Here's my 2 cents on why I prefer this mechanism - I would like not to worry about namespace clashes at import time. Using a toplevel package which isolates your namespace from all others, is a good idea in my opinion. This could be a product name (like MoinMoin in MoinMoin), company name (like google in google app engine - which is just one short of com.google btw), or your DNS. Therefore I use a domain name lots of times. (I admit that I picked up this habit from programming a lot in java). Although it looks like in this case I would have to use just the project name. Thanks Regards, Abhishek Mishra -- http://mail.python.org/mailman/listinfo/python-list
Re: Porting VB apps to Python for Window / Linux use
Dotan Cohen wrote: 2008/10/19 Stef Mientki [EMAIL PROTECTED]: Sorry but for GUI design, Python is pre-historic ;-) Stef Really, even with the cross-platform Qt bindings? I skipped Qt because of the weird license (I make both commercial and free-open software) Can you recommend a better language? (not java no please not java) As said VB or even much better Delphi ! But to be honest, wanting the same language for commercial and open software, I'm very satisfied with Python, and must say it's much more beautiful language than Delphi, seen over the full width of programming. Although both languages are Object Oriented, for some (unknown) reason it's 10 times easier to maintain and extend libraries in Python than in Delphi. I WOULD BE MUCH OBLIGED, IF SOMEONE CAN EXPLAIN THAT DIFFERENCE ! And with wxPython and some tools I made, I almost have the same environment as Delphi. cheers, Stef -- http://mail.python.org/mailman/listinfo/python-list
Re: Help with Iteration
Aaron Brady cast...pigmail.com wrote: while 1: calculate_stuff( ) if stuff 0.5: break The thought police will come and get you. You are doing things by side effect! You are using a global called stuff! You are relying on an implementation detail! While their cudgels are bouncing off your skull, they will scream the above three lines into your swiftly swelling ears! I suggest you write; while True: stuff = calculate_stuff() if stuff 0.5: break quickly, to avoid the pain! It may be too late though - even the above sanitised version is still too tightly coupled - how must calculate_stuff know where to find the inputs for its calculation? You are gonna bleed! :-) - Hendrik -- No good deed will go unpunished. -- http://mail.python.org/mailman/listinfo/python-list
Re: keyword in package name.
On Sat, 18 Oct 2008 23:05:38 -0700, Abhishek Mishra wrote: I have the habit of using domain names (of either the application or company) in reverse in package names. for e.g. com.spam.app1 I've recently started a project for an indian domain (tld = .in), which leads to a package name like in.spam.app1 This causes a syntax error, as in is a keyword. I understand that this is an unfortunate feature, but has anyone faced this problem before, and is there a possible workaround. `com_spam.app1`!? I would even recommend this with domains that don't clash with keywords because if several people start to use this package name convention you will get name clashes at package level. Say there are two vendors with a `com` TLD, how do you install their packages? Into the same `com/` subdirectory? The `__init__.py` of which vendor should live at the `com/` directory level? If you install them into two different directories but want to import modules from both vendors -- how? Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list
Re: Finding the instance reference of an object
On Fri, 17 Oct 2008 16:36:24 -0400, Steve Holden wrote: People here don't describe Python as different just because they *want* it to be different. Python acknowledges intellectual debts to many languages, none of which is exactly like it. I understand that Python's object and calling semantics are exactly the same as Emerald (and likely other languages as well), and that both Emerald and Python are explicitly based on those of CLU, as described by by Barbara Liskov in 1979: In particular it is not call by value because mutations of arguments performed by the called routine will be visible to the caller. And it is not call by reference because access is not given to the variables of the caller, but merely to certain objects. http://www.lcs.mit.edu/publications/pubs/pdf/MIT-LCS-TR-225.pdf quoted by Fredrik Lundh here: http://mail.python.org/pipermail/python-list/2003-May/204379.html Call by object/sharing isn't some new-fangled affectation invented by comp.lang.python dweebs to make Python seem edgy and different. It's a term that has been in use in highly respected Comp Sci circles for over thirty years. In case anybody doesn't recognise the name: http://en.wikipedia.org/wiki/Barbara_Liskov -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: keyword in package name.
Abhishek Mishra wrote: Hello Everyone, I have the habit of using domain names (of either the application or company) in reverse in package names. for e.g. com.spam.app1 I've recently started a project for an indian domain (tld = .in), which leads to a package name like in.spam.app1 This causes a syntax error, as in is a keyword. india = __import__('in') will work while you must alias in Python, you can have what you want on disk -- http://mail.python.org/mailman/listinfo/python-list
Re: default value in __init__
On Sun, Oct 19, 2008 at 12:56 AM, Paul McGuire [EMAIL PROTECTED] wrote: On Oct 14, 1:36 pm, David C. Ullrich [EMAIL PROTECTED] wrote: Well... How to say.. Is there any chance these people will read anything *at all* ? No. That's exactly the point! Basic Python is so transparent that you can start using it without reading anything, just looking at a few examples. _Because_ of that it's their responsibility to ensure that if you look at a few examples you then have a complete understanding of the language. I agree, Python really does strive to be intuitive and easy-to-learn. So the oddity of the behavior of optional_list_arg=[] is a recurring surprise to those who jump first and read documentation later. Besides the tutorials, reference docs, and FAQs, there are also some web pages with titles like Python Gotchas and Common Mistakes in Python that usually tread this ground too. Specifically: http://www.onlamp.com/pub/a/python/2004/02/05/learn_python.html?page=2 http://www.ferg.org/projects/python_gotchas.html#contents_item_6 http://zephyrfalcon.org/labs/python_pitfalls.html Cheers, Chris -- Follow the path of the Iguana... http://rebertia.com In particular default parameters should work the way the user expects! The fact that different users will expect different things here is no excuse... Are you being sarcastic? Short of import mindreading, I don't know how Python would know which behavior a given user would expect. Maybe instead of a code smell, this particular Python wart is a design smell. What is surprising is that Python cannot discriminate between this: y = 100 def f(a,x=y): print a+x f(1) 101 y=200 f(1) 101 and this: def f(a,x=[]): print a+len(x) x.append(a) f(1) 1 f(1) 2 f(1,[1,2,3]) 4 Is x supposed to be a default arg or a static arg (in the sense of a static var within a function as one finds in C)? -- Paul -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: Porting VB apps to Python for Window / Linux use
2008/10/19 Stef Mientki [EMAIL PROTECTED]: Dotan Cohen wrote: 2008/10/19 Stef Mientki [EMAIL PROTECTED]: Sorry but for GUI design, Python is pre-historic ;-) Stef Really, even with the cross-platform Qt bindings? I skipped Qt because of the weird license (I make both commercial and free-open software) Can you recommend a better language? (not java no please not java) As said VB or even much better Delphi ! But to be honest, wanting the same language for commercial and open software, I'm very satisfied with Python, and must say it's much more beautiful language than Delphi, seen over the full width of programming. Although both languages are Object Oriented, for some (unknown) reason it's 10 times easier to maintain and extend libraries in Python than in Delphi. I WOULD BE MUCH OBLIGED, IF SOMEONE CAN EXPLAIN THAT DIFFERENCE ! And with wxPython and some tools I made, I almost have the same environment as Delphi. Really, you recommend that VB apps destined for migration be recoded in Delphi, as opposed to Python? I will look further into that language. -- Dotan Cohen http://what-is-what.com http://gibberish.co.il א-ב-ג-ד-ה-ו-ז-ח-ט-י-ך-כ-ל-ם-מ-ן-נ-ס-ע-ף-פ-ץ-צ-ק-ר-ש-ת ä-ö-ü-ß-Ä-Ö-Ü -- http://mail.python.org/mailman/listinfo/python-list
urllib2.HTTPError: HTTP Error 204: NoContent
I am getting the following error trying to download an html page using urllib2. urllib2.HTTPError: HTTP Error 204: NoContent The url is of this type: http://www.amazon.com/gp/offer-listing/B000KJX3A0%3FSubscriptionId%3D183VXJS74KNQ89D0NRR2%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB000KJX3A0 I can open it in my browser without problems.Any ideas on a solution? -- http://mail.python.org/mailman/listinfo/python-list
Re: Porting VB apps to Python for Window / Linux use
Il Sun, 19 Oct 2008 10:34:23 +0200, Stef Mientki ha scritto: ... I'm very satisfied with Python, and must say it's much more beautiful language than Delphi, seen over the full width of programming. Although both languages are Object Oriented, for some (unknown) reason it's 10 times easier to maintain and extend libraries in Python than in Delphi. I WOULD BE MUCH OBLIGED, IF SOMEONE CAN EXPLAIN THAT DIFFERENCE ! And with wxPython and some tools I made, I almost have the same environment as Delphi. IMO: - dynamic typing - powerful built-in types like lists, sets and dictionaries - very rich function definition syntax, with multiple returns, yield, values passed by position and by name, automatic grouping of parameters in list/dictionaries - rich standard library, which becomes impressive if you accound for all the non standard modules that you find in internet. And, unlike another language wich shall remain unnamed (starts with J), most of python library modules have the same pratical approach of C standard library. Never used seriously delphi, but played a little with it: IIRC, under the nice IDE and GUI toolkit, the language itself is a kind of object-pascal. This would place it more or less at the same level of abstraction of Java, way below languages like python and ruby, Ciao - FB -- http://mail.python.org/mailman/listinfo/python-list
Re: Normalizing arguments
On Oct 17, 7:16 pm, Aaron \Castironpi\ Brady [EMAIL PROTECTED] wrote: George Sakkis has a recipe that might help. http://code.activestate.com/recipes/551779/ Looks like just the thing. Thanks! -- http://mail.python.org/mailman/listinfo/python-list
Re: loops
Steven D'Aprano wrote: On Sat, 18 Oct 2008 20:45:47 -0700, John Machin wrote: On Oct 19, 2:30 pm, Steven D'Aprano [EMAIL PROTECTED] cybersource.com.au wrote: [snip] making your code easy to read and easy to maintain is far more important. for x in (2**i for i in xrange(10)): print x will also print 1, 2, 4, 8, ... up to 1000. I would say up to 512; perhaps your understanding of up to differs from mine. Well, mine is based on Python's half-open semantics: up to 1000 doesn't include 1000, and the highest power of 2 less than 1000 is 512. We're talking about an English sentence, not a piece of Python code. When you say I'm taking the train to X, do you get off at the station before X, as in getting off at Redfern? Perhaps you meant up to and including 512. -- http://mail.python.org/mailman/listinfo/python-list
Re: Porting VB apps to Python for Window / Linux use
Dotan Cohen wrote: 2008/10/19 Stef Mientki [EMAIL PROTECTED]: Dotan Cohen wrote: 2008/10/19 Stef Mientki [EMAIL PROTECTED]: Sorry but for GUI design, Python is pre-historic ;-) Stef Really, even with the cross-platform Qt bindings? I skipped Qt because of the weird license (I make both commercial and free-open software) Can you recommend a better language? (not java no please not java) As said VB or even much better Delphi ! But to be honest, wanting the same language for commercial and open software, I'm very satisfied with Python, and must say it's much more beautiful language than Delphi, seen over the full width of programming. Although both languages are Object Oriented, for some (unknown) reason it's 10 times easier to maintain and extend libraries in Python than in Delphi. I WOULD BE MUCH OBLIGED, IF SOMEONE CAN EXPLAIN THAT DIFFERENCE ! And with wxPython and some tools I made, I almost have the same environment as Delphi. Really, you recommend that VB apps destined for migration be recoded in Delphi, as opposed to Python? Certainly not. Delphi is windows only and as Francesco said, it's just Object Pascal , which is inferior to Python. Stef I will look further into that language. -- http://mail.python.org/mailman/listinfo/python-list
Re: Porting VB apps to Python for Window / Linux use
Francesco Bochicchio wrote: Il Sun, 19 Oct 2008 10:34:23 +0200, Stef Mientki ha scritto: ... I'm very satisfied with Python, and must say it's much more beautiful language than Delphi, seen over the full width of programming. Although both languages are Object Oriented, for some (unknown) reason it's 10 times easier to maintain and extend libraries in Python than in Delphi. I WOULD BE MUCH OBLIGED, IF SOMEONE CAN EXPLAIN THAT DIFFERENCE ! And with wxPython and some tools I made, I almost have the same environment as Delphi. IMO: - dynamic typing - powerful built-in types like lists, sets and dictionaries - very rich function definition syntax, with multiple returns, yield, values passed by position and by name, automatic grouping of parameters in list/dictionaries - rich standard library, which becomes impressive if you accound for all the non standard modules that you find in internet. And, unlike another language wich shall remain unnamed (starts with J), most of python library modules have the same pratical approach of C standard library. Never used seriously delphi, but played a little with it: IIRC, under the nice IDE and GUI toolkit, the language itself is a kind of object-pascal. This would place it more or less at the same level of abstraction of Java, way below languages like python and ruby, Thanks Francesco, for these features and indeed the Object Pascal language is indeed inferior to Python. Some of Python features that I find an enormous improvement over Delphi: - extending functions and classes with keyword arguments, without affecting the previous use of these declarations - array slicing - having 1 procedure that can handle every type, opposed to the Delphi overload method Some minor points of Python, compared to Delphi - rich standard library is less than in Delphi. It might be just as large, but using it is a crime (Delphi libs always work because they are upwards compatible) - GUI design - deploying an application cheers, Stef Ciao - FB -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: keyword in package name.
On Oct 19, 2:06 pm, Marc 'BlackJack' Rintsch [EMAIL PROTECTED] wrote: `com_spam.app1`!? I would even recommend this with domains that don't clash with keywords because if several people start to use this package name convention you will get name clashes at package level. Say there are two vendors with a `com` TLD, how do you install their packages? Into the same `com/` subdirectory? The `__init__.py` of which vendor should live at the `com/` directory level? If you install them into two different directories but want to import modules from both vendors -- how? Ciao, Marc 'BlackJack' Rintsch Ah, you have opened my eyes. I should have asked myself before why I did not face such a clash. (because no-one uses this convention!) I guess the way to go is not use the tld, but just a unique company/ product name. Thanks, Abhishek Mishra -- http://mail.python.org/mailman/listinfo/python-list
Re: Finding the instance reference of an object
On Fri, 17 Oct 2008 09:56:17 -0600, Joe Strout wrote: On Oct 16, 2008, at 11:23 PM, Dennis Lee Bieber wrote: On Thu, 16 Oct 2008 21:19:28 -0600, Joe Strout [EMAIL PROTECTED] declaimed the following in comp.lang.python: Now that IS mysterious. Doesn't calling a function add a frame to a stack? And doesn't that necessitate copying in values for the variables in that stack frame (such as 'x' above)? Of course we're No -- it copies the /reference/ to the object containing the value. The reference to the object IS the value of an object reference variable. That's a bizarre and unnatural way of looking at it. To steal a line from the effbot, that's like valuing your child's Social Security number over the child herself: http://mail.python.org/pipermail/python-list/2003-May/204560.html If we execute a line of Python code: x = parrot and then ask What's the value of x?, I think that even you would think I was being deliberately obtuse, difficult and obfuscatory if I answered location 0xb7cdeb2c. So good, parameters are passed ByVal in Python as they appear to be, and as is the default in every other modern language. Nonsense. Python doesn't copy a parameter before passing it to the function. You get the same parameter inside the function as outside: def foo(x): ... print id(x) ... a = ['some', 'thing'] print id(a); foo(a) 3083441036 3083441036 I'm going to anticipate your response here: you're going to deny that call by value implies that the list ['some', 'thing'] will be copied before being passed to the function. According to *some* definitions of CBV, you might even be right. But according to *other* definitions, including the one that I learned in comp sci at university, that copying of data is an essential part of CBV. These other definitions aren't necessarily a formal definition from some Computer Scientist. They're just as likely to be informal understandings of what CBV and CBR mean: if it's call by value, don't pass big data structures because they will be copied and your code will be slow. Just as assignment transfers the reference to the RHS object to the name shown on the LHS. Assignment copies the RHS value to the LHS variable. In the case of an object reference, the value copied is, er, an object reference. No, assignment binds an object to a name. That's what Python does. Of course, at the implementation level, name binding might be implemented by copying object references. Or it might not. That's an implementation detail that isn't relevant at the Python level. Or at least, it shouldn't be relevant until the abstraction leaks. http://www.joelonsoftware.com/articles/LeakyAbstractions.html [snip] For object references (including the mutable ones that may treat people up), Python's behavior is no different from any other language. That's an exceedingly broad claim. No different from Java? Well, perhaps. No different from Lisp? Doubtful. No different from Forth? Yeah, riiight. Speaking of Java, there's one major difference between Java and Python with respect to names. In a statically typed language like Java, you define names before you use them, and from that point the name is bound to both a type and an object. But the binding to the object is optional, and such unbound names are said to be null. In a dynamically typed language like Python, names are bound only to objects. You can't have an unbound name: if a name exists, it must be bound to an object, and if it doesn't exist, you get a NameError exception when you try to access it. And objects are typed, not names. http://www.ferg.org/projects/python_java_side-by-side.html (Answer: neither. They are call by name.) I have no idea what that means. They're call by value as far as I can tell. (Even if the value may happen to be a reference.) Technically, as I recall the definition of call by name, they aren't that either. ... Call by name, then, acted as a macro expansion wherever the argument was referenced in the called function. Thanks for that explanation. Clearly that's not what's going on in Python. Ah no, that's my bad. I have a strange and disturbing mental stutter that substitutes call by name when I mean to say call by object at the most embarrassing times. Sorry. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: default value in __init__
On Sun, 19 Oct 2008 00:56:17 -0700, Paul McGuire wrote: On Oct 14, 1:36 pm, David C. Ullrich [EMAIL PROTECTED] wrote: ... In particular default parameters should work the way the user expects! The fact that different users will expect different things here is no excuse... Are you being sarcastic? Yes, David was being sarcastic. Or possibly ironic. Satirical? One of those humour things. Whatever it was, I think you're the second person who missed it. Short of import mindreading, I don't know how Python would know which behavior a given user would expect. Exactly. Besides, Guido has a time machine, and apparently antigravity is being added to the standard library, so I don't see why we can't have mindreading too. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: keyword in package name.
Abhishek Mishra schrieb: On Oct 19, 2:06 pm, Marc 'BlackJack' Rintsch [EMAIL PROTECTED] wrote: `com_spam.app1`!? I would even recommend this with domains that don't clash with keywords because if several people start to use this package name convention you will get name clashes at package level. Say there are two vendors with a `com` TLD, how do you install their packages? Into the same `com/` subdirectory? The `__init__.py` of which vendor should live at the `com/` directory level? If you install them into two different directories but want to import modules from both vendors -- how? Ciao, Marc 'BlackJack' Rintsch Ah, you have opened my eyes. I should have asked myself before why I did not face such a clash. (because no-one uses this convention!) I guess the way to go is not use the tld, but just a unique company/ product name. I personally tend to mix the approaches. Using setuptools, you can declare so-called namespace-packages. I use one of these for all my projects at work. It is derived from the companyname, and thus is unique. And all sub-packages for the various projects can have names that describe them and sometimes would clash with other projects (e.g. devtools, which also is a TurboGears-package) Diez -- http://mail.python.org/mailman/listinfo/python-list
Re: loops
On Sun, 19 Oct 2008 03:17:51 -0700, John Machin wrote: Steven D'Aprano wrote: On Sat, 18 Oct 2008 20:45:47 -0700, John Machin wrote: On Oct 19, 2:30 pm, Steven D'Aprano [EMAIL PROTECTED] cybersource.com.au wrote: [snip] making your code easy to read and easy to maintain is far more important. for x in (2**i for i in xrange(10)): print x will also print 1, 2, 4, 8, ... up to 1000. I would say up to 512; perhaps your understanding of up to differs from mine. Well, mine is based on Python's half-open semantics: up to 1000 doesn't include 1000, and the highest power of 2 less than 1000 is 512. We're talking about an English sentence, not a piece of Python code. When you say I'm taking the train to X, do you get off at the station before X, as in getting off at Redfern? But I don't say I'm taking the train UP TO X. Intervals in English are often ambiguous, which is why people often explicitly say up to and including But in this specific case, I don't see why you're having difficulty. Whether 1000 was included or not makes no difference, because 1000 is not a power of 2. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
What's the perfect (OS independent) way of storing filepaths ?
hello, I (again) wonder what's the perfect way to store, OS-independent, filepaths ? I can think of something like: - use a relative path if drive is identical to the application (I'm still a Windows guy) - use some kind of OS-dependent translation table if on another drive - use ? if on a network drive I'm interested what you all use for this kind of problem. And I wonder why there isn't a standard solution / library in Python available. thanks, Stef Mientki -- http://mail.python.org/mailman/listinfo/python-list
Re: a new brawser (avant) it is very very good
mina2020 wrote: what has this todo with Python ? Avant Browser allows users to browse multiple Web sites simultaneously and to block all unwanted pop-up pages and Flash ads automatically. The integrated cleaner helps users clear all traces and maintain privacy. The built-in Yahoo and Google search engines enable users to search for Web pages, images, groups, directories, lyrics, software, and news on the Internet. Avant Browser provides options for blocking the download of Flash media, pictures, video, sounds, and ActiveX components, so users can efficiently use their bandwidth and speed up page loading. All opened pages can be stopped, refreshed, closed, or arranged with one click. It also comes with built-in RSS reader. Its similar Web sites bar displays Web sites, which are related to the opened Web pages. download http://m-google-adsense.blogspot.com/2008/10/what-is-google-adsense.html -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: inserting Unicode character in dictionary - Python
On Oct 18, 2008, at 1:20 AM, Martin v. Löwis wrote: Do you then have a proper UTF-8 string, but the problem is that none of the standard Python library methods know how to properly interpret UTF-8? There is (probably) no such thing as a proper UTF-8 string (in the sense in which you probably mean it). To be clear, I mean a string that is valid UTF-8 (not all strings of bytes are, of course). Python doesn't have a data type for UTF-8 string. It only has a data type byte string. It's up to the application whether it gets interpreted in a consistent manner. Libraries are (typically) encoding-agnostic, i.e. they work for UTF-8 encoded strings the same way as for, say, Big-5 encoded strings. Oi -- so if I ask for length, I get the number of bytes, not the number of characters. If I slice and dice, I could end up splitting characters in half. It is, as you say, just a string of bytes, not a string of characters. 4. In Python 3.0, this silliness goes away, because all strings are Unicode by default. You still need to make sure that the editor's encoding and the declared encoding match. Well, the if no encoding is declared, it (quite sensibly) assumes UTF-8, so for my purposes this boils down to using a UTF-8 editor -- which I always do anyway. But do I still have to put a u before my string literals in order to have it treated as characters rather than bytes? I'm hoping that the answer is no -- most string literals in a source file are text (which should be Unicode text, these days); a raw byte string would be the exceptional case, and I'd be happy to use the r prefix for those. Best, - Joe -- http://mail.python.org/mailman/listinfo/python-list
Re: ANN: pyparsing 1.5.1 released
Paul McGuire wrote in news:[EMAIL PROTECTED] in comp.lang.python: On Oct 18, 1:05 pm, Terry Reedy [EMAIL PROTECTED] wrote: Paul McGuire wrote: I've just uploaded to SourceForge and PyPI the latest update to (Python 3.0 uses syntax for catching exceptions that is incompatible with Python versions pre 2.6, so there is no way for me to support both existing Python releases and Python 3.0 with a common source code base. I thought 2to3.py was supposed to make that change automatically. Have you tried it and found it not to work? tjr Please re-read my caveat. What I said was (or tried to anyway) was that I cannot write a source file that will work on 2.4, 2.5, 2.6, and 3.0. Actually, it was very close - but for the change in the except syntax, I could actually have pulled it off. I should probably use 2to3.py on my unit tests, so that my Py3 version of pyparsing can get tested more fully. I'll also use 2to3.py on pyparsing.py itself, it will make it easier to maintain the Py3 source version. (I'll still have to keep and support two different source versions though, pity.) AIUI the idea is that you write your 2.x python code (and tests) so that when they are processed by 2to3.py you get valid python 3.x code that will pass all its tests. You then maintain your 2.x code base adding another test where the code (and tests) is run through 2to3.py and then python 3.x runs the test suite. Presumably you only need to start maintining a 3.x code base when you start adding 3.x specific features or abandon support for 2.x python. Rob. -- http://www.victim-prime.dsl.pipex.com/ -- http://mail.python.org/mailman/listinfo/python-list
Re: What's the perfect (OS independent) way of storing filepaths ?
On Oct 19, 8:35 am, Stef Mientki [EMAIL PROTECTED] wrote: I (again) wonder what's the perfect way to store, OS-independent, filepaths ? I don't think there is any such thing. What problem are you trying to solve? -- http://mail.python.org/mailman/listinfo/python-list
Re: keyword in package name.
On Oct 19, 7:05 am, Abhishek Mishra [EMAIL PROTECTED] wrote: Hello Everyone, I have the habit of using domain names (of either the application or company) in reverse in package names. for e.g. com.spam.app1 I've recently started a project for an indian domain (tld = .in), which leads to a package name like in.spam.app1 This causes a syntax error, as in is a keyword. I understand that this is an unfortunate feature, but has anyone faced this problem before, and is there a possible workaround. P.S. this would also be a problem for the iceland domains (tld = .is). TLDs:http://data.iana.org/TLD/tlds-alpha-by-domain.txt Python Keywords:http://www.python.org/doc/2.5.2/ref/keywords.html You could add a trailing underscore, ie in_. This fix is done in the poplib module where the POP3 class has a method called pass_ because pass is a reserved word. -- http://mail.python.org/mailman/listinfo/python-list
indentation
every time I switch editor all the script indentation get mixed up, and python start giving me indentation weird errors. indentation also hard to follow because it invisible unlike brackets { } is there any solution to this problems? thank you! -- http://mail.python.org/mailman/listinfo/python-list
Re: xor: how come so slow?
On Oct 19, 7:13 am, Dennis Lee Bieber [EMAIL PROTECTED] wrote: On Sun, 19 Oct 2008 04:38:04 GMT, Tim Roberts [EMAIL PROTECTED] declaimed the following in comp.lang.python: For those who got a bit lost here, I'd would point out that Knuth[1] has an excellent chapter on random numbers that includes a detailed discussion of this effect. His net takeaway is that most of the things people do to increase randomness actually have exactly the opposite effect. Some decade I'll have to obtain his volumes... But they've never shown up in a $60 special offer from a book club (unlike the compact editions of the OED) G. And while XOR may seem significant, just consider die rolls... If each byte were one die roll, you'd expect a nearly even distribution... (for a 6 sided die, 1/6 would have each value). But using the sum of two die, your begin to get a bell curve: 2 and 12 appear 1/36 of the time (each), but 7 occurs 6/36 of the time. Use three die, and it gets worse: 3 and 18 occur 1/216, 10.5 occurs much more often... That should be one die, two dice, etc. :-) -- http://mail.python.org/mailman/listinfo/python-list
Re: a new brawser (avant) it is very very good
On Oct 17, 5:59 pm, Stef Mientki [EMAIL PROTECTED] wrote: mina2020 wrote: what has this todo with Python ? Do you take the time to reply to every spam you receive ? -- http://mail.python.org/mailman/listinfo/python-list
Re: indentation
On Sun, 19 Oct 2008 07:16:44 -0700, Gandalf wrote: every time I switch editor all the script indentation get mixed up, and python start giving me indentation weird errors. indentation also hard to follow because it invisible unlike brackets { } Indentation is not invisible. Can you really not see that this text is indented? If so, your news program is seriously broken. is there any solution to this problems? Discipline. Choose a standard indent and stick to it. You can use tabs, or spaces. If you use spaces, you can choose 4 spaces, or 8, or any number, but whatever you choose, stick to it no matter what editor you use. Good editors will let you use the tab key to indent with spaces. Bad editors (e.g. Windows Notepad, and I feel your pain if you have to use it) force you to manually insert spaces. Especially never mix tabs and spaces in the same file. If you're editing an existing file, you must follow whatever indent standard is already in use. You can also pass the -t option when launching the Python interpreter to warn about mixed tabs and spaces. See also the standard module tabnanny: http://effbot.org/librarybook/tabnanny.htm -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: Linux.com: Python 3 makes a big break
In article [EMAIL PROTECTED], Lawrence D'Oliveiro [EMAIL PROTECTED] wrote: In message [EMAIL PROTECTED], Kay Schluehr wrote: If someone had solved the hard problem of finding a less cumbersome way of writing sys.stdout.write(...) ... I don't see what the big deal is. I regularly write things like sys.stdout.write \ ( INPUT TYPE=\RADIO\ NAME=\%(name)s\ ID=\%(name)s[%(value)s]\ VALUE=\%(value)s\%(checked)s LABEL FOR=\%(name)s[%(value)s]\%(title)s/LABEL\n # using LABEL lets user click on text to select button % { name : EscapeHTML(Name), value : EscapeHTML(Value), title : Title, checked : (, CHECKED)[Checked], } ) Why are you using a backslash? -- Aahz ([EMAIL PROTECTED]) * http://www.pythoncraft.com/ import antigravity -- http://mail.python.org/mailman/listinfo/python-list
Re: Linux.com: Python 3 makes a big break
On 19 Oct 2008 07:44:52 -0700 [EMAIL PROTECTED] (Aahz) wrote: sys.stdout.write \ ( Why are you using a backslash? Because he hasn't opened the paren yet. He could have put the open paren on the same line as the write obviating the need for the backslash but then his open/close parens wouldn't line up. It just a matter of style. -- D'Arcy J.M. Cain [EMAIL PROTECTED] | Democracy is three wolves http://www.druid.net/darcy/| and a sheep voting on +1 416 425 1212 (DoD#0082)(eNTP) | what's for dinner. -- http://mail.python.org/mailman/listinfo/python-list
Re: What's the perfect (OS independent) way of storing filepaths ?
On Sun, 19 Oct 2008 14:35:01 +0200, Stef Mientki wrote: hello, I (again) wonder what's the perfect way to store, OS-independent, filepaths ? Perfect? I can't imagine any scheme which will work on every imaginable OS, past present and future. However, in practice I think there are two common forms still in use: Posix paths, and Windows paths. I believe that OS/2 can deal with Windows pathnames, and Mac OS X uses Posix paths (I think...). If you have to support Classic Mac OS or other non-Posix systems, then your life will become interesting and complicated. And let's not even consider Unicode issues... You might find this page useful: http://en.wikipedia.org/wiki/Path_(computing) Note that raw strings are for regular expressions, not Windows paths. Raw strings can't end in a backslash, so you can't do this: r'C:\My Documents\' Instead, you can avoid having to escape backslashes by taking advantage of the fact that Windows will accept forward slashes as well as backslashes as path separators, and write 'C:/My Documents/' instead. I assume you're familiar with the path-manipulation utilities in os.path? import os os.path.splitdrive('C://My Documents/My File.txt') ('C:', 'My Documents\\My File.txt') I had to fake the above output because I'm not running Windows, so excuse me if I got it wrong. But honestly, I think your biggest problem isn't finding a platform- independent way of storing paths, but simply translating between each OS's conventions on where files should be stored. In Linux, config files should go into: ~/.appname/ or /etc/appname/ In Windows (which versions?) then should go into the Documents And Settings folder, where ever that is. There's no single string which can represent both of these conventions! -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: What's the perfect (OS independent) way of storing filepaths ?
Steven D'Aprano [EMAIL PROTECTED] wrote: In Linux, config files should go into: ~/.appname/ or /etc/appname/ In Windows (which versions?) then should go into the Documents And Settings folder, where ever that is. There's no single string which can represent both of these conventions! The first of those should do nicely for both Linux and Windows: os.path.normpath(os.path.expanduser('~/.appname')) 'C:\\Documents and Settings\\Duncan\\.appname' -- http://mail.python.org/mailman/listinfo/python-list
Re: What's the perfect (OS independent) way of storing filepaths ?
Steven D'Aprano [EMAIL PROTECTED] wrote: import os os.path.splitdrive('C://My Documents/My File.txt') ('C:', 'My Documents\\My File.txt') I had to fake the above output because I'm not running Windows, so excuse me if I got it wrong. Not that it matters, but: os.path.splitdrive('C://My Documents/My File.txt') ('C:', '//My Documents/My File.txt') -- http://mail.python.org/mailman/listinfo/python-list
Re: better scheduler with correct sleep times
qvx wrote: I need a scheduler which can delay execution of a function for certain period of time. My attempt was something like this: ... code Is there a better way or some library that does that? The trick is to use Queue's timeout argument to interrupt your sleep when new requests come in. def time_server(commands): '''Process all scheduled operations that arrive on queue commands''' pending = [] while True: now = time.time() while pending and pending[0][0] = now: when, function, args, kwargs = heapq.heappop(pending) function(*args, **kwargs) try: command = commands.get(timeout=pending[0][0] - now if pending else None) except Queue.Empty: pass else: if command is None: break heapq.heappush(pending, command) queue = Queue.Queue() thread.thread.start_new_thread(queue) queue.put((time.time() + dt, callable, args, {})) ... --Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list
Re: What's the perfect (OS independent) way of storing filepaths ?
On 2008-10-19, Stef Mientki [EMAIL PROTECTED] wrote: I (again) wonder what's the perfect way to store, OS-independent, filepaths ? The question appears to me to be meaningless. File paths are not OS independant, so an OS-independant way to store them doesn't seem to be a useful thing to talk about. -- Grant -- http://mail.python.org/mailman/listinfo/python-list
Re: Emacs users: feedback on diffs between python-mode.el and python.el?
Damien Wyart wrote: * Carl Banks [EMAIL PROTECTED] in comp.lang.python: The python-mode.el on Subversion (python-mode's Subversion on source forge, not the ancient version of python-mode in the Python repository) has a fix for this issue. It doesn't look like there's any way to browse the subversion any more, though. The viewvc interface is still there: http://svn.sourceforge.net/viewvc/python-mode/trunk/python-mode/ I thought python-mode had moved to launchpad under bzr: https://code.launchpad.net/python-mode. Darren -- http://mail.python.org/mailman/listinfo/python-list
Re: xor: how come so slow?
Lawrence D'Oliveiro wrote: In message [EMAIL PROTECTED], Steven D'Aprano wrote: On Sat, 18 Oct 2008 09:16:11 +1300, Lawrence D'Oliveiro wrote: Data can come in fractional bits. That's how compression works. If you don't believe me, try compressing a single bit and see if you get a fractional bit. If both states of the bit are not equally likely, then you do indeed have a fractional bit, since nrbits = (- logbase2(P[bit = 0]) - logbase2(P[bit = 1])) / 2 What's happening here is that the two different meanings of bit are being confused. A bit is both a binary digit and a measure of information. Obviously you can't create a bit stream with half a bit in it. In a coding system where all messages of N binary digits are equally likely then each message contains N bits of information content. This is the theoretical upper bound on the information content. In most practical systems, however, the messages have differing probabilities; then an N-binary-digit message conveys less than N bits of information, as Lawrence indicated above. Fractional bits are perfectly valid as a measure of information content. regards Steve -- Steve Holden+1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Finding the instance reference of an object
Steven D'Aprano wrote: [...] when you talk about call by value where the value is a reference, it sounds to me as if you are insisting that cars are ACTUALLY horse and buggies, where the horse is the engine, why are we inventing new terms like 'automobile', that just confuses people. +1 QOTW -- Steve Holden+1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list
Re: keyword in package name.
Abhishek Mishra wrote: On Oct 19, 12:11 pm, Tino Wildenhain [EMAIL PROTECTED] wrote: Abhishek Mishra wrote: Hello Everyone, I have the habit of using domain names (of either the application or company) in reverse in package names. for e.g. com.spam.app1 While this seemed a good idea for java, I don't think it makes sense for python - the reason: in python you have an import mechanism, where in java you just have namespaces. Therefore you can always avoid namespace clashes at import time. Hi, Thanks for your reply on a Sunday! Here's my 2 cents on why I prefer this mechanism - I would like not to worry about namespace clashes at import time. Using a toplevel package which isolates your namespace from all others, is a good idea in my opinion. This could be a product name (like MoinMoin in MoinMoin), company name (like google in google app engine - which is just one short of com.google btw), or your DNS. Therefore I use a domain name lots of times. (I admit that I picked up this habit from programming a lot in java). Although it looks like in this case I would have to use just the project name. That will work fine until one of your top-level domains is also a package or module on some other element of sys.path. I can see why the convenience of a familiar naming convention might be appealing, but you shouldn't try to stretch it beyond its natural boundaries. regards Steve -- Steve Holden+1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list
Re: keyword in package name.
Marc 'BlackJack' Rintsch wrote: On Sat, 18 Oct 2008 23:05:38 -0700, Abhishek Mishra wrote: I have the habit of using domain names (of either the application or company) in reverse in package names. [...] The `__init__.py` of which vendor should live at the `com/` directory level? If you install them into two different directories but want to import modules from both vendors -- how? Obviously the com namespace wouldn't belong to any vendor, and the __init__.py should be empty. Though I do think it's an inappropriate choice for Python. regards Steve -- Steve Holden+1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Help with Iteration
Hendrik van Rooyen wrote: Aaron Brady cast...pigmail.com wrote: while 1: calculate_stuff( ) if stuff 0.5: break The thought police will come and get you. You are doing things by side effect! You are using a global called stuff! You are relying on an implementation detail! While their cudgels are bouncing off your skull, they will scream the above three lines into your swiftly swelling ears! I suggest you write; while True: stuff = calculate_stuff() if stuff 0.5: break quickly, to avoid the pain! It may be too late though - even the above sanitised version is still too tightly coupled - how must calculate_stuff know where to find the inputs for its calculation? You are gonna bleed! :-) Indeed I fear Mr. Brady must expect a visit from the PSU. This highly secretive organization is known to attack anyone who -- Steve Holden+1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list
Re: urllib2.HTTPError: HTTP Error 204: NoContent
On Oct 19, 2008, at 6:13 AM, silk.odyssey wrote: I am getting the following error trying to download an html page using urllib2. urllib2.HTTPError: HTTP Error 204: NoContent The url is of this type: http://www.amazon.com/gp/offer-listing/B000KJX3A0%3FSubscriptionId%3D183VXJS74KNQ89D0NRR2%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB000KJX3A0 I can open it in my browser without problems.Any ideas on a solution? Are you changing the user-agent? Some sites sniff user agents and return different results to browsers than to suspected bots. I'd try it from here if you post a self-contained sample that demonstrates the problem. Should only take a couple of lines. -- http://mail.python.org/mailman/listinfo/python-list
Re: Help with Iteration
Aaron Brady cast...pigmail.com wrote: while 1: calculate_stuff( ) if stuff 0.5: break The thought police will come and get you. Based on Aaron's previous posting history, I suspect this was a joke. -- http://mail.python.org/mailman/listinfo/python-list
Paramiko, termios - interactive shell connection.
Hi, I am coding a small SSH client, I ve got some issues with creating pseudo terminal on server side, or at least I suppose that's the problem. That is the 'ps auxf' run on SSH server: root 4317 0.0 0.3 33744 876 ?Ss 11:36 0:00 /usr/sbin/sshd *### **4525** is the proper connection done with standard ssh client *| root 4525 0.3 1.1 53036 2896 ?Ss 11:37 0:00 \_ sshd: [EMAIL PROTECTED]/0** root 4532 0.0 0.8 15700 2060 pts/0Ss 11:37 0:00 | \_ -bash root 4987 0.0 0.4 12596 1024 pts/0R+ 11:38 0:00 | \_ ps auxf *### ..and 4733 is the connection made with my python script , as you can see it is not using PTS * root 4733 0.0 1.0 52940 2676 ?Ss 11:37 0:00 \_ sshd: pgega [priv] pgega 4741 0.0 0.6 52940 1600 ?S11:37 0:00 | \_ sshd: pgega root 4745 0.0 0.9 33768 2252 ?Ss 11:37 0:00 \_ sshd: [accepted] Do you see anything worng with my script ? Here is the source code: Regards, Pawel Gega ## #! /usr/bin/env python import paramiko import termios import sys import tty hostname = 'h1m' port = 22 username = 'pgega' password = 'xxx' known_hosts = '/home/pgega/.ssh/known_hosts' def shell(chan): import select oldtty = termios.tcgetattr(sys.stdin) try: tty.setraw(sys.stdin.fileno()) tty.setcbreak(sys.stdin.fileno()) chan.settimeout(0.0) while True: r, w, e = select.select([chan, sys.stdin], [], []) if chan in r: try: x = chan.recv(1024) if len(x) == 0: print '\r\n*** EOF\r\n', break sys.stdout.write(x) sys.stdout.flush() except socket.timeout: pass if sys.stdin in r: x = sys.stdin.read(1) if len(x) == 0: break chan.send(x) finally: termios.tcsetattr(sys.stdin, termios.TCSADRAIN, oldtty) if __name__ == '__main__': paramiko.util.log_to_file('psshc-interactive_shell.log') trn = paramiko.Transport((hostname,port)) trn.connect(username=username, password=password) chn = trn.open_channel(kind='direct-tcpip', dest_addr=('h1m',22), src_addr=('hm',22)) shell(chn) chn. close() ## -- http://mail.python.org/mailman/listinfo/python-list
Re: Linux.com: Python 3 makes a big break
In article [EMAIL PROTECTED], D'Arcy J.M. Cain [EMAIL PROTECTED] wrote: On 19 Oct 2008 07:44:52 -0700 [EMAIL PROTECTED] (Aahz) wrote: sys.stdout.write \ ( Why are you using a backslash? Because he hasn't opened the paren yet. He could have put the open paren on the same line as the write obviating the need for the backslash but then his open/close parens wouldn't line up. It just a matter of style. Well, no, it's not *just* a matter of style. I'm strongly opposed to backslashes because they break when you get whitespace after them. (And note carefully that I said when and not if.) -- Aahz ([EMAIL PROTECTED]) * http://www.pythoncraft.com/ import antigravity -- http://mail.python.org/mailman/listinfo/python-list
$$$ Download Sexy Military Babes
http://militarybodyarmor.blogspot.com/2008/10/law-enforcement-certifications.html - Here it is don't miss out! -- http://mail.python.org/mailman/listinfo/python-list
The truth about Prophet Muhammad (Peace Be Upon Him)
The truth about Prophet Muhammad (Peace Be Upon Him) Loving him is following him Muslims all over the world are deeply hurt by the recent caricatures of our beloved Prophet Muhammad , in Danish and several other publications. Every now and then, some Western media outlets provoke Muslims by insulting the Prophet Muhammad . The baiting often succeeds in eliciting Muslims' outrage and sporadic violence. The latest incident started with a Danish newspaper's caricature portraying the Prophet Muhammad as a terrorist. To add insult to injury, Norwegian, French, German, Dutch and a few other newspapers reprinted the defamatory cartoons to defend—they claimed—the freedom of expression. The real issue is not the freedom of expression. Free speech is not and was never meant to be absolute. There are laws in the West that ban certain kinds of speech, including those that incite anti- Semitism, racism and violence. Moreover, some countries have laws against blasphemy and defamation. To Muslims, banning blasphemy against Allah and the Prophet Muhammad has a higher priority. For the European newspapers to reprint the offensive cartoons to show solidarity with their Danish counterpart seems akin to the plot the leaders of Quraysh had hatched to assassinate Prophet Muhammad . The Quraysh masterminds had figured that including representatives from major tribes of Makkah in the heinous plot would make it impossible for the Prophet's clan, Banu Hashim, to avenge. But Allah willed that the Prophet Muhammad would migrate to Madinah unscathed while the plotters laid siege to his house. The West often underestimates the Muslims' reverence for their beloved Prophet Muhammad, (sallallallahu alayhi wa sallam) and is, therefore, staltred by the fierce Islamic reaction to an insult against him. Few in the West know that for Muslims, loving their Prophet more than themselves is a matter of faith, not choice. Further, the depiction of the Prophet Muhammad , as a terrorist is a falsification of history. He was considered Al-Ameen, the trustworthy, by his people even before he received the Prophethood. Once, when asked by some of his followers to invoke Allah's wrath on the enemies, he refused saying he had been sent as a mercy unto mankind. Objective Western intellectuals have acknowledged the superior character of Prophet Muhammad . In his “The 100, a Ranking of the Most Influential Persons in History, Michael H. Hart ranked Prophet Muhammad, (sallallallahu alayhi wa sallam) No. 1 because He was the only man in history who was supremely successful on both the religious and secular levels.” Alphonse de Lamartine, a renowned 19th Century French writer, had this to say about the Prophet Muhammad : As regards all standards by which human greatness may be measured, we may well ask, is there any man greater than him?” Unfortunately, some Muslims forget that loving their Prophet Muhammad (Peace be upon him) means following him. Burning Danish embassies, as they did in Damascus and Beirut, to avenge the insult to the Prophet Muhammad is a complete disservice to him. Our violent reaction only plays into the hands of those who wish to reinforce the negative stereotypes about Muslims. Do Muslims need reminding that Prophet Muhammad , forgave the people of Ta'if who had rejected his message of monotheism and pelted him with stones, bloodying him? Islamic tradition has it that when Jibreel (Archangel Gabriel) sought his permission to punish the perpetrators, the Prophet , instead prayed that some day the inhabitants of Ta'if would leave their idols and worship Allah alone. Within a few years they did. Prophet Muhammad's, (sallallallahu alayhi wa sallam) servant once noted his forgiving disposition, said, I served the Prophet , for ten years, and he never said ‘uf’ (a word indicating impatience or discontent) to me and never blamed me by saying, `Why did you do so or why didn't you do so? (Al-Bukhari and Muslim) Prophet Muhammad's, (sallallallahu alayhi wa sallam) archenemies hated his Message and hurled malicious insults at him, to which he responded with forbearance. Years later when he, sallallallahu alayhi wa sallam returned as victor to Makkah, his city of birth which he was forced to leave, he asked its awed citizens, What do you think I'm going to do to you. They said, You are a noble brother, son of a noble brother; we expect only good from you. The Prophet responded with a general amnesty. Let Muslims not forget that the Prophet , encouraged freedom of expression. In the Battle of Badr, he changed the battlefield against his own opinion due to the passionate advice of some young soldiers. Part of the West's success today is the freedom of expression, of thought, of religion—that draws Muslims to it from their oppressed societies. For that, Muslims should be thankful to the West. After all, freedom is an Islamic value that the West has embraced while Muslim societies have forsaken. Defending Prophet Muhammad requires
Re: What's the perfect (OS independent) way of storing filepaths ?
I (again) wonder what's the perfect way to store, OS-independent, filepaths ? I'm in agreement that perfect probably isn't applicable. If I were doing this myself, I might store the information in a tuple: base = 'some root structure ('/' or 'C') path = ['some','set','of','path','names'] filename = 'somefile.ext' pathdata = (root,path,filename) and write a couple of simple functions to reconstruct them based on the os. -- http://mail.python.org/mailman/listinfo/python-list
Re: IDE Question
On Sat, 18 Oct 2008 19:17:35 -0300, Fabio Zadrozny [EMAIL PROTECTED] wrote: [I wrote] (As a side note: I don't use Eclipse myself, but I have seen novice programmers editing Python code with it, and what saw wasn't impressive. They *did* some kind of Python plugin installed, but were sitting there pressing SPACE to indent every line manually.) Not sure which plugin they had, but I'm pretty positive that if they had Pydev installed they'd have auto-indent without any problems (I can assure you that auto-indent is a feature that received a lot of attention in Pydev). Ok, then it wasn't Pydev, or a very old or misconfigured one. I didn't know at that time whether there was decent support for Python in Eclipse or not, so I decided whatever the problem was, it was their problem :-) /Jorgen -- // Jorgen Grahn grahn@Ph'nglui mglw'nafh Cthulhu \X/ snipabacken.se R'lyeh wgah'nagl fhtagn! -- http://mail.python.org/mailman/listinfo/python-list
Re: better scheduler with correct sleep times
Scott David Daniels wrote: def time_server(commands): '''Process all scheduled operations that arrive on queue commands''' ... queue = Queue.Queue() thread.thread.start_new_thread(queue) queue.put((time.time() + dt, callable, args, {})) ... And of course of the three lines that were not cut and pasted, one was mis-transcribed. It should have read: thread.start_new_thread(time_server, (queue,)) Sheepishly, --Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list
regexp in Python (from Perl)
I have a regexp in Perl that converts the last digit of an ip address to '9'. This is a very particular case so I don't want to go off on a tangent of IP octets. ( my $s = $str ) =~ s/((\d+\.){3})\d+/${1}9/ ; While I can do this in Python which accomplishes the same thing: ip = ip[ :-1 ] ip =+ '9' I'm more interested, for my own edification in non-trivial cases, in how one would convert the Perl RE to a Python RE that use groups. I am somewhat familiar using the group method from the re package but I wanted to know if there was a one-line solution. Thank you. -- http://mail.python.org/mailman/listinfo/python-list
Re: indentation
On 19 Oct 2008 14:34:45 GMT, Steven D'Aprano [EMAIL PROTECTED] wrote: On Sun, 19 Oct 2008 07:16:44 -0700, Gandalf wrote: every time I switch editor all the script indentation get mixed up, and python start giving me indentation weird errors. indentation also hard to follow because it invisible unlike brackets { } ... is there any solution to this problems? Discipline. Choose a standard indent and stick to it. Doesn't pretty much everyone use spaces and a four-position indent? I don't think I've ever come across any half-decent Python code which didn't follow that convention. ... Especially never mix tabs and spaces in the same file. Actually, the only really likely reason he sees mixed up indentation is that he has mixed TAB/space source code *and* a misconfigured[0] editor which sets the TAB stops at anything else than every 8th character. If I was him, I'd check and fix my editors first, and/or tell my coworkers to stop emitting broken[0] TABs. /Jorgen [0] This is an old and tedious topic ... my view on TABs is that they are useless iff they aren't rendered the same way everywhere. The size 8 is hard-coded into terminals, printers and programs since ancient times; thus anything else is wrong. -- // Jorgen Grahn grahn@Ph'nglui mglw'nafh Cthulhu \X/ snipabacken.se R'lyeh wgah'nagl fhtagn! -- http://mail.python.org/mailman/listinfo/python-list
Re: inserting Unicode character in dictionary - Python
Well, the if no encoding is declared, it (quite sensibly) assumes UTF-8, so for my purposes this boils down to using a UTF-8 editor -- which I always do anyway. But do I still have to put a u before my string literals in order to have it treated as characters rather than bytes? Yes. I'm hoping that the answer is no Then you need to switch to Python 3.0, when it comes out. Its string literals denote unicode strings. Regards, Martin -- http://mail.python.org/mailman/listinfo/python-list
Re: xor: how come so slow?
Steven D'Aprano wrote: On Sun, 19 Oct 2008 04:38:04 +, Tim Roberts wrote: Steven D'Aprano [EMAIL PROTECTED] wrote: On Fri, 17 Oct 2008 20:51:37 +1300, Lawrence D'Oliveiro wrote: Is piece really meant to be random? If so, your create_random_block function isn't achieving much--xoring random data together isn't going to produce anything more exciting than less random data than you started with. Hmmm... why do you say that xoring random data with other random data produces less randomness than you started with? I'm not saying that you're wrong, and certainly it is pointless since you're not going to improve on the randomness of /dev/urandom without a lot of work. But less random? For those who got a bit lost here, I'd would point out that Knuth[1] has an excellent chapter on random numbers that includes a detailed discussion of this effect. His net takeaway is that most of the things people do to increase randomness actually have exactly the opposite effect. I don't doubt it at all. But xoring random data with more random data? I'm guessing that if the two sources of data are independent and from the same distribution, then xoring them is pointless but not harmful. Here's a rough-and-ready test which suggests there's little harm in it: import os, math def rand_data(size): ... return [ord(c) for c in os.urandom(size)] ... def mean(data): ... return sum(data)/len(data) ... def stdev(data): ... return math.sqrt( mean([x**2 for x in data]) - mean(data)**2 ) ... A = rand_data(1000) # good random data B = rand_data(1000) # more good random data AB = [a^b for (a,b) in zip(A, B)] # is this still good random data? assert len(AB) == len(A) == len(B) mean(A), stdev(A) (126, 73.91887445030531) mean(B), stdev(B) (128, 74.242844773082339) mean(AB), stdev(AB) (129, 74.39085965358916) Note: I wouldn't take the above terribly seriously. Mean and standard deviation alone are terrible measures of the randomness of data. But this does suggest that any deviation from uniform randomness will be quite subtle. Operations like 'and' and 'or' will tend to destroy randomness. 'and' tends to the 0-string and 'or' tends to the 1-string. I feel like 'xor' should be safe (like Steven), but is the proof merely the half-and-half split of the truth table? -- http://mail.python.org/mailman/listinfo/python-list
re.search over a list
While I can use a for loop looking for a match on a list, I was wondering if there was a one-liner way. In particular, one of my RE's looks like this '^somestring$' so I can't just do this: re.search( '^somestring$', str( mylist ) ) I'm not smart enough (total newbie) to code up a generator expression and I was wondering if I'm missing something obvious. I love succinct but clearly understandable code. thx! -- http://mail.python.org/mailman/listinfo/python-list
Re: regexp in Python (from Perl)
Pat a écrit : I have a regexp in Perl that converts the last digit of an ip address to '9'. This is a very particular case so I don't want to go off on a tangent of IP octets. ( my $s = $str ) =~ s/((\d+\.){3})\d+/${1}9/ ; While I can do this in Python which accomplishes the same thing: ip = ip[ :-1 ] ip =+ '9' or: ip = ip[:-1]+9 I'm more interested, for my own edification in non-trivial cases, in how one would convert the Perl RE to a Python RE that use groups. I am somewhat familiar using the group method from the re package but I wanted to know if there was a one-line solution. Is that what you want ? re.sub(r'^(((\d+)\.){3})\d+$', \g19, 192.168.1.1) '192.168.1.9' re.sub(r'^(((\d+)\.){3})\d+$', \g19, 192.168.1.100) '192.168.1.9' -- http://mail.python.org/mailman/listinfo/python-list
Re: indentation
Gandalf a écrit : every time I switch editor all the script indentation get mixed up, and python start giving me indentation weird errors. indentation also hard to follow because it invisible unlike brackets { } is there any solution to this problems? Properly configure your eidtors to use 4 spaces (not tabs) for intentation. -- http://mail.python.org/mailman/listinfo/python-list
Re: What's the perfect (OS independent) way of storing filepaths ?
Eric Wertman wrote: I (again) wonder what's the perfect way to store, OS-independent, filepaths ? I'm in agreement that perfect probably isn't applicable. If I were doing this myself, I might store the information in a tuple: base = 'some root structure ('/' or 'C') path = ['some','set','of','path','names'] filename = 'somefile.ext' pathdata = (root,path,filename) and write a couple of simple functions to reconstruct them based on the os. Eric, I like your idea. It looks like a workable technique, the user should initial define the roots once and everything works. It should even work for network drives and websites. Duncan, in windows it's begin to become less common to store settings in DocsSettings, because these directories are destroyed by roaming profiles (a big reason why I can't run Picassa ;-( It's more common to follow the portable apps approach, store them in the application directory. Drobinow, I want to distribute an application with a large number of docs and examples. Now for this application I can put everything in subpaths of the main-application, but you triggered me to put a warning in my code if I go outside the application path. Another application I've in mind, is a data manager (now written in Delpi), in which I organize all my information: docs, websites, measurement data etc. Others, thank you for the ideas, you learende me some new os.path functions. cheers, Stef -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: What's the perfect (OS independent) way of storing filepaths ?
Duncan Booth wrote: Steven D'Aprano [EMAIL PROTECTED] wrote: In Linux, config files should go into: ~/.appname/ or /etc/appname/ In Windows (which versions?) then should go into the Documents And Settings folder, where ever that is. There's no single string which can represent both of these conventions! The first of those should do nicely for both Linux and Windows: os.path.normpath(os.path.expanduser('~/.appname')) 'C:\\Documents and Settings\\Duncan\\.appname' A tuple of path elements, I would think. a= ( 'c:', 'windows', 'system' ) a= ( '~', 'usr', 'bin' ) a= ( '..', 'src' ) You'll want a subclass too, which has a file for the last name, instead of just folders. a= ( 'c:', 'python', 'python.exe' ) If '..' and '~' aren't universally, recognized, you'll want special flags. DirUp= type( 'DirUp', (object,), { '__repr__': ( lambda self: 'DirUp' ) } )() a= ( DirUp, 'src' ) a (DirUp, 'src') As for rendering them, 'win', 'unix', and 'mac' could be methods. -- http://mail.python.org/mailman/listinfo/python-list
Re: re.search over a list
Pat a écrit : While I can use a for loop looking for a match on a list, I was wondering if there was a one-liner way. In particular, one of my RE's looks like this '^somestring$' so I can't just do this: re.search( '^somestring$', str( mylist ) ) I'm not smart enough (total newbie) to code up a generator expression and I was wondering if I'm missing something obvious. words = ['foo', 'bar', 'somestring', 'baaz'] re.search(r^somestring$, \n.join(words), re.MULTILINE) I love succinct but clearly understandable code. separator.join(sequence_of_strings) is a very common python idiom, so you can consider it as readable. -- http://mail.python.org/mailman/listinfo/python-list
Re: indentation
Steven D'Aprano a écrit : (snip) You can use tabs, or spaces. If you use spaces, you can choose 4 spaces, or 8, or any number, By all means, make it 4 spaces - that's the standard. -- http://mail.python.org/mailman/listinfo/python-list
Re: Help with Iteration
Hendrik van Rooyen wrote: Aaron Brady cast...pigmail.com wrote: while 1: calculate_stuff( ) if stuff 0.5: break The thought police will come and get you. You are doing things by side effect! You are using a global called stuff! You are relying on an implementation detail! While their cudgels are bouncing off your skull, they will scream the above three lines into your swiftly swelling ears! My manager doesn't know a thing about programming, and in fact he failed the intro to critical thinking course at his college. He's scared of truth tables. He's bored and picks fights. He spent my bonus on a new VGA monitor for his second office. When I want to change my syntax colors, he has to get permission from his bartender. He is living proof that knowledge is not power. I'm impractically idealistic. I have abstractions to reuse code if aliens abduct us. (They are UFO_String and NonUFO_String.) I have macros for the number 1, because 'one' is easier to read. Some of my code has an accessor method for the number 1, one(), just in case its value changes. We're going to fire each other. In other news, I don't really have one. If customers are stupid, should you sell stupid software? -- http://mail.python.org/mailman/listinfo/python-list
Re: better scheduler with correct sleep times
from circuits.core import Manager, Component, Event, listener from circuits.timers import Timer what is circuits? -- http://mail.python.org/mailman/listinfo/python-list
Re: indentation
On Sun, Oct 19, 2008 at 06:05:08PM +, Jorgen Grahn wrote: Doesn't pretty much everyone use spaces and a four-position indent? I can't speak for everyone, or even pretty much everyone... but I know of several people who favor the idea of indent with tab, align with space. The advantage to this scheme is that anyone using a half-sane editor can very easily change the level of indentation to their preference, meanwhile keeping the rest of the code aligned properly (though this may well interfere with keeping line lengths to 80 columns, or some other decided-upon number). I favor this myself actually, though I rarely use it for Python code I write, because that almost invariably needs to work with someone else's code who insists on the standard you mentioned. I know plenty of people who prefer a full 8-column indent, feeling that it makes indentations (and therefore the logical blocks wich the indentation is meant to indicate) much clearer, though most of them are primarily C coders. Some switch to 4 for python, and some prefer to keep 8 for pretty much everything they write. I don't think I've ever come across any half-decent Python code which didn't follow that convention. I have. :) Unless one defines a lack of tabs as a criteria of half-decent Python code -- which I obviously don't. [0] This is an old and tedious topic ... This is very true... though clearly to anyone who hasn't encountered it before, it is rather new. my view on TABs is that they are useless iff they aren't rendered the same way everywhere. The size 8 is hard-coded into terminals, printers and programs since ancient times; thus anything else is wrong. This, on the other hand, is quite false -- not your opinion, perhaps, but all of the facts you've put forth in support of it. The tab size of nearly every tty device I've interacted with in the last 25 years *defaulted* to 8, but is configurable using any of various terminal control programs, such as tabs, stty, etc. (though I wouldn't know how to do this on Windows, or if it's even possible/relevant)... The utility of adjustable tabs is what I already stated above. I'm not saying you should change it... just that it is very much *not* hard-coded. In fact, most of the terminal devices I've used let you set arbitrary tab stops at whatever column positions you like. Occasionally useful, though not to me personally. One thing is for sure: it's essential that whatever formatting you decide to use, everyone touching that code needs to use the same one, or else the result is an annoying mess. Vim (and quite probably other editors) solves this by providing a way to set the options in the file you're editing, which is one of many reasons why I favor it over anything else. For example, at the top of your file: #!/usr/bin/python # vim:ts=4:sw=4:expandtab Though of course, using this kind of mechanism quickly becomes gross if everyone is using a different editor, and they all support a similar but different mechanism for doing so. -- Derek D. Martin http://www.pizzashack.org/ GPG Key ID: 0x81CFE75D pgpWonPLlq6C1.pgp Description: PGP signature -- http://mail.python.org/mailman/listinfo/python-list
Re: better scheduler with correct sleep times
On Oct 19, 6:25 pm, Scott David Daniels [EMAIL PROTECTED] wrote: qvx wrote: I need a scheduler which can delay execution of a function for certain period of time. My attempt was something like this: ... code Is there a better way or some library that does that? The trick is to use Queue's timeout argument to interrupt your sleep when new requests come in. def time_server(commands): '''Process all scheduled operations that arrive on queue commands''' pending = [] while True: now = time.time() while pending and pending[0][0] = now: when, function, args, kwargs = heapq.heappop(pending) function(*args, **kwargs) try: command = commands.get(timeout=pending[0][0] - now if pending else None) except Queue.Empty: pass else: if command is None: break heapq.heappush(pending, command) queue = Queue.Queue() thread.thread.start_new_thread(queue) queue.put((time.time() + dt, callable, args, {})) I see what you did there. You are keeping the queue empty so you get notified for free, while I introduced a new threading Condition to detect insertions. All that is missing in your version is to put back all pending tasks when somebody sends the stop (None) request. Shouldn't sched module do something similar? Tvrtko -- http://mail.python.org/mailman/listinfo/python-list
Re: indentation
Derek Martin: I know of several people who favor the idea of indent with tab, align with space. [...] I favor this myself actually, [...] Thanks Guido, in Python3 this is finally a Syntax Error (I have asked for this probably about three years ago). Unfortunately the new Python-syntax-based Delight language starts with a half-bad foot regarding indents: http://delight.sourceforge.net/syntax.html Bye, bearophile -- http://mail.python.org/mailman/listinfo/python-list
Re: indentation
Gandalf [EMAIL PROTECTED] writes: every time I switch editor all the script indentation get mixed up, and python start giving me indentation weird errors. indentation also hard to follow because it invisible unlike brackets { } is there any solution to this problems? Follow PEP 8 URL:http://www.python.org/dev/peps/pep-0008 for all code you write. Follow whatever convention exists in all code you edit. Agitate for consensus if you edit code which is inconsistent. -- \ “Geeks like to think that they can ignore politics. You can | `\leave politics alone, but politics won't leave you alone.” | _o__)—Richard Stallman, 2002-07-26 | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list
Re: Porting VB apps to Python for Window / Linux use
On Oct 19, 12:51 am, Stef Mientki [EMAIL PROTECTED] wrote: Lawrence D'Oliveiro wrote: In message [EMAIL PROTECTED], Dotan Cohen wrote: I often see mention of SMBs that either want to upgrade their Windows installations, or move to Linux, but cannot because of inhouse VB apps. Probably best to leave those legacy VB apps alone and develop new replacements in a more open, cross-platform language, like Python. Sorry but for GUI design, Python is pre-historic ;-) Stef Some folks below mention wxPython, which (I think) works pretty decently. Another option is IronPython, the dot net based version of Python. Much of it runs under Mono on Linux. The dot Net Windows and controls look decent in both environments (Windows and Linux), and aren't that difficult to code. IronPython has a mailing list; you might want to cross-post there. -- http://mail.python.org/mailman/listinfo/python-list
Re: indentation
On Sun, 19 Oct 2008 15:50:59 -0400, Derek Martin [EMAIL PROTECTED] wrote: On Sun, Oct 19, 2008 at 06:05:08PM +, Jorgen Grahn wrote: Doesn't pretty much everyone use spaces and a four-position indent? I can't speak for everyone, or even pretty much everyone... but I know of several people who favor the idea of indent with tab, align with space. The advantage to this scheme is that anyone using a half-sane editor can very easily change the level of indentation to their preference, meanwhile keeping the rest of the code aligned properly (though this may well interfere with keeping line lengths to 80 columns, or some other decided-upon number). I'm happy to say I have never seen the kind of code you mention. If I understand you correctly, if you sent me code to look at, I would either have to change the TAB setting of all relevant tools to four-spaced TABs (remembering to restore them afterwards), or suffer looking at the code eight-indented -- twice the one I'm used to. I favor this myself actually, though I rarely use it for Python code I write, because that almost invariably needs to work with someone else's code who insists on the standard you mentioned. Yes; what you do makes sense in a way, but it seems very incompatible with what most people do. What has made me dread alternate TAB settings is not the style you describe, but the uncontrolled one where some lines are indented with oddly-sized TABs and others (partly) with spaces. When trying to read such code, it's not uncommon that you have to try several different TAB sizes before you hit the one where the code stops looking like gibberish. And often you don't find one, because someone beat you to it and the code now uses several different TAB settings in different parts of the file ... At least if it's Python code, chances are good that it refuses to load such code, or that it crashes soon. ... [0] This is an old and tedious topic ... This is very true... though clearly to anyone who hasn't encountered it before, it is rather new. my view on TABs is that they are useless iff they aren't rendered the same way everywhere. The size 8 is hard-coded into terminals, printers and programs since ancient times; thus anything else is wrong. This, on the other hand, is quite false -- not your opinion, perhaps, but all of the facts you've put forth in support of it. The tab size of nearly every tty device I've interacted with in the last 25 years *defaulted* to 8, but is configurable using any of various terminal control programs, such as tabs, stty, etc. (though I wouldn't know how to do this on Windows, or if it's even possible/relevant)... Ok, I stand corrected. I shouldn't have brought it up, because the defaults are what matters. Since text files contain no metainformation about what TAB size they use, you have no chance to reconfigure your tools for every text file they process. /Jorgen -- // Jorgen Grahn grahn@Ph'nglui mglw'nafh Cthulhu \X/ snipabacken.se R'lyeh wgah'nagl fhtagn! -- http://mail.python.org/mailman/listinfo/python-list
Re: indentation
On Sun, 19 Oct 2008 19:03:29 +0200, Bruno Desthuilliers wrote: Steven D'Aprano a écrit : (snip) You can use tabs, or spaces. If you use spaces, you can choose 4 spaces, or 8, or any number, By all means, make it 4 spaces - that's the standard. It's *a* standard. I believe it is the standard for the Python standard library, but there are other standards. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: better scheduler with correct sleep times
sokol wrote: ... I see what you did there. You are keeping the queue empty so you get notified for free, while I introduced a new threading Condition to detect insertions. All that is missing in your version is to put back all pending tasks when somebody sends the stop (None) request. Shouldn't sched module do something similar? Probably so, I was just scratching an itch that I had. My target was to make the decisions as clear as possible. What I started from is you only need to do work when the next thing comes up or another entry is added. That was the core I was going after, and I just had the None in there so my tests could stop gracefully (in fact I printed the leftover queue when I was testing). --Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list
Re: better scheduler with correct sleep times
On Mon, Oct 20, 2008 at 5:31 AM, sokol [EMAIL PROTECTED] wrote: from circuits.core import Manager, Component, Event, listener from circuits.timers import Timer what is circuits? If you're interested: An event framework with a focus on Component architectures. It can be downloaded currently via Mercurial at: http://hg.softcircuit.com.au/circuits/ or http://freehg.org/u/prologic/circuits/ Website coming soon at: http://trac.softcircuit.com.au/circuits/ 1.0 Release also coming soon... cheers James -- -- -- Problems are solved by method -- http://mail.python.org/mailman/listinfo/python-list
Re: What's the perfect (OS independent) way of storing filepaths ?
On Sun, 19 Oct 2008 15:40:32 +, Duncan Booth wrote: Steven D'Aprano [EMAIL PROTECTED] wrote: In Linux, config files should go into: ~/.appname/ or /etc/appname/ In Windows (which versions?) then should go into the Documents And Settings folder, where ever that is. There's no single string which can represent both of these conventions! The first of those should do nicely for both Linux and Windows: os.path.normpath(os.path.expanduser('~/.appname')) 'C:\\Documents and Settings\\Duncan\\.appname' Except Windows users will be wondering why they have a directory starting with '.' in their home directory. Dot to make files hidden is not AFAIK supported by Windows. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: What's the perfect (OS independent) way of storing filepaths ?
On Sun, 19 Oct 2008 20:50:46 +0200, Stef Mientki wrote: Duncan, in windows it's begin to become less common to store settings in DocsSettings, because these directories are destroyed by roaming profiles Isn't *everything* destroyed by roaming profiles? *wink* Seriously, I don't know anyone who has anything nice to say about roaming profiles. (a big reason why I can't run Picassa ;-( It's more common to follow the portable apps approach, store them in the application directory. User config files in a global directory? That bites. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: regexp in Python (from Perl)
On Oct 19, 5:47 pm, Bruno Desthuilliers [EMAIL PROTECTED] wrote: Pat a écrit : I have a regexp in Perl that converts the last digit of an ip address to '9'. This is a very particular case so I don't want to go off on a tangent of IP octets. ( my $s = $str ) =~ s/((\d+\.){3})\d+/${1}9/ ; While I can do this in Python which accomplishes the same thing: ip = ip[ :-1 ] ip =+ '9' or: ip = ip[:-1]+9 I'm more interested, for my own edification in non-trivial cases, in how one would convert the Perl RE to a Python RE that use groups. I am somewhat familiar using the group method from the re package but I wanted to know if there was a one-line solution. Is that what you want ? re.sub(r'^(((\d+)\.){3})\d+$', \g19, 192.168.1.1) '192.168.1.9' re.sub(r'^(((\d+)\.){3})\d+$', \g19, 192.168.1.100) '192.168.1.9' The regular expression changes the last sequence of digits to 9 (192.168.1.100 = 192.168.1.9) but the other code replaces the last digit (192.168.1.100 = 192.168.1.109). -- http://mail.python.org/mailman/listinfo/python-list
Re: urllib2.HTTPError: HTTP Error 204: NoContent
On Oct 19, 9:49 am, Philip Semanchuk [EMAIL PROTECTED] wrote: On Oct 19, 2008, at 6:13 AM, silk.odyssey wrote: I am getting the following error trying to download an html page using urllib2. urllib2.HTTPError: HTTP Error 204: NoContent The url is of this type: http://www.amazon.com/gp/offer-listing/B000KJX3A0%3FSubscriptionId%3D... I can open it in my browser without problems.Any ideas on a solution? Are you changing the user-agent? Some sites sniff user agents and return different results to browsers than to suspected bots. I tried it. import urllib2 url = 'http://www.amazon.com/gp/offer-listing/B000KJX3A0%3FSubscriptionId%3D183VXJS74KNQ89D0NRR2%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3DB000KJX3A0' op = urllib2.urlopen(url) Traceback (most recent call last): File stdin, line 1, in module File /usr/lib/python2.5/urllib2.py, line 121, in urlopen return _opener.open(url, data) File /usr/lib/python2.5/urllib2.py, line 380, in open response = meth(req, response) File /usr/lib/python2.5/urllib2.py, line 491, in http_response 'http', request, response, code, msg, hdrs) File /usr/lib/python2.5/urllib2.py, line 418, in error return self._call_chain(*args) File /usr/lib/python2.5/urllib2.py, line 353, in _call_chain result = func(*args) File /usr/lib/python2.5/urllib2.py, line 499, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 204: NoContent headers = {} headers['User-Agent'] = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3' ro = urllib2.Request(url, None, headers) op = urllib2.urlopen(ro) page = op.read() page (lots of HTML) So the answer is as Philip suggests - amazon.com doesn't like 'Python- urllib/2.5' as a User-Agent. You have to give it something that looks like a browser. -- (for email use this address please - you can figure it out) Mark Sapiro mark at msapiro net Any clod can have the facts; San Francisco Bay Area, Californiahaving opinions is an art. - C. McCabe, The Fearless Spectator -- http://mail.python.org/mailman/listinfo/python-list
Re: Porting VB apps to Python for Window / Linux use
Stef Mientki: it's just Object Pascal , which is inferior to Python. They are quite different languages, you can't compare them in a simple way. Delphi is statically typed, and compiles very quickly producing small exes; algorithmic code can run a hundred times faster than Python code. There are lot of people still that think that a statically typed language is safer. Delphi is kinda old, so today there are better languages than Delphi (like D), but when Delphi 2-3 was out, there weren't many other languages with IDEs at its level, especially for programs with a nice GUIs plus interfaces with DBMSs. Today you can write programs with FreePascal, that is free. Bashing other languages doesn't make Python any better. Bye, bearophile -- http://mail.python.org/mailman/listinfo/python-list
Re: regexp in Python (from Perl)
MRAB: The regular expression changes the last sequence of digits to 9 (192.168.1.100 = 192.168.1.9) but the other code replaces the last digit (192.168.1.100 = 192.168.1.109). Uhmm, this is a possible alternative: s = 192.168.1.100 ..join(s.strip().split(.)[:3]) + .9 '192.168.1.9' Bye, bearophile -- http://mail.python.org/mailman/listinfo/python-list
Re: keyword in package name.
Marc 'BlackJack' Rintsch wrote: `com_spam.app1`!? I would even recommend this with domains that don't clash with keywords because if several people start to use this package name convention you will get name clashes at package level. Say there are two vendors with a `com` TLD, how do you install their packages? Into the same `com/` subdirectory? The `__init__.py` of which vendor should live at the `com/` directory level? If you install them into two different directories but want to import modules from both vendors -- how? It's possible with name space packages but every vendor must define the com package as a name space package w/o putting any code into the __init__.py except the name space declaration. Christian -- http://mail.python.org/mailman/listinfo/python-list
Re: Porting VB apps to Python for Window / Linux use
Quoting [EMAIL PROTECTED]: Stef Mientki: it's just Object Pascal , which is inferior to Python. They are quite different languages, you can't compare them in a simple way. Delphi is kinda old, so today there are better languages than Delphi (like D), but when Delphi 2-3 was out, there weren't many other languages with IDEs at its level, especially for programs with a nice GUIs plus interfaces with DBMSs. I have programmed Delphi for years.. and was pretty much forced to move to python for different reasons. I would go along best with the description of delphi being old. It was great in its time... and had many advancements over others. Still has some things that I would dearly love in python... like skinned gui applications. As for porting... don't. Just rewrite them Shouldn't be so hard... David -- http://mail.python.org/mailman/listinfo/python-list
Re: Linux.com: Python 3 makes a big break
In message [EMAIL PROTECTED], Dennis Lee Bieber wrote: There is also the matter that the original material is using on each line to delimit the string, and then \ within the line to escape the desired output s, rather than either using ' for the string and bare for the output characters ... I prefer using double-quotes universally. One less decision to make. ... or triple quoting the whole block... Not a good idea. -- http://mail.python.org/mailman/listinfo/python-list
Re: Linux.com: Python 3 makes a big break
In message [EMAIL PROTECTED], Aahz wrote: I'm strongly opposed to backslashes because they break when you get whitespace after them. 1) I've never had that problem. 2) Even if I did, it would report a syntax error, it's not going to fail silently and introduce any run-time bugs, is it? -- http://mail.python.org/mailman/listinfo/python-list
Re: keyword in package name.
In message [EMAIL PROTECTED], Abhishek Mishra wrote: I have the habit of using domain names (of either the application or company) in reverse in package names. for e.g. com.spam.app1 I've recently started a project for an indian domain (tld = .in), which leads to a package name like in.spam.app1 This causes a syntax error, as in is a keyword. The problem is that domain names aren't obliged to conform to any programming language syntax. So using them directly in identifiers is asking for trouble anyway. Best to avoid it. -- http://mail.python.org/mailman/listinfo/python-list