[ANN] Spasmoidal 0.1.0 - Asynchronous I/O with Python 2.5 Extended Generators
...from little towns with strange names like Smegma, Spasmodic, Frog, and the far-flung Isles of Langerhans. Someone on SourceForge has a project that includes the name 'spasmodic' so I'm using the name spasmoidal. But this code will always be spasmodic to me. Asynchronous I/O (and other tasks) proceeding in fits and spasms The SpasmodicEngine selects tasks (spasmoids) from a (heapqueue based) priority queue. The tasks are Python 2.5 extended generators (some call them coroutines: PEP 342). The engine calls task.send() with an appropriate argument. One of the library of tasks is Pollster. Pollster calls poll() with for tasks that are waiting I/O. Tasks that are ready for I/O are fed to the priority queue. Spasmodic provides an efficient way to manage a large number of sockets and/or files. Other processing works well too, if it can be subdivided into brief spasms. Project http://code.google.com/p/spasmoidal/ Download http://cheeseshop.python.org/pypi/spasmoidal/0.1.0 -- Doug Fort, Consulting Programmer http://www.dougfort.com -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
Re: Making sure script only runs once instance at a time.
Hari Sekhon wrote: I have written a script and I would like to ensure that the script is never run more than once at any given time. What is the best way of testing and exiting if there is another version of this script running somewhere on this machine? I guess what I'm asking is how to handle system processes the way I can in shell. I am running this on linux. Although the other solution suggested seems to be more general (I have not read the code, only the info in the header), the following may be sufficient for what you want, and can be used as code inside of your script. It searches /proc/ for another process that is a script interpreted by python and has the same name as your script. So it can fail, if there is another python script running with the same name, but which is not identical to your script. OTOH it's a very short and simple test: - #!/bin/env python import os.path import linecache pid=os.getpid() script=linecache.getline(os.path.join('/proc', str(pid), 'cmdline'), 1).split('\0')[0:2] for pid in filter(lambda x: x.isdigit() and x != str(pid), os.listdir('/proc')): other=linecache.getline(os.path.join('/proc', str(pid), 'cmdline'), 1).split('\0')[0:2] if script[0] == other[0] and os.path.basename(script[-1]) == os.path.basename(other[-1]): raise already running! - HTH Stephan -- http://mail.python.org/mailman/listinfo/python-list
Re: vector and particle effects
Sorry for the double post. Google groups was being stubborn. Jay wrote: I'd like to experiment a little bit with vector graphics in python. When I say 'vector graphics' I don't mean regular old svg-style. I mean vector game style as in simulation of vector beam drawn graphics. If you still don't know what I'm talking about, see Grid Wars 2 (http://gridwars.marune.de/) or Battlezone (http://en.wikipedia.org/wiki/Battlezone). Anyway, I need help choosing a module or modules to support this. Would pygame support this or should I try pyopengl? Or is there a better module for this? Any tutorials for the basics would be GREATLY appreciated. -- http://mail.python.org/mailman/listinfo/python-list
Re: wxPython and threading issue
Patrick Smith wrote: Hi, Thanks for your reply. [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED] Patrick Smith wrote: Hi, I'm hoping someone here will be able to help as I've been struggling with this problem for a few days now. I'm working on an application that is creating a ProgressDialog, and then creating a thread that runs a function from another module in the program. The problem is, when the cancel button on the ProgressDialog is pressed, the thread that was created continues to run. How can I make it so that when the cancel button on the dialog is clicked, the spawned thread dies? Have the main thread set a flag telling the worker thread to exit, and have the worker thread check that periodically when it knows it's in a safe state to exit. This would work, unfortunately, the thread that it spawns calls a function in a loop, that function has an incredibly long run-time, on the order of minutes (possibly hours depending on the input), and that function, its self is multithreaded. This means that the worker thread could only check the flag after each completion of this long-running function. Given that this is the situation, is it possible to do what I mentioned above? Or does the long running function prevent any nice way of doing this? If the function is a black box then you are stymied, I suspect. Had you considered using a sub-process instead of a thread to perform the lengthy computation? regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://holdenweb.blogspot.com Recent Ramblings http://del.icio.us/steve.holden -- http://mail.python.org/mailman/listinfo/python-list
Re: Questions on Using Python to Teach Data Structures and Algorithms
Dennis Lee Bieber wrote: Though if this suddenly inspires the creation of a Common LISP interpreter written in Python, I may want to close my eyes G Hehe! I actually thought of trying that once, but I realized that I'm too stupid and / or lazy to pull it off. ;) Regards, Jordan -- http://mail.python.org/mailman/listinfo/python-list
Re: Can string formatting be used to convert an integer to its binary form ?
MonkeeSage [EMAIL PROTECTED] writes: def to_bin(x): out = [] while x 0: out.insert(0, str(x % 2)) x = x / 2 return ''.join(out) That returns the empty string for x=0. I'm not sure if that's a bug or a feature. It also returns the empty string for x 0, probably a bug. It will break in Python 3, where 1 / 2 == 0.5. Here's yet another version: def to_bin(n): if n 0: return '-' + to_bin(-n) if n==0: return '0' return ''.join( (, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, ,)[int(d,16)] \ for d in '%x'%n).lstrip('0') -- http://mail.python.org/mailman/listinfo/python-list
Re: analyzing removable media
Well, in linux you can get a lot of info about where a file is based upon where it lies in the file system. For example, if the folder the file is located in resides in the /media or /mnt directories, then the file is, barring a few rare circumstances, located upon a removable medium of some sort. Once you get the name of that directory that is right below /media or /mnt, then you can cross check the name in /etc/fstab file. However, the contents of your post lead me to believe that you're working in a win32 environment. That's a bit trickier. Things aren't so simple. You could probably grab similar information from the full path itself. For example, just getting the drive letter that the file resides on could tell you a lot. Now, where you'd cross check that is more of a mystery to me. I'd guess the registry? For an easier way of accessing the registry, I believe that the wrapper pywin32 may be of interest to you. It shouldn't be that hard considering that you'd only be getting some information, not setting anything. If by chance we're talking about MacOS, I'm of almost no help. In the case of MacOS X, it has a unix core, so I'd imagine that the method I described for linux could probably be adapted. Jay glenn wrote: Hi can anyone tell me how given a directory or file path, I can pythonically tell if that item is on 'removable media', or sometype of vfs, the label of the media (or volume) and perhaps any other details about the media itself? thanks Glenn -- http://mail.python.org/mailman/listinfo/python-list
Re: Can string formatting be used to convert an integer to its binary form ?
Steve Holden wrote: MonkeeSage wrote: So far as unobfuscated versions go, how about the simple: def to_bin(x): out = [] while x 0: out.insert(0, str(x % 2)) x = x / 2 return ''.join(out) Regards, Jordan to_bin(0) '' 6/10: try harder :) Ok, how about a fast *and* readable version? Works for non-negatives, but negatives are trivial to add if necessary: from array import array def fast2bin(n): s = array('c') while n0: s.append('01'[n1]) n = 1 s.reverse() return s.tostring() or '0' try: import psyco except ImportError: pass else: psyco.bind(fast2bin) George -- http://mail.python.org/mailman/listinfo/python-list
Re: analyzing removable media
Hi Jay pls excuse top post - Im actually doing this project in linux, but am wanting it to be cross platform. I definitley have to cater for win32 also. I was hoping that burried in sys or os or that there'd be some x platform module that did all that stuff for me thnks for reply though glenn Jay wrote: Well, in linux you can get a lot of info about where a file is based upon where it lies in the file system. For example, if the folder the file is located in resides in the /media or /mnt directories, then the file is, barring a few rare circumstances, located upon a removable medium of some sort. Once you get the name of that directory that is right below /media or /mnt, then you can cross check the name in /etc/fstab file. However, the contents of your post lead me to believe that you're working in a win32 environment. That's a bit trickier. Things aren't so simple. You could probably grab similar information from the full path itself. For example, just getting the drive letter that the file resides on could tell you a lot. Now, where you'd cross check that is more of a mystery to me. I'd guess the registry? For an easier way of accessing the registry, I believe that the wrapper pywin32 may be of interest to you. It shouldn't be that hard considering that you'd only be getting some information, not setting anything. If by chance we're talking about MacOS, I'm of almost no help. In the case of MacOS X, it has a unix core, so I'd imagine that the method I described for linux could probably be adapted. Jay glenn wrote: Hi can anyone tell me how given a directory or file path, I can pythonically tell if that item is on 'removable media', or sometype of vfs, the label of the media (or volume) and perhaps any other details about the media itself? thanks Glenn -- http://mail.python.org/mailman/listinfo/python-list
Re: analyzing removable media
glenn wrote: Hi Jay pls excuse top post - Im actually doing this project in linux, but am wanting it to be cross platform. I definitley have to cater for win32 also. I was hoping that burried in sys or os or that there'd be some x platform module that did all that stuff for me Things don't get buried. If it's not in the documentation, it's not there. -- http://mail.python.org/mailman/listinfo/python-list
Re: Can string formatting be used to convert an integer to its binary form ?
Steve Holden wrote: to_bin(0) '' Doh! Oh, yeah...that! ;) OK... def to_bin(x): out=[] while x 0: out.insert(0, str(x % 2)) x /= 2 else: out.append(str(x)) return ''.join(out) Regards, Jordan -- http://mail.python.org/mailman/listinfo/python-list
Re: best way to get data into a new instance?
tobiah wrote: [snip] class Employee: __init__(self, id): self.id = id e = Employee(32445) ... later e.firstname = 'foo' e.lastname = 'bar' ... more as the information comes about. Personally, I think that this is not a good solution. How would the reader of your code guess what properties your object has? If you don't like to write too many assignments, you can at least do something like this: def __init__(self, id, **kw): self.id = id for name in ['first_name', 'last_name', 'age', 'salary', 'whatever']: self.__dict__[name] = kw.get(name, None) -- Maxim Sloyko -- http://mail.python.org/mailman/listinfo/python-list
Re: QuoteSQL
Lawrence D'Oliveiro [EMAIL PROTECTED] wrote: In message [EMAIL PROTECTED], LI wrote: execfile(QuoteSQL.py) EscapeSQLWild(r\%) '%' SQLString(% + EscapeSQLWild(r\%) + %) '%%%' EscapeSQLWild(r\%) == r\\% True SQLString(% + EscapeSQLWild(r\%) + %) == r'%%%' True With the correction to EscapeSQLWild, this becomes: execfile(QuoteSQL.py) EscapeSQLWild(r\%) '\\%' SQLString(% + EscapeSQLWild(r\%) + %) '%%%' EscapeSQLWild(r\%) == r\\\% True SQLString(% + EscapeSQLWild(r\%) + %) == r'%\\%%' True True but irrelevant. The point is that it isn't relevant whether you are seeing 4, 6, 8, or 12 backslashes, because you wrote the code to produce the number you thought you wanted and you had misunderstood how MySQL works. That's why it is important in a situation like this to test against the code that actually uses the string. I had no idea how MySQL would handle escapes in this situation, but I didn't need to know, I just wrote some tests and figured out which strings would make them pass or fail. Anyway, congratulations on finally getting the message. -- http://mail.python.org/mailman/listinfo/python-list
Re: Can string formatting be used to convert an integer to its binary form ?
MonkeeSage wrote: Steve Holden wrote: to_bin(0) '' Doh! Oh, yeah...that! ;) OK... def to_bin(x): out=[] while x 0: out.insert(0, str(x % 2)) x /= 2 else: out.append(str(x)) return ''.join(out) It's an often-missed and almost invariably untested corner case that one's first attempt to solve the problem usually rids one of. I have written binary format code about thirteen times in a lifetime of programming so it was easy for me to spot. You'll never make *that* mistake again ;-) Unfortunately forty years of programming experience has taught me that there's an essentially infinite supply of mistakes to make ... your mistakes just get smarter most of the time. regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://holdenweb.blogspot.com Recent Ramblings http://del.icio.us/steve.holden -- http://mail.python.org/mailman/listinfo/python-list
Re: wxPython and threading issue
Patrick Smith wrote: Hi, Thanks for your reply. [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED] [Re: cancelling a worker thread from the GUI thread] Have the main thread set a flag telling the worker thread to exit, and have the worker thread check that periodically when it knows it's in a safe state to exit. This would work, unfortunately, the thread that it spawns calls a function in a loop, that function has an incredibly long run-time, on the order of minutes (possibly hours depending on the input), and that function, its self is multithreaded. This means that the worker thread could only check the flag after each completion of this long-running function. Given that this is the situation, is it possible to do what I mentioned above? Or does the long running function prevent any nice way of doing this? Well, the problem is that you can't simply kill a thread--it shares memory with other threads that it could be leaving in an inconsistent state. Imagine that it was, say, holding a lock when it was forceably killed. Now any other thread that tries to acquire that lock will block forever. You really do need the thread's cooperation so that it only exits when everything is in a kosher state. Can you dig into the incredibly long function and change it to do the flag-checking and exiting safely? I second the notion to consider using subprocesses instead of threads; that's almost always a good idea unless you're really sharing a lot of complex data structures. -- http://mail.python.org/mailman/listinfo/python-list
Re: License / Registration key enabled software
In message [EMAIL PROTECTED], Mike Playle wrote: License keys exist to make it easier for honest users to remain honest. It was Ed Felten who said that keeping honest people honest is like keeping tall people tall. -- http://mail.python.org/mailman/listinfo/python-list
Re: eval(source, {'builtins': {}}) archived as Faq
Duncan Booth wrote: I'm slightly surprised that nobody has yet pointed out that the OP failed at the very first hurdle here. If you are going to do this dangerous trick then 'builtins' should be spelled '__builtins__': I did, because otherwise the exploit I gave wouldn't have worked so easily. The bottom line here is that you shouldn't even try to go through the exercise of seeing if you can bullet-proof a solution using eval; instead, you shouldn't even try. -- Erik Max Francis [EMAIL PROTECTED] http://www.alcyone.com/max/ San Jose, CA, USA 37 20 N 121 53 W AIM, Y!M erikmaxfrancis Everyone wants to look good at his own funeral. -- Louis Wu -- http://mail.python.org/mailman/listinfo/python-list
Re: How to find number of characters in a unicode string?
In message [EMAIL PROTECTED], Marc 'BlackJack' Rintsch wrote: In [EMAIL PROTECTED], Preben Randhol wrote: Is there a way to calculate in characters and not in bytes to represent the characters. Decode the byte string and use `len()` on the unicode string. Hmmm, for some reason len(uC\u0327) returns 2. -- http://mail.python.org/mailman/listinfo/python-list
Re: vector and particle effects
Jay wrote: Sorry for the double post. Google groups was being stubborn. Jay wrote: I'd like to experiment a little bit with vector graphics in python. When I say 'vector graphics' I don't mean regular old svg-style. I mean vector game style as in simulation of vector beam drawn graphics. If you still don't know what I'm talking about, see Grid Wars 2 (http://gridwars.marune.de/) or Battlezone (http://en.wikipedia.org/wiki/Battlezone). Anyway, I need help choosing a module or modules to support this. Would pygame support this or should I try pyopengl? Or is there a better module for this? Any tutorials for the basics would be GREATLY appreciated. I'd suggest PyOpenGL because it'll be a *lot* faster. Something like gridwars won't be possible in pygame. Richard -- http://mail.python.org/mailman/listinfo/python-list
Re: for: else: - any practical uses for the else clause?
Actually right after posting this I came up with a great usage. I use meld3 for my Python based dynamic HTML generation. Whenever I plan to loop over a tree section I use a for loop, but if there is no data to iterate over, then I simply remove that section from the tree or populate it with a no data message. -- http://mail.python.org/mailman/listinfo/python-list
Re: eval(source, {'builtins': {}}) archived as Faq
Erik Max Francis [EMAIL PROTECTED] wrote: This is an _extremely_ bad idea. _Never_ use eval in a case where you are trying to validate input. def e(source): return eval(source, {'builtins': {}}) ... e('__import__(sys).exit()') Oops, the interpreter exited. I'm slightly surprised that nobody has yet pointed out that the OP failed at the very first hurdle here. If you are going to do this dangerous trick then 'builtins' should be spelled '__builtins__': def e(source): return eval(source, {'__builtins__': {}}) e('__import__(sys).exit()') Traceback (most recent call last): File pyshell#9, line 1, in module e('__import__(sys).exit()') File pyshell#8, line 1, in e def e(source): return eval(source, {'__builtins__': {}}) File string, line 1, in module NameError: name '__import__' is not defined but it is still not going to stop nasty things happening, it just makes them a little more complex: e([ c for c in 1 .__class__.__bases__[0].__subclasses__() if c.__name__=='Quitter'][0]('bang')()) -- http://mail.python.org/mailman/listinfo/python-list
Re: running commands with sudo python
Hi there, I think you can do that with pexpect http://pexpect.sourceforge.net/ good luck On Thu, 28 Sep 2006 14:18:14 -0700, coldsoul4e wrote: Hi! I must execute a command with os.command(), but with root permissions. Is there anyway to do that with python? Thanks -- http://mail.python.org/mailman/listinfo/python-list
Re: PATCH: Speed up direct string concatenation by 20+%!
Larry Hastings wrote: __ THE PATCH The core concept: adding two strings together no longer returns a pure string object. Instead, it returns a string concatenation object which holds references to the two strings but does not actually concatenate them... yet. The strings are concatenated only when someone requests the string's value, at which point it allocates all the space it needs and renders the concatenated string all at once. More to the point, if you add multiple strings together (a + b + c), it *doesn't* compute the intermediate strings (a + b). Upsides to this approach: wouldn't this approach apply to other additions eg list+list seq+seq etc etc. I suppose the utility of such an approach depends on the frequency with which multiple strings/lists/sequences etc are added together in real code. -- Robin Becker -- http://mail.python.org/mailman/listinfo/python-list
Re: How to find number of characters in a unicode string?
In [EMAIL PROTECTED], Lawrence D'Oliveiro wrote: In message [EMAIL PROTECTED], Marc 'BlackJack' Rintsch wrote: In [EMAIL PROTECTED], Preben Randhol wrote: Is there a way to calculate in characters and not in bytes to represent the characters. Decode the byte string and use `len()` on the unicode string. Hmmm, for some reason len(uC\u0327) returns 2. Okay, decode and normalize and then use `len()` on the unicode string. Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list
Re: analyzing removable media
glenn wrote: Hi can anyone tell me how given a directory or file path, I can pythonically tell if that item is on 'removable media', or sometype of vfs, the label of the media (or volume) and perhaps any other details about the media itself? thanks Glenn It won't be trivial because one of the goals of the operating systems is to hide the differences between various types of storage devices and make them all look the same (i.e. a jump drive, a CD-ROM, a network volume are presented uniformly to the user as just another path in the file system). But you can probably use guesswork on unix OS's, as somebody above suggested, and examine the path. If the path contains common media mount points then that should give you a clue. On Windows you cannot easily know. For example if your file is on D:\file.txt, it is not immediatly obvious if D is a jumpdrive, a networked drive, a hard drive, or a CD-ROM. The only thing I can think of is to try to examine the Windows registry with the _winreg module. Here are the docs: http://docs.python.org/lib/module--winreg.html There might be a key burried in there some place that will tell you which drives are what type. -- http://mail.python.org/mailman/listinfo/python-list
Re: Questions on Using Python to Teach Data Structures and Algorithms
Dennis Lee Bieber wrote: On 28 Sep 2006 21:17:38 -0700, MonkeeSage [EMAIL PROTECTED] declaimed the following in comp.lang.python: (Coming in from the cold) I guess you were talking about implementing the _structure_ of lisp lists in python syntax (as you seem to imply), not trying to emulate Well The subject line does refer data structures G Noticed that too ?-) Though if this suddenly inspires the creation of a Common LISP interpreter written in Python, I may want to close my eyes G Well... Not quite Common Lisp yet, but : http://www.biostat.wisc.edu/~annis/creations/PyLisp/ -- bruno desthuilliers python -c print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')]) -- http://mail.python.org/mailman/listinfo/python-list
Re: How to find number of characters in a unicode string?
At Friday 29/9/2006 04:52, Lawrence D'Oliveiro wrote: Is there a way to calculate in characters and not in bytes to represent the characters. Decode the byte string and use `len()` on the unicode string. Hmmm, for some reason len(uC\u0327) returns 2. That's correct, these are two unicode characters, C and combining-cedilla; display as Ç. From http://en.wikipedia.org/wiki/Unicode: Unicode takes the role of providing a unique code point a number, not a glyph for each character. In other words, Unicode represents a character in an abstract way, and leaves the visual rendering (size, shape, font or style) to other software [...] This simple aim becomes complicated, however, by concessions made by Unicode's designers, in the hope of encouraging a more rapid adoption of Unicode. [...] A lot of essentially identical characters were encoded multiple times at different code points to preserve distinctions used by legacy encodings and therefore allow conversion from those encodings to Unicode (and back) without losing any information. [...] Also, while Unicode allows for combining characters, it also contains precomposed versions of most letter/diacritic combinations in normal use. These make conversion to and from legacy encodings simpler and allow applications to use Unicode as an internal text format without having to implement combining characters. For example é can be represented in Unicode as U+0065 (Latin small letter e) followed by U+0301 (combining acute) but it can also be represented as the precomposed character U+00E9 (Latin small letter e with acute). Gabriel Genellina Softlab SRL __ Preguntá. Respondé. Descubrí. Todo lo que querías saber, y lo que ni imaginabas, está en Yahoo! Respuestas (Beta). ¡Probalo ya! http://www.yahoo.com.ar/respuestas -- http://mail.python.org/mailman/listinfo/python-list
Re: How to find number of characters in a unicode string?
Lawrence D'Oliveiro wrote: Hmmm, for some reason len(uC\u0327) returns 2. Is len(unicodedata.normalize('NFC', uC\u0327)) what you want? -- http://mail.python.org/mailman/listinfo/python-list
Re: wxPython and threading issue
If your thread is long running and it is not possible to easily set a flag for it to check and bail out, then how does it display the progress in the progress dialog. How often does that get updated? If the progress dialog is updated often, then at each update have the thread check a self.please_die flag, for example, and break out (possibly after releasing some resources...). Having the work done in an external process might or might not work easily for your problem. It will make it easy to kill the execution but it might be OS dependent, and you will have to define some communication interface between your processes (for example, how would an external process easily provide progress feedback to its parent?). Patrick Smith wrote: Hi, I'm hoping someone here will be able to help as I've been struggling with this problem for a few days now. I'm working on an application that is creating a ProgressDialog, and then creating a thread that runs a function from another module in the program. The problem is, when the cancel button on the ProgressDialog is pressed, the thread that was created continues to run. How can I make it so that when the cancel button on the dialog is clicked, the spawned thread dies? thanks -- http://mail.python.org/mailman/listinfo/python-list
Re: Can recursive descent parser handle Python grammar?
[EMAIL PROTECTED] wrote: I'm a compiler newbie and was curious if Python's language/grammar can be handled by a recursive descent parser. I believe a recursive descent parser can handle any grammar; it just depends on how pure you want it to be. -- Ben Sizer -- http://mail.python.org/mailman/listinfo/python-list
Re: License / Registration key enabled software
Steve Holden [EMAIL PROTECTED] Wrote: Sybren Stuvel wrote: Mike Playle enlightened us with: Imagine you're an IT manager for a medium-to-large company who wants to use some expensive piece of software. You talk to the vendor and buy a licence to use the software on up to 5 machines at once, but you don't know who in the company will want to use it, so for convenience you want to install it on every PC in the building. Having installed it all over the shop, how can you be sure that only 5 people are using it at any one time? Write the software in such a way that it needs a certificate on a smartcard, then supply the company with five smartcards. And 500 smart card readers - can I quote for the job? And you guarantee that the contents of the smartcard is only used by one user at a time by building a licensing system for the smartcards? regards Steve Yes - this is the point - it makes a simple implementation increasingly complex and paranoid - and is a large part of the cost that makes the software expensive - the other part is called greed... - Hendrik -- http://mail.python.org/mailman/listinfo/python-list
Re: a different question: can you earn a living with *just* python?
John Salerno wrote: It's a nice thought that a person can earn a living programming with Python, which is fun enough to use just for its own sake. But for someone like me (i.e. no programming experience) it's always a little disheartening to see that most (if not all) job descriptions that ask for Python still require some C/C++ or other language knowledge. I suppose this isn't an issue if you studied CS in college, because you would have been exposed to many languages. But what if you are an expert Python program and have zero clue about other languages? Can you still earn a living that way, or do most/all companies require multiple language proficiency? Being a programmer isn't just a matter of knowing one or several programming languages, just as being an author isn't merely a matter of knowing writing and a language. I've been involved in one development project where COBOL programmers were handed detailed design descriptions written in pseudo code. The SQL code used to access the database was complete in the spec. These programmer just needed to know how to translate pseudo code to COBOL one module at a time, and of course, they needed to know how to operate the IDE and run tests etc. In all other projects I've worked in, programmers were also involved in design etc, often in the whole loop from requirements gathering to deployment and maintenance of the product. Knowing a programming language is a tiny part of that. Knowing two or three languages is still a tiny part of the set of skill and abilities required. I'm talking about communication skills, ability to extract relevant information from people who know a problem domain, but lack system design skills etc, strong analytical abilities, design skills, problem solving skills, the general ability to get things done in a reliable and timely manner etc etc. I'd be reluctant to employ someone without at least a B.Sc. in some relevant subject unless they had a proven track record. -- http://mail.python.org/mailman/listinfo/python-list
Re: Can string formatting be used to convert an integer to its binary form ?
[EMAIL PROTECTED] wrote: Frederic Rentsch: Good idea, but shorter with - SE.SE ('se_definition_files/int_to_binary.se') ('%X' % 987654321) '0011101011000110100010110001' Note that your version keeps the leading zeros. Have you tested the relative speeds too? (I'll probably have to learn to use SE.) Bye, bearophile If you say speed, I presume you mean speed of execution. No I have not tested that. I know it can't be fast on a test bench. After all, SE is written in Python. I did a first version fifteen years ago in C, am still using it today on occasion and it runs much, much faster than this Python SE. This SE here could be done in C if it passes the test of acceptance. Professionals need to measure execution speed as a part of documenting their products. I am not a professional and so I am free to define my own scale of grades: A (fast enough) and F (not fast enough). I have yet to encounter a situation where SE gets an F. But that says less about SE than about my better knowledge which prevents me from using SE to, say, change colors in a 50 Mb bitmap. Obviously, fast enough and not fast enough pertains not to code per se, but to code in a specific situation. So, as the saying goes: the proof of the pudding ... Another kind of speed is production speed. I do believe that SE rather excels on that side. I also believe that the two kinds of speed are economically related by the return-on-investment principle. The third kind of speed is learning speed. SE is so simple that it has no technical learning curve to speak of. It's versatility comes from a wealth of application techniques that invite exploration, invention even. Take leading zeroes: Leading zeroes can be stripped in a second pass if they are made recognizable in the first pass by some leading mark that is not a zero or a one. ([^01]; I use @ in the following example). To purists this may seem hackish. So it is! And what's wrong with that if it leads to simpler solutions? Hex_To_Binary = SE.SE ('0= 1=0001 2=0010 3=0011 4=0100 5=0101 6=0110 7=0111 8=1000 9=1001 A=1010 a=1010 B=1011 b=1011 C=1100 c=1100 D=1101 d=1101 E=1110 e=1110 F= f= | ~[^01]0*~=') Hex_To_Binary.set (keep_chain = 1) Hex_To_Binary ('@%x' % 1234567890) '100100110010110001011010010' Hex_To_Binary.show () ... snip ... Data Chain -- @499602d2 0 @0100100110010110001011010010 1 100100110010110001011010010 -- Frederic (The previously posted example Int_To_Binary = SE.SE (SE.SE ( ... was a typo, or course. One (SE.SE does it. Sorry about that.) -- http://mail.python.org/mailman/listinfo/python-list
Re: PATCH: Speed up direct string concatenation by 20+%!
Larry Hastings wrote in news:1159495643.213830.289620 @m7g2000cwm.googlegroups.com in comp.lang.python: _ THE PATCH The core concept: adding two strings together no longer returns a pure string object. Instead, it returns a string concatenation object which holds references to the two strings but does not actually concatenate them... yet. The strings are concatenated only when someone requests the string's value, at which point it allocates all the space it needs and renders the concatenated string all at once. On the python 3k list there is a thread about stings becoming views, I think this is similar to what you are doing here. url:http://search.gmane.org/? query=string+viewauthor=group=gmane.comp.python.python- 3000.develsort=relevanceDEFAULTOP=andxP=string.view. xFILTERS=Gcomp.python.python-3000.devl---A http://tinyurl.com/kadco Rob. -- http://mail.python.org/mailman/listinfo/python-list
Re: vector and particle effects
Panda3D is pretty good http://www.panda3d.org/ . It is very well documented and it comes with many examples. There is also pygame. Jay wrote: I'd like to experiment a little bit with vector graphics in python. When I say 'vector graphics' I don't mean regular old svg-style. I mean vector game style as in simulation of vector beam drawn graphics. If you still don't know what I'm talking about, see Grid Wars 2 (http://gridwars.marune.de/) or Battlezone (http://en.wikipedia.org/wiki/Battlezone). Anyway, I need help choosing a module or modules to support this. Would pygame support this or should I try pyopengl? Or is there a better module for this? Any tutorials for the basics would be GREATLY appreciated. -- http://mail.python.org/mailman/listinfo/python-list
BoaConstructor
..I'm just about to start a project, I have a threaded python app currently around 3000 lines / 12-15 source filesthat is cli driven, and I am about to start using boaConstructor to build a GUI around it. Has anyone here any advice on wether boaConstructor is actually a good tool for this? The only IDE I have used before was netbeans with Java, and not very extensivley. I'm not neccesarily into getting a boat-load of bells and whistles with my IDE, to start I will be using it generally just as a tool to build aGUI and edit the code. eventually, the App will become big and complicated. Thanks, MattW This email is confidential and may be privileged. If you are not the intended recipient please notify the sender immediately and delete the email from your computer. You should not copy the email, use it for any purpose or disclose its contents to any other person.Please note that any views or opinions presented in this email may be personal to the author and do not necessarily represent the views or opinions of Digica.It is the responsibility of the recipient to check this email for the presence of viruses. Digica accepts no liability for any damage caused by any virus transmitted by this email. UK: Phoenix House, Colliers Way, Nottingham, NG8 6AT UKReception Tel: + 44 (0) 115 977 1177Support Centre: 0845 607 7070Fax: + 44 (0) 115 977 7000http://www.digica.com SOUTH AFRICA: Building 3, Parc du Cap, Mispel Road, Bellville, 7535, South AfricaTel: + 27 (0) 21 957 4900Fax: + 27 (0) 21 948 3135http://www.digica.com This message has been scanned for viruses by BlackSpider in Partnership with Digica -- http://mail.python.org/mailman/listinfo/python-list
Re: Recursive descent algorithm able to parse Python?
Lawrence D'Oliveiro wrote: In message [EMAIL PROTECTED], Diez B. Roggisch wrote: [EMAIL PROTECTED] schrieb: I'm a compiler newbie and curious if Python grammar is able to be parsed by a recursive descent parser or if it requires a more powerful algorithm. I might be mistaken, but isn't recursive descent one of the more powerful parsing techniques - for the price of non-linearity and even potentially non-termination? No, you're thinking of LR(k) bottom-up parsers. Recursive descent is a No, I'm not. top-down parser--might be the same thing as LL(1), I'm not sure. It's easy to implement and easy to understand, to the point where there is strong pressure on programming-language designers to make sure their languages can be parsed with recursive descent. http://en.wikipedia.org/wiki/Recursive_descent_parser Recursive descent with backup is a technique that determines which production to use by trying each production in turn. Recursive descent with backup is not limited to LL(k) grammars, but is not guaranteed to terminate unless the grammar is LL(k). Even when they terminate, parsers that use recursive descent with backup may require exponential time. I have to admit that I have difficulties to compare LR(k) to recursive descent, but the fact that the latter contains backtracking makes it at least more powerful than LL(k) Diez -- http://mail.python.org/mailman/listinfo/python-list
Re: PATCH: Speed up direct string concatenation by 20+%!
28 Sep 2006 19:07:23 -0700, Larry Hastings [EMAIL PROTECTED]: THE BENCHMARKS Benchmark 1: def add(a, b, c, ... t): return a + b + c + ... + t for i in range(1000): add(aaa, bbb, ccc, ..., ttt) [snip] What about a + b? Or a + b + c? Does it have a large overhead on small string concatenations? -- Felipe. -- http://mail.python.org/mailman/listinfo/python-list
Re: Can string formatting be used to convert an integer to its binary form ?
On 9/29/06, Steve Holden [EMAIL PROTECTED] wrote: Unfortunately forty years of programming experience has taught me that there's an essentially infinite supply of mistakes to make ... your mistakes just get smarter most of the time. +1 QOTW. -- Cheers, Simon B, [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list
Re: Problems with Python 2.5 installer.
John Machin wrote: paw wrote: I have ran the MSI installer for Python 2.5 several times attempting to install to C: Python, however all of the files are placed in C:\ . The installer is told to only install files for me, beyond that I have only chosen the defaults. What do you mean by install to C: newline Python? Can you tell us (unambiguously, on one line) what directory you chose? Is there any good reason why you didn't take the default, which is C:\Python25 ? The newline should have been \ , the keyboard I am using sucks and places the backslash below Enter vs. above like I am used to. I just didn't catch that when posting. I really don't know why I always change the directory, I've just always installed Python on MS Windows into C:\Python. No practical reason, I do the same with other programs. Google turned up nothing useful that I could find, is anyone else seeing this problem? There's been no mention that I've noticed. I'm thinking this is a local issue. I came in today and used the same MSI installer as before and there were no problems. I'm looking through the local logs to see if there has been any change on this system in the past day or two right now. Wayne -- http://mail.python.org/mailman/listinfo/python-list
File I/O
Hi! I need some help in file I/O I have an xml file.. Top Body1xyz/Body1 /Top I want to open these file in append mode and add the line Body2abd/Body2 Such that i have: Top Body1xyz/Body1 Body2xyz/Body2 /Top can anyone show me the way to achieve this?? thanx -- http://mail.python.org/mailman/listinfo/python-list
Re: windev vs python SOS
Hi Bruno, Let me guess, your favorite book is the I HATE THE FRENCH OFFICIAL HANDBOOK. People here deserve a more objective opinion. Here you can find what WinDev users have to say about WinDev http://www.windev.com/pcsoft/testimonials/ There are more testimonials here (in french). http://www.pcsoft.fr/pcsoft/120pages/html/porsche.htm By the way, Python is a great programming language. What is cool about WinDev is that the language is closely embedded with the GUI. For example, to select a line in a browsing table, you may just write: MyTable = 15 as if MyTable was a variable (it is a powerfull widget indeed, with searching, sorting, export to Excel, and so on). -- PatBiker -- http://mail.python.org/mailman/listinfo/python-list
Re: windev vs python SOS
Thank you, Jean-Marc, for translation. I am not capable of this work. :-) -- @-salutations Michel Claveau -- http://mail.python.org/mailman/listinfo/python-list
Re: windev vs python SOS
Thanks. The essential, is that peoples ( you) can understand. Bbut, perso, I don't understand the message translated (much unknowed words...) -- @-salutations Michel Claveau -- http://mail.python.org/mailman/listinfo/python-list
Organising unit tests
I have a number of unit tests organised hierarchically, all of which inherit fixtures from a base class. To run these all at once I started out using from basic import map, directionalpan, layerorder, layervisibility, listlayers, streamlayerlist # ... lots more ... suite0 = unittest.TestLoader().loadTestsFromTestCase(directionalpan.TestPan) suite1 = unittest.TestLoader().loadTestsFromTestCase(layerorder.TestLayerorder) # ... lots more ... alltests = unittest.TestSuite([suite0 , suite1 ]) unittest.TextTestRunner(verbosity=2).run(alltests) Which is unmaintainable. the TestLoader docs warn that loadTestsFromModule will not play nicely with my situation and indeed if I try suite0 = unittest.TestLoader().loadTestsFromModule(basic) then run the tests, it hasn't picked any up. I suppose I could collect and run the tests with a shell script...what are my options here to avoid hardcoding and maintaining the list of tests, and how is it normally done? Thanks. -- http://mail.python.org/mailman/listinfo/python-list
Re: File I/O
Kirt wrote: Hi! I need some help in file I/O I have an xml file.. [snip] See http://diveintopython.org/xml_processing/ -- http://mail.python.org/mailman/listinfo/python-list
Re: File I/O
jimburton wrote: Kirt wrote: Hi! I need some help in file I/O I have an xml file.. [snip] See http://diveintopython.org/xml_processing/ i dont wanna parse the xml file.. Just open the file as: f=open('test.xml','a') and write a line Body2abc/Body2 before tag /Top? -- http://mail.python.org/mailman/listinfo/python-list
Re: File I/O
jimburton wrote: Kirt wrote: Hi! I need some help in file I/O I have an xml file.. [snip] See http://diveintopython.org/xml_processing/ i dont wanna parse the xml file.. Just open the file as: f=open('test.xml','a') and append a line Body2abc/Body2 before tag /Top -- http://mail.python.org/mailman/listinfo/python-list
Pysqlite tables in RAM
Hi all, I'm relatively new to python and am facing a problem with database access I want to store my data in a database on the disk. I also want to be able to reload the tables into the RAM whenever I have a lot of disk accesses and commit the changes back to the database. There is an option of storing the data in the RAM where you connect to :memory: instead of a DB file. The problem with this is that the data is lost everytime you close the connection to the database. Could somebody suggest a way to load the tables into the RAM as tables and not as some lists or dictionaries? Thanks, Simba -- http://mail.python.org/mailman/listinfo/python-list
Re: windev vs python SOS
Hi Stéphane, stéphane bard wrote: hello, my boss ask me to prefer windev to python. I have to argue First, no matter how good is Python, you should not desagree with your boss. Second, Windew is quite good and fun, you will love it. -- PatBiker -- http://mail.python.org/mailman/listinfo/python-list
Re: Generating a PDF file on Linux (try using xtopdf)
George Adams wrote: Sorry for what is probably a very basic question... I have a database of contact info data (names, addresses, phone, etc.) I want to take that data and generate a printable booklet-form directory that can be handed out to people. So the database may look something like this: FNAME,LNAME,ADDRESS,HOMEPHONE,WORKPHONE,HOMEEMAIL,WORKEMAIL George,Adams,123 Faketreet, NULL,555-1212,NULL,[EMAIL PROTECTED] John,Doe,456 Nowhere Lane, 555-,555-,[EMAIL PROTECTED],[EMAIL PROTECTED] and I want the printable output to look something like this: redboldAdams/bold/red, George 123 Fake Street Work phone: 555-1212 Work e-mail: [EMAIL PROTECTED] redboldDoe/bold/red, John 456 Nowhere Lane Home phone: 555- Work phone: 555- Home e-mail: [EMAIL PROTECTED] Work e-mail: [EMAIL PROTECTED] I can use a scripting language like Perl to handle any programming logic I may need (such as not printing out a line for any fields that are empty in the database). What I don't know is how to generate a nicely formatted PDF file containing the line breaks, red text, bold text, etc. that's ready for printing. Can anyone point me to the tool I need to make this happen? (maybe it's a Perl module? Maybe a standalone tool that takes my pseudocode redbold and turns it into valid PDF code?) Thanks to anyone who can help! My xtopdf toolkit may be of help. It has both end-user tools (some command-line, some GUI (using wxPython (v 2.6 or higher needed)), and an API for developers. Both the tools and the API are quite easy to use. Check the links here: http://www.dancingbison.com This page has a link to an article I wrote for Packt Publishing (http://www.packtpub.com), on how to use xtopdf to generate PDF from CSV data - which is the kind you have. You can use the article and the accompanying code (links available in the article) as a model for your needs. http://www.dancingbison.com/products.html This page has links to get xtopdf, a guide to installing and using it (on Windows), etc. xtopdf is cross-platform, works on both Linux and Windows. I haven't yet written a Linux-specific install and use guide, but the generic instructions in the README should suffice if you know Linux some, how to install software on it, and how to set up additional Python libraries on it. You can also post here if you have problems making xtopdf work on Linux, and I'll try to help. (I developed and tested it on Linux, then tested it on Windows, so it should work ok on Linux). xtopdf is written in Python (http://www.python.org, needs v2.2 or higher) and uses the open source version of the ReportLab toolkit (http://www.reportlab.org, needs v1.17 or higher, but use the 1.x series, its not tested with Reportlab v2.x, though it might work with it). IMO, Python is easier to learn and develop in than Perl, so if you say you can do it in Perl, you should be able to do it in Python. To get the line breaks you can write code to read each cell of each row of the CSV file, and put the line breaks wherever you want to. For color changes, its a little more difficult - though the ReportLab toolkit supports colors, I didn't expose that support in the xtopdf API, though I may in future. (I did expose the ability to set the font for any chunk of text, though). If you don't mind digging into the source, you can try making the changes to allow colors to be specified for arbitrary chunks of text, as per your need. It shouldn't be too difficult, since the code is written for understandability, and there are enough comments. The CSV and other new formats support (TDV, XLS) is alpha and may have some bugs. Also, CSV is know to be a variable format - different products like different spreadsheets, generate various dialects of it. I've not (yet) tested the CSV support with many differing CSV dialects, only with the MS Excel format of Office 2000. Feel free to let me know if you find any bugs. If you make the changes for color support, do consider sending them to me, to include in the next release of xtopdf. Otherwise, I'll probably add it myself. HTH Vasudev Ram Software training and consulting http://www.dancingbison.com 10.times say Truly rural -- http://mail.python.org/mailman/listinfo/python-list
Re: File I/O
Kirt wrote: i dont wanna parse the xml file.. Just open the file as: f=open('test.xml','a') and append a line Body2abc/Body2 before tag /Top Use a regex to split the contents and insert new stuff, eg import re prog = prog = re.compile('^(.*)(/Top)', re.DOTALL) m = prog.search(f.read()) then m.group(1) is everything before /Top and m.group(2) is /Top. Put them together with your new tag and write it back to the file -- http://mail.python.org/mailman/listinfo/python-list
Re: File I/O
Kirt wrote: jimburton wrote: Kirt wrote: Hi! I need some help in file I/O I have an xml file.. [snip] See http://diveintopython.org/xml_processing/ i dont wanna parse the xml file.. If you play soccer, do you insist on playing with a baseball bat? The game is called XML, and to play it, you should use a parser. If you don't, you're up for trouble. Diez -- http://mail.python.org/mailman/listinfo/python-list
RE: Problems with Python 2.5 installer.
-Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of paw Sent: 29 September 2006 11:01 To: python-list@python.org Subject: Re: Problems with Python 2.5 installer. John Machin wrote: paw wrote: I have ran the MSI installer for Python 2.5 several times attempting to install to C: Python, however all of the files are placed in C:\ . The installer is told to only install files for me, beyond that I have only chosen the defaults. What do you mean by install to C: newline Python? Can you tell us (unambiguously, on one line) what directory you chose? Is there any good reason why you didn't take the default, which is C:\Python25 ? Could this happen if c:\python does not exists and creating it fails for some reason, or if permissions are incorrect? This email is confidential and may be privileged. If you are not the intended recipient please notify the sender immediately and delete the email from your computer. You should not copy the email, use it for any purpose or disclose its contents to any other person. Please note that any views or opinions presented in this email may be personal to the author and do not necessarily represent the views or opinions of Digica. It is the responsibility of the recipient to check this email for the presence of viruses. Digica accepts no liability for any damage caused by any virus transmitted by this email. UK: Phoenix House, Colliers Way, Nottingham, NG8 6AT UK Reception Tel: + 44 (0) 115 977 1177 Support Centre: 0845 607 7070 Fax: + 44 (0) 115 977 7000 http://www.digica.com SOUTH AFRICA: Building 3, Parc du Cap, Mispel Road, Bellville, 7535, South Africa Tel: + 27 (0) 21 957 4900 Fax: + 27 (0) 21 948 3135 http://www.digica.com -- http://mail.python.org/mailman/listinfo/python-list
[ANN] IronPython Community Edition 1.0r2
This is the second release of IronPython Community Edition (IPCE), 1.0 revision 2, based on IronPython 1.0. Get it here: http://sparcs.kaist.ac.kr/~tinuviel/download/IPCE-1.0r2.zip Binary is built with Mono 1.1.17.1. BIG WARNING: it won't work with Mono versions below 1.1.17. Please don't mail me or IronPython mailing list before checking your Mono version! IPCE has a new home on SourceForge: http://fepy.sourceforge.net/ And here's the license and the summary of applied patches: http://fepy.sourceforge.net/license.html http://fepy.sourceforge.net/patches.html Changes in this revision: * Includes the Python standard library from CPython 2.4.3. (Not everything is included -- that would be pointless. Those I tested and work reasonably are included.) * Includes following CPython-compatible wrappers for .NET library: md5, pyexpat, select, sha, socket, ssl, unicodedata. * Includes DB-API wrapper for ADO.NET. * Includes BeautifulSoup and ElementTree for you to test. (Both work great with IronPython!) * Does not include Doc, Src, Tutorial from the original IronPython release. You know where to get them... Reduces size by about half. * Extracts to IPCE-1.0r2. (The first revision extracted to IronPython-1.0 and it could overwrite existing installation. Thanks to Anthony Baxter for pointing this out.) -- Seo Sanghyeon -- http://mail.python.org/mailman/listinfo/python-list
Re: Pysqlite tables in RAM
Ranjitha wrote: Hi all, I'm relatively new to python And to databases ? and am facing a problem with database access I want to store my data in a database on the disk. I also want to be able to reload the tables into the RAM whenever I have a lot of disk accesses and commit the changes back to the database. This should be the database duty, not yours. Serious RDBMS are highly optimized wrt/ caching and file I/O, and there are very few chances you can do anything better by yourself. There is an option of storing the data in the RAM where you connect to :memory: instead of a DB file. The problem with this is that the data is lost everytime you close the connection to the database. Seems quite obvious !-) Could somebody suggest a way to load the tables into the RAM as tables and not as some lists or dictionaries? There's nothing like a table in Python's builtin datatypes !-) More seriously: don't bother. Focus first on writing correct code. Then, *if* and *when* you *really* have a performance problem, *first* use a profiler to check where the *real* problem is. If it then happens that SQLite is the bottleneck, try switching to a real RDBMS like PostgreSQL. Remember the 3 golden rules about optimisation: 1/ don't optimize 2/ don't optimize 3/ for the experts only: don't optimize My 2 cents... -- bruno desthuilliers Premature optimization is the root of all evil. (some wise guy) -- http://mail.python.org/mailman/listinfo/python-list
Re: Socks server and client code in Python (Twisted?)
The answer may depend somewhat on whether your app is doing mostly storage (filessystem) or calculations (cpu). If you need to handle a fair number of sockets but do little processing, you may wish to look at the standard modules asyncore/asynchat. But Twisted is not a bad advice :o) Maybe a little more threshold to get started and you will have to co-deploy it with your app. -- http://mail.python.org/mailman/listinfo/python-list
Hai Friends
Hello Everybody, Happy Navaratri Happy Dasara I found excellent yellow pages about Indian Temples in USA. http://www.nrievents.com/indiantemples.htm And also info about latest NRI News and NRI Events and NRI services. Regards, -- http://mail.python.org/mailman/listinfo/python-list
Re: Making sure script only runs once instance at a time.
A very brutal but simple and effective method is to bind() to a socket on localhost eg (127.0.0.1, 4711), listen() but never accept(). Any other process trying to to bind() on the same port will fail.. When the process dies, the port is released automatically, pending som timedelay.. But this assumes you have an execution environment where this is acceptable. A sysadmin may have objections ;o) -- http://mail.python.org/mailman/listinfo/python-list
Re: [IronPython] [ANN] IronPython Community Edition 1.0r2
Brilliant Seo. Thanks a lot :) BTW, if it can be useful and you're happy with the code, don't hesitate to include my port of the Gzip module. Its a BSD license :) - Sylvain This is the second release of IronPython Community Edition (IPCE), 1.0 revision 2, based on IronPython 1.0. Get it here: http://sparcs.kaist.ac.kr/~tinuviel/download/IPCE-1.0r2.zip Binary is built with Mono 1.1.17.1. BIG WARNING: it won't work with Mono versions below 1.1.17. Please don't mail me or IronPython mailing list before checking your Mono version! IPCE has a new home on SourceForge: http://fepy.sourceforge.net/ And here's the license and the summary of applied patches: http://fepy.sourceforge.net/license.html http://fepy.sourceforge.net/patches.html Changes in this revision: * Includes the Python standard library from CPython 2.4.3. (Not everything is included -- that would be pointless. Those I tested and work reasonably are included.) * Includes following CPython-compatible wrappers for .NET library: md5, pyexpat, select, sha, socket, ssl, unicodedata. * Includes DB-API wrapper for ADO.NET. * Includes BeautifulSoup and ElementTree for you to test. (Both work great with IronPython!) * Does not include Doc, Src, Tutorial from the original IronPython release. You know where to get them... Reduces size by about half. * Extracts to IPCE-1.0r2. (The first revision extracted to IronPython-1.0 and it could overwrite existing installation. Thanks to Anthony Baxter for pointing this out.) -- Seo Sanghyeon ___ users mailing list users@lists.ironpython.com http://lists.ironpython.com/listinfo.cgi/users-ironpython.com -- http://mail.python.org/mailman/listinfo/python-list
Re: Python and Win95B
Thanks. Python 2.4.3 is fine. Ciarán. - Original Message - From: Martin v. Löwis [EMAIL PROTECTED] Newsgroups: comp.lang.python To: Ciarán Ó Duibhín [EMAIL PROTECTED] Sent: Thursday, September 28, 2006 7:28 PM Subject: Re: Python and Win95B Ciarán Ó Duibhín schrieb: I've just installed Python 2.5 under Win95B, and when run it says The PYTHON25.DLL file is linked to missing export KERNEL32.DLL.GetFileAttributesExA. Does Python 2.5 not run under Win95? Apparently not. I knew this would be a problem when I wrote the code that uses GetFileAttributes; I then forgot to fix it before the release was made, and nobody reported that problem during the beta tests. If you think it should be fixed, please report it to sf.net/projects/python. If not, is there an earlier version of Python which does? This specific problem shouldn't exist in Python 2.4, and I recall that I tested some 2.4 release on Windows 95. Regards, Martin -- http://mail.python.org/mailman/listinfo/python-list
Execute external code and get return value
Hi, I want to execute an external code, that become from a text file (pe), call a function inside it and get its return value: # ext_code.txt def funct2Call(): return True # test.py sourcecode = open(ex_code.txt).read() comp_code = compile(sourcecode, My_test, exec) #do something like this return_value = comp_code.funct2Call() But I can't... I find this: http://tinyurl.com/nwbpk but here, it call from the external code a function inside my code. I want the opposite! Is there a solution for do this? Thanks, Michele -- http://mail.python.org/mailman/listinfo/python-list
Re: windev vs python SOS
[EMAIL PROTECTED] wrote: Hi Bruno, Heck. PC-Soft marketing droids are pursuing us even here now. Let me guess, your favorite book is the I HATE THE FRENCH OFFICIAL HANDBOOK. je suis français, pauvre semoule. People here deserve a more objective opinion. objective ? Lol. Here you can find what WinDev users have to say about WinDev http://www.windev.com/pcsoft/testimonials/ yes, very objective... There are more testimonials here (in french). http://www.pcsoft.fr/pcsoft/120pages/html/porsche.htm just as objective. By the way, Python is a great programming language. What is cool about WinDev is that the language is closely embedded with the GUI. The one and only cool thing about Windev is that I'll never have to use this piece of shit again. For example, to select a line in a browsing table, you may just write: MyTable = 15 as if MyTable was a variable (it is a powerfull widget indeed, with searching, sorting, export to Excel, and so on). Yeah, great. And you forgot to say that it generates the whole application by itself, and even make coffee for the programmer. NB : transmitted to [EMAIL PROTECTED] who will appreciate if OT commercial adds are welcomes here. -- PatBiker -- bruno desthuilliers python -c print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')]) -- http://mail.python.org/mailman/listinfo/python-list
ValueError: Empty module name on basic import
Hello everybody, I am a newbie to python so I hope I am at the right place to expose my problem. :-[ I am working on linux mandrake 10.1 with python : python -V Python 2.3.4 I am trying o run the example which stay in the documentation in paragraph http://www.python.org/doc/2.4.2/ext/pure-embedding.html 5.3 Pure Embedding I download the code example from http://www.python.org/doc/2.4.2/ext/run-func.txt I call the file TestOfficiel.c and I compile it with : gcc -g -I/usr/include/python2.3/ TestOfficiel.c -o TestOfficiel -lpython2.3 -ldl all is OK (or seems to be...). as stated in the documentation I creat a file TestPythonFoo.py which contain def multiply(a,b): print Will compute, a, times, b c = 0 for i in range(0, a): c = c + b return c I launch ./TestOfficiel ./TestPythonFoo.py multiply 3 2 and as a result : ValueError: Empty module name Failed to load ./TestPythonFoo.py if I try an absolute path to the python file : ./TestOfficiel `pwd`/TestPythonFoo.py multiply 3 2 I obtain : ImportError: No module named /space/ESOPPE_PROJET/Outils/SwigPython/swigCallPython/TestPythonFoo.py Failed to load /space/ESOPPE_PROJET/Outils/SwigPython/swigCallPython/TestPythonFoo.py Of course the file exist : [EMAIL PROTECTED] swigCallPython]$ ll /space/ESOPPE_PROJET/Outils/SwigPython/swigCallPython/TestPythonFoo.py -rwxrwx--x 1 montmory esoppe 126 sep 29 14:04 /space/ESOPPE_PROJET/Outils/SwigPython/swigCallPython/TestPythonFoo.py* I found lot of post about ValueError: Empty module name but no clear solution (clear for me...). What's wrong ? my python version? Additionnal informations : gcc version 3.4.1 (Mandrakelinux 10.1 3.4.1-4mdk) Thanks for your help, best regards, Alain #include Python.h int main(int argc, char *argv[]) { PyObject *pName, *pModule, *pDict, *pFunc; PyObject *pArgs, *pValue; int i; if (argc 3) { fprintf(stderr,Usage: call pythonfile funcname [args]\n); return 1; } Py_Initialize(); pName = PyString_FromString(argv[1]); /* Error checking of pName left out */ pModule = PyImport_Import(pName); Py_DECREF(pName); if (pModule != NULL) { pDict = PyModule_GetDict(pModule); /* pDict is a borrowed reference */ pFunc = PyDict_GetItemString(pDict, argv[2]); /* pFun: Borrowed reference */ if (pFunc PyCallable_Check(pFunc)) { pArgs = PyTuple_New(argc - 3); for (i = 0; i argc - 3; ++i) { pValue = PyInt_FromLong(atoi(argv[i + 3])); if (!pValue) { Py_DECREF(pArgs); Py_DECREF(pModule); fprintf(stderr, Cannot convert argument\n); return 1; } /* pValue reference stolen here: */ PyTuple_SetItem(pArgs, i, pValue); } pValue = PyObject_CallObject(pFunc, pArgs); Py_DECREF(pArgs); if (pValue != NULL) { printf(Result of call: %ld\n, PyInt_AsLong(pValue)); Py_DECREF(pValue); } else { Py_DECREF(pModule); PyErr_Print(); fprintf(stderr,Call failed\n); return 1; } /* pDict and pFunc are borrowed and must not be Py_DECREF-ed */ } else { if (PyErr_Occurred()) PyErr_Print(); fprintf(stderr, Cannot find function \%s\\n, argv[2]); } Py_DECREF(pModule); } else { PyErr_Print(); fprintf(stderr, Failed to load \%s\\n, argv[1]); return 1; } Py_Finalize(); return 0; } def multiply(a,b): print Will compute, a, times, b c = 0 for i in range(0, a): c = c + b return c -- http://mail.python.org/mailman/listinfo/python-list
Re: PATCH: Speed up direct string concatenation by 20+%!
Robin Becker wrote: Larry Hastings wrote: __ THE PATCH The core concept: adding two strings together no longer returns a pure string object. Instead, it returns a string concatenation object which holds references to the two strings but does not actually concatenate them... yet. The strings are concatenated only when someone requests the string's value, at which point it allocates all the space it needs and renders the concatenated string all at once. More to the point, if you add multiple strings together (a + b + c), it *doesn't* compute the intermediate strings (a + b). Upsides to this approach: wouldn't this approach apply to other additions eg list+list seq+seq etc etc. no, I think it depends on strings being immutable. If you do list1 + list2 that way and list1 is mutated then the resulting list would be changed too. I suppose the utility of such an approach depends on the frequency with which multiple strings/lists/sequences etc are added together in real code. I think there are quite a lot of string additions around, it's just that people get told to use join all the time, so they are not written using +. Cheers, Carl Friedrich -- http://mail.python.org/mailman/listinfo/python-list
Re: PATCH: Speed up direct string concatenation by 20+%!
Robin Becker wrote: Larry Hastings wrote: __ THE PATCH The core concept: adding two strings together no longer returns a pure string object. Instead, it returns a string concatenation object which holds references to the two strings but does not actually concatenate them... yet. The strings are concatenated only when someone requests the string's value, at which point it allocates all the space it needs and renders the concatenated string all at once. More to the point, if you add multiple strings together (a + b + c), it *doesn't* compute the intermediate strings (a + b). Upsides to this approach: wouldn't this approach apply to other additions eg list+list seq+seq etc etc. no, I think it depends on strings being immutable. If you do list1 + list2 that way and list1 is mutated then the resulting list would be changed too. I suppose the utility of such an approach depends on the frequency with which multiple strings/lists/sequences etc are added together in real code. I think there are quite a lot of string additions around, it's just that people get told to use join all the time, so they are not written using +. Cheers, Carl Friedrich -- http://mail.python.org/mailman/listinfo/python-list
Re: a different question: can you earn a living with *just* python?
On 2006-09-28, Roy Smith [EMAIL PROTECTED] wrote: In article [EMAIL PROTECTED], Carl J. Van Arsdall [EMAIL PROTECTED] wrote: Things like decorators and metaclasses certainly add power, but they add complexity too. It's no longer a simple language. Well, I think a simple language is a language that makes the simple things simple and some of the complex things simple. But I also like a language where, if I need it, I can tap into some raw power and do that really wild stuff. So its simple to use if that's all you need yet offers the complexity to get things done that a purely simple language can't do. I'd say its as simple as you want it to be :) The problem is, if the complex features are there, people will use them. On any large project, there will always be some people who revel in using every obscure feature of a language. That forces everybody else on the team (and all future members of the team) to know (or learn) those features in order to be able to use and maintain the code base. I would think that this kind of issues is the responsibility of the project leader. Otherwise you might as well remove the possibilty of a recursive function. There may always be someone that writes complicated recursive functions whenever a simple iterative solution would do fine. -- Antoon Pardon -- http://mail.python.org/mailman/listinfo/python-list
Re: PATCH: Speed up direct string concatenation by 20+%!
Robin Becker wrote: Larry Hastings wrote: __ THE PATCH The core concept: adding two strings together no longer returns a pure string object. Instead, it returns a string concatenation object which holds references to the two strings but does not actually concatenate them... yet. The strings are concatenated only when someone requests the string's value, at which point it allocates all the space it needs and renders the concatenated string all at once. More to the point, if you add multiple strings together (a + b + c), it *doesn't* compute the intermediate strings (a + b). Upsides to this approach: wouldn't this approach apply to other additions eg list+list seq+seq etc etc. no, I think it depends on strings being immutable. If you do list1 + list2 that way and list1 is mutated then the resulting list would be changed too (at least if you don't do additional things). I suppose the utility of such an approach depends on the frequency with which multiple strings/lists/sequences etc are added together in real code. I think there are quite a lot of string additions around, it's just that people get told to use join all the time, so they are not written using +. Cheers, Carl Friedrich Bolz -- http://mail.python.org/mailman/listinfo/python-list
Re: windev vs python SOS
[EMAIL PROTECTED] wrote: Hi Stéphane, stéphane bard wrote: hello, my boss ask me to prefer windev to python. I have to argue First, no matter how good is Python, you should not desagree with your boss. Second, Windew is quite good and fun, you will love it. Yes, the boss is always right, shut up and drink your Kool-Aid! ;) -- http://mail.python.org/mailman/listinfo/python-list
Re: PATCH: Speed up direct string concatenation by 20+%!
Robin Becker wrote: Larry Hastings wrote: __ THE PATCH The core concept: adding two strings together no longer returns a pure string object. Instead, it returns a string concatenation object which holds references to the two strings but does not actually concatenate them... yet. The strings are concatenated only when someone requests the string's value, at which point it allocates all the space it needs and renders the concatenated string all at once. More to the point, if you add multiple strings together (a + b + c), it *doesn't* compute the intermediate strings (a + b). Upsides to this approach: wouldn't this approach apply to other additions eg list+list seq+seq etc etc. no, I think it depends on strings being immutable. If you do list1 + list2 that way and list1 is mutated then the resulting list would be changed too. I suppose the utility of such an approach depends on the frequency with which multiple strings/lists/sequences etc are added together in real code. I think there are quite a lot of string additions around, it's just that people get told to use join all the time, so they are not written using +. Cheers, Carl Friedrich -- http://mail.python.org/mailman/listinfo/python-list
Re: windev vs python SOS
[EMAIL PROTECTED] wrote: Hi Stéphane, stéphane bard wrote: hello, my boss ask me to prefer windev to python. I have to argue You don't. You're one of the marketing droids from PC-Soft ot To everyone here : such interventions are a well-known part of PC-Soft (the company that sells the product discussed here) marketing strategy. We've seen quite a lot of such posts on the windew-users mailing list and newsgroup. /ot First, no matter how good is Python, you should not desagree with your boss. Ho yes ? Even if the boss finally decides that he'd better trust his team than marketing droids ? Second, Windew is quite good and fun, Yes, sooo good and fun. A good and fun unusable clickodrom nightmare with a good and fun dumbed-down basic as language and a good and fun indexed sequential file format as RDBMS. lol. you will love it. I've never met a programmer that loved Windev. I've met some programmers that where able to bear with it mostly because they didn't even knew anything else, but even these guys didn't love trying to make this crap do something useful. Heck, compared to PC-Soft, one could find that Microsoft's marketing strategy is based on delivering smart, usable, cleanly debugged products and being helpful to users... -- bruno desthuilliers python -c print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')]) -- http://mail.python.org/mailman/listinfo/python-list
Re: Organising unit tests
OK, so I'm trying to collect the tests with python and add them to the test suite dynamically, but I have a problem with module names. Here's what I've got: # import os from os.path import join import unittest alltests = unittest.TestSuite() def mightBeATest(f): #TODO check whether it really is a test return f.endswith('.py') and f != '__init__.py' def isModule(d): if not os.path.isdir(d): return False for f in os.listdir(d): if f == '__init__.py': return True return False def getTestsFromDir(dir, currentmod): for f in os.listdir(dir): if not f.startswith('.'): if isModule(f): #TODO how to check whether we are several modules in? mod = __import__(f) getTestsFromDir(os.path.join(dir, f), mod) elif mightBeATest(os.path.join(dir, f)): fname, etx = os.path.splitext(f) print 'adding test with',('alltests.addTests(unittest.TestLoader().loadTestsFromTestCase('+(currentmod.__dict__[fname])+'))') eval('alltests.addTests(unittest.TestLoader().loadTestsFromTestCase('+currentmod.__dict__[fname]+'))') getTestsFromDir(os.curdir, None) print alltests.countTestCases() it's importing and referring to the current module that I have a problem with...it gives me a key error. -- http://mail.python.org/mailman/listinfo/python-list
Re: Execute external code and get return value
Michele Petrazzo wrote: I want to execute an external code, that become from a text file (pe), call a function inside it and get its return value: namespace = {} execfile(ext_code.txt, namespace) print namespace[funct2Call]() Peter -- http://mail.python.org/mailman/listinfo/python-list
Re: Execute external code and get return value
Michele Petrazzo wrote: Auto reply: I find this: http://tinyurl.com/nwbpk Following this link, here is my solution: code = def funct2Call(): return It work! object.method(funct2Call) class Object(object): def method(self, value): self._callable = value def __call__(self): return self._callable() # populate the namespace namespace = { object: Object() } # execute the code exec code in namespace namespace[object]() Michele -- http://mail.python.org/mailman/listinfo/python-list
Re: PATCH: Speed up direct string concatenation by 20+%!
Carl Friedrich Bolz wrote: Robin Becker wrote: Larry Hastings wrote: __ THE PATCH The core concept: adding two strings together no longer returns a pure string object. Instead, it returns a string concatenation object which holds references to the two strings but does not actually concatenate them... yet. The strings are concatenated only when someone requests the string's value, at which point it allocates all the space it needs and renders the concatenated string all at once. More to the point, if you add multiple strings together (a + b + c), it *doesn't* compute the intermediate strings (a + b). Upsides to this approach: wouldn't this approach apply to other additions eg list+list seq+seq etc etc. no, I think it depends on strings being immutable. If you do list1 + list2 that way and list1 is mutated then the resulting list would be changed too. I suppose the utility of such an approach depends on the frequency with which multiple strings/lists/sequences etc are added together in real code. I think there are quite a lot of string additions around, it's just that people get told to use join all the time, so they are not written using +. Sorry for the multiple post :-( -- http://mail.python.org/mailman/listinfo/python-list
Re: File I/O
Diez B. Roggisch wrote: Kirt wrote: jimburton wrote: Kirt wrote: Hi! I need some help in file I/O I have an xml file.. [snip] See http://diveintopython.org/xml_processing/ i dont wanna parse the xml file.. If you play soccer, do you insist on playing with a baseball bat? I've been known to open a bottle of wine with a pencil. Works fine. -- http://mail.python.org/mailman/listinfo/python-list
Re: Execute external code and get return value
Peter Otten wrote: Michele Petrazzo wrote: I want to execute an external code, that become from a text file (pe), call a function inside it and get its return value: namespace = {} execfile(ext_code.txt, namespace) print namespace[funct2Call]() Sorry, I forgot to say that ext_code.txt isn't a real file, but a text become from a db, so or I create a temp file where I save the code and pass its path to execfile, or use my post. Peter Thanks, Michele -- http://mail.python.org/mailman/listinfo/python-list
Re: A critique of cgi.escape
Jon Ribbens wrote: In article [EMAIL PROTECTED], Fredrik Lundh wrote: maybe you haven't done software long enough to understand that software works better if you use it the way it was intended to be used, but that's no excuse for being stupid. So what's your excuse? If you don't like Fredrik's manner I suggest that you simply don't use any code he's written. Good luck using Python! :^) Don't bite the hand that feeds you... -- http://mail.python.org/mailman/listinfo/python-list
Re: Making sure script only runs once instance at a time.
Seeing as there doesn't seem to be a good answer to this (or at least not one that we have so far some up with) I have decided to fall back to my old friend the unix shell. It's as portable as python, but is very flexible and fast at doing real things and will tell me if another process by this name is running. If so, print msg and exit. simple. -h Hari Sekhon MaR wrote: A very brutal but simple and effective method is to bind() to a socket on localhost eg (127.0.0.1, 4711), listen() but never accept(). Any other process trying to to bind() on the same port will fail.. When the process dies, the port is released automatically, pending som timedelay.. But this assumes you have an execution environment where this is acceptable. A sysadmin may have objections ;o) -- http://mail.python.org/mailman/listinfo/python-list
Re: XSLT speed comparisons
Damian wrote: Hi, I'm from an ASP.NET background an am considering making the switch to Python. I decided to develop my next project in tandem to test the waters and everything is working well, loving the language, etc. What I've got is: two websites, one in ASP.NET v2 and one in Python 2.5 (using 4suite for XML/XSLT) both on the same box (Windows Server 2003) both using the same XML, XSLT, CSS The problem is, the Python version is (at a guess) about three times slower than the ASP one. I'm very new to the language and it's likely The ASP one being MSXML, right? In that case that result doesn't surprise me. that I'm doing something wrong here: Now wrong, but we can definitely simplify your API from os import environ from Ft.Lib.Uri import OsPathToUri from Ft.Xml import InputSource from Ft.Xml.Xslt import Processor def buildPage(): try: xsluri = OsPathToUri('xsl/plainpage.xsl') xmluri = OsPathToUri('website.xml') xsl = InputSource.DefaultFactory.fromUri(xsluri) xml = InputSource.DefaultFactory.fromUri(xmluri) proc = Processor.Processor() proc.appendStylesheet(xsl) params = {url:environ['QUERY_STRING'].split(=)[1]} for i, v in enumerate(environ['QUERY_STRING'].split(/)[1:]): params[selected_section%s % (i + 1)] = / + v return proc.run(xml, topLevelParams=params) except: return Error blah blah print Content-Type: text/html\n\n print buildPage() This should work: from os import environ from Ft.Xml.Xslt import Transform def buildPage(): try: params = {url:environ['QUERY_STRING'].split(=)[1]} for i, v in enumerate(environ['QUERY_STRING'].split(/)[1:]): params[selected_section%s % (i + 1)] = / + v return Transform('website.xml', 'xsl/plainpage.xsl', topLevelParams=params) except: return Error blah blah print Content-Type: text/html\n\n print buildPage() -- % -- For what it's worth I just developed, and switched to WSGI middleware that only does the transform on the server side if the client doesn't understand XSLT. It's called applyxslt and is part of wsgi.xml [1]. That reduces server load, and with caching (via Myghty), there's really no issue for me. For more on WSGI middleware see [2]. [1] http://uche.ogbuji.net/tech/4suite/wsgixml/ [2] http://www.ibm.com/developerworks/library/wa-wsgi/ -- Uche Ogbuji Fourthought, Inc. http://uche.ogbuji.nethttp://fourthought.com http://copia.ogbuji.net http://4Suite.org Articles: http://uche.ogbuji.net/tech/publications/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Execute external code and get return value
Michele Petrazzo wrote: Following this link, here is my solution: code = def funct2Call(): return It work! object.method(funct2Call) class Object(object): def method(self, value): self._callable = value def __call__(self): return self._callable() # populate the namespace namespace = { object: Object() } # execute the code exec code in namespace namespace[object]() Just in case you didn't see it -- the following will work as well: code = def funct2Call(): return It work! namespace = {} exec code in namespace namespace[funct2Call]() Peter -- http://mail.python.org/mailman/listinfo/python-list
Re: windev vs python SOS
Re-Bonjour ! J'avais écrit, dans le message précédent, que la société PC-Soft avait eu des difficultés financières, il y a plusieurs années. Comme je n'ai pas eu l'occasion de vérifier cette information, (et à la demande de la société PC-Soft), je demande donc aux lecteurs de considérer cette information comme nulle. Concentrez-vous sur le reste du message. @-salutations Michel Claveau -- http://mail.python.org/mailman/listinfo/python-list
RE: windev vs python SOS
[Méta-MCI - translated for non-Francophones] | Re-Bonjour ! Hello again! | J'avais écrit, dans le message précédent, que la société | PC-Soft avait eu des difficultés financières, | il y a plusieurs années. I wrote in the last message that PC-Soft had had financial difficulties a few years ago. | Comme je n'ai pas eu l'occasion de vérifier cette | information, (et à la demande de la société PC-Soft), | je demande donc aux lecteurs de considérer | cette information comme nulle. As I have not had the opportunity to verify this information (and at the request of PC-Soft), I ask that reads consider this information null and void | Concentrez-vous sur le reste du message. Focus on the rest of the message. | @-salutations | | Michel Claveau TJG This e-mail has been scanned for all viruses by Star. The service is powered by MessageLabs. For more information on a proactive anti-virus service working around the clock, around the globe, visit: http://www.star.net.uk -- http://mail.python.org/mailman/listinfo/python-list
Re: Making sure script only runs once instance at a time.
Hari Sekhon [EMAIL PROTECTED] writes: Seeing as there doesn't seem to be a good answer to this (or at least not one that we have so far some up with) I have decided to fall back to my old friend the unix shell. It's as portable as python, but is very flexible and fast at doing real things and will tell me if another process by this name is running. If so, print msg and exit. simple. Huh? The obvious way to check for another instance is with a lock file. Just open the file and use fcntl to set an exclusive lock. If the lock acquisition fails, another instance has the file. -- http://mail.python.org/mailman/listinfo/python-list
Re: XSLT speed comparisons
Ross Ridge wrote: Damian wrote: It could just be that 4suite is slower than MSXML. If so, you can use MSXML in Python if you want. You'll need to install the Python for Windows extensions. Something like this: from os import environ import win32com.client def buildPage(): [SNIP] Added to: http://uche.ogbuji.net/tech/akara/nodes/2003-01-01/python-xslt -- Uche Ogbuji Fourthought, Inc. http://uche.ogbuji.nethttp://fourthought.com http://copia.ogbuji.net http://4Suite.org Articles: http://uche.ogbuji.net/tech/publications/ -- http://mail.python.org/mailman/listinfo/python-list
There's another Timbot on the loose!
http://web.cecs.pdx.edu/~mpj/timbot/index.html -- http://mail.python.org/mailman/listinfo/python-list
Re: There's another Timbot on the loose!
Paul Rubin http://[EMAIL PROTECTED] writes: http://web.cecs.pdx.edu/~mpj/timbot/index.html Should we tell them that we have the original and have a patent on him? :-) -- Jorge Godoy [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list
Re: Pysqlite tables in RAM
Ranjitha wrote: Hi all, I'm relatively new to python and am facing a problem with database access I want to store my data in a database on the disk. I also want to be able to reload the tables into the RAM whenever I have a lot of disk accesses and commit the changes back to the database. There is an option of storing the data in the RAM where you connect to :memory: instead of a DB file. The problem with this is that the data is lost everytime you close the connection to the database. Could somebody suggest a way to load the tables into the RAM as tables and not as some lists or dictionaries? As long as your data isn't too voluminous it's quite practical to read it from a SQLite database on disk into a SQLite database in memory, given the same table structures on each. But if the data isn't too voluminous then probably any halfway-reasonable database will also cache it effectively. So you may win less performance that you expect. regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://holdenweb.blogspot.com Recent Ramblings http://del.icio.us/steve.holden -- http://mail.python.org/mailman/listinfo/python-list
Re: preemptive OOP?
Steve Holden wrote: You're right, it *is* just a name change in the code, but if you *do* later want to specialise the notebook behaviour you can replace the assignment with a class definition without changing any of your other code. Oh! I wasn't quite thinking along those lines, but now it sounds good! :) -- http://mail.python.org/mailman/listinfo/python-list
Re: License / Registration key enabled software
Mike Playle wrote: Worry instead about the people who DON'T want to use it illegitimately. Can a license key scheme help them? That's help them as in we can help you to stay in our good books and avoid us dragging you through the courts, you bad people, I presume? Hardly a vendor-customer relationship I'd want to get into as the customer. I've had experience with both hardware protection schemes (unreliable) and floating licences (annoying, since users tend to drop anchor), and both schemes penalise the people who've paid for (or have been bought) software whilst supposedly inconveniencing those who will nevertheless have cracked the software within a short period of time before exchanging it with friends and strangers. So, the software will probably roam around of its own accord, anyway. Here, the moderating factor in propagation is (or should be amongst people with any degree of cautiousness) the lack of trust in the cracked product: what malware also gets installed along with the original software? Meanwhile, the big company scenario that advocates of restrictive technical licensing solutions like to mention actually suggests incompetence in the management of customer relations at such companies: you sell the big company five licences of your software because they tell you that's all they need, but you secretly suspect that everyone is using the software. But any interest in the number of people using the software is presumably driven by some per-seat pricing that could be totally inappropriate. Some desire to have a 1980s-style shrinkwrapped box retail price tag has constrained the business's ability to judge the value of the software on a case-by-case basis, which you'd want to do with important customers. The big company might not be an important customer as it turns out, but by focusing on the relationship itself, rather than auditing and threatening them, you might actually get a chance to find this out in a way which presents opportunities other than a face-off in court. Interestingly, the innovation in this area would seem to be happening either in companies offering dual-licensed solutions, where one of the licences is the GPL, or even in companies only offering GPL-licensed solutions but with paid support options available in addition. That's how stagnant the style of proprietary software business referred to here would appear to be with respect to business innovation these days. Paul -- http://mail.python.org/mailman/listinfo/python-list
Re: Making sure script only runs once instance at a time.
I'm not sure if that is a very old way of doing it, which is why I was reluctant to do it. My way actually uses the process list of the os (linux) and counts the number of instances. If it is more than 0 then another process is running and the script exits gracefully. Also, apart from the fact the using lockfiles feels a bit 1970s, I have found that in real usage of other programs within the company that use lockfiles, it sometimes causes a bit of troubleshooting time when it stops working due to a stale lockfile. This especially happens when the program is killed, the lockfile remains and causes minor annoyance (to somebody who knows that is, more annoyance to somebody who doesn't). -h Hari Sekhon Paul Rubin wrote: Hari Sekhon [EMAIL PROTECTED] writes: Seeing as there doesn't seem to be a good answer to this (or at least not one that we have so far some up with) I have decided to fall back to my old friend the unix shell. It's as portable as python, but is very flexible and fast at doing real things and will tell me if another process by this name is running. If so, print msg and exit. simple. Huh? The obvious way to check for another instance is with a lock file. Just open the file and use fcntl to set an exclusive lock. If the lock acquisition fails, another instance has the file. -- http://mail.python.org/mailman/listinfo/python-list
Re: sqlite3 error
John Machin wrote: The problems are (1) there are cultures that don't have the concept of a surname, and if they do, it may not be the last name (2) the name may consist of only one word (giving you problems with not null) or not even be a word. It gets better: Iceland: Jon Bjornsson and Hildur Bjornsdottir are the children of Bjorn Eiriksson etc. etc. Ok, you make me want to crawl under my desk and whimper until 5pm. :) Fortunately my program is just a test to give me something to do, and will only use the names of people already working here that happen to (for the most part) fit into my model (although they *are* all foreign, so it's good to keep these exceptions in mind.) And I guess it never hurts to consider these things for future expansion either. -- http://mail.python.org/mailman/listinfo/python-list
Re: Pysqlite tables in RAM
Ranjitha wrote: Hi all, I'm relatively new to python and am facing a problem with database access I want to store my data in a database on the disk. I also want to be able to reload the tables into the RAM whenever I have a lot of disk accesses and commit the changes back to the database. There is an option of storing the data in the RAM where you connect to :memory: instead of a DB file. The problem with this is that the data is lost everytime you close the connection to the database. Could somebody suggest a way to load the tables into the RAM as tables and not as some lists or dictionaries? Thanks, Simba Just a side note: judging from your subject line, are you using the pysqlite extension? In case you are, SQLite support comes with the standard library in 2.5 as sqlite3, in case you want to switch. -- http://mail.python.org/mailman/listinfo/python-list
Re: There's another Timbot on the loose!
Jorge Godoy wrote: Paul Rubin http://[EMAIL PROTECTED] writes: http://web.cecs.pdx.edu/~mpj/timbot/index.html Should we tell them that we have the original and have a patent on him? :-) -- Page last updated in 2002 ... site looks like the Marie Celeste. Perhaps our timbot undertook a preemptive strike on the would-be usurper :-) -- http://mail.python.org/mailman/listinfo/python-list
RE: Making sure script only runs once instance at a time.
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Hari SekhonSent: 29 September 2006 14:55To: python-list@python.orgSubject: Re: Making sure script only runs once instance at a time. I'm not sure if that is a very old way of doing it, which is why I was reluctant to do it. My way actually uses the process list of the os (linux) and counts the number of instances. If it is more than 0 then another process is running and the script exits gracefully.Also, apart from the fact the using lockfiles feels a bit 1970s, I have found that in real usage of other programs within the company that use lockfiles, it sometimes causes a bit of troubleshooting time when it stops working due to a stale lockfile. This especially happens when the program is killed, the lockfile remains and causes minor annoyance (to somebody who knows that is, more annoyance to somebody who doesn't). This email is confidential and may be privileged. If you are not the intended recipient please notify the sender immediately and delete the email from your computer. You should not copy the email, use it for any purpose or disclose its contents to any other person.Please note that any views or opinions presented in this email may be personal to the author and do not necessarily represent the views or opinions of Digica.It is the responsibility of the recipient to check this email for the presence of viruses. Digica accepts no liability for any damage caused by any virus transmitted by this email. UK: Phoenix House, Colliers Way, Nottingham, NG8 6AT UKReception Tel: + 44 (0) 115 977 1177Support Centre: 0845 607 7070Fax: + 44 (0) 115 977 7000http://www.digica.com SOUTH AFRICA: Building 3, Parc du Cap, Mispel Road, Bellville, 7535, South AfricaTel: + 27 (0) 21 957 4900Fax: + 27 (0) 21 948 3135http://www.digica.com This message has been scanned for viruses by BlackSpider in Partnership with Digica -- http://mail.python.org/mailman/listinfo/python-list
Re: File I/O
jimburton wrote: Diez B. Roggisch wrote: Kirt wrote: jimburton wrote: Kirt wrote: Hi! I need some help in file I/O I have an xml file.. [snip] See http://diveintopython.org/xml_processing/ i dont wanna parse the xml file.. If you play soccer, do you insist on playing with a baseball bat? I've been known to open a bottle of wine with a pencil. Works fine. Good to know that you can get drunk under any circumstances. I have seen a bazillion bad xml/html parsing-hacks using regexes and the like, which stopped working after somehow the xml came all in one line, or some other implicit assumption about its layout failed to be met. -- http://mail.python.org/mailman/listinfo/python-list
Re: Can string formatting be used to convert an integer to its binary form ?
On 2006-09-29, Steve Holden [EMAIL PROTECTED] wrote: MonkeeSage wrote: So far as unobfuscated versions go, how about the simple: def to_bin(x): out = [] while x 0: out.insert(0, str(x % 2)) x = x / 2 return ''.join(out) Regards, It was surprising that i = int(111010101, 2) is a one-way operation. s = str(i, 2) Traceback (most recent call last): File stdin, line 1, in ? TypeError: str() takes at most 1 argument (2 given) -- Neil Cerutti -- http://mail.python.org/mailman/listinfo/python-list
Problems wth os.stat().st_mtime on Mac
The Python 2.5 News at http://www.python.org/download/releases/2.5/NEWS.txt states that Python 2.5 was changed to Use Win32 API to implement os.stat/fstat. As a result, subsecond timestamps are reported, the limit on path name lengths is removed, and stat reports WindowsError now (instead of OSError). Although not mentioned in the Python 2.5 News, apparently there was a similar change on Mac that I'm having some problems with. On the Mac, just as on Windows, os.stat().st_mtime now returns a float instead of an integer. My problem is that the decimal part of the float is inconsistent in two ways. 1) The more serious problem (for me), is that on two machines (PowerPC Mac Mini running Tiger and Intel Mac Mini running Tiger), the decimal part of the returned float always appears to be .0. On an iBook running Panther, however, the decimal part appears to be .0 for many files, but for other files it contains actual significant digits. For example: import os f = open(/tmp/tmp.tmp, w) f.close() print os.stat(/tmp/tmp.tmp).st_mtime #Both Mac Minis: 1159536137.0 #iBook: 1159536233.08 a) Why the difference between machines? Also, on the iBook, I created this listing: for x in os.listdir(/tmp): os.stat(os.path.join(/tmp, x)).st_mtime, x (1159466888.0, '502') (1159469259.0, '505') (1159472677.0, 'hsperfdata_build') (1159466868.0, 'mcx_compositor') (1159466908.0, 'SoftwareUpdateCheck.pkgcatalog') (1159532547.2405169, 'test.xxx') (1159536233.0794201, 'tmp.tmp') b) Why do most files on this machine have .0, while some (generally those I created myself using Python 2.5, I think) don't? 2) Even on the same machine, the results are different depending on how I access them. For example, after setting up as follows: strPath = /tmp/test.xxx f = open(strPath, w) f.close() I get the following output: os.stat(strPath) (33188, 1822331L, 234881030L, 1, 505, 0, 0L, 1159532547, 1159532547, 1159533628) #Note that the results are all integers, including mtime os.stat(strPath).st_mtime 1159532547.2405169 #The result has 7 decimal places I understand how the results can be different: the os.stat() function returns a posix.stat_result object, which gives back an integer value for the mtime if you call __str__ or __repr__, or if you iterate on it; and a float if you get the st_mtime attribute. But I would consider it a bug that the results are different: a float should be returned in either case. Mike -- http://mail.python.org/mailman/listinfo/python-list
Re: wxPython and threading issue
Well, the problem is that you can't simply kill a thread--it shares memory with other threads that it could be leaving in an inconsistent state. Imagine that it was, say, holding a lock when it was forceably killed. Now any other thread that tries to acquire that lock will block forever. You really do need the thread's cooperation so that it only exits when everything is in a kosher state. Can you dig into the incredibly long function and change it to do the flag-checking and exiting safely? I second the notion to consider using subprocesses instead of threads; that's almost always a good idea unless you're really sharing a lot of complex data structures. Hi, Thanks again for your replies. The way this was originally working was actually using a subprocess, however, the people who this program is for were having problems that when the application was closed, the subprocess was still around in the system, which was why they wanted the other module it is using to have a function it could call, rather then using popen on the main method. Also, the people who I am doing this for need something ASAP and for now are fine with the cancel button completely closing the entire program. Is there at least a nice way to do this? Thanks for all your replies,they've all been very helpful. -- http://mail.python.org/mailman/listinfo/python-list
Re: PATCH: Speed up direct string concatenation by 20+%!
Steve Holden wrote: you should diff your source against the current SVN repository and lodge that diff as a patch on SourceForge. Okay, I'll try to do that today. Your suggested bug isn't, I think a real bug in the current implementation because as I understand it Python strings do always include a trailing null byte to act as a terminator when the string is passed to C code in extensions. Ah! Excellent point. So the Python source tree *does* have an official position on what the first byte of a zero-length string should be. I'll fix my code so that is ensured. Nice idea, though. You might also see how it does on tasks like s = for i in range(10): s += a Sure. Here are the results, but with range (1000): Python 2.5 release: 31.0s Python 2.5 locally built: 30.7s Python 2.5 concat: 4.4s % Improvement: *697%*! Woah! Thanks for suggesting a benchmark where it really shines :) The real big win here is storing eight pointers per concatenation object. That means 1/8th as many objects created/destroyed. In testing your suggested benchmark, it overflowed the stack when freeing the concatenation tree. So I changed deallocation of string concatenation objects so it's iterative down the left-hand side like rendering; now it's happy again. Thanks again for suggesting the test. It would still blow up if you ran s = for i in range(1000): s = a + s because it's only clever about recursion down the left-hand side. So my advice is, don't. :) Also note that some optimisation has recently been performed on string concatenation, which I presume your code has already taken into account. Totally. I'm just glad there was something left for me to contribute! Rob Williscroft wrote: On the python 3k list there is a thread about stings becoming views, I think this is similar to what you are doing here. As I understand it, sort-of. Definitely moreso in my section on THE FUTURE--adding another subtype of string for slices which point into other strings. I believe views are more sophisticated however. Felipe Almeida Lessa wrote: What about a + b? Or a + b + c? Does it have a large overhead on small string concatenations? It's *slightly* slower for two: def addTwoThings(a, b): return a + b for i in range(1000): x = addTwoThings(aaa, bbb) Python 2.5 release: 6.219s Python 2.5 locally built: 6.219s Python 2.5 concat: 6.234s % improvement: -0.03% But starts paying off already, even with three: def addThreeThings(a, b, c): return a + b + c for i in range(1000): x = addThreeThings(aaa, bbb, ccc) Python 2.5 release: 7.9s Python 2.5 locally built: 7.7s Python 2.5 concat: 7.2s % improvement: 6.94% Note that I was lazy and only did one benchmark run apiece. Also, keep in mind that memory utilization will be a little higher with the string concatenation objects. Carl Friedrich Bolz wrote: Robin Becker wrote: wouldn't this approach apply to other additions eg list+list seq+seq etc etc. no, I think it depends on strings being immutable. Exactly. /larry/ -- http://mail.python.org/mailman/listinfo/python-list