PyCon DE 2011 - Only two days for Early Birds
PyCon DE 2011 - Early Bird Rate until August 31 === There are only two days left to take advantage of the early bird rate for PyCon DE 2011. Don't forget to register for the conference and for tutorials: http://de.pycon.org/2011/tickets/ The first PyCon DE will be held October 4-9, 2011 in Leipzig, Germany. A tutorials day is followed by three days with talks in three parallel tracks and two days of sprints. The program can be found here: http://de.pycon.org/2011/schedule/lists/talks/ The talks schedule will be announced in few days. More details can be found on the PyCon DE website (http://de.pycon.org). PyCon DE 2011 - Noch zwei Tage Frühbucherrabatt === Der Frühbucherrabatt gilt nur noch bis zum 31.08. Das ist der Link für die Anmeldung zur Konferenz und zu den Tutorials: http://de.pycon.org/2011/tickets/ Es stehen einige Hinweise auf der Seite. Bitte durchlesen. Hier nochmal kurz: * Für jedes Ticket bitte ein Formular ausfüllen. Beispiel: Anmeldung zur Konferenz und für zwei Tutorials macht drei ausgefüllte Formulare. * Die Bestellung geht ausschließlich mit Rechnung, die nach dem Erhalt per Überweisung zu bezahlen ist. Keine Kreditkarten, PayPal oder Ähnliches. Bitte alle Informationen für eine Rechnung eingeben. Das Vortragsprogramm ist hier: http://de.pycon.org/2011/schedule/lists/talks/ Der Zeitplan dazu wird in den nächsten Tagen veröffentlicht. Die erste PyCon DE 2011 findet vom 4. bis 9. Oktober in Leipzig statt. Mehr Information auf der Konferenz-Seite: http://de.pycon.org/2011. Viele Grüße, Mike Müller -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations/
[ANN] bzr 2.4.0 released
On behalf of the Bazaar team and community, I'm happy to announce availability of a new release of the bzr adaptive version control system. Bazaar http://bazaar.canonical.com/ is part of the GNU system http://gnu.org/ to produce a free operating system. Thanks to everyone who contributed patches, suggestions, and feedback. Bazaar is now available for download from https://launchpad.net/bzr/2.4/2.4.0 as a source tarball. Installers are available for windows and OSX from the url above too. This release marks the start of another long-term-stable series. From here, we will only make bugfix releases on the 2.4 series (2.4.1, etc, and support it until February 2013), while 2.5 will become our new development series. This is a bugfix and polish release over the 2.3 series, with a large number of bugs fixed (150 for the 2.4 series alone), and some performance improvements. Support for python 2.4 and 2.5 has been dropped, many large working tree operations have been optimized as well as some stacked branches operations. Users are encouraged to upgrade from the other stable series. See http://doc.bazaar.canonical.com/bzr.dev/en/whats-new/whats-new-in-2.4.html for more details, Vincent -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations/
Re: Returning a value from exec or a better solution
On 30 August 2011 22:48, Rob Williscroft r...@rtw.me.uk wrote: Arnaud Delobelle wrote in news:CAJ6cK1YVi3NQgdZOUdhAESf133pUkdazM1PkSP=p6xfayvo...@mail.gmail.com in gmane.comp.python.general: On 30 August 2011 13:31, Jack Trades jacktradespub...@gmail.com wrote: On Tue, Aug 30, 2011 at 2:37 AM, Rob Williscroft r...@rtw.me.uk wrote: That's brilliant and works flawlessly. ś˙Thank you very much! If an impementation (as you say up thread) can populate globals or locals with whatever they want, then how do you know that last item added was the function definition the user supplied ? That's not an issue. The last statement that is executed will be the def statement. You don't know that, an implementation may for example set __bultins__ to None, prior to returning, its not an unreasonable thing to do and the docs don't say they can't. I haven't studied the docs but I'm certain that such an implementation would break a lot of code. -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list
Re: Installing WebDAV server
Hi, Am 30.08.2011 22:00, schrieb Fokke Nauta: Hi all, I am completely new to Python, but I'm confronted with a problem I can't solve. Welcome to python. This is my question: [snip] I installed Python 3.2.1 and extracted the packages PyWebDAV and PyXML. Now I have a working Python app and 2 directories called PyWebDAV-0.9.4.1 and PyXML-0.8.4. In the PyWebDAV README it says: Installation and setup of server can be as easy as follows: $ easy_install PyWebDAV $ davserver -D /tmp -n -J But of course it doesn't work like that. When I start up Python GUI I see the prompt instead of the $ prompt. But where do I place the two directories? And there is no easy_install script in the PyXML-0.8.4 directory, only a setup.py and ez_setup.py script. I guess the latter is the one to use. But how? You dont install from Python GUI, use normal cmd, navigate to the folder you downloaded PyXML and PyWebDAV and run python setup.py install (python.exe has to be in your PATH). Then you have to find the startup-script davserver. Find your python installation directory and look into Install dir/Tools/Scripts, in my computer this is E:\python27\Tools\Scripts. PyXML and PyWebDAV get installed in the site-packages folder i.e. E:\python27\Lib/site-packages. You might have to look for davserver there... hth Paul -- http://mail.python.org/mailman/listinfo/python-list
Re: Installing WebDAV server
Thomas 'PointedEars' Lahn pointede...@web.de wrote in message news:4761603.ypau67u...@pointedears.de... Fokke Nauta wrote: Thomas 'PointedEars' Lahn pointede...@web.de wrote in message news:6545843.yvfaxzv...@pointedears.de... It's attribution _line_, not attribution novel. Your quotes are hardly legible, too ? http://insideoe.com/ Fokke Nauta wrote: I'm running a PC with XP Pro32, [.] [.] In the PyWebDAV README it says: Installation and setup of server can be as easy as follows: $ easy_install PyWebDAV $ davserver -D /tmp -n -J But of course it doesn't work like that. When I start up Python GUI That is really not a *G*raphical User Interface, but the (text-based) Python shell. Yes, I noticed. But the application has the name of Python GUI. ACK. Admittedly I cannot remember having used Python on Windows (XP) except via Cygwin. I see the prompt instead of the $ prompt. Doctor, my arm hurts when I move it. - Don't move it, then. I don't see the point here ... Do not run `python' or the Python GUI, then. The Python shell executes Python code. The above obviously is not Python code, but *system* shell commands. So let the *system* command shell execute them (as indicated by the `$' prompt, which is customary for a sh-based UNIX/Linux shell prompt). I know. I worked with SCO Unix and various sorts of Linux. But never with Python, so I hadn't got a clue about the prompt. Come on, with that experience you see a `$' and those commands and don't realize it is (ba)sh? Ofcourse I realized it was Unix/Linux. I already could tell that as the packages I downloaded were tar.gz files. So I unpacked them and expected to run a Python installer script from the Python command line. Hence my question How do I do that, but perhaps I did not make myself clear enough. Tried to run the Python installer script from the DOS command line but that resulted in an error. As I have Cygwin running as well, I could try to install it there instead of in Windows. Since you use Windows XP, type `cmd' to get the command shell (if you knew MS-DOS, which I doubt, you are at home now). I know MSDOS. I even worked with CP/M Good for you. However, you appear to have found the *UNIX/Linux* README (and the corresponding version?) of that server: the second command is usually how you would run a program as daemon on Unices (run through an init script), while on Windows NT (like XP) you would have a setup program install a service for you (maybe to execute that command when the service is started). Look for the Windows version. There is no other Windows version except the packages I mentioned, PyWebDAV and PyXML. The only Windows thing I got was the Python interpreter itself. Has it not occurred to you to STFW for easy_install first? What do you mean by STFW? I wasn't aware that easy_install was a utility. Downloaded and installed the Windows version and run easy_install pywebdav. It downloaded something, installed something and finished something. But, once again, don't know how to proceed. Otherwise I'll give it a try under Cygwin. And there is no easy_install script in the PyXML-0.8.4 directory, only a setup.py and ez_setup.py script. I guess the latter is the one to use. But how? RTFM. Which fucking manual? That of the server, on Windows-related information. Or that of easy_install. Or Python. Whichever comes first. It's my own server and I didn't write a manual for it. In the manual of Easy_install it says how to install packaged etc and I did sucessfully. There is no furter information as how to proceed. That's why I posted my question here. How do I proceed next? Look for the Windows version. If there is none, get easy_install and use it as described. I did and it worked. What's next? Fokke -- http://mail.python.org/mailman/listinfo/python-list
Subclassing str object
Hİ, I originally posted my question to here: http://stackoverflow.com/q/7255655/886669 Could you people please look at it and enlighten me a little bit? I would appreciate an answer either from here or at stackoverflow. Thanks in advance. -- http://yasar.serveblog.net/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Installing WebDAV server
What do you mean by STFW? Search The Fucking Web ? I wasn't aware that easy_install was a utility. Downloaded and installed the Windows version and run easy_install pywebdav. It downloaded something, installed something and finished something. Then it's installed! But, once again, don't know how to proceed. Is that so hard? I have never used pywebdav but the first page I hit through Google search is: http://code.google.com/p/pywebdav/ Where it says: Installation and setup of server can be as easy as follows: $ easy_installPyWebDAV $ davserver-D/tmp-n-J Starting upPyWebDAV server(version0.9.2-dev) ATTENTION: Authentication disabled! Serving datafrom /tmp Listening on localhost(8008) So you successfully ran easy_install. Then I guess you will have to look for a program named davserver and start it up. I suspect that searching for davserver.* under your site-packages dir or Python installation dir will do. L -- http://mail.python.org/mailman/listinfo/python-list
argparse: showing full help for subparsers
Hi All, If I have subparsers set up and do: myscript.py --help I get the summary for each of the top-level commands, but to get the help for each sub-command I have to do: myscript.py subcommand --help Is there any way I can get myscript.py --help to show the help hierarchically, including all options for all subcommands? cheers, Chris -- Simplistix - Content Management, Batch Processing Python Consulting - http://www.simplistix.co.uk -- http://mail.python.org/mailman/listinfo/python-list
Re: Installing WebDAV server
Paul Kölle p...@subsignal.org wrote in message news:mailman.595.1314780791.27778.python-l...@python.org... Hi, Am 30.08.2011 22:00, schrieb Fokke Nauta: Hi all, I am completely new to Python, but I'm confronted with a problem I can't solve. Welcome to python. This is my question: [snip] I installed Python 3.2.1 and extracted the packages PyWebDAV and PyXML. Now I have a working Python app and 2 directories called PyWebDAV-0.9.4.1 and PyXML-0.8.4. In the PyWebDAV README it says: Installation and setup of server can be as easy as follows: $ easy_install PyWebDAV $ davserver -D /tmp -n -J But of course it doesn't work like that. When I start up Python GUI I see the prompt instead of the $ prompt. But where do I place the two directories? And there is no easy_install script in the PyXML-0.8.4 directory, only a setup.py and ez_setup.py script. I guess the latter is the one to use. But how? You dont install from Python GUI, use normal cmd, navigate to the folder you downloaded PyXML and PyWebDAV and run python setup.py install (python.exe has to be in your PATH). Then you have to find the startup-script davserver. Find your python installation directory and look into Install dir/Tools/Scripts, in my computer this is E:\python27\Tools\Scripts. PyXML and PyWebDAV get installed in the site-packages folder i.e. E:\python27\Lib/site-packages. You might have to look for davserver there... Thanks, Paul. I ran python setup.py install in both the PyXML and PyWebDAV directories. A lot of things happened and are added into those directories and I guess it will be OK. Next step, the startup-script davserver. There is no script as such, also not in \python27\tools\scripts. I found 2 similar scripts: 1. server.py in D:\Python27\WebDAV\PyWebDAV\DAVServer 2. WebDAVServer.py in D:\Python27\WebDAV\PyWebDAV\DAV Which one is the one to use? I also configured config.ini in D:\Python27\WebDAV\PyWebDAV\DAVServer In this file it says: # Auth Database Table, Must exists in database prior to firstrun dbtable=webDav # Create User Database Table and Insert system user I created in MySQL a database called webDav. I can create a table called User, but how many fields? With regards, Fokke -- http://mail.python.org/mailman/listinfo/python-list
PC locks up with list operations
Twice in a couple of weeks, I have locked up my PC by running a Python 2.5 script that tries to create a list that is insanely too big. In the first case, I (stupidly) did something like: mylist = [0]*12345678901234 After leaving the machine for THREE DAYS (!!!) I eventually was able to get to a console and kill the Python process. Amazingly, it never raised MemoryError in that time. The second time was a little less stupid, but not much: mylist = [] for x in itertools.combinations_with_replacement(some_big_list, 20): mylist.append(func(x)) After three hours, the desktop is still locked up. I'm waiting to see what happens in the morning before rebooting. Apart from Then don't do that!, is there anything I can do to prevent this sort of thing in the future? Like instruct Python not to request more memory than my PC has? I am using Linux desktops; both incidents were with Python 2.5. Do newer versions of Python respond to this sort of situation more gracefully? -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: Installing WebDAV server
Laszlo Nagy gand...@shopzeus.com wrote in message news:mailman.597.1314791334.27778.python-l...@python.org... What do you mean by STFW? Search The Fucking Web ? OK, the modern version of RTFM. I wasn't aware that easy_install was a utility. Downloaded and installed the Windows version and run easy_install pywebdav. It downloaded something, installed something and finished something. Then it's installed! But, once again, don't know how to proceed. Is that so hard? I have never used pywebdav but the first page I hit through Google search is: http://code.google.com/p/pywebdav/ I've been there. Where it says: Installation and setup of server can be as easy as follows: $ easy_installPyWebDAV $ davserver-D/tmp-n-J Starting upPyWebDAV server(version0.9.2-dev) ATTENTION: Authentication disabled! Serving datafrom /tmp Listening on localhost(8008) Yes, but that's Unix/Linux again. But I'm in Windows, without experience with Python. So you successfully ran easy_install. Then I guess you will have to look for a program named davserver and start it up. I suspect that searching for davserver.* under your site-packages dir or Python installation dir will do. Fokke -- http://mail.python.org/mailman/listinfo/python-list
Re: PC locks up with list operations
On 31/08/2011 13:33, Steven D'Aprano wrote: I am using Linux desktops; both incidents were with Python 2.5. Do newer versions of Python respond to this sort of situation more gracefully? Ironically, Windows does better here and dumps you out with a MemoryError before slowly recovering. Linux seems to fair badly when programs use more memory than physically available. Perhaps there's some per-process thing that can be used to limit things on Linux? cheers, Chris -- Simplistix - Content Management, Batch Processing Python Consulting - http://www.simplistix.co.uk -- http://mail.python.org/mailman/listinfo/python-list
Re: PC locks up with list operations
Chris Withers wrote: On 31/08/2011 13:33, Steven D'Aprano wrote: I am using Linux desktops; both incidents were with Python 2.5. Do newer versions of Python respond to this sort of situation more gracefully? Ironically, Windows does better here and dumps you out with a MemoryError before slowly recovering. Linux seems to fair badly when programs use more memory than physically available. Perhaps there's some per-process thing that can be used to limit things on Linux? As far as I know, ulimit (user limit) won't help. It can limit the amount of RAM available to a process, but that just makes the process start using virtual memory more quickly. It can also limit the amount of virtual memory used by the shell, but not of other processes. In other words, Linux will try really, really, really hard to give you the 84 gigabytes you've asked for on a 2 GB system, even if it means DOSing your system for a month. Of course, I would be very happy to learn I'm wrong. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: PC locks up with list operations
On Wed, Aug 31, 2011 at 8:40 AM, Chris Withers ch...@simplistix.co.uk wrote: On 31/08/2011 13:33, Steven D'Aprano wrote: I am using Linux desktops; both incidents were with Python 2.5. Do newer versions of Python respond to this sort of situation more gracefully? Ironically, Windows does better here and dumps you out with a MemoryError before slowly recovering. Linux seems to fair badly when programs use more memory than physically available. Perhaps there's some per-process thing that can be used to limit things on Linux? cheers, Chris -- 32-bit or 64-bit Python? A 32-bit program will crash once memory hits 2GB. A 64-bit program will just keep consuming RAM until your computer starts thrashing. The problem isn't your program using more RAM than you have, just more RAM than you have free. Last time I faced a situation like this, I just decided it was better to stick to the 32-bit program and let it crash if it got too big. Simplistix - Content Management, Batch Processing Python Consulting - http://www.simplistix.co.uk -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: PC locks up with list operations
Steven D'Aprano wrote: Twice in a couple of weeks, I have locked up my PC by running a Python 2.5 script that tries to create a list that is insanely too big. In the first case, I (stupidly) did something like: mylist = [0]*12345678901234 After leaving the machine for THREE DAYS (!!!) I eventually was able to get to a console and kill the Python process. Amazingly, it never raised MemoryError in that time. The second time was a little less stupid, but not much: mylist = [] for x in itertools.combinations_with_replacement(some_big_list, 20): mylist.append(func(x)) After three hours, the desktop is still locked up. I'm waiting to see what happens in the morning before rebooting. Apart from Then don't do that!, is there anything I can do to prevent this sort of thing in the future? Like instruct Python not to request more memory than my PC has? I am using Linux desktops; both incidents were with Python 2.5. Do newer versions of Python respond to this sort of situation more gracefully? If you are starting these scripts from the shell, how about ulimit? $ ulimit -v 4 $ python -c'print range(10**5)[-1]' 9 $ python -c'print range(10**6)[-1]' Traceback (most recent call last): File string, line 1, in module MemoryError $ -- http://mail.python.org/mailman/listinfo/python-list
How to save the packages received by a network interface or some port in a file and resend the packages received when needed?
hi, This is a question not specific to Python,but its related somehow,and I believe I can get some help from your fellow:) I am doing my work on a server service program on Linux that processes the packages sent to the socket it listens.Their is already a old such service listening on the port doing its job,and I can't stop the old server service, and I need to get the packages sent to the old server and send them to my new server service to make sure it works well .How can I get the package and resent them to my new service? Is there such a tool or is there some functionality that tools such as tcpdump already provides? Thanks:) -- http://mail.python.org/mailman/listinfo/python-list
Re: Handling 2.7 and 3.0 Versions of Dict
Am 31.08.2011 03:43, schrieb Travis Parks: I am writing a simple algorithms library that I want to work for both Python 2.7 and 3.x. I am writing some functions like distinct, which work with dictionaries under the hood. The problem I ran into is that I am calling itervalues or values depending on which version of the language I am working in. Here is the code I wrote to overcome it: import sys def getDictValuesFoo(): if sys.version_info (3,): return dict.itervalues else: return dict.values getValues = getDictValuesFoo() def distinct(iterable, keySelector = (lambda x: x)): lookup = {} for item in iterable: key = keySelector(item) if key not in lookup: lookup[key] = item return getValues(lookup) I was surprised to learn that getValues CANNOT be called as if it were a member of dict. I figured it was more efficient to determine what getValues was once rather than every time it was needed. First, how can I make the method getValues private _and_ so it only gets evaluated once? Not sure what private means here. Having the logic selected only once goes like this if sys.version_info (3,): def getDictValues(dict): return dict.itervalues() else: def getDictValues(dict): return dict.values() Secondly, will the body f the distinct method be evaluated immediately? Yes. How can I delay building the dict until the first value is requested? Make it a generator: def distinct(iterable, keySelector = (lambda x: x)): lookup = {} for item in iterable: key = keySelector(item) if key not in lookup: lookup[key] = item for v in getValues(lookup): yield v This delays *building* the dictionary until the *first* value is requested. I.e. it completes building the dictionary before the first value is returned. If you also want to interleave iteration over iterable with fetching distinct values, write it like that: def distinct(iterable, keySelector = (lambda x: x)): seen = {} for item in iterable: key = keySelector(item) if key not in seen: yield item seen[key] = item I noticed that hashing is a lot different in Python than it is in .NET languages. .NET supports custom equality comparers that can override a type's Equals and GetHashCode functions. This is nice when you can't change the class you are hashing. That is why I am using a key selector in my code, here. Is there a better way of overriding the default hashing of a type without actually modifying its definition? I figured a requesting a key was the easiest way. You could provide a Key class that takes a hash function and a value function: class Key: def __init__(self, value, hash, eq): self.value, self.hash, self.eq = value, hash, eq def __hash__(self): return self.hash(self.value) def __eq__(self, other_key): return self.eq(self.value, other_key.value) This class would then be used instead of your keySelector. With that, you could change the dictionary to a set. Actually, you could already do so in the second generator version: def distinct(iterable, keySelector = (lambda x: x)): seen = set() for item in iterable: key = keySelector(item) if key not in seen: yield item seen.add(key) # item is not needed anymore HTH, Martin -- http://mail.python.org/mailman/listinfo/python-list
Re: Installing WebDAV server
Where it says: Installation and setup of server can be as easy as follows: $ easy_installPyWebDAV $ davserver-D/tmp-n-J Starting upPyWebDAV server(version0.9.2-dev) ATTENTION: Authentication disabled! Serving datafrom /tmp Listening on localhost(8008) Yes, but that's Unix/Linux again. But I'm in Windows, without experience with Python. Not really... The easy_install command is the same on windows. Maybe the command prompt is different, but the command itself is the same. Same is true with the davserver command. If you can find a davserver.exe or davserver.py or davserver.pyw file under site-packages or tools/scripts, then that will be the program that you need to start up. No magic. L -- http://mail.python.org/mailman/listinfo/python-list
Re: PC locks up with list operations
On 08/31/2011 02:40 PM, Chris Withers wrote: On 31/08/2011 13:33, Steven D'Aprano wrote: I am using Linux desktops; both incidents were with Python 2.5. Do newer versions of Python respond to this sort of situation more gracefully? Ironically, Windows does better here and dumps you out with a MemoryError before slowly recovering. I think it's a little premature to make such a statement based on a single user experience. I've used Linux for six years now, and it NEVER locked up, even when a program leaks memory like hell. I can't duplicate the OP's behaviour because my Python (2.6.5, 64 bit) does generate an instant MemoryError (which answers the question, ofcourse), but I've used a VLC version that had a nasty leak. My swap space is on a SSD, and VLC filled it completely in about 10 seconds. But then, VLC got killed automatically, and the system recovered gracefully. On a system with the swapspace on a regular HD, the same will happen, but it'll take more time. And while VLC is filling the swap space, the system does not lock up at all. You can still keep working, and (for example) fire up the process manager and kill VLC yourself. mylist = [0]*12345678901234 Traceback (most recent call last): File stdin, line 1, in module MemoryError -- Regards, Robert http://www.arumes.com -- http://mail.python.org/mailman/listinfo/python-list
Re: PC locks up with list operations
$ man limits.conf Sent from my iPhone On Aug 31, 2011, at 8:33 AM, Steven D'Aprano steve+comp.lang.pyt...@pearwood.info wrote: Twice in a couple of weeks, I have locked up my PC by running a Python 2.5 script that tries to create a list that is insanely too big. In the first case, I (stupidly) did something like: mylist = [0]*12345678901234 After leaving the machine for THREE DAYS (!!!) I eventually was able to get to a console and kill the Python process. Amazingly, it never raised MemoryError in that time. The second time was a little less stupid, but not much: mylist = [] for x in itertools.combinations_with_replacement(some_big_list, 20): mylist.append(func(x)) After three hours, the desktop is still locked up. I'm waiting to see what happens in the morning before rebooting. Apart from Then don't do that!, is there anything I can do to prevent this sort of thing in the future? Like instruct Python not to request more memory than my PC has? I am using Linux desktops; both incidents were with Python 2.5. Do newer versions of Python respond to this sort of situation more gracefully? -- Steven -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: How to save the packages received by a network interface or some port in a file and resend the packages received when needed?
Its possible using TCPDUMP and wireshark. however its a bit of a manual process (open the pcap in wireshark, select the correct tcp stream, and extract the file). I did this to show a vulnerability in how medical images were transmitted in a university hospital once :) Here are some guides, maybe it can serve as a jumping off point? http://packetlife.net/blog/2009/jul/13/quick-packet-capture-data-extraction/ http://wiki.wireshark.org/TCP_Reassembly There are some C# libraries specifically for this: http://www.codeproject.com/KB/IP/TcpRecon.aspx Not sure if anything exists explicitly for python though. -Matty On Wed, Aug 31, 2011 at 9:35 AM, king6c...@gmail.com king6c...@gmail.com wrote: hi, This is a question not specific to Python,but its related somehow,and I believe I can get some help from your fellow:) I am doing my work on a server service program on Linux that processes the packages sent to the socket it listens.Their is already a old such service listening on the port doing its job,and I can't stop the old server service, and I need to get the packages sent to the old server and send them to my new server service to make sure it works well .How can I get the package and resent them to my new service? Is there such a tool or is there some functionality that tools such as tcpdump already provides? Thanks:) -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: Returning a value from exec or a better solution
On Wed, Aug 31, 2011 at 12:35 AM, Arnaud Delobelle arno...@gmail.com wrote: You don't know that, an implementation may for example set __bultins__ to None, prior to returning, its not an unreasonable thing to do and the docs don't say they can't. I haven't studied the docs but I'm certain that such an implementation would break a lot of code. For example: a = 42 exec a += 1729 print(a) ...since print would no longer be available in the global namespace. Cheers, Ian -- http://mail.python.org/mailman/listinfo/python-list
Re: How to save the packages received by a network interface or some port in a file and resend the packages received when needed?
On 2011-08-31, Matty Sarro msa...@gmail.com wrote: Its possible using TCPDUMP and wireshark. however its a bit of a manual process (open the pcap in wireshark, select the correct tcp stream, and extract the file). Presumably the OP knows the port IP address and port number on which the server is listening, so wouldn't it be simpler to just capture TCP traffic to/from that IP/port? Then you can play it back using tcprewrite, tcpreplay, et al. But, I don't see how that's going to work. The OP seems to want to capture a TCP session and then replay it so that the client from the session ends up talking to a different server during the replay. The chances of the new server starting up a connection with the same ACK sequence number is practially nil isn't it? ?? This is a question not specific to Python,but its related somehow,and I believe I can get some help from your fellow:) ?? I am doing my work on a server service program on Linux that processes the packages sent to the socket it listens.Their is already a old such service listening on the port doing its job,and I can't stop the old server service, and I need to get the packages sent to the old server and send them to my new server service to make sure it works well .How can I get the package and resent them to my new service? Is there such a tool or is there some functionality that tools such as tcpdump already provides? Thanks:) -- Grant Edwards grant.b.edwardsYow! ... this must be what at it's like to be a COLLEGE gmail.comGRADUATE!! -- http://mail.python.org/mailman/listinfo/python-list
Re: Installing WebDAV server
Laszlo Nagy gand...@shopzeus.com wrote in message news:mailman.603.1314797809.27778.python-l...@python.org... Where it says: Installation and setup of server can be as easy as follows: $ easy_installPyWebDAV $ davserver-D/tmp-n-J Starting upPyWebDAV server(version0.9.2-dev) ATTENTION: Authentication disabled! Serving datafrom /tmp Listening on localhost(8008) Yes, but that's Unix/Linux again. But I'm in Windows, without experience with Python. Not really... The easy_install command is the same on windows. Maybe the command prompt is different, but the command itself is the same. Same is true with the davserver command. If you can find a davserver.exe or davserver.py or davserver.pyw file under site-packages or tools/scripts, then that will be the program that you need to start up. No magic. Actually, I installed easy_install setuptools for Windows (setuptools-0.6c11.win32-py2.7.exe). Running easy_install generated an error message: Setuptools version 0.6c9 or greater has been installed. (Run ez_setup.py -U setuptools to reinstall or upgrade.) I did, quite something happened but the same error message came back when retrying. So, I installed it another way, indicated by Paul Kölle: navigate to the folder you downloaded PyXML and PyWebDAV and run python setup.py install (python.exe has to be in your PATH). That worked fine, but: There is no davserver script or executable. Please read my response to Paul Kölle. Fokke -- http://mail.python.org/mailman/listinfo/python-list
Creating python egg including pre-built libraries
I have a set of complex libraries that I have wrapped with swig. I would like to create a python egg of the swig generated python files and the pre-built libraries. The libraries have a lot of dependencies and I don't want to force the user to get all the dependencies to try to build the libraries from source. I just want to distribute some python files and the libraries for a given platform. Does anyone have a recipe for doing something like this? Thanks, Karl -- http://mail.python.org/mailman/listinfo/python-list
Why do class methods always need 'self' as the first parameter?
I’m new to Python, and I love it. The philosophy of the language (and of the community as a whole) is beautiful to me. But one of the things that bugs me is the requirement that all class methods have 'self' as their first parameter. On a gut level, to me this seems to be at odds with Python’s dedication to simplicity. For example, consider Python’s indent-sensitive syntax. Although other languages didn’t use indentation to specify scope, programmers always used indentation anyways. Making indentation took a common practice, made it a rule, and the result was a significantly improved signal-to-noise ratio in the readability of Python code. So why is 'self' necessary on class methods? It seems to me that the most common practice is that class methods *almost always* operate on the instance that called them. It would make more sense to me if this was assumed by default, and for static methods (methods that are part of a class, but never associated with a specific instance) to be labelled instead. Just curious about the rationale behind this part of the language. -- http://mail.python.org/mailman/listinfo/python-list
Re: How to save the packages received by a network interface or some port in a file and resend the packages received when needed?
On 8/31/2011 6:35 AM king6c...@gmail.com said... hi, This is a question not specific to Python,but its related somehow,and I believe I can get some help from your fellow:) I am doing my work on a server service program on Linux that processes the packages sent to the socket it listens.Their is already a old such service listening on the port doing its job,and I can't stop the old server service, and I need to get the packages sent to the old server and send them to my new server service to make sure it works well .How can I get the package and resent them to my new service? Is there such a tool or is there some functionality that tools such as tcpdump already provides? I recently set up a standby spare fax server on a network that I also needed to test, and was able to tee the source transmissions to both systems. That may be an option, particularly as it sounds like you've written a consumer of info and are not replying and interacting with the source. Emile -- http://mail.python.org/mailman/listinfo/python-list
Re: Why do class methods always need 'self' as the first parameter?
In 0dc26f12-2541-4d41-8678-4fa53f347...@g9g2000yqb.googlegroups.com T. Goodchild tgoodch...@gmail.com writes: So why is 'self' necessary on class methods? It seems to me that the most common practice is that class methods *almost always* operate on the instance that called them. It would make more sense to me if this was assumed by default, and for static methods (methods that are part of a class, but never associated with a specific instance) to be labelled instead. Just curious about the rationale behind this part of the language. How would a method access instance variables without 'self'? They probably could have made 'self' a magical attribute that just appears out of thin air instead of being passed as an argument, like 'this' in C++. But would that really provide any benefit? -- John Gordon A is for Amy, who fell down the stairs gor...@panix.com B is for Basil, assaulted by bears -- Edward Gorey, The Gashlycrumb Tinies -- http://mail.python.org/mailman/listinfo/python-list
Re: Why do class methods always need 'self' as the first parameter?
On 8/31/2011 7:35 AM T. Goodchild said... Just curious about the rationale behind this part of the language. http://docs.python.org/faq/design.html -- http://mail.python.org/mailman/listinfo/python-list
Re: Why do class methods always need 'self' as the first parameter?
On 2011-08-31, T. Goodchild tgoodch...@gmail.com wrote: I?m new to Python, and I love it. The philosophy of the language (and of the community as a whole) is beautiful to me. But one of the things that bugs me is the requirement that all class methods have 'self' as their first parameter. On a gut level, to me this seems to be at odds with Python?s dedication to simplicity. Think it through carefully, and you'll probably agree with Python's design. But not necessarily. In any case, this is a very common complaint, so check out the Python FAQ. http://docs.python.org/faq/design.html#why-self -- Neil Cerutti A politician is an arse upon which everyone has sat except a man. e. e. cummings -- http://mail.python.org/mailman/listinfo/python-list
Re: Why do class methods always need 'self' as the first parameter?
Hello, 2011/8/31 T. Goodchild tgoodch...@gmail.com: But one of the things that bugs me is the requirement that all class methods have 'self' as their first parameter. On a gut level, to me this seems to be at odds with Python’s dedication to simplicity. I think the answer to this question is part of the zen of python: Explicit is better than implicit. http://www.python.org/dev/peps/pep-0020/ Regards, Javier -- http://mail.python.org/mailman/listinfo/python-list
Re: How to save the packages received by a network interface or some port in a file and resend the packages received when needed?
In fact,UDP is enough for me,I heared that tcpdump and netcat can store and resend the udp packages to get the replay effect,but I don't know how, or is there some better way? I am working on a Linux server and only some basic terminal tools are available :) 2011/8/31 Emile van Sebille em...@fenx.com On 8/31/2011 6:35 AM king6c...@gmail.com said... hi, This is a question not specific to Python,but its related somehow,and I believe I can get some help from your fellow:) I am doing my work on a server service program on Linux that processes the packages sent to the socket it listens.Their is already a old such service listening on the port doing its job,and I can't stop the old server service, and I need to get the packages sent to the old server and send them to my new server service to make sure it works well .How can I get the package and resent them to my new service? Is there such a tool or is there some functionality that tools such as tcpdump already provides? I recently set up a standby spare fax server on a network that I also needed to test, and was able to tee the source transmissions to both systems. That may be an option, particularly as it sounds like you've written a consumer of info and are not replying and interacting with the source. Emile -- http://mail.python.org/**mailman/listinfo/python-listhttp://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: Why do class methods always need 'self' as the first parameter?
T. Goodchild wrote: So why is 'self' necessary on class methods? I assume you are talking about the declaration in the method signature: def method(self, args): ... rather than why methods have to be called using self.method. If not, there's already a FAQ for that second question: http://docs.python.org/faq/design.html#why-self It seems to me that the most common practice is that class methods *almost always* operate on the instance that called them. By the way, what you're calling class methods are actually *instance* methods, because they receive the instance self as the first parameter. Python does have class methods, which receive the class, not the instance, as the first parameter. These are usually written something like this: class K(object): @classmethod def spam(cls, args): print cls # always prints class K, never the instance Just like self, the name cls is a convention only. Class methods are usually used for alternate constructors. There are also static methods, which don't receive any special first argument, plus any other sort of method you can invent, by creating descriptors... but that's getting into fairly advanced territory. They're generally specialised, and don't see much use. As you can see, the terminology is not exactly the same as Java. It would make more sense to me if this was assumed by default, ... Well here's the thing. Python methods are wrappers around function objects. The method wrapper knows which instance is involved (because of the descriptor magic which I alluded to above), but the function doesn't and can't. Or at least not without horrible run-time hacks. By treating self as an ordinary parameter which needs to be declared, you can do cool stuff like bound and unbound methods: f = instance.upper # this is a bound method g = str.upper # this is an unbound method The bound method f already has the instance self filled in, so to speak. So you can now just call it, and it will work: f() = returns INSTANCE The unbound method still needs the instance supplied. This makes it perfect for code like this: for instance in (hello, world): print g(instance) especially if you don't know what g will be until run-time. (E.g. will it be str.upper, str.lower, str.title?) Because methods require that first argument to be given explicitly, unbound methods are practically ordinary functions. They're so like functions that in Python 3, they're done away with altogether, and the unwrapped function object will be returned instead. You can also do nifty stuff like dynamic method injections: def func(a, b): ... print(a, b) ... class K(object): ... pass ... K.func = func # dynamically inject a method instance = K() instance.func(23) (__main__.K object at 0xb7f0a4cc, 23) and it all just works. You can even inject a method onto the instance, although it takes a bit more effort to make that work. All this is possible without nasty hacks because self is treated as just an ordinary parameter of functions. Otherwise, the compiler would need to know whether the function was being called from inside a method wrapper or not, and change the function signature appropriately, and that just gets too ugly and messy for words. So for the cost of having to declare self as an argument, we get: * instant visual recognition of what's intended as a method (the first argument is called self) and what isn't * a nicely consistent treatment of function signatures at all times * clean semantics for the local variable namespace * the same mechanism (with minor adjustments) can be used for class and static methods * bound and unbound methods semantics plus as a bonus, plenty of ongoing arguments about whether or not having to explicitly list self as a parameter is a good thing or not, thus keeping people busy arguing on mailing lists instead of coding wink -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: Handling 2.7 and 3.0 Versions of Dict
On Wed, Aug 31, 2011 at 3:55 AM, Martin v. Loewis mar...@v.loewis.de wrote: if sys.version_info (3,): def getDictValues(dict): return dict.itervalues() else: def getDictValues(dict): return dict.values() The extra level of function call indirection is unnecessary here. Better to write it as: if sys.version_info (3,): getDictValues = dict.itervalues else: getDictValues = dict.values (which is basically what the OP was doing in the first place). I noticed that hashing is a lot different in Python than it is in .NET languages. .NET supports custom equality comparers that can override a type's Equals and GetHashCode functions. This is nice when you can't change the class you are hashing. That is why I am using a key selector in my code, here. Is there a better way of overriding the default hashing of a type without actually modifying its definition? I figured a requesting a key was the easiest way. You could provide a Key class that takes a hash function and a value function: class Key: def __init__(self, value, hash, eq): self.value, self.hash, self.eq = value, hash, eq def __hash__(self): return self.hash(self.value) def __eq__(self, other_key): return self.eq(self.value, other_key.value) This class would then be used instead of your keySelector. For added value, you can make it a class factory so you don't have to specify hash and eq over and over: def Key(keyfunc): class Key: def __init__(self, value): self.value = value def __hash__(self): return hash(keyfunc(self.value)) def __eq__(self, other): return keyfunc(self) == keyfunc(other) return Key KeyTypeAlpha = Key(lambda x: x % 7) items = set(KeyTypeAlpha(value) for value in sourceIterable) Cheers, Ian -- http://mail.python.org/mailman/listinfo/python-list
fun with nested loops
Dear All, I have some complicated loops of the following form for c in configurations: # loop 1 while nothing_bad_happened: # loop 2 while step1_did_not_work: # loop 3 for substeps in step1 # loop 4a # at this point, we may have to -leave loop 1 -restart loop 4 -skip a step in loop 4 -continue on to loop 4b while step2_did_not_work: # loop 4b for substeps in step2: # at this point, we may have to -leave loop 1 -restart loop 2 -restart loop 4b ... ...many more loops... I don't see any way to reduce these nested loops logically, they describe pretty well what the software has to do. This is a data acquisition application, so on ever line there is a lot of IO that might fail or make subsequent steps useless or require a retry. Now every step could need to break out of any of the enclosing loops. So basically I have to transform every loop to be of the following horror: # general transformation of # for c in configurations... # to provide restart, break and continue # callable from any nesting level inside of the loop class loop1_restart(Exception): pass class loop1_break(Exception): pass class loop1_continue(Exception): pass while True: try: for c in configurations: while True: try: # inner loops go here, of course, they would have to get # all the boilerplate added, too while nothing_bad_happened: while step1_did_not_work: if cond1: raise loop1_restart() elif cond3: raise loop1_break() elif cond3: raise loop1_continue() break except loop1_continue: pass break except loop1_restart: pass except loop1_break: break Of course this is extremely tedious and error prone. If Python had named loops (PEP 3136, unfortunately rejected), this would be trivial: In Fortran I can continue (cycle), break (exit) and redo (goto label) arbitrary loops, which results in neat code: 10 loop1: do I=1,3 loop2: do J=1,4 print *,I,J goto 10 cycle loop1 exit loop1 enddo loop2 enddo loop1 My question is, how do I obtain something that implements the following logic: @named_loop(fred) # I wish this would be possible for i in range(10): for j in range(10): break fred # breaks out of outer loop continue fred # continues outer loop redo fred # resets outer loop and restarts with i=0 The best solution would be something along the Proposal D - Explicit iterators in PEP 3136, in this case it would even be possible to peek at the next i or advance/reverse the iterator a few steps. Has anyone an idea on a nice way to write breaks/continues/redos for deeply nested loops? Dan -- http://mail.python.org/mailman/listinfo/python-list
Re: Subclassing str object
I made a class like this (I shortened it just to show the point), what do you think about it, do you think it is the python way of subclassing str (or unicode in this case) # -*- coding:utf-8 -*-class kelime(unicode): def __init__(self,sozcuk): self._sozcuk = sozcuk def __getattribute__(self, isim): att = super(kelime, self).__getattribute__(isim) if not callable(att): return att def sonra_cagir(*args, **kwargs): sonuc = att(*args, **kwargs) if isinstance(sonuc, basestring): return kelime(sonuc) return sonuc return sonra_cagir def cogul(self): for harf in reversed(self._sozcuk): if harf in kalin: return kelime(self._sozcuk + ular) elif harf in ince: return kelime(self._sozcuk + uler) return kelime(self._sozcuk + ular) 31 Ağustos 2011 14:43 tarihinde Yaşar Arabacı yasar11...@gmail.com yazdı: Hİ, I originally posted my question to here: http://stackoverflow.com/q/7255655/886669 Could you people please look at it and enlighten me a little bit? I would appreciate an answer either from here or at stackoverflow. Thanks in advance. -- http://yasar.serveblog.net/ -- http://yasar.serveblog.net/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Why do class methods always need 'self' as the first parameter?
John Gordon wrote: In 0dc26f12-2541-4d41-8678-4fa53f347...@g9g2000yqb.googlegroups.com T. Goodchild tgoodch...@gmail.com writes: So why is 'self' necessary on class methods? It seems to me that the most common practice is that class methods *almost always* operate on the instance that called them. It would make more sense to me if this was assumed by default, and for static methods (methods that are part of a class, but never associated with a specific instance) to be labelled instead. Just curious about the rationale behind this part of the language. How would a method access instance variables without 'self'? If Python had compile time declarations, the compiler could know whether x=1 was referring to a local variable x or an attribute x. The reader might not, but the compiler would :) By the way, although the Python docs are a little inconsistent, the usual term here is attribute rather than instance variable. Attributes need not live on the instance: they can also live on the class, a superclass, or be computed at run-time via at least three different mechanisms I can think of (__getattribute__, __getattr__, properties). Local variables are treated a bit differently from attributes, but broadly speaking, if you need a dot to access something, it's an attribute, if you don't, it's a name binding (or variable). Python even has two different sorts of errors for variable lookup failures: NameError (or UnboundLocalError) for un-dotted names, and AttributeError for dotted names. They probably could have made 'self' a magical attribute that just appears out of thin air instead of being passed as an argument, like 'this' in C++. But would that really provide any benefit? Well obviously the C++ people thought so :) The effort to type self, in method signatures is pretty low. I don't think it is a problem. But other languages are free to choose differently. Cobra, for example, is explicitly derived from Python in many ways, but it drops the self (as well as other changes). http://cobra-language.com/docs/python/ -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: How to save the packages received by a network interface or some port in a file and resend the packages received when needed?
On 8/31/2011 8:37 AM king6c...@gmail.com said... In fact,UDP is enough for me,I heared that tcpdump and netcat can store and resend the udp packages to get the replay effect,but I don't know how, That may be, but I've never tried that. or is there some better way? I am working on a Linux server and only some basic terminal tools are available :) If appropriate, I'd try the iptables --tee option. Emile -- http://mail.python.org/mailman/listinfo/python-list
Re: Why do class methods always need 'self' as the first parameter?
On 2011-08-31, Steven D'Aprano steve+comp.lang.pyt...@pearwood.info wrote: Well obviously the C++ people thought so :) Well _that's_ certainly a ringing endorsement in the context of designing a language that's easy to understand and use. ;) -- Grant Edwards grant.b.edwardsYow! Where's SANDY DUNCAN? at gmail.com -- http://mail.python.org/mailman/listinfo/python-list
Re: Why do class methods always need 'self' as the first parameter?
On 8/31/2011 10:35 AM, T. Goodchild wrote: But one of the things that bugs me is the requirement that all class methods have 'self' as their first parameter. On a gut level, to me this seems to be at odds with Python’s dedication to simplicity. Actually, it is a consequence of Python's dedication to simplicity. A method is simply a function that is an attribute of a class. (This is even clearer in Py 3.) Hence, there is no special syntax for methods. Consider def double(obj): return 2*obj.value class C: def __init__(self, val): self.value = val c = C(3) C.double = double c.doub = double # not c.double as that would mask access to C.double in c.double() below print(double(c), C.double(c), c.double(), c.doub(c)) # 6 6 6 6 -- Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list
Re: fun with nested loops
On Aug 31, 5:51 pm, Daniel dali...@gmail.com wrote: Dear All, I have some complicated loops of the following form for c in configurations: # loop 1 while nothing_bad_happened: # loop 2 while step1_did_not_work: # loop 3 for substeps in step1 # loop 4a # at this point, we may have to -leave loop 1 -restart loop 4 -skip a step in loop 4 -continue on to loop 4b while step2_did_not_work: # loop 4b for substeps in step2: # at this point, we may have to -leave loop 1 -restart loop 2 -restart loop 4b ... ...many more loops... I don't see any way to reduce these nested loops logically, they describe pretty well what the software has to do. This is a data acquisition application, so on ever line there is a lot of IO that might fail or make subsequent steps useless or require a retry. Now every step could need to break out of any of the enclosing loops. So basically I have to transform every loop to be of the following horror: # general transformation of # for c in configurations... # to provide restart, break and continue # callable from any nesting level inside of the loop class loop1_restart(Exception): pass class loop1_break(Exception): pass class loop1_continue(Exception): pass while True: try: for c in configurations: while True: try: # inner loops go here, of course, they would have to get # all the boilerplate added, too while nothing_bad_happened: while step1_did_not_work: if cond1: raise loop1_restart() elif cond3: raise loop1_break() elif cond3: raise loop1_continue() break except loop1_continue: pass break except loop1_restart: pass except loop1_break: break Of course this is extremely tedious and error prone. If Python had named loops (PEP 3136, unfortunately rejected), this would be trivial: In Fortran I can continue (cycle), break (exit) and redo (goto label) arbitrary loops, which results in neat code: 10 loop1: do I=1,3 loop2: do J=1,4 print *,I,J goto 10 cycle loop1 exit loop1 enddo loop2 enddo loop1 My question is, how do I obtain something that implements the following logic: @named_loop(fred) # I wish this would be possible for i in range(10): for j in range(10): break fred # breaks out of outer loop continue fred # continues outer loop redo fred # resets outer loop and restarts with i=0 The best solution would be something along the Proposal D - Explicit iterators in PEP 3136, in this case it would even be possible to peek at the next i or advance/reverse the iterator a few steps. Has anyone an idea on a nice way to write breaks/continues/redos for deeply nested loops? Hi Dan, it looks like you have already answered all your questions. one more idea, a kind of named loop: ic=0 op='what to do' while iclen(configurations): c=configuration[ic] if op=='restart': ic=0 elif op=='next' ic+=1 elif op=='terminate' ic=len(configurations) and at first explicit iterator was also a good idea, when you don't need to iter in reverse order When it become too complicate, I use state machine: http://en.wikipedia.org/wiki/Finite-state_machine Regards Dan -- http://mail.python.org/mailman/listinfo/python-list
Re: Usage of PyDateTime_FromTimestamp
On 31/08/2011 04:39, Andreas wrote: Am 30.08.2011 23:49, schrieb MRAB: The key phrase is argument tuple. The arguments passed to a Python call are always a tuple, not PyFloat_Object. You can build a tuple from the PyFloat_Object using: Py_BuildValue((O), float_object) The (O) says to build a tuple ((...)) containing a single object (O). Some other points: Py_BuildValue defaults to building a tuple if the format string contains multiple items, eg OO means the same as (OO). In your case, there is only one, so the (...) is required. The object returned will have a reference count of 1, and any Python object passed to the function will have its reference count incremented. Thank you very much! That solved my problem. Here the full working example: static double doubleValue = 1314761451; PyObject *floatObj = NULL; PyObject *timeTuple = NULL; PyObject *dateTime = NULL; floatObj = PyFloat_FromDouble(doubleValue); timeTuple = Py_BuildValue((O), floatObj); dateTime = PyDateTime_FromTimestamp(timeTuple); PyFloat_FromDouble returns an object with a reference count of 1 and Py_BuildValue increments that reference count, so you should probably be decrementing it afterwards, otherwise you'll have a memory leak. The usual rule is that you create it, use it, then 'decref' it. Also, you should be doing some error-checking, seeing if Py_BuildValue, etc, is returning NULL, indicating an error. -- http://mail.python.org/mailman/listinfo/python-list
Closures and Partial Function Application
I was a little disappointed the other day when I realized that closures were read-only. I like to use closures quite a bit. Can someone explain why this limitation exists? Secondly, since I can cheat by wrapping the thing being closure-ified, how can I write a simple wrapper that has all the same members as the thing (decorator), that then applies them to the underlying thing? I also like partial function application. What is the easiest way of achieving this in Python? Would it look something like this: def foo(x, y): return x + y xFoo = lambda y: foo(10, y) -- http://mail.python.org/mailman/listinfo/python-list
Re: Closures and Partial Function Application
On 31 August 2011 17:45, Travis Parks jehugalea...@gmail.com wrote: I was a little disappointed the other day when I realized that closures were read-only. I like to use closures quite a bit. Can someone explain why this limitation exists? Secondly, since I can cheat by wrapping the thing being closure-ified, how can I write a simple wrapper that has all the same members as the thing (decorator), that then applies them to the underlying thing? I don't understand. Can you give an example? I also like partial function application. What is the easiest way of achieving this in Python? Would it look something like this: def foo(x, y): return x + y xFoo = lambda y: foo(10, y) from functools import partial foo10 = partial(foo, 10) HTH Arnaud -- http://mail.python.org/mailman/listinfo/python-list
Re: Subclassing str object
On 8/31/2011 7:43 AM, Yaşar Arabacı wrote: Hİ, I originally posted my question to here: http://stackoverflow.com/q/7255655/886669 Could you people please look at it and enlighten me a little bit? I would appreciate an answer either from here or at stackoverflow. I believe two people already gave my answer. If 'a' is bound to a str() object, a.capitalize() will return a standard, unmodified str, not your custom class, so a.capitalize().mycustommethod() will fail.. If you reject that enlightenment, there is not much more to say. (And if you accept it, I am not sure what you still need.) To put is a different way, if you want to chain together existing string methods and your new methods, you must start with objects of your new subclass and wrap every string method that you want to chain. class mystr(str): ... def capitalize(s): return mystr(str.capitalize(s)) You ended up doing something like this in your edit #3, except you perhaps should not have the __init__ method (depending on what 'sozcuk' is) and you do the wrapping on every call instead of just once and use the generalized signature *arg,**kwds for every method, which will make tracebacks much less informative. -- Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list
Re: Subclassing str object
2011/8/31 Yaşar Arabacı yasar11...@gmail.com: I made a class like this (I shortened it just to show the point), what do you think about it, do you think it is the python way of subclassing str (or unicode in this case) You don't need the _sozcuk attribute at all here. It's just the same as the value of the unicode object itself. The code could be simplified to: class kelime(unicode): def __getattribute__(self, isim): att = super(kelime, self).__getattribute__(isim) if not callable(att): return att def sonra_cagir(*args, **kwargs): sonuc = att(*args, **kwargs) if isinstance(sonuc, basestring): return kelime(sonuc) return sonuc return sonra_cagir def cogul(self): for harf in reversed(self): if harf in kalin: return kelime(self + ular) elif harf in ince: return kelime(self + uler) return kelime(self + ular) Also, isinstance(sonuc, basestring) should probably be isinstance(sonuc, unicode). Otherwise you'll break the encode method. If you want kelime(u'one') + kelime(u'two') to return a kelime instance, you'll need to override the __add__ special method as well. Likewise for kelime(u'repeat') * 20 and the __mul__ method. You'll also want to override __getitem__ so that slicing returns a kelime instance as expected. Finally, I gather that the goal of this is not to modify the behavior of the unicode class at all, but just to add custom methods? I would strongly recommend that you not use a subclass for this, and instead just write some functions that take a string to operate on as an argument. Subclassing built-in types tends to be tricky as you can see, and this doesn't seem like a good reason to attempt it. Cheers, Ian -- http://mail.python.org/mailman/listinfo/python-list
Re: Installing WebDAV server
Hi, answers below... Am 31.08.2011 14:18, schrieb Fokke Nauta: Paul Köllep...@subsignal.org wrote in message news:mailman.595.1314780791.27778.python-l...@python.org... Hi, Am 30.08.2011 22:00, schrieb Fokke Nauta: Hi all, I am completely new to Python, but I'm confronted with a problem I can't solve. Welcome to python. This is my question: [snip] I installed Python 3.2.1 and extracted the packages PyWebDAV and PyXML. Now I have a working Python app and 2 directories called PyWebDAV-0.9.4.1 and PyXML-0.8.4. In the PyWebDAV README it says: Installation and setup of server can be as easy as follows: $ easy_install PyWebDAV $ davserver -D /tmp -n -J But of course it doesn't work like that. When I start up Python GUI I see the prompt instead of the $ prompt. But where do I place the two directories? And there is no easy_install script in the PyXML-0.8.4 directory, only a setup.py and ez_setup.py script. I guess the latter is the one to use. But how? You dont install from Python GUI, use normal cmd, navigate to the folder you downloaded PyXML and PyWebDAV and run python setup.py install (python.exe has to be in your PATH). Then you have to find the startup-script davserver. Find your python installation directory and look intoInstall dir/Tools/Scripts, in my computer this is E:\python27\Tools\Scripts. PyXML and PyWebDAV get installed in the site-packages folder i.e. E:\python27\Lib/site-packages. You might have to look for davserver there... Thanks, Paul. I ran python setup.py install in both the PyXML and PyWebDAV directories. A lot of things happened and are added into those directories and I guess it will be OK. Next step, the startup-script davserver. There is no script as such, also not in \python27\tools\scripts. I found 2 similar scripts: 1. server.py in D:\Python27\WebDAV\PyWebDAV\DAVServer 2. WebDAVServer.py in D:\Python27\WebDAV\PyWebDAV\DAV Which one is the one to use? Your install locations look odd, but it might work nevertheless. The server is in DAVServer\server.py, you can look at the file and you will see: if __name__ == '__main__': run() at the bottom. This is the entry point of a python script if called from the command line. My install looks a bit different but I can start the server as follows: python.exe E:\Python27\Lib\site-packages\pywebdav-0.9.4.1-py2.7.egg\DAVServer\server.py -D c:\home -n WARNING:pywebdav:Authentication disabled! Listening on localhost (8008) I also configured config.ini in D:\Python27\WebDAV\PyWebDAV\DAVServer I would use a config file outside the program directory and use the -c or --config switch, run server.py without arguments to see possible startup options. In this file it says: # Auth Database Table, Must exists in database prior to firstrun dbtable=webDav # Create User Database Table and Insert system user I created in MySQL a database called webDav. I can create a table called User, but how many fields? Don't know if that's documented somewhere but you can just look at the code in mysqlauth.py in the same directory as server.py. Seems it needs three columns, (Userstring,Passstring,can_write0|1) but I haven't tried. cheers Paul -- http://mail.python.org/mailman/listinfo/python-list
RE: Why do class methods always need 'self' as the first parameter?
def double(obj): return 2*obj.value class C: def __init__(self, val): self.value = val c = C(3) C.double = double c.doub = double # not c.double as that would mask access to C.double in c.double() below print(double(c), C.double(c), c.double(), c.doub(c)) Sorry if I get some of the following terminology wrong, I get a bit confused on Python terms. I hope the following is still coherent. (Is there a dictionary of Python terminology?) Given the above example I get this print c.double(c) TypeError: double() takes exactly 1 argument (2 given) print c.doub(c) 6 It seems to me that if I add a function to the list of class attributes it will automatically wrap with self but adding it to the object directly will not wrap the function as a method. Can somebody explain why? I would have thought that any function added to an object would be a method (unless decorated as a class method). Hmm, or does the decoration just tell Python not to turn an object's function into a method? I.e. Is the decorator basically just the syntactic sugar for doing the above? Ramit Ramit Prasad | JPMorgan Chase Investment Bank | Currencies Technology 712 Main Street | Houston, TX 77002 work phone: 713 - 216 - 5423 This email is confidential and subject to important disclaimers and conditions including on offers for the purchase or sale of securities, accuracy and completeness of information, viruses, confidentiality, legal privilege, and legal entity disclaimers, available at http://www.jpmorgan.com/pages/disclosures/email. -- http://mail.python.org/mailman/listinfo/python-list
Re: Closures and Partial Function Application
On Wed, Aug 31, 2011 at 9:45 AM, Travis Parks jehugalea...@gmail.com wrote: I was a little disappointed the other day when I realized that closures were read-only. I like to use closures quite a bit. Assuming I'm intuiting your question correctly, then you're incorrect; they are read/write. You just need a `nonlocal` declaration for the variables in question. See http://www.python.org/dev/peps/pep-3104/ and http://docs.python.org/release/3.1.3/reference/simple_stmts.html#nonlocal for details. Cheers, Chris -- http://mail.python.org/mailman/listinfo/python-list
Re: Python Tools for Visual Studio - anyone using it?
On Aug 30, 1:34 pm, Philip Semanchuk phi...@semanchuk.com wrote: Hi all, I was reminded today (via Slashdot) of Python Tools for Visual Studio which was discussed on this list back in March (http://mail.python.org/pipermail/python-list/2011-March/1267662.html) and has reached version 1.0. Is anyone here using it? Care to share pros cons? Here's the URL for those who haven't heard of it before:http://pytools.codeplex.com/ Thanks Philip I have been using it for a few days now. I really like it. It doesn't have all of the features of other python specific IDEs but the core features are done very well. It feels very complete. It seems to have all the features I need and they feel rock solid. Pros: Seemed very snappy compared to other Python IDEs I have used Debugger is very well done. Price( Free when using the VS 2010 Shell ) **Subjective: The editor just feels really nice. Cons: Basic compared to other IDES. By this I mean it doesn't have some of the nice-to-have features like explicit Django support. Have to download and install a 180mb Shell version of VS to use it if you don't already have VS installed. Personally I was very surprised at how good this plugin is. It has quickly become my python IDE of choice on Windows( or anywhere else ) -- http://mail.python.org/mailman/listinfo/python-list
Re: Subclassing str object
@Ian: Thanks for you comments. I indeed didn't need the _sozcuk attribute at all, so I deleted it. My class's addition and multiplication works without overwriting __add__ and __mul__ because, this class uses unicode's __add__ and __mul__ than creates a new kelime instance with return value of those methods in __getattribute__. I didn't get a good grasp on how using basestring there might broke encoding, could you explain a little bit more, or provide a reading material? And, as with the purpose, yes, it is intended to add some methods on unicode. But the bigger purpose is to learn how to work with builtin objects, or more spesifically, immutable ones. Therefore I value much to make this simple example work, and make it work in a python way. @Terry: yes, my *args **kwargs method made tracebacks much less informative. I agree on that. I am still trying to implement a better way. @all: So the thing I wonder, when creating new instance in for example capitalize() method, does str use something like self.__new__() or unicode.__new__()? Because, in latter case, I could override the __new__ method on my class, so that every method would create my class's instance, instead of unicode's 31 Ağustos 2011 20:11 tarihinde Ian Kelly ian.g.ke...@gmail.com yazdı: 2011/8/31 Yaşar Arabacı yasar11...@gmail.com: I made a class like this (I shortened it just to show the point), what do you think about it, do you think it is the python way of subclassing str (or unicode in this case) You don't need the _sozcuk attribute at all here. It's just the same as the value of the unicode object itself. The code could be simplified to: class kelime(unicode): def __getattribute__(self, isim): att = super(kelime, self).__getattribute__(isim) if not callable(att): return att def sonra_cagir(*args, **kwargs): sonuc = att(*args, **kwargs) if isinstance(sonuc, basestring): return kelime(sonuc) return sonuc return sonra_cagir def cogul(self): for harf in reversed(self): if harf in kalin: return kelime(self + ular) elif harf in ince: return kelime(self + uler) return kelime(self + ular) Also, isinstance(sonuc, basestring) should probably be isinstance(sonuc, unicode). Otherwise you'll break the encode method. If you want kelime(u'one') + kelime(u'two') to return a kelime instance, you'll need to override the __add__ special method as well. Likewise for kelime(u'repeat') * 20 and the __mul__ method. You'll also want to override __getitem__ so that slicing returns a kelime instance as expected. Finally, I gather that the goal of this is not to modify the behavior of the unicode class at all, but just to add custom methods? I would strongly recommend that you not use a subclass for this, and instead just write some functions that take a string to operate on as an argument. Subclassing built-in types tends to be tricky as you can see, and this doesn't seem like a good reason to attempt it. Cheers, Ian -- http://yasar.serveblog.net/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Closures and Partial Function Application
On Aug 31, 1:18 pm, Chris Rebert c...@rebertia.com wrote: On Wed, Aug 31, 2011 at 9:45 AM, Travis Parks jehugalea...@gmail.com wrote: I was a little disappointed the other day when I realized that closures were read-only. I like to use closures quite a bit. Assuming I'm intuiting your question correctly, then you're incorrect; they are read/write. You just need a `nonlocal` declaration for the variables in question. Seehttp://www.python.org/dev/peps/pep-3104/ andhttp://docs.python.org/release/3.1.3/reference/simple_stmts.html#nonl... for details. Cheers, Chris Cool. So I just need to put nonlocal in front of the variable name. -- http://mail.python.org/mailman/listinfo/python-list
Re: Closures and Partial Function Application
On Aug 31, 1:51 pm, Travis Parks jehugalea...@gmail.com wrote: On Aug 31, 1:18 pm, Chris Rebert c...@rebertia.com wrote: On Wed, Aug 31, 2011 at 9:45 AM, Travis Parks jehugalea...@gmail.com wrote: I was a little disappointed the other day when I realized that closures were read-only. I like to use closures quite a bit. Assuming I'm intuiting your question correctly, then you're incorrect; they are read/write. You just need a `nonlocal` declaration for the variables in question. Seehttp://www.python.org/dev/peps/pep-3104/ andhttp://docs.python.org/release/3.1.3/reference/simple_stmts.html#nonl... for details. Cheers, Chris Cool. So I just need to put nonlocal in front of the variable name. Am I doing something wrong, here? nonlocal isn't registering. Which version did this get incorporated? -- http://mail.python.org/mailman/listinfo/python-list
Re: fun with nested loops
On Thu, Sep 1, 2011 at 1:51 AM, Daniel dali...@gmail.com wrote: Has anyone an idea on a nice way to write breaks/continues/redos for deeply nested loops? Do you only ever have one top-level loop that you would be naming? If so, put that loop into a function and use return instead of break. Unfortunately that doesn't work for continue. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Closures and Partial Function Application
On Wed, Aug 31, 2011 at 12:02 PM, Travis Parks jehugalea...@gmail.com wrote: Am I doing something wrong, here? nonlocal isn't registering. Which version did this get incorporated? 3.0 -- http://mail.python.org/mailman/listinfo/python-list
Re: Closures and Partial Function Application
On Aug 31, 2:18 pm, Ian Kelly ian.g.ke...@gmail.com wrote: On Wed, Aug 31, 2011 at 12:02 PM, Travis Parks jehugalea...@gmail.com wrote: Am I doing something wrong, here? nonlocal isn't registering. Which version did this get incorporated? 3.0 Ah, okay. It would be really useful for unit testing. Unfortunately, I want to make the code I am writing compatible with 2.x and 3.x. I will just deal with it until 3.x takes over. Glad to know Guido sees the importance. -- http://mail.python.org/mailman/listinfo/python-list
Re: Why do class methods always need 'self' as the first parameter?
On Wed, Aug 31, 2011 at 10:12 AM, Prasad, Ramit ramit.pra...@jpmorgan.com wrote: def double(obj): return 2*obj.value class C: def __init__(self, val): self.value = val c = C(3) C.double = double c.doub = double # not c.double as that would mask access to C.double in c.double() below print(double(c), C.double(c), c.double(), c.doub(c)) Sorry if I get some of the following terminology wrong, I get a bit confused on Python terms. I hope the following is still coherent. (Is there a dictionary of Python terminology?) The documentation has a glossary: http://docs.python.org/glossary.html It's not entirely comprehensive though. Cheers, Chris -- http://mail.python.org/mailman/listinfo/python-list
Re: Closures and Partial Function Application
On 31 août, 18:45, Travis Parks jehugalea...@gmail.com wrote: I was a little disappointed the other day when I realized that closures were read-only. I like to use closures quite a bit. They are not _strictly_ read only, but Python being first and foremost an OO language, it's usually way simpler to use OO instead of closures when you start needing such features. -- http://mail.python.org/mailman/listinfo/python-list
Re: fun with nested loops
one more idea, a kind of named loop: interesting idea, thanks. When it become too complicate, I use state machine:http://en.wikipedia.org/wiki/Finite-state_machine I unsuccessfully played a bit with a FSM, but there is a lot of data that is passed around between the states and a lot of counting (like trying a certain step n times), so the FSM turned out to be even more complex. And I have to keep the code simple for non CS people to run the actual experiment. The loops are kind of self-explanatory, this is exactly how you would specify the experiment, even though I am really hitting a wall at the moment. Maybe I am really missing an obvious solution, because breaking out of nested loops really doesn't seem like anything fancy. Fortran/c/c++/ Ruby/Perl all have that facility, even Java has named loops. -- http://mail.python.org/mailman/listinfo/python-list
Re: fun with nested loops
Do you only ever have one top-level loop that you would be naming? If no, unfortunately not. The rough structure is several loops deep, and I need to break/continue/restart many of them. Continue is used more than break, because most of the time that I find some strange value, I'd just _continue_ a few levels up to restart the current measurements. for some configurations while not enough data collected while not in the right state for steps in steps to bring the system to the right state if the system is bad, break out of all loops if it just need to be reset, just redo the steps if it is ok, go to the next while loop while in the right state steps to do some measurements ... -- http://mail.python.org/mailman/listinfo/python-list
Re: fun with nested loops
On Thu, Sep 1, 2011 at 5:07 AM, Daniel dali...@gmail.com wrote: Do you only ever have one top-level loop that you would be naming? If no, unfortunately not. The rough structure is several loops deep, and I need to break/continue/restart many of them. Continue is used more than break, because most of the time that I find some strange value, I'd just _continue_ a few levels up to restart the current measurements. Ah well, was worth a try. Raising exceptions smells wrong for this, but peppering your code with sentinel checks isn't much better. I don't really know what would be a good solution to this... except maybe this, which was proposed a few years ago and which I'd never heard of until Google showed it to me just now: http://entrian.com/goto/ ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Python Tools for Visual Studio - anyone using it?
I understand that Python Tools for Visual Studio doesn't work with VS Express, but does work with the (free) VS 2010 Shell. Does anyone know if you can install VS Express and VS Shell on the same machine? -- http://mail.python.org/mailman/listinfo/python-list
Re: Python Tools for Visual Studio - anyone using it?
On Wed, Aug 31, 2011 at 14:29, Andrew McLean li...@andros.org.uk wrote: I understand that Python Tools for Visual Studio doesn't work with VS Express, but does work with the (free) VS 2010 Shell. Does anyone know if you can install VS Express and VS Shell on the same machine? Yes, because the shell and Express work together. -- http://mail.python.org/mailman/listinfo/python-list
Re: Closures and Partial Function Application
On Aug 31, 2:03 pm, bruno.desthuilli...@gmail.com bruno.desthuilli...@gmail.com wrote: On 31 août, 18:45, Travis Parks jehugalea...@gmail.com wrote: I was a little disappointed the other day when I realized that closures were read-only. I like to use closures quite a bit. They are not _strictly_ read only, but Python being first and foremost an OO language, it's usually way simpler to use OO instead of closures when you start needing such features. I like to leave OO to large-scale architectures and leave functional paradigms for implementation details. Writing an entire class for wrapping an int seems excessive. Especially if that code is limited to a small scope. I agree, though, that there is a time and a place for everything. -- http://mail.python.org/mailman/listinfo/python-list
Text file with mixed end-of-line terminations
I have a text file that uses both '\r' and '\r\n' end-of-line terminations. The '\r' terminates the first 25 lines or so, the remainder is termiated with '\r\n' Reading this file like this: for line in open(filename,'r'): line= #Do whatever needs doing... The first line read is actually a string consiting of the first 25 lines. The readline() method does the same thing. Is there a way to make it read one line at a time, regardless of the line termination? By the way, the newlines attribute reports None after reading a few lines. I tried on Linux and Windows. I use the standard binaries as distributed. Thanks in advance, Alex van der Spek -- http://mail.python.org/mailman/listinfo/python-list
Re: Text file with mixed end-of-line terminations
On Wed, Aug 31, 2011 at 12:37 PM, Alex van der Spek zd...@xs4all.nl wrote: I have a text file that uses both '\r' and '\r\n' end-of-line terminations. The '\r' terminates the first 25 lines or so, the remainder is termiated with '\r\n' snip Is there a way to make it read one line at a time, regardless of the line termination? Universal Newline Support http://www.python.org/dev/peps/pep-0278/ http://docs.python.org/library/functions.html#open (Modes involving U) Cheers, Chris -- http://mail.python.org/mailman/listinfo/python-list
Re: Why do class methods always need 'self' as the first parameter?
In article 0dc26f12-2541-4d41-8678-4fa53f347...@g9g2000yqb.googlegroups.com T. Goodchild asked, in part: ... One of the things that bugs me is the requirement that all class methods have 'self' as their first parameter. In article 4e5e5628$0$29977$c3e8da3$54964...@news.astraweb.com Steven D'Aprano steve+comp.lang.pyt...@pearwood.info wrote: [Comprehensive reply, noting that these are actually instance methods, and that there are class and static methods as well]: Python does have class methods, which receive the class, not the instance, as the first parameter. These are usually written something like this: class K(object): @classmethod def spam(cls, args): print cls # always prints class K, never the instance Just like self, the name cls is a convention only. Class methods are usually used for alternate constructors. There are also static methods, which don't receive any special first argument, plus any other sort of method you can invent, by creating descriptors... but that's getting into fairly advanced territory. ... [rest snipped] I am not sure whether T. Goodchild was asking any of the above or perhaps also one other possible question: if an instance method is going to receive an automatic first self parameter, why require the programmer to write that parameter in the def? For instance we *could* have: class K(object): def meth1(arg1, arg2): self.arg1 = arg1 # self is magically available self.arg2 = arg2 @classmethod def meth2(arg): use(cls) # cls is magically available and so on. This would work fine. It just requires a bit of implicit sneakiness in the compiler: an instance method magically creates a local variable named self that binds to the invisible first parameter, and a class method magically creates a local variable named cls that binds to the invisible first parameter, and so on. Instead, we have a syntax where you, the programmer, write out the name of the local variable that binds to the first parameter. This means the first parameter is visible. Except, it is only visible at the function definition -- when you have the instance and call the instance or class method: black_knight = K() black_knight.meth1('a', 1) black_knight.meth2(2) the first parameters (black_knight, and black_knight.__class__, respectively) are magic, and invisible. Thus, Python is using the explicit is better than implicit rule in the definition, but not at the call site. I have no problem with this. Sometimes I think implicit is better than explicit. In this case, there is no need to distinguish, at the calls to meth1() and meth2(), as to whether they are class or instance methods. At the *calls* they would just be distractions. At the *definitions*, they are not as distraction-y since it is important to know, during the definition, whether you are operating on an instance (meth1) or the class itself (meth2), or for that matter on neither (static methods). One could determine this from the absence or presence of @classmethod or @staticmethod, but the minor redundancy in the def statement seems, well, minor. Also, as a bonus, it lets you obfuscate the code by using a name other than self or cls. :-) -- In-Real-Life: Chris Torek, Wind River Systems Intel require I note that my opinions are not those of WRS or Intel Salt Lake City, UT, USA (40°39.22'N, 111°50.29'W) +1 801 277 2603 email: gmail (figure it out) http://web.torek.net/torek/index.html -- http://mail.python.org/mailman/listinfo/python-list
Re: try... except with unknown error types
In article mailman.286.1313956388.27778.python-l...@python.org, Terry Reedy tjre...@udel.edu wrote: I would expect that catching socket.error (or even IOError) should catch all of those. exception socket.error A subclass of IOError ... Except that, as Steven D'Aprano almost noted elsethread, it isn't (a subclass of IOError -- the note was that it is not a subclass of EnvironmentError). In 2.x anyway: import socket isinstance(socket.error, IOError) False isinstance(socket.error, EnvironmentError) False (I just catch socket.error directly for this case.) (I have also never been sure whether something is going to raise an IOError or an OSError for various OS-related read or write operation failures -- such as exceeding a resource limit, for instance -- so most places that do I/O operations on OS files, I catch both. Still, it sure would be nice to have a static analysis tool that could answer questions about potential exceptions. :-) ) -- In-Real-Life: Chris Torek, Wind River Systems Intel require I note that my opinions are not those of WRS or Intel Salt Lake City, UT, USA (40°39.22'N, 111°50.29'W) +1 801 277 2603 email: gmail (figure it out) http://web.torek.net/torek/index.html -- http://mail.python.org/mailman/listinfo/python-list
Re: Why no warnings when re-assigning builtin names?
(I realize this thread is old. I have been away for a few weeks. I read through the whole thread, though, and did not see anyone bring up this one particular point: there is already a linting script that handles this.) On Mon, Aug 15, 2011 at 10:52 PM, Gerrat Rickert grick...@coldstorage.com wrote: With surprising regularity, I see program postings (eg. on StackOverflow) from inexperienced Python users accidentally re-assigning built-in names. For example, they'll innocently call some variable, `list', and assign a list of items to it. In article mailman.22.1313446504.27778.python-l...@python.org Chris Angelico ros...@gmail.com wrote: It's actually masking, not reassigning. That may make it easier or harder to resolve the issue. If you want a future directive that deals with it, I'd do it the other way - from __future__ import mask_builtin_warning or something - so the default remains as it currently is. But this may be a better job for a linting script. The pylint program already does this: $ cat shado.py module doc def func(list): func doc return list $ pylint shado.py * Module shado W0622: 2:func: Redefining built-in 'list' ... Your code has been rated at 6.67/10 If your shadowing is done on purpose, you can put in a pylint comment directive to suppress the warning. Pylint is the American Express Card of Python coding: don't leave $HOME without it! :-) -- In-Real-Life: Chris Torek, Wind River Systems Intel require I note that my opinions are not those of WRS or Intel Salt Lake City, UT, USA (40°39.22'N, 111°50.29'W) +1 801 277 2603 email: gmail (figure it out) http://web.torek.net/torek/index.html -- http://mail.python.org/mailman/listinfo/python-list
Re: Why do class methods always need 'self' as the first parameter?
On Wed, Aug 31, 2011 at 11:12 AM, Prasad, Ramit ramit.pra...@jpmorgan.com wrote: It seems to me that if I add a function to the list of class attributes it will automatically wrap with self but adding it to the object directly will not wrap the function as a method. Can somebody explain why? I would have thought that any function added to an object would be a method (unless decorated as a class method). Because things stored on the class are generally viewed as part of the class definition, whereas things stored on an instance are generally viewed as data -- a function stored on an object instance is usually just meant to be a function. Consider the following code: class Sorter(object): def __init__(self, keyfunc): self.keyfunc = keyfunc def sort(self, item_list): item_list.sort(key=self.keyfunc) sorter = Sorter(lambda x: x.id) sorter.sort(some_list_of_items) If adding keyfunc as an attribute to the object wrapped it up as a method, it would break, since the function is not expecting a self argument. More technically, because descriptors are only invoked when they're stored on the class. Hmm, or does the decoration just tell Python not to turn an object's function into a method? I.e. Is the decorator basically just the syntactic sugar for doing the above? If you mean the staticmethod decorator, yes, it pretty much just wraps the function as a staticmethod instance to prevent it from being wrapped into an ordinary method when it's accessed. Cheers, Ian -- http://mail.python.org/mailman/listinfo/python-list
Re: Why no warnings when re-assigning builtin names?
On 2011-08-31, Chris Torek nos...@torek.net wrote: (I realize this thread is old. I have been away for a few weeks. I read through the whole thread, though, and did not see anyone bring up this one particular point: there is already a linting script that handles this.) Yes. I've found pylint... A weird mix of very helpful, thanks and oh, come off it. A thread about pylint is where I got my example of the natural Python way to express a parabola: theValueRepresentingTheYAxisLocationOfThePoint = theValueRepresentingTheXAxisLocationOfThe Point * theValueRepresentingTheXAxisLocationOfThe Point I still say that there are times when short names are natural and idiomatic, and much clearer than long names. :P But I do think that, given the basic assumption that pylint is a core tool for vetting code, it is probably adequate for it to provide the warnings. -s -- Copyright 2011, all wrongs reversed. Peter Seebach / usenet-nos...@seebs.net http://www.seebs.net/log/ -- lawsuits, religion, and funny pictures http://en.wikipedia.org/wiki/Fair_Game_(Scientology) -- get educated! I am not speaking for my employer, although they do rent some of my opinions. -- http://mail.python.org/mailman/listinfo/python-list
Re: Subclassing str object
2011/8/31 Yaşar Arabacı yasar11...@gmail.com: @Ian: Thanks for you comments. I indeed didn't need the _sozcuk attribute at all, so I deleted it. My class's addition and multiplication works without overwriting __add__ and __mul__ because, this class uses unicode's __add__ and __mul__ than creates a new kelime instance with return value of those methods in __getattribute__. I think if you try it, you'll find that the result is an ordinary unicode object, not a kelime instance, because __getattribute__ is *not* invoked when Python looks up special method names on the class object. I didn't get a good grasp on how using basestring there might broke encoding, could you explain a little bit more, or provide a reading material? The unicode.encode method takes a unicode object and encodes it into a byte string (a str object). If you then wrap that up in a kelime object, which is a unicode subclass, it has to decode the string back to unicode (using the default ascii codec, since it isn't specified). Thus the result of the call is no longer an encoded byte string as would be expected. If you're lucky, you'll get a UnicodeDecodeError since it's just using the ascii codec. If you're unlucky, it will silently return a result of the wrong type. So the thing I wonder, when creating new instance in for example capitalize() method, does str use something like self.__new__() or unicode.__new__()? Because, in latter case, I could override the __new__ method on my class, so that every method would create my class's instance, instead of unicode's No, that doesn't work. -- http://mail.python.org/mailman/listinfo/python-list
Re: Closures and Partial Function Application
On 8/31/2011 12:45 PM, Travis Parks wrote: I was a little disappointed the other day when I realized that closures were read-only. 'Were', in 2.x. The standard 2.x workaround for a single nonlocal is to wrap it in a list. def f(): i = [0] def g(): i[0] += 1 for j in range(5): g() print(i) f() # 5 -- Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list
Re: Why do class methods always need 'self' as the first parameter?
On 8/31/2011 1:12 PM, Prasad, Ramit wrote: def double(obj): return 2*obj.value class C: def __init__(self, val): self.value = val c = C(3) C.double = double c.doub = double # not c.double as that would mask access to C.double in c.double() print(double(c), C.double(c), c.double(), c.doub(c)) Above is 3.2 code. To be exactly equivalent with 2.x, you need class C(object): Sorry if I get some of the following terminology wrong, I get a bit confused on Python terms. I hope the following is still coherent. (Is there a dictionary of Python terminology?) Given the above example I get this print c.double(c) TypeError: double() takes exactly 1 argument (2 given) Right, because c.double() translates to C.double(c), and c.double(x) translates to C.double(c,x), which is not valid. print c.doub(c) 6 It seems to me that if I add a function to the list of class attributes it will automatically wrap with self When accessed via an instance of the class, the instance is automagically added as the first argument to be bound to the first parameter. The name 'self' is a convention, not a requirement. but adding it to the object directly will not wrap the function as a method. Can somebody explain why? Someone else did. Not wrapping is normal, wrapping is a special case. -- Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list
Re: PC locks up with list operations
Steven D'Aprano wrote: As far as I know, ulimit (user limit) won't help. It can limit the amount of RAM available to a process, but that just makes the process start using virtual memory more quickly. ulimit -v is supposed to set the maximum amount of virtual memory the process can use. It can also limit the amount of virtual memory used by the shell, but not of other processes. That doesn't sound right. Not sure about Linux, but the man page for sh on Darwin says: Provides control over the resources available to the shell and to processes started by it, on systems that allow such control. The Python process should also be able to set its own limits using resource.setrlimit(). -- Greg -- http://mail.python.org/mailman/listinfo/python-list
Re: Handling 2.7 and 3.0 Versions of Dict
Ian Kelly wrote: if sys.version_info (3,): getDictValues = dict.itervalues else: getDictValues = dict.values (which is basically what the OP was doing in the first place). And which he seemed to think didn't work for some reason, but it seems fine as far as I can tell: Python 2.7 (r27:82500, Oct 15 2010, 21:14:33) [GCC 4.2.1 (Apple Inc. build 5664)] on darwin Type help, copyright, credits or license for more information. gv = dict.itervalues d = {1:'a', 2:'b'} gv(d) dictionary-valueiterator object at 0x2aa210 % python3.1 Python 3.1.2 (r312:79147, Mar 2 2011, 17:43:12) [GCC 4.2.1 (Apple Inc. build 5664)] on darwin Type help, copyright, credits or license for more information. gv = dict.values d = {1:'a', 2:'b'} gv(d) dict_values(['a', 'b']) -- Greg -- http://mail.python.org/mailman/listinfo/python-list
Re: fun with nested loops
Daniel wrote: And I have to keep the code simple for non CS people to run the actual experiment. Do you think the software in the Apple iPod is simple? Or Microsoft Windows? No. You need to keep the *interface* simple. The internal details can be as complicated as they are needed to be. Same applies to your data acquisition application. Unless you expect these non-CS people to be hacking the source code, they only interact with the interface, not the internals. Earlier, back in your initial post, you said: I don't see any way to reduce these nested loops logically, they describe pretty well what the software has to do. This is a data acquisition application, so on ever line there is a lot of IO that might fail or make subsequent steps useless or require a retry. Do you think you're the first person to have written a data acquisition application in Python? Almost certainly you can simplify the structure of the code by splitting it into functions appropriately, instead of the spaghetti code you have (apparently) written with jumps all over the place. To take the most obvious, simple example: any time you have a loop that you might want to redo, the right solution is to put the loop inside a function, and then redo the loop becomes call the function again. I suppose that, just possibly, your application really would benefit from named labels to jump to. But if so, you've stumbled across something rarer than iridium. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: fun with nested loops
Chris Angelico wrote: Ah well, was worth a try. Raising exceptions smells wrong for this, but peppering your code with sentinel checks isn't much better. I don't really know what would be a good solution to this... except maybe this, which was proposed a few years ago and which I'd never heard of until Google showed it to me just now: http://entrian.com/goto/ You're a wicked, wicked man. :) -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: Why do class methods always need 'self' as the first parameter?
Chris Torek wrote: There are also static methods, which don't receive any special first argument, plus any other sort of method you can invent, by creating descriptors... but that's getting into fairly advanced territory. ... [rest snipped] I am not sure whether T. Goodchild was asking any of the above or perhaps also one other possible question: if an instance method is going to receive an automatic first self parameter, why require the programmer to write that parameter in the def? Er, yes, just like I suggested in my opening paragraph, and as I answered following the bit you marked as snipped :) For instance we *could* have: class K(object): def meth1(arg1, arg2): self.arg1 = arg1 # self is magically available self.arg2 = arg2 @classmethod def meth2(arg): use(cls) # cls is magically available and so on. This would work fine. It just requires a bit of implicit sneakiness in the compiler: an instance method magically creates a local variable named self that binds to the invisible first parameter, and a class method magically creates a local variable named cls that binds to the invisible first parameter, and so on. It would need more than a bit, because methods are just wrappers around functions. One way would be for Python to give that up, and require methods to be special built-in types like functions. That adds complexity to the compiler, and (very likely) would decrease the level of dynamism possible. Another way would be for the compiler to perform darkest black magic to determine whether the function was being called from inside a method or not. That would be complicated and fragile. [...] At the *definitions*, they are not as distraction-y since it is important to know, during the definition, whether you are operating on an instance (meth1) or the class itself (meth2), or for that matter on neither (static methods). One could determine this from the absence or presence of @classmethod or @staticmethod classmethod and staticmethod are functions, not declarations. You can't assume that @classmethod is the only way to get a class method: the metaclass could do it, or you could inject one in from the outside. You can dynamically change the state of a method from instance method to class method and back again at run-time. Python classes have a lot of dynamism made possible by the fact that methods are just wrappers around functions with an explicitly declared self. That dynamism is rarely used, but not *that* rarely, and is very useful when used. Implicit self would likely negate all that. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: PC locks up with list operations
On 08/31/11 18:31, Gregory Ewing wrote: The Python process should also be able to set its own limits using resource.setrlimit(). A new corner of stdlib that I've never poked at. Thanks for the suggestion. Disappointed though that it doesn't seem to have docstrings on the functions, so I had to wade back out to the online docs to probe at it. Granted, after the fact, they were pretty obvious, but it would be nice if help(resource.getrlimit) gave me a hint as to what that one expected parameter should have been. -tim import resource as r token = RLIMIT_ for item in dir(r): if item.startswith(token): print %s: % item[len(token):], print %s hard/%s soft % r.getrlimit(getattr(r, item)) -- http://mail.python.org/mailman/listinfo/python-list
Re: Handling 2.7 and 3.0 Versions of Dict
On Aug 31, 7:37 pm, Gregory Ewing greg.ew...@canterbury.ac.nz wrote: Ian Kelly wrote: if sys.version_info (3,): getDictValues = dict.itervalues else: getDictValues = dict.values (which is basically what the OP was doing in the first place). And which he seemed to think didn't work for some reason, but it seems fine as far as I can tell: Python 2.7 (r27:82500, Oct 15 2010, 21:14:33) [GCC 4.2.1 (Apple Inc. build 5664)] on darwin Type help, copyright, credits or license for more information. gv = dict.itervalues d = {1:'a', 2:'b'} gv(d) dictionary-valueiterator object at 0x2aa210 % python3.1 Python 3.1.2 (r312:79147, Mar 2 2011, 17:43:12) [GCC 4.2.1 (Apple Inc. build 5664)] on darwin Type help, copyright, credits or license for more information. gv = dict.values d = {1:'a', 2:'b'} gv(d) dict_values(['a', 'b']) -- Greg My problem was that I didn't understand the scoping rules. It is still strange to me that the getValues variable is still in scope outside the if/else branches. -- http://mail.python.org/mailman/listinfo/python-list
Re: Why do class methods always need 'self' as the first parameter?
On Thu, Sep 1, 2011 at 10:48 AM, Steven D'Aprano steve+comp.lang.pyt...@pearwood.info wrote: Python classes have a lot of dynamism made possible by the fact that methods are just wrappers around functions with an explicitly declared self. That dynamism is rarely used, but not *that* rarely, and is very useful when used. Implicit self would likely negate all that. Hmm. Got any examples sitting around? I'm curious as to what you can do with this. I'm like a kid with a new chemistry set - what happens if I mix a little of everything together?... ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Why do class methods always need 'self' as the first parameter?
On Wed, Aug 31, 2011 at 7:47 PM, Chris Angelico ros...@gmail.com wrote: On Thu, Sep 1, 2011 at 10:48 AM, Steven D'Aprano steve+comp.lang.pyt...@pearwood.info wrote: Python classes have a lot of dynamism made possible by the fact that methods are just wrappers around functions with an explicitly declared self. That dynamism is rarely used, but not *that* rarely, and is very useful when used. Implicit self would likely negate all that. Hmm. Got any examples sitting around? I'm curious as to what you can do with this. I'm like a kid with a new chemistry set - what happens if I mix a little of everything together?... First thing that comes to mind is calling a base class's implementation of a method: class X(Y): def __init__(self, value): Y.__init__(self) self.value = value -eric ChrisA -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Help required accessing dictionary
Hi I need to access the dictionary of the script that I am running through my vc++ application by embedding python. I am linking to python dynamically. I want to obtain the dictionary of the script and access the variables declared in the script. However, with the PyObject * that I get from the dictionary, I am not able to find the type of the object. The reason being that GetProcAddress to PyInt_Check returns a NULL. The same thing with PyFloat_Check and so on. I think this is because they are macros and not exported functions. What can be done to be able to perform these checks without statically linking to the pyhon lib ? Thanks, Abhaya -- http://mail.python.org/mailman/listinfo/python-list
Re: Why do class methods always need 'self' as the first parameter?
In article 4e5ed670$0$29981$c3e8da3$54964...@news.astraweb.com Steven D'Aprano steve+comp.lang.pyt...@pearwood.info wrote: Er, yes, just like I suggested in my opening paragraph, and as I answered following the bit you marked as snipped :) Oops, so you did (went back and re-read it). Must have gotten interrupted and lost track. :-) [A different hack would] requires a bit of implicit sneakiness in the compiler: an instance method magically creates a local variable named self that binds to the invisible first parameter, and a class method magically creates a local variable named cls that binds to the invisible first parameter, and so on. It would need more than a bit, because methods are just wrappers around functions. Well, depends on how the hack would be done. :-) For instance, the @decorator might turn on something that undoes or replaces the self parameter. That is, with ordinary class functions and methods: class HackyNotQuitePythonVersion: def ordinary(arg): self.arg = arg would compile to (approximately): class PythonVersion: def __mrap(self, *args, **kwargs): def ordinary(arg): self.arg = arg ordinary(*args, **kwargs) ordinary = __mrap (add the usual other manipulations to suit here, i.e., all the stuff for making introspection work right, i.e., @functools.wraps). @staticmethod would suppress the wrapper entirely, while @classmethod would change it to one that binds the cls argument. (Any function without some appropriate @whatever gets the Method Wrapper __mrap. @staticmethod tells the class builder not to add any wrapper, and @classmethod tells it to add the Class Wrapper __crap. [The name tells you what I think of the above code. :-) ]) (Note subtle ground for bugs here: if you then actually define a self parameter, it shadows the outer-scope one from the wrapper. So while I am not even proposing that anyone should do this in the first place, it has more downsides than mere implementation complexity.) Another way would be for the compiler to perform darkest black magic to determine whether the function was being called from inside a method or not. That would be complicated and fragile. Yes, even worse than my outlined implementation above, I think. classmethod and staticmethod are functions, not declarations. They are decorator functions, but to someone *reading the code* they are also declarations of sort. This is all I meant: they tell the (human) reader/programmer which secret arguments to expect. You can't assume that @classmethod is the only way to get a class method: the metaclass could do it, or you could inject one in from the outside. Yes, but that would all still work, as in this not-quite-Python (worsened-Python) language, whoever writes those metaclasses and other decorators would continue to do whatever icky stuff was required (e.g., __mrap and __crap above). It would mean yet more things for people to know about, but then, metaclasses and decorators *always* mean that: @hmm def spam(): return magic Is magic something supplied by the decorator? You have to look at the decorator to find out, as the rather horrid example I have attached shows. (Note: I am doing all this is python 2.x on the laptop. Using global, in @hmm, is evil, but it works. I did not bother trying to write a metaclass that inserts __mrap, etc., but I believe it can be done.) Python classes have a lot of dynamism made possible by the fact that methods are just wrappers around functions with an explicitly declared self. That dynamism is rarely used, but not *that* rarely, and is very useful when used. Implicit self would likely negate all that. I do not believe it would *negate* it, just *complicate* it. But that is not a good thing either. :-) - horrible example / test code below import functools def hmm(func): @functools.wraps(func) def wrapper(*args, **kwargs): global magic, rlevel try: save = magic, rlevel restore = True rlevel += 1 except NameError: restore = False rlevel = 1 magic = func.__name__ + and eggs ret = func(*args, **kwargs) if restore: magic, rlevel = save else: del magic, rlevel return ret return wrapper @hmm def ham(): if rlevel 2: print spam() return magic @hmm def spam(): return magic print ham() try: print magic except NameError: print 'name magic is not available here, as desired' try: print rlevel except NameError: print 'name rlevel is not available here, as desired' class X(object): def __mrap(self, *args, **kwargs): def xset(arg): self.arg = arg xset(*args, **kwargs) xset = __mrap def __mrap(self, *args, **kwargs): def show(): print self.arg show(*args, **kwargs) show = __mrap x =
How to daemonize a HTTPServer
I have written a http server using BaseHTTPServer module. Now I want to instantiate it through another python script. The issue here is after instantiate the control doesn't come back till the server is running. Please suggest. -- http://mail.python.org/mailman/listinfo/python-list
Re: try... except with unknown error types
On 8/21/2011 5:30 PM, Steven D'Aprano wrote: Chris Angelico wrote: A new and surprising mode of network failure would be indicated by a new subclass of IOError or EnvironmentError. /s/would/should/ I don't see why you expect this, when *existing* network-related failures aren't: import socket issubclass(socket.error, EnvironmentError) False (Fortunately that specific example is fixed in Python 3.) I think I reported that some years ago. There were some other errors in the URL and SSL area that weren't subclasses of EnvironmentError. It's also possible to get UnicodeError from URL operations. John Nagle -- http://mail.python.org/mailman/listinfo/python-list
idiomatic analogue of Perl's: while () { ... }
I've been tasked with converting some programs from Perl - Python, and am (as will soon be obvious) new to the language. A few archive/google searches were inconclusive on a consensus approach, which is OK, but I just wonder if there is a more Python-esque way to do the following in Python 2.7.1: %% # unbuffer STDOUT sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) # process input, line-by-line, and print responses after parsing input while 1: rval = parse(raw_input()) if rval == None: print('foo') else: print('bar') %% This works, but while reading the documentation, I thought of using 'for line in fileinput.input()' in lieu of 'while 1:' construct. This does not work when debugging the program on the command line -- the script appears to just hang no matter what is typed into STDIN. I believe this is because of some internal buffering when using fileinput. Is there a recommended way to disable such buffering? Am I taking a totally wrong approach? Feel free to just link me to previous discussions on the topic(s) if I have missed them. Please be gentle with your cluebats. :-) Thanks, -- Sahil Tandon sa...@freebsd.org -- http://mail.python.org/mailman/listinfo/python-list
Re: How to daemonize a HTTPServer
On 1 Sep 2011 08:54, babbu Pehlwan nemja...@gmail.com wrote: I have written a http server using BaseHTTPServer module. Now I want to instantiate it through another python script. The issue here is after instantiate the control doesn't come back till the server is running. Please suggest. What did a web search for python daemon lead to? I believe there's a python-daemon package available on pypi. -- regards, kushal -- http://mail.python.org/mailman/listinfo/python-list
[issue12867] linecache.getline() Returning Error
Ned Deily n...@acm.org added the comment: The linecache module functions take a filename string as an argument, not a file object. Try: linecache.getlines(/path/to/filename, lineno) http://docs.python.org/py3k/library/linecache.html -- nosy: +ned.deily resolution: - works for me stage: - committed/rejected status: open - closed type: crash - behavior ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue12867 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue12868] test_faulthandler.test_stack_overflow() failed on OpenBSD
New submission from Remi Pointel pyt...@xiri.fr: Hello, the test_stack_overflow failed on OpenBSD. Don't hesitate if you need more information. Details: $ ./python Lib/test/test_faulthandler.py test_disable (__main__.FaultHandlerTests) ... ok test_dump_traceback (__main__.FaultHandlerTests) ... ok test_dump_traceback_file (__main__.FaultHandlerTests) ... ok test_dump_traceback_threads (__main__.FaultHandlerTests) ... ok test_dump_traceback_threads_file (__main__.FaultHandlerTests) ... ok test_dump_tracebacks_later (__main__.FaultHandlerTests) ... ok test_dump_tracebacks_later_cancel (__main__.FaultHandlerTests) ... ok test_dump_tracebacks_later_file (__main__.FaultHandlerTests) ... ok test_dump_tracebacks_later_repeat (__main__.FaultHandlerTests) ... ok test_dump_tracebacks_later_twice (__main__.FaultHandlerTests) ... ok test_enable_file (__main__.FaultHandlerTests) ... ok test_enable_single_thread (__main__.FaultHandlerTests) ... ok test_fatal_error (__main__.FaultHandlerTests) ... ok test_gil_released (__main__.FaultHandlerTests) ... ok test_is_enabled (__main__.FaultHandlerTests) ... ok test_read_null (__main__.FaultHandlerTests) ... ok test_register (__main__.FaultHandlerTests) ... ok test_register_chain (__main__.FaultHandlerTests) ... ok test_register_file (__main__.FaultHandlerTests) ... ok test_register_threads (__main__.FaultHandlerTests) ... ok test_sigabrt (__main__.FaultHandlerTests) ... ok test_sigbus (__main__.FaultHandlerTests) ... ok test_sigfpe (__main__.FaultHandlerTests) ... ok test_sigill (__main__.FaultHandlerTests) ... ok test_sigsegv (__main__.FaultHandlerTests) ... ok test_stack_overflow (__main__.FaultHandlerTests) ... FAIL test_unregister (__main__.FaultHandlerTests) ... ok == FAIL: test_stack_overflow (__main__.FaultHandlerTests) -- Traceback (most recent call last): File Lib/test/test_faulthandler.py, line 187, in test_stack_overflow other_regex='unable to raise a stack overflow') File Lib/test/test_faulthandler.py, line 105, in check_fatal_error self.assertRegex(output, regex) AssertionError: Regex didn't match: '^Fatal Python error: (?:Segmentation fault|Bus error)\n\nCurrent\\ thread\\ XXX:\n File string, line 3 in module$|unable to raise a stack overflow' not found in '' -- Ran 27 tests in 16.938s FAILED (failures=1) Traceback (most recent call last): File Lib/test/test_faulthandler.py, line 551, in module test_main() File Lib/test/test_faulthandler.py, line 548, in test_main support.run_unittest(FaultHandlerTests) File /home/remi/dev/cpython_test/Lib/test/support.py, line 1328, in run_unittest _run_suite(suite) File /home/remi/dev/cpython_test/Lib/test/support.py, line 1303, in _run_suite raise TestFailed(err) test.support.TestFailed: Traceback (most recent call last): File Lib/test/test_faulthandler.py, line 187, in test_stack_overflow other_regex='unable to raise a stack overflow') File Lib/test/test_faulthandler.py, line 105, in check_fatal_error self.assertRegex(output, regex) AssertionError: Regex didn't match: '^Fatal Python error: (?:Segmentation fault|Bus error)\n\nCurrent\\ thread\\ XXX:\n File string, line 3 in module$|unable to raise a stack overflow' not found in '' Thanks a lot, Remi. -- messages: 143251 nosy: rpointel priority: normal severity: normal status: open title: test_faulthandler.test_stack_overflow() failed on OpenBSD versions: Python 3.3 ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue12868 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue12868] test_faulthandler.test_stack_overflow() failed on OpenBSD
Remi Pointel pyt...@xiri.fr added the comment: Info: I read issue 12469 but I prefered to create new issue. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue12868 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue12850] [PATCH] stm.atomic
Changes by Andrew Svetlov andrew.svet...@gmail.com: -- nosy: +asvetlov ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue12850 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue1215] documentation doesn't say that you can't handle C segfaults from python
STINNER Victor victor.stin...@haypocalc.com added the comment: Le mercredi 31 août 2011 02:52:01, vous avez écrit : What do you want to do on a SIGSEGV? On a real fault, you cannot rely on Python internal state, you cannot use any Python object. To handle a real SIGSEGV fault, you have to implement a signal handler using only *signal safe* functions in C. Well, strictly speaking, it is very hard or impossible to write C code that's guaranteed to be safe after an unexpected segv too It is possible if you only use signal safe functions. I think that no Python function is signal safe :-) -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue1215 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue12765] test_packaging failure under Snow Leopard
Éric Araujo mer...@netwok.org added the comment: Still failing. -- resolution: fixed - stage: commit review - needs patch status: pending - open ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue12765 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue9998] ctypes find_library should search LD_LIBRARY_PATH on linux
Vinay Sajip vinay_sa...@yahoo.co.uk added the comment: There is a problem in this area of the code, not especially with the patch but with how gcc works (or doesn't). To illustrate: --- Version info --- vinay@eta-hardy:/tmp$ uname -a Linux eta-hardy 2.6.24-29-generic #1 SMP Wed Aug 10 16:34:32 UTC 2011 i686 GNU/Linux vinay@eta-hardy:/tmp$ gcc --version gcc (GCC) 4.2.4 (Ubuntu 4.2.4-1ubuntu4) Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --- Create an empty file: --- vinay@eta-hardy:/tmp$ touch dummy.c --- Compile a shared library from it: --- vinay@eta-hardy:/tmp$ gcc -shared -o libdummy.so dummy.c --- Invoke gcc with patched command line: --- vinay@eta-hardy:/tmp$ gcc -L /tmp -Wl,t -o /dev/null -ldummy /usr/bin/ld: t: No such file: No such file or directory collect2: ld returned 1 exit status --- It's not patch related, here's what happens with the unpatched line --- vinay@eta-hardy:/tmp$ gcc -Wl,t -o /dev/null -ldummy /usr/bin/ld: t: No such file: No such file or directory collect2: ld returned 1 exit status --- Calling ld directly works as expected. With no search path: --- vinay@eta-hardy:/tmp$ ld -t -o /dev/null -ldummy ld: mode elf_i386 ld: cannot find -ldummy --- With the search path supplied: --- vinay@eta-hardy:/tmp$ ld -t -L /tmp -o /dev/null -ldummy ld: mode elf_i386 -ldummy (/tmp/libdummy.so) ld: warning: cannot find entry symbol _start; not setting start address vinay@eta-hardy:/tmp$ So, ISTM that the find_library code needs changing to use ld, else it will not work on all platforms. -- nosy: +vinay.sajip ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue9998 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue12869] PyOS_StdioReadline is printing the prompt on stderr
New submission from Albert Zeyer alb...@googlemail.com: PyOS_StdioReadline from Parser/myreadline.c is printing the prompt on stderr. I think it should print it on the given parameter sys_stdout. Other readline implementations (like from the readline module) also behave this way. Even if it really is supposed to write on stderr, it should use the `sys.stderr` and not the system stderr. -- messages: 143256 nosy: Albert.Zeyer priority: normal severity: normal status: open title: PyOS_StdioReadline is printing the prompt on stderr versions: Python 2.7 ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue12869 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue12861] PyOS_Readline uses single lock
Albert Zeyer alb...@googlemail.com added the comment: Even more problematic: The readline lib itself is absolutely not designed in a way to be used from multi threads at once. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue12861 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue11435] Links to source code should now point to hg repo
Éric Araujo mer...@netwok.org added the comment: After getting Georg’s greenlight on python-dev, I have adapted the source reST role for 2.7 and updated all links. -- status: open - closed ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue11435 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue10086] test_sysconfig failure when prefix matches /site
Roundup Robot devn...@psf.upfronthosting.co.za added the comment: New changeset 1e01543c3d0a by Éric Araujo in branch '3.2': Fix test_sysconfig when run from a Python installed under /site (#10086). http://hg.python.org/cpython/rev/1e01543c3d0a New changeset 0968acf0e6db by Éric Araujo in branch 'default': Merge fix for #10086 from 3.2 http://hg.python.org/cpython/rev/0968acf0e6db -- nosy: +python-dev ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue10086 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com