Why Python.exe is breaking with memory dump??
Hi group i have created a simple .pyd using which i m able call C function from python code. There are around 6 such functions. 4 of them work great. But when i try to run other two python's exe breaks giving memory dump. Any pros or cons on what led to such a situation.. Is it a problem in my c code?? Thank you. -- http://mail.python.org/mailman/listinfo/python-list
HOW TO HANDLE POINTERS FROM NON-LOCAL HEAPS??
Hi group any idea on HOW TO HANDLE POINTERS FROM NON-LOCAL HEAPS?? Thank you -- http://mail.python.org/mailman/listinfo/python-list
how to deliver an application
hi i have written a program that takes in user input thru a gui and then does some calculations and then displays a result value.I have split the code into 3 parts 1.the gui code--mygui.py containing a class to handle all ui stuff 2.calculations.py (also has one class to do all processing) 3. documenthandler.py contains a class to deal with a specific type of document(say .doc , may be later i will add other document support here) i run my code by calling python mygui.py and this will call class from calculations.py to do the processing. calculations.py will in turn call the class and fns of documenthandler.py when needed currently i have put all three .py files in one folder and run the application.I would like to know if this can be packaged better? Finally how should i deliver the application? i would like to have both windows and unix users be able to use my app any advise most appreciated jim -- http://mail.python.org/mailman/listinfo/python-list
Re: Analyzing Python GC output - what is a cell, and what information is available about it.
John Nagle [EMAIL PROTECTED] wrote: I'm printing out each entry in gc.garbage after a garbage collection in DEBUG_LEAK mode, and I'm seeing many entries like cell at 0x00F7C170: function object at 0x00FDD6B0 That's the output of repr. Are cell objects created only from external C libraries, or can regular Python code generate them? Is there any way to find out what the 'function object' is from within Python? Cell objects are created whenever you have a function that references a variable in an outer scope. e.g. def outer(): x = 42 def inner(): return x return inner inner = outer() inner.func_closure[0] cell at 0x00C5D450: int object at 0x009657AC inner.func_closure[0].cell_contents 42 So in your case, cell.cell_contents.func_name might help. -- http://mail.python.org/mailman/listinfo/python-list
Re: HOW TO HANDLE POINTERS FROM NON-LOCAL HEAPS??
abhishek [EMAIL PROTECTED] wrote: Hi group any idea on HOW TO HANDLE POINTERS FROM NON-LOCAL HEAPS?? Yes, it indicates you haven't read http://catb.org/~esr/faqs/smart-questions.html -- http://mail.python.org/mailman/listinfo/python-list
module finalizer - is there such a beast?
Hi, when a module gets imported the statements not contained in function definitions or classes are executed. This can be thought of an initializer for the module. But how can I get control when the module gets unloaded either by Python's gc, Python's exit or by a module reload. Many thanks for a hint, Helmut Jarausch Lehrstuhl fuer Numerische Mathematik RWTH - Aachen University D 52056 Aachen, Germany -- http://mail.python.org/mailman/listinfo/python-list
Re: HOW TO HANDLE POINTERS FROM NON-LOCAL HEAPS??
abhishek wrote: Hi group any idea on HOW TO HANDLE POINTERS FROM NON-LOCAL HEAPS?? Thank you POINTERS? Heaps? Huh? Ummm, let me think -- those terms *do* sound vaguely familiar -- from sometime in the deep dark primitive past. Perhaps from back in my (shudder) C/C++ days -- ya, that's it. Thankfully, this is Python and the modern era -- we don't use no stinking POINTERS here. Seriously, this group deals with Python. There are no pointers in Python. Now please, what did you *really* mean to ask? Gary Herron -- http://mail.python.org/mailman/listinfo/python-list
python recursive function
here is what I have to do: This question involves a game with teddy bears. The game starts when I give you some bears. You then start giving me back some bears, but you must follow these rules (where n is the number of bears that you have): If n is even, then you may give back exactly n/2 bears. (Hint: To test whether n is even, use the expression ((n % 2) == 0).) If n is divisible by 3 or 4, then you may multiply the last two digits of n and give back this many bears. (By the way, the last digit of n is n%10, and the next-to-last digit is (n%100)/10; this rule may not be used if either of the last two digits is 0.) If n is divisible by 5, then you may give back exactly 42 bears. The goal of the game for you is to end up with EXACTLY 42 bears. For example, suppose that you start with 250 bears. Then you could make these moves: Start with 250 bears. Since 250 is divisible by 5, you may return 42 of the bears, leaving you with 208 bears. Since 208 is even, you may return half of the bears, leaving you with 104 bears. Since 104 is even, you may return half of the bears, leaving you with 52 bears. Since 52 is divisible by 4, you may multiply the last two digits (resulting in 10) and return these 10 bears. This leaves you with 42 bears. You have reached the goal! Now, you are to write a program that, if I give you n bears, returns true if it is at all possible for you to win the game. Your program must use recursion to check all possible ways in which you can apply the rules. Usage: bears(42) True bears(250) True bears(50) False bears(84) True bears(41) False As you see my program must use recursion. I came up with this idea but I am not sure if its right or are there any minor errors that I can easily fix: def bears (n): if n==42: return True if n%5==0: bears(n-42) if n%2==0: bears(n/2) if n%3==0 or n%4==0: one = (n%10) two = ((n%100)/10) if one!=0 and two!=0: bears(n-(one*two)) return False If a game hits 42 it should return True, otherwise False. If program never hits 42 and return True, then it returns False. I figured out base case, but I still get False when I enter bears(250). Any help would be very appreciated! -- http://mail.python.org/mailman/listinfo/python-list
Re: python recursive function
Tom_chicollegeboy a écrit : (snip) As you see my program must use recursion. It's conceptually easier to express using recursions - but every recursion-based algorithm can be rewritten to use iteration (and vice-versa). I came up with this idea but I am not sure if its right or are there any minor errors that I can easily fix: def bears (n): if n==42: return True if n%5==0: bears(n-42) You want: return bears(n - 42) if n%2==0: bears(n/2) idem if n%3==0 or n%4==0: one = (n%10) two = ((n%100)/10) if one!=0 and two!=0: bears(n-(one*two)) idem return False -- http://mail.python.org/mailman/listinfo/python-list
Re: python recursive function
Tom_chicollegeboy wrote: here is what I have to do: This question involves a game with teddy bears. The game starts when I give you some bears. You then start giving me back some bears, but you must follow these rules (where n is the number of bears that you have): This sounds very much like a homework assignment, and so should probably not be answered here. (Neither should it have been asked here.) If, in your attempt to write this program, you have some questions about Python, then I encourage to ask those questions here. Gary Herron If n is even, then you may give back exactly n/2 bears. (Hint: To test whether n is even, use the expression ((n % 2) == 0).) If n is divisible by 3 or 4, then you may multiply the last two digits of n and give back this many bears. (By the way, the last digit of n is n%10, and the next-to-last digit is (n%100)/10; this rule may not be used if either of the last two digits is 0.) If n is divisible by 5, then you may give back exactly 42 bears. The goal of the game for you is to end up with EXACTLY 42 bears. For example, suppose that you start with 250 bears. Then you could make these moves: Start with 250 bears. Since 250 is divisible by 5, you may return 42 of the bears, leaving you with 208 bears. Since 208 is even, you may return half of the bears, leaving you with 104 bears. Since 104 is even, you may return half of the bears, leaving you with 52 bears. Since 52 is divisible by 4, you may multiply the last two digits (resulting in 10) and return these 10 bears. This leaves you with 42 bears. You have reached the goal! Now, you are to write a program that, if I give you n bears, returns true if it is at all possible for you to win the game. Your program must use recursion to check all possible ways in which you can apply the rules. Usage: bears(42) True bears(250) True bears(50) False bears(84) True bears(41) False As you see my program must use recursion. I came up with this idea but I am not sure if its right or are there any minor errors that I can easily fix: def bears (n): if n==42: return True if n%5==0: bears(n-42) if n%2==0: bears(n/2) if n%3==0 or n%4==0: one = (n%10) two = ((n%100)/10) if one!=0 and two!=0: bears(n-(one*two)) return False If a game hits 42 it should return True, otherwise False. If program never hits 42 and return True, then it returns False. I figured out base case, but I still get False when I enter bears(250). Any help would be very appreciated! -- http://mail.python.org/mailman/listinfo/python-list
Re: improving performance of python webserver running python scripts in cgi-bin
Dale a écrit : I am using a simple python webserver (see code below) to serve up python scripts located in my cgi-bin directory. import BaseHTTPServer import CGIHTTPServer class Handler(CGIHTTPServer.CGIHTTPRequestHandler): cgi_directories = ['/cgi-bin'] httpd = BaseHTTPServer.HTTPServer(('',8000), Handler) httpd.serve_forever() This works fine, but now I would like to combine the python scripts into the server program to eliminate starting the python interpreter on each script call. I am new to python, and was wondering if there is a better techique that will be faster. Also, can someone reccommend an alternative approach to httpd.serve_forever(). I would like to perform other python functions (read a serial port, write to an Ethernet port, write to a file, etc.) inside the web server program above. Is there an example of how to modify the code for an event loop style of operation where the program mostly performs my python I/O functions until an HTTP request comes in, and then it breaks out of the I/O operations to handle the HTTP request. May I suggest that you take a look at more sophisticated solutions, like either wsgi, CherryPy or Twisted ? -- http://mail.python.org/mailman/listinfo/python-list
Re: python recursive function
On Jan 11, 9:46 am, Gary Herron [EMAIL PROTECTED] wrote: Tom_chicollegeboy wrote: here is what I have to do: This question involves a game with teddy bears. The game starts when I give you some bears. You then start giving me back some bears, but you must follow these rules (where n is the number of bears that you have): This sounds very much like a homework assignment, and so should probably not be answered here. (Neither should it have been asked here.) If, in your attempt to write this program, you have some questions about Python, then I encourage to ask those questions here. Gary Herron If n is even, then you may give back exactly n/2 bears. (Hint: To test whether n is even, use the expression ((n % 2) == 0).) If n is divisible by 3 or 4, then you may multiply the last two digits of n and give back this many bears. (By the way, the last digit of n is n%10, and the next-to-last digit is (n%100)/10; this rule may not be used if either of the last two digits is 0.) If n is divisible by 5, then you may give back exactly 42 bears. The goal of the game for you is to end up with EXACTLY 42 bears. For example, suppose that you start with 250 bears. Then you could make these moves: Start with 250 bears. Since 250 is divisible by 5, you may return 42 of the bears, leaving you with 208 bears. Since 208 is even, you may return half of the bears, leaving you with 104 bears. Since 104 is even, you may return half of the bears, leaving you with 52 bears. Since 52 is divisible by 4, you may multiply the last two digits (resulting in 10) and return these 10 bears. This leaves you with 42 bears. You have reached the goal! Now, you are to write a program that, if I give you n bears, returns true if it is at all possible for you to win the game. Your program must use recursion to check all possible ways in which you can apply the rules. Usage: bears(42) True bears(250) True bears(50) False bears(84) True bears(41) False As you see my program must use recursion. I came up with this idea but I am not sure if its right or are there any minor errors that I can easily fix: def bears (n): if n==42: return True if n%5==0: bears(n-42) if n%2==0: bears(n/2) if n%3==0 or n%4==0: one = (n%10) two = ((n%100)/10) if one!=0 and two!=0: bears(n-(one*two)) return False If a game hits 42 it should return True, otherwise False. If program never hits 42 and return True, then it returns False. I figured out base case, but I still get False when I enter bears(250). Any help would be very appreciated! Note that for ; if one!=0 and two!=0: you can use if one and two: which is my pythonic. Also in your example with 52, shouldn't it divide by even first? Obviously this must not happen, thus maybe you should run a check that when you are returning a new value it does not go below 42? Frankly this looks like a terrible way to use recursion. -- http://mail.python.org/mailman/listinfo/python-list
How to POST call and retrieve result page
Hi all i want to access a web page through python script, fillup the necessary fields, and press submit button (which does POST call) and retrieve the result page and retrieve some values from it. Here is the script i have written till now. import urllib2 # create array of name/value pairs self.params = urllib.urlencode({'seqname': 'BioSequence', 'sequence': 'ATACATTATCCAAACATAGCATGGCTT'}) # send http-post request = urllib.urlopen(http://www.hydrazome.metazome.net/search.php;, params) # read back each line of reply line = request.read() print line This script fills up the correct values in the search.php page.But i am not sure if it is doing the POST (submit call). Beacause in 'line' varialble, i am getting the search.php page.Not the result page which is blast_results.php. How to retrieve the result page? Thanks Suyash -- http://mail.python.org/mailman/listinfo/python-list
Re: Python too slow?
Ross Ridge a écrit : Bruno Desthuilliers [EMAIL PROTECTED] wrote: And the reference implementation of Python (CPython) is not interpreted, it's compiled to byte-code, which is then executed by a VM (just like Java). Ed Jensen a écrit : Wow, this is pretty misleading. Bruno Desthuilliers [EMAIL PROTECTED] wrote: Ho yes ??? Why so, please ? Care to point to anything *wrong* in the above statement ? Python's byte-code interpreter is not just like Java's virtual machine. of course it's not just like - different languages, different byte-codes, different implementations. What is just like is the byte-code/VM scheme. Thought this was obvious to anyone able to parse a simple sentence. You're deliberately trying to mislead people into thinking Python performs similarily to Java. I don't know what you're smoking, but you should perhaps stop - because this seems to drive you into paranoïd delirium. -- http://mail.python.org/mailman/listinfo/python-list
Re: Python too slow?
Fredrik Lundh a écrit : A.T.Hofkamp wrote: Now the question you need to answer for yourself, is how much more worth is your own time compared to the gain in CPU time. If you think they are equal (ie the problem as a whole should be solved as fast as possible, thus the sum of development time + execution time should be as short as possible), you can spend an additional 1.5 seconds development in the alternative solution. so you only run your programs once? Lol !-) -- http://mail.python.org/mailman/listinfo/python-list
Re: python recursive function
On Jan 11, 10:30 am, Tom_chicollegeboy [EMAIL PROTECTED] wrote: here is what I have to do: This question involves a game with teddy bears. The game starts when I give you some bears. You then start giving me back some bears, but you must follow these rules (where n is the number of bears that you have): If n is even, then you may give back exactly n/2 bears. (Hint: To test whether n is even, use the expression ((n % 2) == 0).) If n is divisible by 3 or 4, then you may multiply the last two digits of n and give back this many bears. (By the way, the last digit of n is n%10, and the next-to-last digit is (n%100)/10; this rule may not be used if either of the last two digits is 0.) If n is divisible by 5, then you may give back exactly 42 bears. The goal of the game for you is to end up with EXACTLY 42 bears. For example, suppose that you start with 250 bears. Then you could make these moves: Start with 250 bears. Since 250 is divisible by 5, you may return 42 of the bears, leaving you with 208 bears. Since 208 is even, you may return half of the bears, leaving you with 104 bears. Since 104 is even, you may return half of the bears, leaving you with 52 bears. Since 52 is divisible by 4, you may multiply the last two digits (resulting in 10) and return these 10 bears. This leaves you with 42 bears. You have reached the goal! Now, you are to write a program that, if I give you n bears, returns true if it is at all possible for you to win the game. Your program must use recursion to check all possible ways in which you can apply the rules. Usage: bears(42) True bears(250) True bears(50) False bears(84) True bears(41) False As you see my program must use recursion. I came up with this idea but I am not sure if its right or are there any minor errors that I can easily fix: def bears (n): if n==42: return True if n%5==0: bears(n-42) if n%2==0: bears(n/2) if n%3==0 or n%4==0: one = (n%10) two = ((n%100)/10) if one!=0 and two!=0: bears(n-(one*two)) return False If a game hits 42 it should return True, otherwise False. If program never hits 42 and return True, then it returns False. I figured out base case, but I still get False when I enter bears(250). Any help would be very appreciated! Stylistically I prefer 'if not n % 5', looks neater. As for your assignment, the hardest task will be creating an effective method of ensuring you recurse through all possibilities. ie. do you brute force on every step, or when getting to step do you fork your possibilities. That is more a design question rather than a python one though. -- http://mail.python.org/mailman/listinfo/python-list
Re: python recursive function
Bruno Desthuilliers [EMAIL PROTECTED] wrote: You want: return bears(n - 42) Actually, no he doesn't. He needs to explore all options when the first attempt fails. But I'm not going to write his homework for him. -- http://mail.python.org/mailman/listinfo/python-list
Re: Python too slow?
George Sakkis a écrit : On Jan 10, 3:37 am, Bruno Desthuilliers wrote: I fail to see how the existence of JIT compilers in some Java VM changes anything to the fact that both Java (by language specification) and CPython use the byte-code/VM scheme. Because these some Java VMs with JIT compilers are the de facto standard used by millions; Repeating an argument doesn't make it more true nor more relevant. Once again, this doesn't change anything to the fact exposed above. the spec is pretty much irrelevant I mentionned this because this kind of choice is usually not part of the language spec but of a specific implementation. Java is AFAIK the only language where this implementation stuff is part of the spec. (unless you're a compiler writer or language theorist). I thought it was quite clear and obvious that I was talking about points relating to these fields. George -- http://mail.python.org/mailman/listinfo/python-list
Re: python recursive function
Stylistically I prefer 'if not n % 5', looks neater. As for your assignment, the hardest task will be creating an effective method of ensuring you recurse through all possibilities. I was chatting to a friend about the 'if not n % 5' and while I am happy to use it saying that when 5 % 5 is False because it returns 0...for this case just feels wrong to me. I understand the reason to keep it this way...but still...having to use not all the time is just annoying. -- http://mail.python.org/mailman/listinfo/python-list
Re: Python too slow?
Ed Jensen a écrit : Fredrik Lundh [EMAIL PROTECTED] wrote: oh, please. it was perfectly clear for anyone with the slightest clue what Bruno was talking about (especially if they'd read the post he was replying to), so the only question that remains is why you didn't understand it. If you have something substantive to add to the discussion, by all means, do so. But please, keep your childish and insulting comments to yourself. I don't think you're going to make you some friends here insulting Fredrik. I don't know who Ed Jensen is, but we are quite a lot here to know and respect Mr Lundh for his contributions to Python as both a language and a community. -- http://mail.python.org/mailman/listinfo/python-list
Re: python recursive function
Gary Herron a écrit : Tom_chicollegeboy wrote: here is what I have to do: This question involves a game with teddy bears. The game starts when I give you some bears. You then start giving me back some bears, but you must follow these rules (where n is the number of bears that you have): This sounds very much like a homework assignment, Indeed. and so should probably not be answered here. (Neither should it have been asked here.) If, in your attempt to write this program, you have some questions about Python, then I encourage to ask those questions here. Garry, you should have read the whole post before answering. The OP's attempt at solving the problem was below, along with the question. (snip) -- http://mail.python.org/mailman/listinfo/python-list
Help with Scons
Can anybody tell how I could go about running python scripts with scons. -- http://mail.python.org/mailman/listinfo/python-list
help for installing PIL
I'm using Window XP. How to install PIL 1.1.6? The Python i installed, is come with Plone. So, is it ok? Thank you. Regards, Chan Kuang Lim - Looking for last minute shopping deals? Find them fast with Yahoo! Search.-- http://mail.python.org/mailman/listinfo/python-list
Re: what does **kw mean?
[EMAIL PROTECTED] a écrit : I've been reading the following example, and couldn't figure out, what **kw mean. (It's an empty dictionary, but what's the semantics): Keyword varargs. And FWIW, *args is for positional varargs. -- http://mail.python.org/mailman/listinfo/python-list
Re: what does **kw mean?
On Jan 11, 4:38 pm, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote: I've been reading the following example, and couldn't figure out, what **kw mean. (It's an empty dictionary, but what's the semantics): It's a keyword argument. It's some kind of repository for arguments that aren't recognized. If you have function like this: def func(a, *args, *kw): print a print args print kw and you call the functin like this: func('value A', 'value B', 'value C', argumentA = 'value D', argumentB = 'value D') the extra arguments would normally raise an error, but with the * and **, Python would: - assign 'value B' and 'value C' to args - assign 'argumentA':'value D' and 'argumentB':'value E' to kw so if you run the function, it will output: value A ('value B', 'value C') {'argumentB': 'value E', 'argumentA': 'value D'} this args and kw can be accessed like a tuple and dictionary respectively See '4.7.2 Keyword Arguments' and '4.7.3 Arbitrary Argument Lists' on Python Help File -- http://mail.python.org/mailman/listinfo/python-list
Re: Why Python.exe is breaking with memory dump??
abhishek wrote: Hi group i have created a simple .pyd using which i m able call C function from python code. There are around 6 such functions. 4 of them work great. But when i try to run other two python's exe breaks giving memory dump. Any pros or cons on what led to such a situation.. Is it a problem in my c code?? yes. check for reference counting errors, plus the usual C stuff: memory allocation errors, memory overwrites, bogus pointers, etc. /F -- http://mail.python.org/mailman/listinfo/python-list
Re: help for installing PIL
Chan Kuang Lim wrote: I'm using Window XP. How to install PIL 1.1.6? The Python i installed, is come with Plone. So, is it ok? Thank you. Just run the appropriate installer for your Python version: http://www.pythonware.com/products/pil as the page says, If the Windows installer cannot find a Python interpreter, you may have to register your interpreter, and links to this page: http://effbot.org/zone/python-register.htm /F -- http://mail.python.org/mailman/listinfo/python-list
Re: Property with Arguments
Lie wrote: Is there a way to create a property with arguments? That's called method in Python, and has it's own syntax. You cannot assign to methods. Or an index value like a list? Make the property that returns a list-like object (hooking __getitem__, __setitem__, etc). /F -- http://mail.python.org/mailman/listinfo/python-list
Re: adding methods at runtime
[EMAIL PROTECTED] a écrit : Can I access the class attributes from a method added at runtime? Of course. (My experience says no.) So there's something wrong with your experience !-) I experimented with the following code: class myclass(object): myattr = myattr instance = myclass() def method(x): print x instance.method = method As Marc pointed out, you're not adding a method but a function. What you want is: def method(self, x): print x : %s - myattr : %s % (x, self.myattr) import new instance.method = new.instancemethod(method, instance, myclass) Note that this is only needed for per-instance methods - if you want to add a new method for all instances, you just set the function as attribute of the class. The lookup mechanism will then invoke the descriptor protocol on the function object, which will return a method (FWIW, you have to do it manually on per-instance methods because the descriptor protocol is not invoked on instance attributes, only on class attributes). HTH -- http://mail.python.org/mailman/listinfo/python-list
Re: python recursive function
Duncan Booth a écrit : Bruno Desthuilliers [EMAIL PROTECTED] wrote: You want: return bears(n - 42) Actually, no he doesn't. He needs to explore all options when the first attempt fails. Possibly - I didn't bother checking the algorithm correctness, just pointed out an obvious newbie programming error. But I'm not going to write his homework for him. Nor do I. -- http://mail.python.org/mailman/listinfo/python-list
Re: Embedding python code into text document question.
Thanks guys, you've helped me very much :) Cheers happy new year! -- http://mail.python.org/mailman/listinfo/python-list
Re: urllib2 rate limiting
Dimitrios Apostolou [EMAIL PROTECTED] wrote: I want to limit the download speed when using urllib2. In particular, having several parallel downloads, I want to make sure that their total speed doesn't exceed a maximum value. I can't find a simple way to achieve this. After researching a can try some things but I'm stuck on the details: 1) Can I overload some method in _socket.py to achieve this, and perhaps make this generic enough to work even with other libraries than urllib2? 2) There is the urllib.urlretrieve() function which accepts a reporthook parameter. Here is an implementation based on that idea. I've used urllib rather than urllib2 as that is what I'm familiar with. #!/usr/bin/python Fetch a url rate limited Syntax: rate URL local_file_name import os import sys import urllib from time import time, sleep class RateLimit(object): Rate limit a url fetch def __init__(self, rate_limit): rate limit in kBytes / second self.rate_limit = rate_limit self.start = time() def __call__(self, block_count, block_size, total_size): total_kb = total_size / 1024 downloaded_kb = (block_count * block_size) / 1024 elapsed_time = time() - self.start if elapsed_time != 0: rate = downloaded_kb / elapsed_time print %d kb of %d kb downloaded %f.1 kBytes/s\n % (downloaded_kb ,total_kb, rate), expected_time = downloaded_kb / self.rate_limit sleep_time = expected_time - elapsed_time print Sleep for, sleep_time if sleep_time 0: sleep(sleep_time) def main(): Fetch the contents of urls if len(sys.argv) != 4: print 'Syntax: %s rate in kBytes/s URL local output path' % sys.argv[0] raise SystemExit(1) rate_limit, url, out_path = sys.argv[1:] rate_limit = float(rate_limit) print Fetching %r to %r with rate limit %.1f % (url, out_path, rate_limit) urllib.urlretrieve(url, out_path, reporthook=RateLimit(rate_limit)) if __name__ == __main__: main() Use it like this $ ./rate-limited-fetch.py 16 http://some/url/or/other z Fetching 'http://some/url/or/other' to 'z' with rate limit 16.0 0 kb of 10118 kb downloaded 0.00.1 kBytes/s Sleep for -0.0477550029755 8 kb of 10118 kb downloaded 142.073242.1 kBytes/s Sleep for 0.443691015244 16 kb of 10118 kb downloaded 32.130966.1 kBytes/s Sleep for 0.502038002014 24 kb of 10118 kb downloaded 23.952789.1 kBytes/s Sleep for 0.498028993607 32 kb of 10118 kb downloaded 21.304672.1 kBytes/s Sleep for 0.497982025146 40 kb of 10118 kb downloaded 19.979510.1 kBytes/s Sleep for 0.497948884964 48 kb of 10118 kb downloaded 19.184721.1 kBytes/s Sleep for 0.498008966446 ... 1416 kb of 10118 kb downloaded 16.090774.1 kBytes/s Sleep for 0.499262094498 1424 kb of 10118 kb downloaded 16.090267.1 kBytes/s Sleep for 0.499293088913 1432 kb of 10118 kb downloaded 16.089760.1 kBytes/s Sleep for 0.499292135239 1440 kb of 10118 kb downloaded 16.089254.1 kBytes/s Sleep for 0.499267101288 ... -- Nick Craig-Wood [EMAIL PROTECTED] -- http://www.craig-wood.com/nick -- http://mail.python.org/mailman/listinfo/python-list
Re: alternating string replace
evenOrOdd = True s1, s2 = hi_cat_bye_dog_foo_bar_red, for i in s1: if i == '_': s2 += ':' if evenOrOdd else ',' evenOrOdd = not evenOrOdd else: s2 += i print s2 Presently I cannot work out how to use .join instead of += ... While I realise this is producing a new string (and I believe += rebuilds it a lot?) how much slower is this going to be over the others? -- http://mail.python.org/mailman/listinfo/python-list
what does **kw mean?
I've been reading the following example, and couldn't figure out, what **kw mean. (It's an empty dictionary, but what's the semantics): def wrap(method): def wrapped(self, *args, **kw): print begin method(self, *args, **kw) print end return wrapped class Test(object): def method(self, name): print method(%r) % name t = Test() t.method(pure) Test.method = wrap(Test.method) t.method(wrapped) -- http://mail.python.org/mailman/listinfo/python-list
encrypting python modules
Hello, this question has come by repeatedly in several guises over the past years but has never been solved in this forum as far as I have been able to Google. However since so many people are asking the question, I hope someone has made a solution and is willing to share it. The problem: I have a client-server app written in python. I want to make sure that the client is not: 1) destabilized by users accidentally or on purpose dropping python files in the path (after which calling the helpdesk will not be useful) 2) extended with new features without me knowing about it (again resulting in calls to my helpdesk...) 3) trivially decompiled. Added issue, I want the client to be able to update itself when I have fixed bugs or created new functionality. I know that I can not stop a dedicated hacker deconstructing my code. Since all clients need to go through the server I am not afraid of freeloaders. I am now considering overriding import with some code that will only import modules signed and crypted by me. However I can not imagine that I would be the first one planning to do this. So is there a solution like this available somewhere? Paul Sijben -- http://mail.python.org/mailman/listinfo/python-list
Re: what does **kw mean?
Does this help? def foobar(first_name,last_name, *args, **kwargs): print first_name print last_name print Tuple:,args print Dict:,kwargs x = has y = demonstrated foobar('Shane','Geiger', x, y, adjective='useful', thing='PYTHON trick known as extended call syntax', adverb='wonderfully') [EMAIL PROTECTED] wrote: I've been reading the following example, and couldn't figure out, what **kw mean. (It's an empty dictionary, but what's the semantics): def wrap(method): def wrapped(self, *args, **kw): print begin method(self, *args, **kw) print end return wrapped class Test(object): def method(self, name): print method(%r) % name t = Test() t.method(pure) Test.method = wrap(Test.method) t.method(wrapped) -- Shane Geiger IT Director National Council on Economic Education [EMAIL PROTECTED] | 402-438-8958 | http://www.ncee.net Leading the Campaign for Economic and Financial Literacy -- http://mail.python.org/mailman/listinfo/python-list
Re: Strange problem: MySQL and python logging using two separate cursors
On Wednesday 09 January 2008 18:52:02 Dennis Lee Bieber wrote: On Wed, 9 Jan 2008 10:11:09 +0100, Frank Aune [EMAIL PROTECTED] declaimed the following in comp.lang.python: The only clue I have so far, is that the cursor in task 1 seems to be unable to register any new entries in the log table produced by task 2 as soon as task 1 perform an SQL query of some kind. How often do you issue a commit? I experience the behaviour for task 1 even if the select query only reads out data and no commit is needed. Do I really need to perform commits on a handler even though it only reads out data? From a MySQL shell I can see the changes from the other handler without the commits, but afaics that shouldnt be the case if the above were true. Thanks, Frank -- http://mail.python.org/mailman/listinfo/python-list
Re: python recursive function
def bears (n): if n==42: return True if n%5==0: bears(n-42) if n%2==0: bears(n/2) if n%3==0 or n%4==0: one = (n%10) two = ((n%100)/10) if one!=0 and two!=0: bears(n-(one*two)) return False If a game hits 42 it should return True, otherwise False. If program never hits 42 and return True, then it returns False. I figured out base case, but I still get False when I enter bears(250). Any help would be very appreciated! try this: def bears (n): if n==42: return True if n%5==0: if bears(n-42): return True if n%2==0: if bears(n/2): return True if n%3==0 or n%4==0: one = (n%10) two = ((n%100)/10) if one!=0 and two!=0: if bears(n-(one*two)): return True return False print bears(42) print bears(250) print bears(50) print bears(84) print bears(41) -- http://mail.python.org/mailman/listinfo/python-list
Re: alternating string replace
On Jan 9, 12:34 pm, cesco [EMAIL PROTECTED] wrote: Hi, say I have a string like the following: s1 = 'hi_cat_bye_dog' and I want to replace the even '_' with ':' and the odd '_' with ',' so that I get a new string like the following: s2 = 'hi:cat,bye:dog' Is there a common recipe to accomplish that? I can't come up with any solution... Thanks in advance Cesco A simple list comprehension is all that is needed. input_string = 'hi_cat_bye_dog'.split('_') output_string = ','.join([':'.join(input_string[i:i+2]) for i in xrange(0,len(input_string),2)]) -- http://mail.python.org/mailman/listinfo/python-list
Re: adding methods at runtime
On Jan 11, 10:44 am, Marc 'BlackJack' Rintsch [EMAIL PROTECTED] wrote: On Thu, 10 Jan 2008 14:55:18 -0800, [EMAIL PROTECTED] wrote: Can I access the class attributes from a method added at runtime? (My experience says no.) I experimented with the following code: [Code snipped] So it seems to me, if you add a method to an instance, the method will not get self as parameter. You are not adding a method but a function. Take a look at `types.MethodType()` to create a method from a function, instance, and class. Just in case gentle readers are wondering where to find the docs for types.MethodType, here's a hint: import types, new; types.MethodType is new.instancemethod True -- http://mail.python.org/mailman/listinfo/python-list
Re: Learning Python via a little word frequency program
import collections names = freddy fred bill jock kevin andrew kevin kevin jock freq = collections.defaultdict(int) for name in names.split(): freq[name] += 1 keys = freq.keys() keys.sort(key = freq.get, reverse = True) for k in keys: print %-10s: %d % (k, freq[k]) On Jan 9, 6:58 pm, Andrew Savige [EMAIL PROTECTED] wrote: I'm learning Python by reading David Beazley's Python Essential Reference book and writing a few toy programs. To get a feel for hashes and sorting, I set myself this little problem today (not homework, BTW): Given a string containing a space-separated list of names: names = freddy fred bill jock kevin andrew kevin kevin jock produce a frequency table of names, sorted descending by frequency. then ascending by name. For the above data, the output should be: kevin : 3 jock : 2 andrew: 1 bill : 1 fred : 1 freddy: 1 Here's my first attempt: names = freddy fred bill jock kevin andrew kevin kevin jock freq = {} for name in names.split(): freq[name] = 1 + freq.get(name, 0) deco = zip([-x for x in freq.values()], freq.keys()) deco.sort() for v, k in deco: print %-10s: %d % (k, -v) I'm interested to learn how more experienced Python folks would solve this little problem. Though I've read about the DSU Python sorting idiom, I'm not sure I've strictly applied it above ... and the -x hack above to achieve a descending sort feels a bit odd to me, though I couldn't think of a better way to do it. I also have a few specific questions. Instead of: for name in names.split(): freq[name] = 1 + freq.get(name, 0) I might try: for name in names.split(): try: freq[name] += 1 except KeyError: freq[name] = 1 Which is preferred? Ditto for: deco = zip([-x for x in freq.values()], freq.keys()) versus: deco = zip(map(operator.neg, freq.values()), freq.keys()) Finally, I might replace: for v, k in deco: print %-10s: %d % (k, -v) with: print \n.join(%-10s: %d % (k, -v) for v, k in deco) Any feedback on good Python style, performance tips, good books to read, etc. is appreciated. Thanks, /-\ Make the switch to the world's best email. Get the new Yahoo!7 Mail now.www.yahoo7.com.au/worldsbestemail -- http://mail.python.org/mailman/listinfo/python-list
Re: alternating string replace
Dennis Lee Bieber: So� in Python, your str[n] := ':' just can not be done! You would have to create a new string containing everything in front of n, the ':', and then everything behind n (skipping n itself, of course). This is a painfully slow operation in Python as it allocates memory for the parts, allocates memory for the new combined string, and then garbage collects (potentially) the original string and parts. The recommended Python idiom is to break strings into a list of separate parts (str.split('_'), for example), manipulate those parts, and at the end of manipulation, rejoin them using some delimiter ( ,.join(partslist) ) An alternative solution, that's often good, expecially wity Psyco, is to use an: array.array(c, originalstring) and then mutate it, as you do with Pascal strings. Bye, bearophile -- http://mail.python.org/mailman/listinfo/python-list
Property with Arguments
Is there a way to create a property with arguments? Or an index value like a list? To be used in the form like: someClass.someProperty['arguments'] = 'some value' or someClass.someProperty('argument1', 'argument2') = 'some value' -- http://mail.python.org/mailman/listinfo/python-list
import gzip error (please help)
Dear all, Please help, i have error message when i import gzip module. The error like this below: bash-3.00$ python Python 2.5 (r25:51908, Sep 20 2006, 03:46:40) [GCC 3.4.6] on sunos5 Type help, copyright, credits or license for more information. import gzip Traceback (most recent call last): File stdin, line 1, in module File /usr/local/lib/python2.5/gzip.py, line 9, in module import zlib ImportError: ld.so.1: python: fatal: relocation error: file /usr/local/ lib/python2.5/lib-dynload/zlib.so: symbol inflateCopy: referenced symbol not found Thx u. Syahreza Octadian -- http://mail.python.org/mailman/listinfo/python-list
Re: module finalizer - is there such a beast?
You can execute cleanup code if the interpreter exits: http://docs.python.org/lib/module-atexit.html This will only cover the `Python's exit' part of your question, not the module reloading stuff. On the other hand, if you load a module you could set a global variable and check for it on reload... -- http://mail.python.org/mailman/listinfo/python-list
Re: Learning Python via a little word frequency program
rent [EMAIL PROTECTED] writes: keys = freq.keys() keys.sort(key = freq.get, reverse = True) for k in keys: print %-10s: %d % (k, freq[k]) I prefer (untested): def snd((x,y)): return y # I wish this was built-in sorted_freq = sorted(freq.iteritems(), key=snd, reverse=True) for k,f in sorted_freq: print %-10s: %d % (k, f) -- http://mail.python.org/mailman/listinfo/python-list
Re: loading a script from text data
Patrick Stinson wrote: Is it possible to load a script from it's text data, and not from a file? I'm writing a scripting engine and need to run the scripts right from the editor. look up the exec statement and, optionally, the compile function in the manual. /F -- http://mail.python.org/mailman/listinfo/python-list
Re: reading a specific column from file
On 2008-01-11, cesco [EMAIL PROTECTED] wrote: Hi, I have a file containing four columns of data separated by tabs (\t) and I'd like to read a specific column from it (say the third). Is there any simple way to do this in Python? I've found quite interesting the linecache module but unfortunately that is (to my knowledge) only working on lines, not columns. Any suggestion? the csv module may do what you want. -- http://mail.python.org/mailman/listinfo/python-list
Re: import gzip error (please help)
syahreza.octadian wrote: Please help, i have error message when i import gzip module. The error like this below: bash-3.00$ python Python 2.5 (r25:51908, Sep 20 2006, 03:46:40) [GCC 3.4.6] on sunos5 Type help, copyright, credits or license for more information. import gzip Traceback (most recent call last): File stdin, line 1, in module File /usr/local/lib/python2.5/gzip.py, line 9, in module import zlib ImportError: ld.so.1: python: fatal: relocation error: file /usr/local/ lib/python2.5/lib-dynload/zlib.so: symbol inflateCopy: referenced symbol not found the core zlib library (libz.so) isn't installed on your machine. /F -- http://mail.python.org/mailman/listinfo/python-list
Re: python recursive function
HYRY [EMAIL PROTECTED] wrote: def bears (n): if n==42: return True if n%5==0: if bears(n-42): return True if n%2==0: if bears(n/2): return True if n%3==0 or n%4==0: one = (n%10) two = ((n%100)/10) if one!=0 and two!=0: if bears(n-(one*two)): return True return False Almost but you missed a case... for i in range(100): ... try: ... print i, bears(i) ... except RuntimeError, e: ... print i, e ... 0 0 maximum recursion depth exceeded 1 False 2 False 3 False 4 False 5 False 6 False 7 False 8 False 9 False 10 10 maximum recursion depth exceeded 11 False 12 12 maximum recursion depth exceeded 113 False 14 False 15 15 maximum recursion depth exceeded 16 16 maximum recursion depth exceeded 17 False [snip] 89 False 90 90 maximum recursion depth exceeded 91 False 92 False 93 93 maximum recursion depth exceeded 94 False 95 False 96 96 maximum recursion depth exceeded 97 False 98 False 99 99 maximum recursion depth exceeded -- Nick Craig-Wood [EMAIL PROTECTED] -- http://www.craig-wood.com/nick -- http://mail.python.org/mailman/listinfo/python-list
Re: Converting a bidimensional list in a bidimensional array
- Speed Performance: Do you think that changing from list to Array() would improve speed? I'm going to do lots of tilemap[y][x] checks (I mean, player jumping around the screen, checking if it's falling over a non-zero tile, and so). First of all: if you have enough memory to use a python list, then I suggest you to use a list. Often python lists are faster than array.array (maybe because python lists actually contain pyobjects). My problem is that, in my game, each screen is 30x20, and I have about 100 screens, so my tilemap contains 32*20*100 = 6 python objects (integers). If each integer-python-object takes 16 bytes, this makes 6 * 16 = almost 1MB of memory just for the tilemaps... Using array of type H (16 bits per item = 2 bytes), my maps take just 6*2 = 120KB of memory. After that, I just will access tilemap data for reading (i.e. value = tilemap.GetTile(x,y)) ... Do you think I should still go with lists instead of an H-type array? -- http://mail.python.org/mailman/listinfo/python-list
Re: reading a specific column from file
On Jan 11, 2:15 pm, cesco [EMAIL PROTECTED] wrote: Hi, I have a file containing four columns of data separated by tabs (\t) and I'd like to read a specific column from it (say the third). Is there any simple way to do this in Python? I've found quite interesting the linecache module but unfortunately that is (to my knowledge) only working on lines, not columns. Any suggestion? Thanks and regards Francesco for (i, each_line) in enumerate(open('input_file.txt','rb')): try: column_3 = each_line.split('\t')[2].strip() except IndexError: print 'Not enough columns on line %i of file.' % (i+1) continue do_something_with_column_3() -- http://mail.python.org/mailman/listinfo/python-list
reading a specific column from file
Hi, I have a file containing four columns of data separated by tabs (\t) and I'd like to read a specific column from it (say the third). Is there any simple way to do this in Python? I've found quite interesting the linecache module but unfortunately that is (to my knowledge) only working on lines, not columns. Any suggestion? Thanks and regards Francesco -- http://mail.python.org/mailman/listinfo/python-list
Re: reading a specific column from file
A.T.Hofkamp wrote: On 2008-01-11, cesco [EMAIL PROTECTED] wrote: Hi, I have a file containing four columns of data separated by tabs (\t) and I'd like to read a specific column from it (say the third). Is there any simple way to do this in Python? I've found quite interesting the linecache module but unfortunately that is (to my knowledge) only working on lines, not columns. Any suggestion? the csv module may do what you want. Here's an example: print open(tmp.csv).read() alpha betagamma delta one two three for records = csv.reader(open(tmp.csv), delimiter=\t) [record[2] for record in records] ['gamma', 'three'] Peter -- http://mail.python.org/mailman/listinfo/python-list
Help with Windows build of Yapgvb Python extension
I'm the author of Yapgvb, a Python binding for Graphviz. Yapgvb enjoys modest success, but for some time it has been in dire need of a Python 2.5 build for Windows. I'm posting this message in the hopes of finding someone who is interested in making this build. This is a relatively quick task for someone who is comfortable with building C extensions and has an operational Windows build environment for Python 2.5 (which I don't). Alternately, it's a great way to learn about these things, and to get involved with a small open source project. Technologies used: graphviz distutils boost.python boost.graph See: http://yapgvb.sourceforge.net -- http://mail.python.org/mailman/listinfo/python-list
Re: Python too slow?
Bruno Desthuilliers [EMAIL PROTECTED] writes: fact 1: CPython compiles source code to byte-code. fact 2: CPython executes this byte-code. fact 3: Sun's JDK compiles source code to byte-code. fact 4: Sun's JDK executes this byte-code. Care to prove me wrong on any of these points ? Don't bother: you can't. Fact 4 is misleading because it is only one option available to Sun's JDK. Sun's JDK is also capable of transforming the byte-code to native code and letting the processor execute that instead of the original byte code, and that is where the most significant speed increase comes from. Most importantly, it does so automatically, by default, with no programmer intervention or configuration, and with 100% compatibility, so it doesn't compare well to Python accelerators like psyco. -- http://mail.python.org/mailman/listinfo/python-list
Re: Help needed
On Jan 10, 9:15 pm, tijo [EMAIL PROTECTED] wrote: Hi mate i need o do a python program to connect 2 systems using TCP/IP and UDP. Also i need to check the performance of these two protocols (how many bytes received and how much time took). I havent worked in python earlier and have no idea of this. Could someone pls help me. I created a program which can connect between 2 systems using these UDP and TCP/ IP protocols. I dont know how to check the rest like how many bytes send or how much time taken since this is part of my course work could someone please help me thanks in advance. tijo The standard library documentation, while lacking in some areas, is very much your friend here: From http://docs.python.org/lib/socket-objects.html (emphasis mine) send(string[, flags]) Send data to the socket. The socket must be connected to a remote socket. The optional flags argument has the same meaning as for recv() above. *Returns the number of bytes sent.* recv(bufsize[, flags]) Receive data from the socket. The return value is a string representing the data received. For timing you can probably use the timeit module (http:// docs.python.org/lib/module-timeit.html) but I'm not really sure how you're defining performance. I mean, I can already tell you that overall UDP will be faster, as it has much less overhead. Surely your course has covered this... Hyuga -- http://mail.python.org/mailman/listinfo/python-list
Re: python recursive function
On 11 Jan, 08:30, Tom_chicollegeboy [EMAIL PROTECTED] wrote: here is what I have to do: This question involves a game with teddy bears. The game starts when I give you some bears. You then start giving me back some bears, but you must follow these rules (where n is the number of bears that you have): If n is even, then you may give back exactly n/2 bears. (Hint: To test whether n is even, use the expression ((n % 2) == 0).) If n is divisible by 3 or 4, then you may multiply the last two digits of n and give back this many bears. (By the way, the last digit of n is n%10, and the next-to-last digit is (n%100)/10; this rule may not be used if either of the last two digits is 0.) If n is divisible by 5, then you may give back exactly 42 bears. The goal of the game for you is to end up with EXACTLY 42 bears. For example, suppose that you start with 250 bears. Then you could make these moves: Start with 250 bears. Since 250 is divisible by 5, you may return 42 of the bears, leaving you with 208 bears. Since 208 is even, you may return half of the bears, leaving you with 104 bears. Since 104 is even, you may return half of the bears, leaving you with 52 bears. Since 52 is divisible by 4, you may multiply the last two digits (resulting in 10) and return these 10 bears. This leaves you with 42 bears. You have reached the goal! Now, you are to write a program that, if I give you n bears, returns true if it is at all possible for you to win the game. Your program must use recursion to check all possible ways in which you can apply the rules. Usage: bears(42) True bears(250) True bears(50) False bears(84) True bears(41) False As you see my program must use recursion. I came up with this idea but I am not sure if its right or are there any minor errors that I can easily fix: def bears (n): if n==42: return True if n%5==0: bears(n-42) if n%2==0: bears(n/2) if n%3==0 or n%4==0: one = (n%10) two = ((n%100)/10) if one!=0 and two!=0: bears(n-(one*two)) return False If a game hits 42 it should return True, otherwise False. If program never hits 42 and return True, then it returns False. I figured out base case, but I still get False when I enter bears(250). Any help would be very appreciated! May != Must and Could != Should -- http://mail.python.org/mailman/listinfo/python-list
Re: Python too slow?
Bruno Desthuilliers [EMAIL PROTECTED] wrote: fact 1: CPython compiles source code to byte-code. fact 2: CPython executes this byte-code. fact 3: Sun's JDK compiles source code to byte-code. fact 4: Sun's JDK executes this byte-code. Care to prove me wrong on any of these points ? Don't bother: you can't. So my first assertion that CPython is compiled to byte-code, which is then executed by a VM is true, and since the same assertion also stands for Java (ie: sun's JDK), then the just like qualifier is true too. Period. No, the just like qualifier is false. Python doesn't compile just like Java, nor does it execute just like Java. The byte-code langauges are very different and they perform much differently. Java compiles slower but executes faster. Python's byte-code is ment to quickly generated on the fly to save having to reparse the source code. Java code is compiled using optimizations into a virtual machine languague ment to be executed as fast as possible on a wide range of processors. The similarities between the two are superficial, Python doesn't compile and execute code just like Java. Try all you want to try to reparse what you wrote in to a different meaning, it doesn't change the fact your intent was to mislead. Ross Ridge -- l/ // Ross Ridge -- The Great HTMU [oo][oo] [EMAIL PROTECTED] -()-/()/ http://www.csclub.uwaterloo.ca/~rridge/ db // -- http://mail.python.org/mailman/listinfo/python-list
SQLObject 0.10.0b1
Hello! I'm pleased to announce the 0.10.0b1, the first beta release of a new SQLObject branch, 0.10. What is SQLObject = SQLObject is an object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL, PostgreSQL, SQLite, and Firebird. It also has newly added support for Sybase, MSSQL and MaxDB (also known as SAPDB). Where is SQLObject == Site: http://sqlobject.org Development: http://sqlobject.org/devel/ Mailing list: https://lists.sourceforge.net/mailman/listinfo/sqlobject-discuss Archives: http://news.gmane.org/gmane.comp.python.sqlobject Download: http://cheeseshop.python.org/pypi/SQLObject/0.10.0b1 News and changes: http://sqlobject.org/News.html What's New == Features Interface * Dropped support for Python 2.2. The minimal version of Python for SQLObject is 2.3 now. * Removed actively deprecated attributes; lowered deprecation level for other attributes to be removed after 0.10. * SQLBuilder Select supports the rest of SelectResults options (reversed, distinct, joins, etc.) * SQLObject.select() (i.e., SelectResults) and DBConnection.queryForSelect() use SQLBuilder Select queries; this make all SELECTs implemented internally via a single mechanism. * SQLBuilder Joins handle SQLExpression tables (not just str/SQLObject/Alias) and properly sqlrepr. * SQLBuilder tablesUsedDict handles sqlrepr'able objects. * Added SQLBuilder ImportProxy. It allows one to ignore the circular import issues with referring to SQLObject classes in other files - it uses the classregistry as the string class names for FK/Joins do, but specifically intended for SQLBuilder expressions. See tests/test_sqlbuilder_importproxy.py. * Added SelectResults.throughTo. It allows one to traverse relationships (FK/Join) via SQL, avoiding the intermediate objects. Additionally, it's a simple mechanism for pre-caching/eager-loading of later FK relationships (i.e., going to loop over a select of somePeople and ask for aPerson.group, first call list(somePeople.throughTo.group) to preload those related groups and use 2 db queries instead of N+1). See tests/test_select_through.py. * Added ViewSQLObject. * Added sqlmeta.getColumns() to get all the columns for a class (including parent classes), excluding the column 'childName' and including the column 'id'. sqlmeta.asDict() now uses getColumns(), so there is no need to override it in the inheritable sqlmeta class; this makes asDict() to work properly on inheritable sqlobjects. * Changed the implementation type in BoolCol under SQLite from TINYINT to BOOLEAN and made fromDatabase machinery to recognize it. * Added rich comparison methods; SQLObjects of the same class are considered equal is they have the same id; other methods return NotImplemented. * MySQLConnection (and DB URI) accept a number of SSL-related parameters: ssl_key, ssl_cert, ssl_ca, ssl_capath. For a more complete list, please see the news: http://sqlobject.org/News.html Oleg. -- Oleg Broytmannhttp://phd.pp.ru/[EMAIL PROTECTED] Programmers don't die, they just GOSUB without RETURN. -- http://mail.python.org/mailman/listinfo/python-list
Re: Help with Windows build of Yapgvb Python extension
On Jan 11, 8:41 am, Lonnie Princehouse [EMAIL PROTECTED] wrote: I'm the author of Yapgvb, a Python binding for Graphviz. Yapgvb enjoys modest success, but for some time it has been in dire need of a Python 2.5 build for Windows. I'm posting this message in the hopes of finding someone who is interested in making this build. This is a relatively quick task for someone who is comfortable with building C extensions and has an operational Windows build environment for Python 2.5 (which I don't). Alternately, it's a great way to learn about these things, and to get involved with a small open source project. Technologies used: graphviz distutils boost.python boost.graph See:http://yapgvb.sourceforge.net What do you need exactly? One of those executables created using bdist or are you going for the msi? I usually attempt to create these things doing python setup.py bdist_wininst ...for executable installers. If you can provide a valid setup.py, I can probably create the exe/ msi. Mike -- http://mail.python.org/mailman/listinfo/python-list
Re: Help with Scons
On Jan 11, 5:20 am, anush [EMAIL PROTECTED] wrote: Can anybody tell how I could go about running python scripts with scons. Have you tried reading the SCons user guide (http://www.scons.org/doc/ production/HTML/scons-user.html)? It's actually pretty good. I'm not too clear on what you're asking though. SCons scripts are written in Python (as is SCons itself)... Hyuga -- http://mail.python.org/mailman/listinfo/python-list
Re: Python too slow?
On Jan 11, 2008 9:10 AM, George Sakkis [EMAIL PROTECTED] wrote: On Jan 11, 8:59 am, Bruno Desthuilliers bruno. [EMAIL PROTECTED] wrote: George Sakkis a écrit : On Jan 11, 4:12 am, Bruno Desthuilliers bruno. [EMAIL PROTECTED] wrote: George Sakkis a écrit : On Jan 10, 3:37 am, Bruno Desthuilliers wrote: I fail to see how the existence of JIT compilers in some Java VM changes anything to the fact that both Java (by language specification) and CPython use the byte-code/VM scheme. Because these some Java VMs with JIT compilers are the de facto standard used by millions; Repeating an argument doesn't make it more true nor more relevant. Once again, this doesn't change anything to the fact exposed above. the spec is pretty much irrelevant I mentionned this because this kind of choice is usually not part of the language spec but of a specific implementation. Java is AFAIK the only language where this implementation stuff is part of the spec. (unless you're a compiler writer or language theorist). I thought it was quite clear and obvious that I was talking about points relating to these fields. No it wasn't, or is Python just too slow as an interpreted language Being interpreted is a quality of an implementation, not of a language. If that isn't clear enough what I'm talking about, then sorry but I can't help. Pedantic once again. For languages with a single (or practically single) implementation such as Python, the average user couldn't care less about the distinction. Your point might have more merit if PyPy or IronPython or Jython enter the same league with CPython in terms of usage. and besides the OP is most likely interested in these as a simple user so the distinction between a spec and a de facto standard implementation (such as JDK for Java and CPython for Python) are almost pedantic if not misleading. I can live with being called pedantic - even I'm not sure whether correcting a wrong statement about CPython's execution model is pedantic or not. But I *still* fail to see how it could be misleading, and *you* still fail to explain in which way it could be misleading. If your point is that saying that CPython uses a byte-code/VM scheme just like Java necessarily implies JIT compilation just because some JVM support this feature, then it would be time you pay more attention to what is effectively written. What three different people in this thread have been trying to tell you but you seem to miss is that claiming CPython's VM is just like Java is comparable to saying a Yugo's car engine is just like a BMW's (or humans are just like chimpanzees), which for some value of just like is technically correct but it's not what most people would call an accurate statement. The statement was in response to a claim that Python was slow because it is interpreted. This is a little like correcting someone who says that a Yugo is slow because it has a steam engine by telling that no, it's internal combustion, just like the BMW has. It's possible for this a claim like this to lead to a clarifying and informative discussion about JIT technology and how it improves Javas performance, and the use of corresponding techniques in Python. What we got instead was someone who felt some sort of juvenile urge to jump all over a what he thought of as a claim that Python is as fast as Java (which, of course, it sometimes is - the issue is more complicated than a sound bite). We're not Lisp (yet ;-)), with five major implementations and a dozen of minor ones. And ? In which way does it make the distinction between a language and a language implementation less true ? In the way that most plain users care (or not) about. Not that I think any of you care about anything except your e-penis at this point, but there is no reason to proscribe discussion to only what plain users want, even if the OP was such a person. -- http://mail.python.org/mailman/listinfo/python-list
RE: python recursive function
-Original Message- From: [EMAIL PROTECTED] [mailto:python- [EMAIL PROTECTED] On Behalf Of Tom_chicollegeboy Sent: Friday, January 11, 2008 3:30 AM To: python-list@python.org Subject: python recursive function Now, you are to write a program that, if I give you n bears, returns true if it is at all possible for you to win the game. Your program must use recursion to check all possible ways in which you can apply the rules. if n==42: return True return False You have to check for all possible paths. Returning True/False is futile since the recursive chains will be returning a mix of true and false. Use a global variable to indicate if a solution is found. (Or pass the flag in using a list, since lists are passed by reference (if n == 42: found_it[0] = True; return.) There's also another teaching exercise in here. Do you follow the literal directions ('check all possible ways') and generate all possible paths? Or do you 'interpret' that to mean try all possible paths until you find a solution? (i.e. do you short circuit the recursion once you have a solution?) One of the most difficult things about programming is conveying the requirements from Human A to Human Programmer B. This is especially difficult since business people and techies speak different languages and, more importantly, think differently (different assumptions, different paradigms, different levels of hand-waving away of details, etc..) And don't get me started about the people in marketing... * The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential, proprietary, and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from all computers. GA623 -- http://mail.python.org/mailman/listinfo/python-list
MFC app to Python IDLE communication
Hi all In my MFC application I need to call Python IDLE, pass some terms (or scripts or values - they are simple strings or memo fields) there so that user may modify/evaluate/interpret it and then return the modified terms back to the application. How can I do it the best way (MFC-IDLE)? As for IDLE-MFC, I'm afraid that copy-paste is the way out... Is it so? Thanks in advance for the hints. -- http://mail.python.org/mailman/listinfo/python-list
Re: Python too slow?
On Jan 11, 8:59 am, Bruno Desthuilliers bruno. [EMAIL PROTECTED] wrote: George Sakkis a écrit : On Jan 11, 4:12 am, Bruno Desthuilliers bruno. [EMAIL PROTECTED] wrote: George Sakkis a écrit : On Jan 10, 3:37 am, Bruno Desthuilliers wrote: I fail to see how the existence of JIT compilers in some Java VM changes anything to the fact that both Java (by language specification) and CPython use the byte-code/VM scheme. Because these some Java VMs with JIT compilers are the de facto standard used by millions; Repeating an argument doesn't make it more true nor more relevant. Once again, this doesn't change anything to the fact exposed above. the spec is pretty much irrelevant I mentionned this because this kind of choice is usually not part of the language spec but of a specific implementation. Java is AFAIK the only language where this implementation stuff is part of the spec. (unless you're a compiler writer or language theorist). I thought it was quite clear and obvious that I was talking about points relating to these fields. No it wasn't, or is Python just too slow as an interpreted language Being interpreted is a quality of an implementation, not of a language. If that isn't clear enough what I'm talking about, then sorry but I can't help. Pedantic once again. For languages with a single (or practically single) implementation such as Python, the average user couldn't care less about the distinction. Your point might have more merit if PyPy or IronPython or Jython enter the same league with CPython in terms of usage. and besides the OP is most likely interested in these as a simple user so the distinction between a spec and a de facto standard implementation (such as JDK for Java and CPython for Python) are almost pedantic if not misleading. I can live with being called pedantic - even I'm not sure whether correcting a wrong statement about CPython's execution model is pedantic or not. But I *still* fail to see how it could be misleading, and *you* still fail to explain in which way it could be misleading. If your point is that saying that CPython uses a byte-code/VM scheme just like Java necessarily implies JIT compilation just because some JVM support this feature, then it would be time you pay more attention to what is effectively written. What three different people in this thread have been trying to tell you but you seem to miss is that claiming CPython's VM is just like Java is comparable to saying a Yugo's car engine is just like a BMW's (or humans are just like chimpanzees), which for some value of just like is technically correct but it's not what most people would call an accurate statement. We're not Lisp (yet ;-)), with five major implementations and a dozen of minor ones. And ? In which way does it make the distinction between a language and a language implementation less true ? In the way that most plain users care (or not) about. George -- http://mail.python.org/mailman/listinfo/python-list
Re: for loop without variable
Fredrik Lundh [EMAIL PROTECTED] writes: (and if you use sane naming conventions, the risk for collisions is near zero as well). I haven't felt that way, I'm always worried about clobbering something by leaking a variable. Maybe collisions don't really happen much, but it's always seemed cleaner to me to use the most restricted scopes possible just to minimize or eliminate the possibility. This is especially attractie in a language like Python, with no declarations and no compile-time type safety. -- http://mail.python.org/mailman/listinfo/python-list
Define installation directory for python
Task: build and install python 2.5.1 on AIX 5.3 to /opt/python2.5 with the subdirectories: ./lib ./bin ./include ./man ./info a.s.o The ./bin ./man are created fine but for ./lib ./include the structure is /opt/python2.5/lib/python2.5 /opt/python2.5/include/python2.5 where i would like to have only /opt/python2.5/lib and /opt/ python2.5/include Looking at the make install output i see that setup.py is using a option called --install-platlib but how do i set this option during configure ? Or do i have to patch the setup.py ? Any hints tia Hajo -- http://mail.python.org/mailman/listinfo/python-list
Re: for loop without variable
Paul Rubin wrote: it just seems way too obscure though. Python style seems to favor spewing extra variables around. that's because (local) variables have near-zero cost, and zero overhead. use as many as you want, and reuse them as often as you want to. (and if you use sane naming conventions, the risk for collisions is near zero as well). /F -- http://mail.python.org/mailman/listinfo/python-list
Re: Python too slow?
On Jan 11, 4:12 am, Bruno Desthuilliers bruno. [EMAIL PROTECTED] wrote: George Sakkis a écrit : On Jan 10, 3:37 am, Bruno Desthuilliers wrote: I fail to see how the existence of JIT compilers in some Java VM changes anything to the fact that both Java (by language specification) and CPython use the byte-code/VM scheme. Because these some Java VMs with JIT compilers are the de facto standard used by millions; Repeating an argument doesn't make it more true nor more relevant. Once again, this doesn't change anything to the fact exposed above. the spec is pretty much irrelevant I mentionned this because this kind of choice is usually not part of the language spec but of a specific implementation. Java is AFAIK the only language where this implementation stuff is part of the spec. (unless you're a compiler writer or language theorist). I thought it was quite clear and obvious that I was talking about points relating to these fields. No it wasn't, and besides the OP is most likely interested in these as a simple user so the distinction between a spec and a de facto standard implementation (such as JDK for Java and CPython for Python) are almost pedantic if not misleading. We're not Lisp (yet ;-)), with five major implementations and a dozen of minor ones. George -- http://mail.python.org/mailman/listinfo/python-list
Re: module finalizer - is there such a beast?
Helmut Jarausch wrote: But how can I get control when the module gets unloaded either by Python's gc, Python's exit or by a module reload. Here's a simple approach using the finalizer of an object in the module's globals(): $ cat nirvana.py class Exit(object): def __del__(self): print exiting, __name__ exit_watch = Exit() $ python Python 2.5.1 (r251:54863, May 2 2007, 16:56:35) [GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2 Type help, copyright, credits or license for more information. import nirvana reload(nirvana) exiting nirvana module 'nirvana' from 'nirvana.pyc' exiting None $ But don't trust it too much and don't try to access other global objects. These may already be set to None as demonstrated above. Peter -- http://mail.python.org/mailman/listinfo/python-list
Re: HOW TO HANDLE POINTERS FROM NON-LOCAL HEAPS??
Ahh it's good to know that you love pointers like everyone else! On Jan 11, 2008 9:30 AM, Gary Herron [EMAIL PROTECTED] wrote: abhishek wrote: Hi group any idea on HOW TO HANDLE POINTERS FROM NON-LOCAL HEAPS?? Thank you POINTERS? Heaps? Huh? Ummm, let me think -- those terms *do* sound vaguely familiar -- from sometime in the deep dark primitive past. Perhaps from back in my (shudder) C/C++ days -- ya, that's it. Thankfully, this is Python and the modern era -- we don't use no stinking POINTERS here. Seriously, this group deals with Python. There are no pointers in Python. Now please, what did you *really* mean to ask? Gary Herron -- http://mail.python.org/mailman/listinfo/python-list -- http://search.goldwatches.com/?Search=Movado+Watches http://www.jewelerslounge.com http://www.goldwatches.com -- http://mail.python.org/mailman/listinfo/python-list
Re: Python too slow?
On Jan 11, 9:41 am, Hrvoje Niksic [EMAIL PROTECTED] wrote: Bruno Desthuilliers [EMAIL PROTECTED] writes: fact 1: CPython compiles source code to byte-code. fact 2: CPython executes this byte-code. fact 3: Sun's JDK compiles source code to byte-code. fact 4: Sun's JDK executes this byte-code. Care to prove me wrong on any of these points ? Don't bother: you can't. Fact 4 is misleading because it is only one option available to Sun's JDK. Sun's JDK is also capable of transforming the byte-code to native code and letting the processor execute that instead of the original byte code, and that is where the most significant speed increase comes from. Most importantly, it does so automatically, by default, with no programmer intervention or configuration, and with 100% compatibility, so it doesn't compare well to Python accelerators like psyco. Plus, IIRC Java's JIT is not limited to optimizing special cases, while psyco helps primarily with number-crunching code (admittedly an important special case) and can have zero or even (small) negative effect on arbitrary Python programs. George -- http://mail.python.org/mailman/listinfo/python-list
scope question in a switch mixin
The code that follows is the result of noodling around with switches as a learning tool. I've played with python for a few years, but I'm self-taught, so . . . Class Switch builds a set of functions. Method switch executes one of them given a value of the switch variable. My question is, why are modules imported at the top of the program not visible to the functions Switch builds? There is no problem when the import is in the function, but I thought initially that imports at the top would be in its globals. The import that works is at line 111 in the code. Thanks in advance! George '''Mixin Switch provides function switch(key) that executes an appropriate function. Each instance can: use a different switch variable. be used as many places in a program as desirable. be changed in one place, no matte how many places it is used. Usage: inst = Switch(keys, vals, base) whose arguments are sequenes: keys has switch values ('su', 'mo', . . .), base has the shared fore and aft parts of instance functions, and vals has the individual parts of instane functions. Example: Suppose you want to switch on days of the week: keys = ('su', 'mo', 'tu', 'we', 'th', 'fr', 'sa', 'de') vals = ('Sundayis Comic-day.', 'Mondayis Moan-day.', 'Tuesday is Twos-day.', 'Wednesday is Hump-day.', 'Thursday is Shop-day.', 'Fridayis TGIF-day.', 'Saturday is Food-day.', 'Anything else is Party-day!') fore = def %s(self, *args):\n\tprint ' aft = '\\n produces functions of the form: def su(self, *args):\\n\\tprint 'Sundayis Comic-day.'\\n or, for humans: def su(self, *args): print 'Sundayis Comic-day.' Test code (below) for this example produces: Sundayis Comic-day. Mondayis Moan-day. . . . Anything else is Party-day! key {} type 'dict' keys must be hashable (immutable) objects. Example: Suppose you want to swith on a function and its argument. Test code (below) returns calculated values using functions like: def %s(self, *args):\\n\\timport math\\n\\ttmp = (args[0] / math.pi)\\n\\treturn tmp\\n or, for humans: def %s(self, *args): import math tmp = (args[0] / math.pi) return tmp that produce: In toplevel: circ.switch(dC,10), d = 3.18309886184 In toplevel: circ.switch(Cd, 3.18), C = 9.99026463842 In toplevel: circ.switch(rC, 5), r = 0.795774715459 In toplevel: circ.switch(Cr, 0.796), C = 5.00141550451 In toplevel: circ.switch(A , 5), A = 78.5398163397 Thanks to Jean-Paul Calderone for his post at http://mail.python.org/pipermail/python-list/2007-June/446648.html in response to a question by vasudevrama t http://mail.python.org/pipermail/python-list/2007-June/446618.html ''' #import math class Switch(object): def __init__(self, keys, vals, base): self.dictionary = {} tmpd = {} for i in range(len(vals)): func = ''.join([base[0] % keys[i], vals[i], base[1]]) compile(func, 'stderr', 'exec') exec(func, tmpd) for k, v in tmpd.items(): if k in keys: self.dictionary[k] = v def switch(self, key, *args, **kwargs): try: result = self.dictionary[key](self, *args, **kwargs) except KeyError: result = self.dictionary['de'](self, *args, **kwargs) return result if '__main__' == __name__: '''Case 1: execute a statement. ''' keys = ('su', 'mo', 'tu', 'we', 'th', 'fr', 'sa', 'de') vals = ('Sundayis Comic-day.', 'Mondayis Moan-day.', 'Tuesday is Twos-day.', 'Wednesday is Hump-day.', 'Thursday is Shop-day.', 'Fridayis TGIF-day.', 'Saturday is Food-day.', 'Anything else is Party-day!') fore = def %s(self, *args):\n\tprint ' aft = '\n base = (fore, aft) day = Switch(keys, vals, base) for k in keys: try: day.switch(k) except TypeError: print 'key %s %s keys must be hashable (immutable) objects.' % (k, type(k)) for k in ('xx', 1234, 12.3, {}): try: day.switch(k) except TypeError: print 'key %s %s keys must be hashable (immutable) objects.' % (k, type(k)) '''Case 2: execute an expression. ''' keys = ('dC', 'Cd', 'rC', 'Cr', 'A', 'de') vals = ((args[0] / math.pi), # diameter given Circumference (math.pi * args[0]), # Circumferene given diameter (args[0] /
Using eggs
Hi all! As is about to become apparent, I really don't know what I'm doing when it comes to using eggs. I'm writing some software that is going to be deployed on a machine as a number of eggs. Which is all well and good. These eggs all end up depending on each other; modules in egg A want to import modules in egg B etc. It's not really practical to add the path to each individual egg to the PYTHONPATH (although there's all in a directory that is in PYTHONPATH). Do I have to add boiler-plate code to the beginning of all the modules with these dependencies to check if modules are available and require the eggs if they aren't? Or is there a way I can have stuff 'just work' as it does in the development environment when the modules haven't been bundled up into eggs? On a similar note, I can't seem to get the automatic script creation stuff in setuptools to create scripts that have additional requirements. I tried defining extra requires giving the names of other eggs that will be required, and then specifying these as extras to the console_scripts, but the generated scripts were no different. Am I doing something wrong? Or am I just not understanding something? I'm muddling through getting this all working at the moment, but I get the distinct impression that there's a better (correct?) way that I'm not aware of. Sorry for such a vague posting. -Oli -- http://mail.python.org/mailman/listinfo/python-list
Re: what does **kw mean?
On Jan 11, 12:24 pm, Lie [EMAIL PROTECTED] wrote: On Jan 11, 4:38 pm, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote: I've been reading the following example, and couldn't figure out, what **kw mean. (It's an empty dictionary, but what's the semantics): It's a keyword argument. It's some kind of repository for arguments that aren't recognized. If you have function like this: def func(a, *args, *kw): print a print args print kw and you call the functin like this: func('value A', 'value B', 'value C', argumentA = 'value D', argumentB = 'value D') the extra arguments would normally raise an error, but with the * and **, Python would: - assign 'value B' and 'value C' to args - assign 'argumentA':'value D' and 'argumentB':'value E' to kw so if you run the function, it will output: value A ('value B', 'value C') {'argumentB': 'value E', 'argumentA': 'value D'} this args and kw can be accessed like a tuple and dictionary respectively See '4.7.2 Keyword Arguments' and '4.7.3 Arbitrary Argument Lists' on Python Help File Thanks! -- http://mail.python.org/mailman/listinfo/python-list
Re: Analyzing Python GC output - what is a cell, and what information is available about it.
Duncan Booth wrote: John Nagle [EMAIL PROTECTED] wrote: I'm printing out each entry in gc.garbage after a garbage collection in DEBUG_LEAK mode, and I'm seeing many entries like cell at 0x00F7C170: function object at 0x00FDD6B0 That's the output of repr. Are cell objects created only from external C libraries, or can regular Python code generate them? Is there any way to find out what the 'function object' is from within Python? Cell objects are created whenever you have a function that references a variable in an outer scope. e.g. So in your case, cell.cell_contents.func_name might help. Tried that: print repr(item).encode('ascii','replace') print Type:,type(item) try: print item.cell_contents except Exception, message: print Unprintable:,message cell at 0x00F88DF0: function object at 0x0100CFB0 Type: type 'cell' Unprintable: 'cell' object has no attribute 'cell_contents' So it doesn't have a cell_contents attribute. Tried: print item.dir() got: 'cell' object has no attribute 'dir' Tried: print item.__dict__ got: 'cell' object has no attribute '__dict__' It looks like this is a low-level PyCellObject not generated from Python code. Any ideas? I'm using the M2Crypto and MySQLdb libraries, and suspect a reference count bug in one of those. John Nagle -- http://mail.python.org/mailman/listinfo/python-list
Re: Help with Windows build of Yapgvb Python extension
On Jan 11, 9:44 am, Mike [EMAIL PROTECTED] wrote: On Jan 11, 8:41 am, Lonnie Princehouse [EMAIL PROTECTED] wrote: I'm the author of Yapgvb, a Python binding for Graphviz. Yapgvb enjoys modest success, but for some time it has been in dire need of a Python 2.5 build for Windows. I'm posting this message in the hopes of finding someone who is interested in making this build. This is a relatively quick task for someone who is comfortable with building C extensions and has an operational Windows build environment for Python 2.5 (which I don't). Alternately, it's a great way to learn about these things, and to get involved with a small open source project. Technologies used: graphviz distutils boost.python boost.graph See:http://yapgvb.sourceforge.net What do you need exactly? One of those executables created using bdist or are you going for the msi? I usually attempt to create these things doing python setup.py bdist_wininst ...for executable installers. If you can provide a valid setup.py, I can probably create the exe/ msi. Mike Yes, a bdist_wininst installer is what I had in mind. MSI would be fine, too --- whichever is easier. If anyone wants to have a look, there's a README file that details what I did to build yapgvb for Python 2.4. The source is available from anonymous subversion: svn co https://yapgvb.svn.sourceforge.net/svnroot/yapgvb yapgvb and is also web-browseable, http://yapgvb.svn.sourceforge.net/viewvc/yapgvb/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Using eggs
On Jan 11, 10:33 am, oj [EMAIL PROTECTED] wrote: Hi all! As is about to become apparent, I really don't know what I'm doing when it comes to using eggs. I'm writing some software that is going to be deployed on a machine as a number of eggs. Which is all well and good. These eggs all end up depending on each other; modules in egg A want to import modules in egg B etc. It's not really practical to add the path to each individual egg to the PYTHONPATH (although there's all in a directory that is in PYTHONPATH). Do I have to add boiler-plate code to the beginning of all the modules with these dependencies to check if modules are available and require the eggs if they aren't? Or is there a way I can have stuff 'just work' as it does in the development environment when the modules haven't been bundled up into eggs? On a similar note, I can't seem to get the automatic script creation stuff in setuptools to create scripts that have additional requirements. I tried defining extra requires giving the names of other eggs that will be required, and then specifying these as extras to the console_scripts, but the generated scripts were no different. Am I doing something wrong? Or am I just not understanding something? I'm muddling through getting this all working at the moment, but I get the distinct impression that there's a better (correct?) way that I'm not aware of. Sorry for such a vague posting. -Oli I know when I've asked questions about eggs and setup-tools, I was referred to the Distutils user group. I would cross-post there for double the fun! http://mail.python.org/mailman/listinfo/distutils-sig Mike -- http://mail.python.org/mailman/listinfo/python-list
virtualpython / workingenv / virtualenv ... shouldn't this be part of python
There are several attempts to allow python to work with per user (or even per session) 'site-packages' like virtualpython / workingenv / virtualenv. But they all have their own shortcomings and quirks. My question is, shoudn't it be enough to set PYTHONPATH and everything automagically to work then? Is there some work done on this for python 3.0 or 2.6 perhaps? -- damjan -- http://mail.python.org/mailman/listinfo/python-list
ftplib question (cannot open data connection)
Hi All, I'm using a simple program that uploads a file on a remote ftp server. This is an example (not the whole program): def store(self,hostname,username,password,destdir,srcpath): self.ftp = ftplib.FTP(hostname) self.ftp.login(username,password) self.ftp.set_pasv(False) self.ftp.cwd(destdir) fobj = file(srcpath,rb) destname = os.path.split(srcpath)[1] self.ftp.storbinary(STOR +destname,fobj) The ftp server cannot use passive connections, and I can do nothing about that. Here is the problem: I can connect to this ftp server from my home computer, which is behind a NAT firewall. I can also connect to it from another computer, but I'm not able to upload any file. I tried to debug with a simple ftp -v -d command line program and apparently the problem is with the EPRT command: ftp ls --- EPRT |1|195.228.74.135|55749| 200 Port command successful. --- LIST 425 Cannot open data connection. ftp Well, the port number given by EPRT is bad - it is a closed port on this computer. I can open a small port range for this, but I would not like to open all ports and disable the firewall completely. Here are my questions: 1. How can I instruct ftplib to use specific ports for incoming connections? (For example, ports between 55000 and 56000). 2. How it is possible that the same program works from another computer that is behind a NAT firewall? Thanks, Laszlo -- http://mail.python.org/mailman/listinfo/python-list
newbie question regarding int(input(:))
Hi experts! I am trying to write a menu script that will execute bash scripts. Everything is fine until the script executes and I want to see if there are any more options to run before quitting. Example: def menu(opt1 = something, opt2 = something else): -- Computers are like air conditioners. They stop working when you open Windows. -- http://mail.python.org/mailman/listinfo/python-list
Re: alternating string replace
On Jan 11, 9:31 am, [EMAIL PROTECTED] wrote: evenOrOdd = True s1, s2 = hi_cat_bye_dog_foo_bar_red, for i in s1: if i == '_': s2 += ':' if evenOrOdd else ',' evenOrOdd = not evenOrOdd else: s2 += i print s2 Presently I cannot work out how to use .join instead of += ... Do s2 = [] then later: s2.append(i) and at the end: print ''.join(s2) - Paddy. While I realise this is producing a new string (and I believe += rebuilds it a lot?) how much slower is this going to be over the others? -- http://mail.python.org/mailman/listinfo/python-list
Re: Python too slow?
George Sakkis a écrit : On Jan 11, 4:12 am, Bruno Desthuilliers bruno. [EMAIL PROTECTED] wrote: George Sakkis a écrit : On Jan 10, 3:37 am, Bruno Desthuilliers wrote: I fail to see how the existence of JIT compilers in some Java VM changes anything to the fact that both Java (by language specification) and CPython use the byte-code/VM scheme. Because these some Java VMs with JIT compilers are the de facto standard used by millions; Repeating an argument doesn't make it more true nor more relevant. Once again, this doesn't change anything to the fact exposed above. the spec is pretty much irrelevant I mentionned this because this kind of choice is usually not part of the language spec but of a specific implementation. Java is AFAIK the only language where this implementation stuff is part of the spec. (unless you're a compiler writer or language theorist). I thought it was quite clear and obvious that I was talking about points relating to these fields. No it wasn't, or is Python just too slow as an interpreted language Being interpreted is a quality of an implementation, not of a language. If that isn't clear enough what I'm talking about, then sorry but I can't help. and besides the OP is most likely interested in these as a simple user so the distinction between a spec and a de facto standard implementation (such as JDK for Java and CPython for Python) are almost pedantic if not misleading. I can live with being called pedantic - even I'm not sure whether correcting a wrong statement about CPython's execution model is pedantic or not. But I *still* fail to see how it could be misleading, and *you* still fail to explain in which way it could be misleading. If your point is that saying that CPython uses a byte-code/VM scheme just like Java necessarily implies JIT compilation just because some JVM support this feature, then it would be time you pay more attention to what is effectively written. We're not Lisp (yet ;-)), with five major implementations and a dozen of minor ones. And ? In which way does it make the distinction between a language and a language implementation less true ? -- http://mail.python.org/mailman/listinfo/python-list
Re: Python Frontend/GUI for C Program
[EMAIL PROTECTED] schrieb: I have a C program that works very well. However, being C it has no GUI. Input and Output are stdin and stdout... works great from a terminal. Just wondering, has anyone every written a Python GUI for an existing C program? Any notes or documentation available? I have experience using wxPython from within Python apps and I like it a lot for its cross-platform capabilities. I was hoping to use wxPython for this as well. Modules subprocess and pexpect (3rd-party-package) are your friends. Alternatively, if you have the source for the C-app, exposing it's functionality as DLL/SO and using ctypes as means to access it might work as well. Diez -- http://mail.python.org/mailman/listinfo/python-list
Python Frontend/GUI for C Program
I have a C program that works very well. However, being C it has no GUI. Input and Output are stdin and stdout... works great from a terminal. Just wondering, has anyone every written a Python GUI for an existing C program? Any notes or documentation available? I have experience using wxPython from within Python apps and I like it a lot for its cross-platform capabilities. I was hoping to use wxPython for this as well. Thanks, Brad -- http://mail.python.org/mailman/listinfo/python-list
Re: reading a specific column from file
cesco wrote: I have a file containing four columns of data separated by tabs (\t) and I'd like to read a specific column from it (say the third). Is there any simple way to do this in Python? use the split method and plain old indexing: for line in open(file.txt): columns = line.split(\t) print columns[2] # indexing starts at zero also see the csv module, which can read all sorts of comma/semicolon/tab-separated spreadsheet-style files. I've found quite interesting the linecache module the linecache module seems to be quite popular on comp.lang.python these days, but it's designed for a very specific purpose (displaying Python code in tracebacks), and is a really lousy way to read text files in the general case. please unlearn. /F -- http://mail.python.org/mailman/listinfo/python-list
Re: Magic function
On Jan 11, 4:29 pm, [EMAIL PROTECTED] wrote: Hi all, I'm part of a small team writing a Python package for a scientific computing project. The idea is to make it easy to use for relatively inexperienced programmers. As part of that aim, we're using what we're calling 'magic functions', and I'm a little bit concerned that they are dangerous code. I'm looking for advice on what the risks are (e.g. possibility of introducing subtle bugs, code won't be compatible with future versions of Python, etc.). Quick background: Part of the way our package works is that you create a lot of objects, and then you create a new object which collects together these objects and operates on them. We originally were writing things like: obj1 = Obj(params1) obj2 = Obj(params2) ... bigobj = Bigobj(objects=[obj1,obj2]) bigobj.run() This is fine, but we decided that for clarity of these programs, and to make it easier for inexperienced programmers, we would like to be able to write something like: obj1 = Obj(params1) obj2 = Obj(params2) ... run() The idea is that the run() function inspects the stack, and looks for object which are instances of class Obj, creates a Bigobj with those objects and calls its run() method. So, any comments on that approach? I'm including the code I've written to do this, and if you have time to look through it, I'd also be very grateful for any more specific comments about the way I've implemented it (in particular, can it be made faster, is my program creating cycles that stop the garbage collection from working, etc.). I hope the code will be formatted correctly: def getInstances(instancetype,level=1,includeglobals=True,containersearchdepth=1,exclude={},predicate=lambda x:True): Find all instances of a given class at a given level in the stack vars = {} # Note: we use level+1 because level refers to the level relative to the function calling this one if includeglobals: vars.update(stack()[level+1][0].f_globals) vars.update(stack()[level+1][0].f_locals) # Note that you can't extract the names from vars.itervalues() so we provide via knownnames the names vars.iterkeys(), # containersearchdepth+1 is used because vars.itervalues() is the initial container from the point of view of this # function, but not from the point of view of the person calling getInstances objs, names = extractInstances(instancetype,vars.itervalues(),containersearchdepth +1,knownnames=vars.iterkeys(),exclude=exclude,predicate=predicate) return (objs,names) def extractInstances(instancetype,container,depth,containingname='vars()',knownnames=None,exclude={},predicate=lambda x:True): if depth=0: return ([],[]) if isinstance(container,str): return ([],[]) # Assumption: no need to search through strings # Ideally, this line wouldn't be here, but it seems to cause programs to crash, probably because # some of the simulator objects are iterable but shouldn't be iterated over normally # TODO: Investigate what is causing this to crash, and possibly put in a global preference to turn this line off? if not isinstance(container, (list,tuple,dict,type({}.itervalues(: return ([],[]) # Note that knownnames is only provided by the initial call of extractInstances and the known # names are from the dictionary of variables. After the initial call, names can only come from # the __name__ attribute of a variable if it has one, and that is checked explicitly below if knownnames is None: knewnames = False knownnames = repeat(containingname) else: knewnames = True objs = [] names = [] try: # container may not be a container, if it isn't, we'll encounter a TypeError for x,name in zip(container,knownnames): # Note that we always have a name variable defined, but if knewnames=False then this is just # a copy of containingname, so the name we want to give it in this instance is redefined in this # case. We have to use this nasty check because we want to iterate over the pair (x,name) as # variables in the same position in the container have the same name, and we can't necessarily # use __getitem__ if hasattr(x,'__name__'): name = x.__name__ elif not knewnames: name = 'Unnamed object, id = '+str(id(x))+', contained in: '+containingname if isinstance(x,instancetype): if x not in exclude and predicate(x): objs.append(x) names.append(name) else: # Assumption: an object of the instancetype is not also a container we want to search in. # Note that x may not be a container, but then extractInstances will just return an empty list newobjs, newnames =
Re: How to POST call and retrieve result page
On Fri, 11 Jan 2008 14:44:19 +0530 suyash jape [EMAIL PROTECTED] wrote: Hi all i want to access a web page through python script, fillup the necessary fields, and press submit button (which does POST call) and retrieve the result page and retrieve some values from it. Here is the script i have written till now. import urllib2 # create array of name/value pairs self.params = urllib.urlencode({'seqname': 'BioSequence', 'sequence': 'ATACATTATCCAAACATAGCATGGCTT'}) # send http-post request = urllib.urlopen(http://www.hydrazome.metazome.net/search.php;, params) # read back each line of reply line = request.read() print line This script fills up the correct values in the search.php page.But i am not sure if it is doing the POST (submit call). Beacause in 'line' varialble, i am getting the search.php page.Not the result page which is blast_results.php. How to retrieve the result page? Sounds like you're not POSTing to the right page. The form on .../search.php lets you fill in values, but those values are not necessarily POSTed to search.php. In particular, the form element has an action attribute that has a URL to which the values on the page should be posted. If that points to .../blast_results.php, then that's the page you need to pass to urlopen with your data. mike -- Mike Meyer [EMAIL PROTECTED] http://www.mired.org/consulting.html Independent Network/Unix/Perforce consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list
Fwd: newbie question regarding int(input(:)) - sorry for the spam
sorry for the spam Here is the complete message! I am trying to write a menu script that will execute bash scripts. Everything is fine until the script executes and I want to see if there are any more options to run before quitting. Example: = def menu(opt1 = something, opt2 = something else): print 1), opt1 print 2), opt2 def anythingelse(opt 3 = final check): menu() print 3), opt3 menu() choice = int(input(:)) if choice == 1 command anythingelse() elif choice == 2 command 2 anythingelse() else choice ==3 command 3 quit === My newbie problem is that although the menu repeats there is no chance to have a second input and I can't put the int(input(:) in the function because I get the error 'int' is not callable plus my choice variable is not defined. can someone please enlighten me? :-) -- Forwarded message -- From: Craig Ward [EMAIL PROTECTED] Date: Jan 11, 2008 11:21 AM Subject: newbie question regarding int(input(:)) To: python-list@python.org Hi experts! I am trying to write a menu script that will execute bash scripts. Everything is fine until the script executes and I want to see if there are any more options to run before quitting. Example: def menu(opt1 = something, opt2 = something else): -- Computers are like air conditioners. They stop working when you open Windows. -- Computers are like air conditioners. They stop working when you open Windows. -- http://mail.python.org/mailman/listinfo/python-list
Re: Python too slow?
Bruno Desthuilliers [EMAIL PROTECTED] wrote: I don't think you're going to make you some friends here insulting Fredrik. I don't know who Ed Jensen is, but we are quite a lot here to know and respect Mr Lundh for his contributions to Python as both a language and a community. I'll keep in mind that some people around these parts are untouchable and have a free pass to be insulting and childish. Thanks for the tip. -- http://mail.python.org/mailman/listinfo/python-list
Re: Detecting OS platform in Python
On 11 Jan, 04:14, Mike Meyer [EMAIL PROTECTED] wrote: On Thu, 10 Jan 2008 18:37:59 -0800 (PST) Devraj [EMAIL PROTECTED] wrote: My Python program needs reliably detect which Operating System its being run on, infact it even needs to know which distribution of say Linux its running on. The reason being its a GTK application that needs to adapt itself to be a Hildon application if run on devices like the N800. I don't think it can be done. For most Unix system, os.uname() will give you the information you want: os.uname() [...] GNU/Linux distributions are collections of lots of people software, so each has it's own way to state what distribution it is. I believe there's some sort of standard - except not everybody follows it. So you wind up using a series of heuristics to chase this information down. On Red Hat distributions, there appears to be a file called /etc/ redhat-release containing the distribution name. I can't remember the Debian equivalent, but it may be /etc/debian_version or something like that. There's LSB-related stuff, too, but I'm not sure if any of that tells you about the distribution itself. [...] I'm not a GTK programmer, and have never even heard of Hildon. Is there some associated module you could try and import that doesn't exist on the N800? I.e.: try: import gtk mygui = 'gtk' except ImportError: import Hildon mygui = 'Hildon' or maybe something like: import gtk mygui = 'gtk' if not hasattr(gtk, 'Hildon') else 'Hildon' There must be Hildon-related modules or features that one can import or test for, as Mike suggests. In the desktop module [1], I generally test various environment variables or the output of various programs in order to deduce which desktop environment is being used, but this is in software which isn't generally trying to display a graphical user interface. Just testing for the presence of a file or a program isn't usually enough because on systems where desktop environments co- exist, for example, the presence of a GNOME-related file or program doesn't mean that the user is actually using GNOME at that particular time. If you might be using Hildon and are actually displaying a GUI, however, attempting to get the resources you need should be enough to confirm whether you're running Hildon or not. Paul [1] http://www.python.org/pypi/desktop -- http://mail.python.org/mailman/listinfo/python-list
Re: Learning Python via a little word frequency program
On 11 Jan 2008 03:50:53 -0800 Paul Rubin http://phr.cx@NOSPAM.invalid wrote: rent [EMAIL PROTECTED] writes: keys = freq.keys() keys.sort(key = freq.get, reverse = True) for k in keys: print %-10s: %d % (k, freq[k]) I prefer (untested): def snd((x,y)): return y # I wish this was built-in What's wrong with operator.itemgetter? sorted_freq = sorted(freq.iteritems(), key=snd, reverse=True) (still untested) from operator import itemgetter sorted_freq = sorted(freq.iteritems(), key=itemgetter(2), reverse=True) mike -- Mike Meyer [EMAIL PROTECTED] http://www.mired.org/consulting.html Independent Network/Unix/Perforce consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list
RE: reading a specific column from file
-Original Message- From: [EMAIL PROTECTED] [mailto:python- [EMAIL PROTECTED] On Behalf Of Ivan Novick Sent: Friday, January 11, 2008 12:46 PM To: python-list@python.org Subject: Re: reading a specific column from file You say you would like to read a specific column. I wonder if you meant read all the data and then just seperate out the 3rd column or if you really mean only do disk IO for the 3rd column of data and thereby making your read faster. The second seems more interesting but much harder and I wonder if any one has any ideas. Do what databases do. If the columns are stored with a fixed size on disk, then you can simply compute the offset and seek to it. If the columns are of variable size, then you need to store (and maintain) the offsets in some kind of index. * The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential, proprietary, and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from all computers. GA623 -- http://mail.python.org/mailman/listinfo/python-list
Re: Python too slow?
Bruno Desthuilliers [EMAIL PROTECTED] wrote: And the reference implementation of Python (CPython) is not interpreted, it's compiled to byte-code, which is then executed by a VM (just like Java). Ross Ridge a écrit : Python's byte-code interpreter is not just like Java's virtual machine. Bruno Desthuilliers [EMAIL PROTECTED] wrote: of course it's not just like - different languages, different byte-codes, different implementations. What is just like is the byte-code/VM scheme. No the schemes aren't just like each other. They perform much differently. Thought this was obvious to anyone able to parse a simple sentence. What's obvious is that you're lying. You're deliberately trying to mislead people into thinking Python performs similarily to Java. I don't know what you're smoking, but you should perhaps stop - because this seems to drive you into paranoïd delirium. This isn't the first time you've tried to mislead people into thinking Python's byte-code interpreter works just like Java's VM. Your over-zealous Python advocacy is benefiting no one. Ross Ridge -- l/ // Ross Ridge -- The Great HTMU [oo][oo] [EMAIL PROTECTED] -()-/()/ http://www.csclub.uwaterloo.ca/~rridge/ db // -- http://mail.python.org/mailman/listinfo/python-list
Re: Learning Python via a little word frequency program
Mike Meyer [EMAIL PROTECTED] writes: On 11 Jan 2008 03:50:53 -0800 Paul Rubin http://phr.cx@NOSPAM.invalid wrote: rent [EMAIL PROTECTED] writes: keys = freq.keys() keys.sort(key = freq.get, reverse = True) for k in keys: print %-10s: %d % (k, freq[k]) I prefer (untested): def snd((x,y)): return y # I wish this was built-in What's wrong with operator.itemgetter? sorted_freq = sorted(freq.iteritems(), key=snd, reverse=True) (still untested) from operator import itemgetter sorted_freq = sorted(freq.iteritems(), key=itemgetter(2), reverse=True) It should be itemgetter(1). See how easy it is to get it wrong? :-) (Okay, this was too easy a shot to miss out on; I actually like itemgetter.) -- http://mail.python.org/mailman/listinfo/python-list
Re: Magic function
On Fri, 11 Jan 2008 08:29:18 -0800 (PST) [EMAIL PROTECTED] wrote: Hi all, I'm part of a small team writing a Python package for a scientific computing project. The idea is to make it easy to use for relatively inexperienced programmers. As part of that aim, we're using what we're calling 'magic functions', and I'm a little bit concerned that they are dangerous code. I'm looking for advice on what the risks are (e.g. possibility of introducing subtle bugs, code won't be compatible with future versions of Python, etc.). Quick background: Part of the way our package works is that you create a lot of objects, and then you create a new object which collects together these objects and operates on them. We originally were writing things like: obj1 = Obj(params1) obj2 = Obj(params2) ... bigobj = Bigobj(objects=[obj1,obj2]) bigobj.run() This is fine, but we decided that for clarity of these programs, and to make it easier for inexperienced programmers, we would like to be able to write something like: obj1 = Obj(params1) obj2 = Obj(params2) ... run() The idea is that the run() function inspects the stack, and looks for object which are instances of class Obj, creates a Bigobj with those objects and calls its run() method. So, any comments on that approach? The basic idea is ok, but looking at the stack makes me a bit nervous. That makes the code complicated, and probably fragile in the face of changing python versions. The unittest module does much the same thing - you run unittest.main, and it runs all the tests in any TestCase subclass in your module (assuming you didn't do something to limit it). However, it does it by examining the module, not the stack. The real difference is that your magic classes have to be global to your module. On the other hand, it provides some nice tools to let you partition things, so you can easily run subsets of the classes from the command line. It's probably worth a look. mike -- Mike Meyer [EMAIL PROTECTED] http://www.mired.org/consulting.html Independent Network/Unix/Perforce consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list
[no subject]
Hi, I have what I suspect to be a fairly simple problem while using python Numeric. I am attempting to count the number of times that an element 'b' occurs in numeric array 'a'. I tried unsuccessfully to find a more efficient function to do this for me such as that offered when using a list, but couldn't seem to find anything for Numeric arrays. However, I suspect that my loop is not the most efficient way to achieve this. def countel(a, b): #counts the number of times value 'b' is found in array 'a' i=0 count=0 while (ilen(a)): j=0 while (jlen(a[0])): if (a[i][j]==b): count=count+1 else: pass j=j+1 i=i+1 return count Any help or advice would be greatly appreciated, Matt -- http://mail.python.org/mailman/listinfo/python-list
Re: Analyzing Python GC output - what is a cell, and what information is available about it.
On Jan 11, 2008 6:20 PM, John Nagle [EMAIL PROTECTED] wrote: Tried: print item.dir() got: 'cell' object has no attribute 'dir' I don't know nothing about cell objects... but why don't you try dir(item) instead? Francesco -- http://mail.python.org/mailman/listinfo/python-list
Re: Python Frontend/GUI for C Program
On Fri, 11 Jan 2008 08:12:48 -0800 (PST) [EMAIL PROTECTED] wrote: I have a C program that works very well. However, being C it has no GUI. What does C have to do with it not having a GUI? I've written more C programs with a GUI than Python ones - and the C experience was generally better. Of course, I was using Intuition, not X. I have experience using wxPython from within Python apps and I like it a lot for its cross-platform capabilities. I was hoping to use wxPython for this as well. Sure, the GUI can be disconnected from the application. In fact, that's the right way to do it - it allows you to change the GUI as times move forward. I've done this in three different ways. Diez pegged them two of them. When the underlying C code is poorly organized, use subprocess to run the the C application, build what you're going to send to it's standard in, and watch what it writes to standard output. If the C code is well-organized - structures with routines that manipulate them, so you can identify objects - and command handling on standard in is basically parse the arguments, then invoke the the right function with those values, then you can wrap the structures as object - with the appropriate functions as methods, and use it in two ways. One is to expose things via a shared library, and the use ctypes to talk to it. The other is to embed a python into your application, and have it launch the script that's going to provide the GUI. mike -- Mike Meyer [EMAIL PROTECTED] http://www.mired.org/consulting.html Independent Network/Unix/Perforce consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list